UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

26 lines (25 loc) 1.24 kB
import type { FlowrCapability } from './types'; import { flowrCapabilities } from './data'; type CapabilityIdFilter<T extends FlowrCapability, Filter> = T extends Filter ? T['id'] : never; /** Recursively extract all valid identifiers (which have the given support predicate) */ type ExtractAllIds<T extends FlowrCapability, Filter = FlowrCapability> = T extends { readonly capabilities: infer U; } ? U extends readonly FlowrCapability[] ? (CapabilityIdFilter<T, Filter> | ExtractAllIds<U[number]>) : CapabilityIdFilter<T, Filter> : CapabilityIdFilter<T, Filter>; type Capabilities = (typeof flowrCapabilities)['capabilities'][number]; export type FlowrCapabilityId = ExtractAllIds<Capabilities>; export type SupportedFlowrCapabilityId = ExtractAllIds<Capabilities, { readonly supported: 'partially' | 'fully'; }>; type PathToCapability = readonly number[]; export interface FlowrCapabilityWithPath extends FlowrCapability { path: PathToCapability; } /** * Find a flowR capability by its id. */ export declare function getCapabilityById(id: FlowrCapabilityId): FlowrCapabilityWithPath; /** * Get all capabilities with their paths. */ export declare function getAllCapabilities(): readonly FlowrCapabilityWithPath[]; export {};