import { createActions } from '@prefecthq/vue-compositions' import { InjectionKey } from 'vue' import { WorkspaceFlowRunStatesApi, WorkspaceTaskRunStatesApi } from '@/services' import { AxiosInstanceSetupHook } from '@/services/Api' import { CollectionsApi } from '@/services/CollectionsApi' import { HealthApi } from '@/services/HealthApi' import { UiApi } from '@/services/UiApi' import { WorkspaceApiConfig } from '@/services/WorkspaceApi' import { WorkspaceArtifactsApi } from '@/services/WorkspaceArtifactsApi' import { WorkspaceAutomationsApi } from '@/services/WorkspaceAutomationsApi' import { WorkspaceBlockCapabilitiesApi } from '@/services/WorkspaceBlockCapabilitiesApi' import { WorkspaceBlockDocumentsApi } from '@/services/WorkspaceBlockDocumentsApi' import { WorkspaceBlockSchemasApi } from '@/services/WorkspaceBlockSchemasApi' import { WorkspaceBlockTypesApi } from '@/services/WorkspaceBlockTypesApi' import { WorkspaceConcurrencyLimitsApi } from '@/services/WorkspaceConcurrencyLimitsApi' import { WorkspaceConcurrencyV2LimitsApi } from '@/services/WorkspaceConcurrencyLimitsV2API' import { WorkspaceDeploymentsApi } from '@/services/WorkspaceDeploymentsApi' import { WorkspaceDeploymentScheduleApi } from '@/services/WorkspaceDeploymentScheduleApi' import { WorkspaceEventsApi } from '@/services/workspaceEventsApi' import { WorkspaceFlowRunsApi } from '@/services/WorkspaceFlowRunsApi' import { WorkspaceFlowsApi } from '@/services/WorkspaceFlowsApi' import { WorkspaceLogsApi } from '@/services/WorkspaceLogsApi' import { WorkspaceNotificationsApi } from '@/services/WorkspaceNotificationsApi' import { WorkspaceSavedSearchesApi } from '@/services/WorkspaceSavedSearchesApi' import { WorkspaceSchemasWorkspaceApi } from '@/services/WorkspaceSchemasWorkspaceApi' import { WorkspaceTaskRunsApi } from '@/services/WorkspaceTaskRunsApi' import { WorkspaceVariablesApi } from '@/services/WorkspaceVariablesApi' import { WorkspaceWorkPoolQueuesApi } from '@/services/WorkspaceWorkPoolQueuesApi' import { WorkspaceWorkPoolsApi } from '@/services/WorkspaceWorkPoolsApi' import { WorkspaceWorkPoolWorkersApi } from '@/services/WorkspaceWorkPoolWorkersApi' import { WorkspaceWorkQueuesApi } from '@/services/WorkspaceWorkQueuesApi' import { MaybeGetter } from '@/types/reactivity' // We want the return type to be inferred // eslint-disable-next-line @typescript-eslint/explicit-function-return-type export function createApi(workspaceConfig: MaybeGetter, instanceSetupHook: AxiosInstanceSetupHook | null = null) { return { artifacts: createActions(new WorkspaceArtifactsApi(workspaceConfig, instanceSetupHook)), automations: createActions(new WorkspaceAutomationsApi(workspaceConfig, instanceSetupHook)), blockCapabilities: createActions(new WorkspaceBlockCapabilitiesApi(workspaceConfig, instanceSetupHook)), blockDocuments: createActions(new WorkspaceBlockDocumentsApi(workspaceConfig, instanceSetupHook)), blockSchemas: createActions(new WorkspaceBlockSchemasApi(workspaceConfig, instanceSetupHook)), blockTypes: createActions(new WorkspaceBlockTypesApi(workspaceConfig, instanceSetupHook)), collections: createActions(new CollectionsApi(workspaceConfig, instanceSetupHook)), concurrencyLimits: createActions(new WorkspaceConcurrencyLimitsApi(workspaceConfig, instanceSetupHook)), concurrencyV2Limits: createActions(new WorkspaceConcurrencyV2LimitsApi(workspaceConfig, instanceSetupHook)), deployments: createActions(new WorkspaceDeploymentsApi(workspaceConfig, instanceSetupHook)), deploymentSchedules: createActions(new WorkspaceDeploymentScheduleApi(workspaceConfig, instanceSetupHook)), flowRuns: createActions(new WorkspaceFlowRunsApi(workspaceConfig, instanceSetupHook)), flowRunStates: createActions(new WorkspaceFlowRunStatesApi(workspaceConfig, instanceSetupHook)), flows: createActions(new WorkspaceFlowsApi(workspaceConfig, instanceSetupHook)), health: createActions(new HealthApi(workspaceConfig, instanceSetupHook)), logs: createActions(new WorkspaceLogsApi(workspaceConfig, instanceSetupHook)), notifications: createActions(new WorkspaceNotificationsApi(workspaceConfig, instanceSetupHook)), savedSearches: createActions(new WorkspaceSavedSearchesApi(workspaceConfig, instanceSetupHook)), taskRuns: createActions(new WorkspaceTaskRunsApi(workspaceConfig, instanceSetupHook)), taskRunStates: createActions(new WorkspaceTaskRunStatesApi(workspaceConfig, instanceSetupHook)), ui: createActions(new UiApi(workspaceConfig, instanceSetupHook)), variables: createActions(new WorkspaceVariablesApi(workspaceConfig, instanceSetupHook)), workPoolQueues: createActions(new WorkspaceWorkPoolQueuesApi(workspaceConfig, instanceSetupHook)), workPools: createActions(new WorkspaceWorkPoolsApi(workspaceConfig, instanceSetupHook)), workPoolWorkers: createActions(new WorkspaceWorkPoolWorkersApi(workspaceConfig, instanceSetupHook)), workQueues: createActions(new WorkspaceWorkQueuesApi(workspaceConfig, instanceSetupHook)), schemas: createActions(new WorkspaceSchemasWorkspaceApi(workspaceConfig, instanceSetupHook)), events: createActions(new WorkspaceEventsApi(workspaceConfig, instanceSetupHook)), } } export type CreateApi = ReturnType export const workspaceApiKey: InjectionKey = Symbol('WorkspaceApi')