Skip to content

Commit a393ba9

Browse files
committed
feat-fix: disabled library category
1 parent 314bad3 commit a393ba9

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

src/queries/catalog/dependencies-query/dependencies-query-executor.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ export async function executeDependenciesQuery({
6666
const results = Object.fromEntries(await Promise.all(functions.entries().map(async([c, f]) => {
6767
const results = getResults(queries, { dataflow, config, normalize }, queryResults, c, f, data);
6868
// only default categories allow additional analyses, so we null-coalesce here!
69-
await (DefaultDependencyCategories as Record<string, DependencyCategorySettings>)[c]?.additionalAnalysis?.(data, ignoreDefault, f, queryResults, results);
69+
const enabled = query.enabledCategories;
70+
if(enabled === undefined || (enabled?.length > 0 && enabled.includes(c))) {
71+
await (DefaultDependencyCategories as Record<string, DependencyCategorySettings>)[c]?.additionalAnalysis?.(data, ignoreDefault, f, queryResults, results);
72+
}
7073
return [c, results];
7174
}))) as {[C in DependencyCategoryName]?: DependencyInfo[]};
7275

@@ -237,7 +240,7 @@ function collectValuesFromLinks(args: Map<NodeId, Set<string|undefined>> | undef
237240

238241
function getFunctionsToCheck(customFunctions: readonly FunctionInfo[] | undefined, functionFlag: DependencyCategoryName, enabled: DependencyCategoryName[] | undefined, ignoreDefaultFunctions: boolean, defaultFunctions: readonly FunctionInfo[]): FunctionInfo[] {
239242
// "If unset or empty, all function types are searched for."
240-
if(enabled?.length && enabled.indexOf(functionFlag) < 0) {
243+
if(enabled !== undefined && (enabled?.length === 0 || enabled.indexOf(functionFlag) < 0)) {
241244
return [];
242245
}
243246
let functions: FunctionInfo[] = ignoreDefaultFunctions ? [] : [...defaultFunctions];

src/queries/catalog/dependencies-query/dependencies-query-format.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ export const DependenciesQueryDefinition = {
158158
type: Joi.string().valid('dependencies').required().description('The type of the query.'),
159159
ignoreDefaultFunctions: Joi.boolean().optional().description('Should the set of functions that are detected by default be ignored/skipped? Defaults to false.'),
160160
...Object.fromEntries(Object.keys(DefaultDependencyCategories).map(c => [`${c}Functions`, functionInfoSchema.description(`The set of ${c} functions to search for.`)])),
161-
enabledCategories: Joi.array().optional().items(Joi.string()).description('A set of flags that determines what types of dependencies are searched for. If unset or empty, all dependency types are searched for.'),
161+
enabledCategories: Joi.array().optional().items(Joi.string()).description('A set of flags that determines what types of dependencies are searched for. If unset, all dependency types are searched for.'),
162162
additionalCategories: Joi.object().allow(Joi.object({
163163
queryDisplayName: Joi.string().description('The display name in the query result.'),
164164
functions: functionInfoSchema.description('The functions that this additional category should search for.'),

test/functionality/dataflow/query/dependencies-query.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,12 +199,13 @@ describe('Dependencies Query', withTreeSitter(parser => {
199199
testQuery('Custom (by name)', 'custom.library(num1 = 1, num2 = 2, file = "my-custom-file")', expected, readCustomFile);
200200
testQuery('Ignore default', 'library(testLibrary)', {}, { ignoreDefaultFunctions: true });
201201
testQuery('Disabled', 'library(testLibrary)', {}, { enabledCategories: ['source', 'read', 'write'] });
202+
testQuery('Disabled', 'a::dep', {}, { enabledCategories: [] });
202203
testQuery('Enabled', 'library(testLibrary)', {
203204
library: [{ nodeId: '1@library', functionName: 'library', value: 'testLibrary' }]
204205
}, { enabledCategories: ['library'] });
205206
testQuery('Empty enabled', 'library(testLibrary)', {
206207
library: [{ nodeId: '1@library', functionName: 'library', value: 'testLibrary' }]
207-
}, { enabledCategories: [] });
208+
}, { enabledCategories: undefined });
208209
});
209210
});
210211

0 commit comments

Comments
 (0)