UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

93 lines (92 loc) 4.97 kB
import type { BaseQueryFormat, BaseQueryResult, BasicQueryData } from '../../base-query-format'; import type { NodeId } from '../../../r-bridge/lang-4.x/ast/model/processing/node-id'; import Joi from 'joi'; import { executeDependenciesQuery } from './dependencies-query-executor'; import type { FunctionInfo } from './function-info/function-info'; import type { CallContextQueryResult } from '../call-context-query/call-context-query-format'; import type { Range } from 'semver'; import type { AsyncOrSync, MarkOptional } from 'ts-essentials'; import type { NamespaceInfo } from '../../../project/plugins/file-plugins/files/flowr-namespace-file'; export declare const Unknown = "unknown"; export interface DependencyCategorySettings { queryDisplayName?: string; functions: FunctionInfo[]; /** this describes the global default value for this category, e.g., 'stdout' for write operations, please be aware, that this can be overwritten by a by-function default value */ defaultValue?: string; /** * An optional additional analysis step that is executed after the main function-based analysis has been performed. * To add or modify dependency info entries, simply modify the `result` array. * @param data - The basic query data. * @param ignoreDefault - Whether the default functions were ignored. * @param functions - The functions used for this category. * @param queryResults - The results of the call context query. * @param result - The current result array to which additional dependency info can be added. */ additionalAnalysis?: (data: BasicQueryData, ignoreDefault: boolean, functions: FunctionInfo[], queryResults: CallContextQueryResult, result: DependencyInfo[]) => AsyncOrSync<void>; } export declare const DefaultDependencyCategories: { readonly library: { readonly queryDisplayName: "Libraries"; readonly functions: FunctionInfo[]; readonly defaultValue: "unknown"; readonly additionalAnalysis: (data: BasicQueryData, ignoreDefault: boolean, _functions: FunctionInfo[], _queryResults: CallContextQueryResult, result: DependencyInfo[]) => Promise<void>; }; readonly source: { readonly queryDisplayName: "Sourced Files"; readonly functions: FunctionInfo[]; readonly defaultValue: "unknown"; }; readonly read: { readonly queryDisplayName: "Read Data"; readonly functions: FunctionInfo[]; readonly defaultValue: "unknown"; }; readonly write: { readonly queryDisplayName: "Written Data"; readonly functions: FunctionInfo[]; readonly defaultValue: "stdout"; }; readonly visualize: { readonly queryDisplayName: "Visualizations"; readonly functions: FunctionInfo[]; }; readonly test: { readonly queryDisplayName: "Tests"; readonly functions: FunctionInfo[]; }; }; export type DefaultDependencyCategoryName = keyof typeof DefaultDependencyCategories; export type DependencyCategoryName = DefaultDependencyCategoryName | string; export interface DependenciesQuery extends BaseQueryFormat, Partial<Record<`${DefaultDependencyCategoryName}Functions`, FunctionInfo[]>> { readonly type: 'dependencies'; readonly enabledCategories?: DependencyCategoryName[]; readonly ignoreDefaultFunctions?: boolean; readonly additionalCategories?: Record<string, MarkOptional<DependencyCategorySettings, 'additionalAnalysis'>>; } export type DependenciesQueryResult = BaseQueryResult & { [C in DefaultDependencyCategoryName]: DependencyInfo[]; } & { [S in string]?: DependencyInfo[]; }; export interface DependencyInfo extends Record<string, unknown> { nodeId: NodeId; functionName: string; linkedIds?: readonly NodeId[]; /** the lexeme is presented whenever the specific info is of {@link Unknown} */ lexemeOfArgument?: string; /** The library name, file, source, destination etc. being sourced, read from, or written to. */ value?: string; versionConstraints?: Range[]; derivedVersion?: Range; namespaceInfo?: NamespaceInfo; } /** * Gets all dependency categories, including user-defined additional categories. */ export declare function getAllCategories(queries: readonly DependenciesQuery[]): Record<DependencyCategoryName, DependencyCategorySettings>; export declare const DependenciesQueryDefinition: { readonly executor: typeof executeDependenciesQuery; readonly asciiSummarizer: (formatter: import("../../../util/text/ansi").OutputFormatter, _analyzer: import("../../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider<import("../../../r-bridge/parser").KnownParser>, queryResults: BaseQueryResult, result: string[], queries: readonly import("../../query").Query[]) => true; readonly schema: Joi.ObjectSchema<any>; readonly flattenInvolvedNodes: (queryResults: BaseQueryResult, query: readonly import("../../query").Query[]) => NodeId[]; };