All files / layers / L1 entityResolver.ts

68.18% Statements 15/22
37.5% Branches 3/8
78.57% Functions 11/14
75% Lines 12/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62    40x                   138x 138x 1794x     1184x     232x     8x     134x                         5x             2x           5x             5x    
import { createEntityHooks } from './entityHooks'
import { contracts } from './contracts'
import type { EntityPath } from './contracts'
import type {
  EntityHooks,
  ListResult,
  DetailResult,
  MutationHandle,
  SubscriptionHandle,
  QueryParams,
  ListQueryOptions,
} from '../interfaces'
 
eIxport const hooksByPath: Record<EntityPath, EntityHooks<any, any, any, any>> = {
  repositories: createEntityHooks(contracts.repositories),
  projects: createEntityHooks(contracts.projects),
  runs: createEntityHooks(contracts.runs),
  pipelines: createEntityHooks(contracts.pipelines),
}
 
export function resolveContract<P extends EntityPath>(
  path: P,
): (typeof contracts)[P] {
  return contracts[path]
}

export function resolveIdOf(
  path: EntityPath,
): ((row: Record<string, unknown>) => string) | null {
  const contract = contracts[path]
  if (!contract) return null
  return (row) => contract.idOf(row as never) as string
}
 
export function useEntityList(
  path: EntityPath,
  params: QueryParams = {},
  options?: ListQueryOptions,
): ListResult<any> {
  return hooksByPath[path].useEntityList(params, options)
}
 
export function useEntityDetail(
  path: EntityPath,
  id: string,
): DetailResult<any> {
  return hooksByPath[path].useEntityDetail(id)
}
 
export function useMutation(
  path: EntityPath,
): MutationHandle<any, any, any> {
  return hooksByPath[path].useMutation()
}
 
export function useSubscription(
  path: EntityPath,
  params: QueryParams = {},
): SubscriptionHandle {
  return hooksByPath[path].useSubscription(params)
}