Skip to content

Commit b9fa79a

Browse files
committed
Move predicates into a separate property
1 parent 14c6f98 commit b9fa79a

File tree

5 files changed

+135
-129
lines changed

5 files changed

+135
-129
lines changed

extensions/ql-vscode/src/model-editor/flow-model-queries.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ async function runSingleFlowQuery(
156156
// Interpret the results
157157
const modelsAsDataLanguage = getModelsAsDataLanguage(language);
158158

159-
const definition = modelsAsDataLanguage[type];
159+
const definition = modelsAsDataLanguage.predicates[type];
160160

161161
const bqrsPath = completedQuery.outputDir.bqrsPath;
162162

extensions/ql-vscode/src/model-editor/languages/models-as-data.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@ type ReadModeledMethod = (row: DataTuple[]) => ModeledMethod;
66

77
export type ModelsAsDataLanguageModelType = Exclude<ModeledMethodType, "none">;
88

9-
export type ModelsAsDataLanguageModel = {
9+
export type ModelsAsDataLanguagePredicate = {
1010
extensiblePredicate: string;
1111
supportedKinds: string[];
1212
generateMethodDefinition: GenerateMethodDefinition;
1313
readModeledMethod: ReadModeledMethod;
1414
};
1515

16-
export type ModelsAsDataLanguage = Record<
16+
export type ModelsAsDataLanguagePredicates = Record<
1717
ModelsAsDataLanguageModelType,
18-
ModelsAsDataLanguageModel
18+
ModelsAsDataLanguagePredicate
1919
>;
20+
21+
export type ModelsAsDataLanguage = {
22+
predicates: ModelsAsDataLanguagePredicates;
23+
};

extensions/ql-vscode/src/model-editor/languages/static.ts

Lines changed: 122 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -8,125 +8,127 @@ function readRowToMethod(row: DataTuple[]): string {
88
}
99

1010
export const staticLanguage: ModelsAsDataLanguage = {
11-
source: {
12-
extensiblePredicate: sharedExtensiblePredicates.source,
13-
supportedKinds: sharedKinds.source,
14-
// extensible predicate sourceModel(
15-
// string package, string type, boolean subtypes, string name, string signature, string ext,
16-
// string output, string kind, string provenance
17-
// );
18-
generateMethodDefinition: (method) => [
19-
method.packageName,
20-
method.typeName,
21-
true,
22-
method.methodName,
23-
method.methodParameters,
24-
"",
25-
method.output,
26-
method.kind,
27-
method.provenance,
28-
],
29-
readModeledMethod: (row) => ({
30-
type: "source" as ModeledMethodType,
31-
input: "",
32-
output: row[6] as string,
33-
kind: row[7] as string,
34-
provenance: row[8] as Provenance,
35-
signature: readRowToMethod(row),
36-
packageName: row[0] as string,
37-
typeName: row[1] as string,
38-
methodName: row[3] as string,
39-
methodParameters: row[4] as string,
40-
}),
41-
},
42-
sink: {
43-
extensiblePredicate: sharedExtensiblePredicates.sink,
44-
supportedKinds: sharedKinds.sink,
45-
// extensible predicate sinkModel(
46-
// string package, string type, boolean subtypes, string name, string signature, string ext,
47-
// string input, string kind, string provenance
48-
// );
49-
generateMethodDefinition: (method) => [
50-
method.packageName,
51-
method.typeName,
52-
true,
53-
method.methodName,
54-
method.methodParameters,
55-
"",
56-
method.input,
57-
method.kind,
58-
method.provenance,
59-
],
60-
readModeledMethod: (row) => ({
61-
type: "sink",
62-
input: row[6] as string,
63-
output: "",
64-
kind: row[7] as string,
65-
provenance: row[8] as Provenance,
66-
signature: readRowToMethod(row),
67-
packageName: row[0] as string,
68-
typeName: row[1] as string,
69-
methodName: row[3] as string,
70-
methodParameters: row[4] as string,
71-
}),
72-
},
73-
summary: {
74-
extensiblePredicate: sharedExtensiblePredicates.summary,
75-
supportedKinds: sharedKinds.summary,
76-
// extensible predicate summaryModel(
77-
// string package, string type, boolean subtypes, string name, string signature, string ext,
78-
// string input, string output, string kind, string provenance
79-
// );
80-
generateMethodDefinition: (method) => [
81-
method.packageName,
82-
method.typeName,
83-
true,
84-
method.methodName,
85-
method.methodParameters,
86-
"",
87-
method.input,
88-
method.output,
89-
method.kind,
90-
method.provenance,
91-
],
92-
readModeledMethod: (row) => ({
93-
type: "summary",
94-
input: row[6] as string,
95-
output: row[7] as string,
96-
kind: row[8] as string,
97-
provenance: row[9] as Provenance,
98-
signature: readRowToMethod(row),
99-
packageName: row[0] as string,
100-
typeName: row[1] as string,
101-
methodName: row[3] as string,
102-
methodParameters: row[4] as string,
103-
}),
104-
},
105-
neutral: {
106-
extensiblePredicate: sharedExtensiblePredicates.neutral,
107-
supportedKinds: sharedKinds.neutral,
108-
// extensible predicate neutralModel(
109-
// string package, string type, string name, string signature, string kind, string provenance
110-
// );
111-
generateMethodDefinition: (method) => [
112-
method.packageName,
113-
method.typeName,
114-
method.methodName,
115-
method.methodParameters,
116-
method.kind,
117-
method.provenance,
118-
],
119-
readModeledMethod: (row) => ({
120-
type: "neutral",
121-
input: "",
122-
output: "",
123-
kind: row[4] as string,
124-
provenance: row[5] as Provenance,
125-
signature: `${row[0]}.${row[1]}#${row[2]}${row[3]}`,
126-
packageName: row[0] as string,
127-
typeName: row[1] as string,
128-
methodName: row[2] as string,
129-
methodParameters: row[3] as string,
130-
}),
11+
predicates: {
12+
source: {
13+
extensiblePredicate: sharedExtensiblePredicates.source,
14+
supportedKinds: sharedKinds.source,
15+
// extensible predicate sourceModel(
16+
// string package, string type, boolean subtypes, string name, string signature, string ext,
17+
// string output, string kind, string provenance
18+
// );
19+
generateMethodDefinition: (method) => [
20+
method.packageName,
21+
method.typeName,
22+
true,
23+
method.methodName,
24+
method.methodParameters,
25+
"",
26+
method.output,
27+
method.kind,
28+
method.provenance,
29+
],
30+
readModeledMethod: (row) => ({
31+
type: "source" as ModeledMethodType,
32+
input: "",
33+
output: row[6] as string,
34+
kind: row[7] as string,
35+
provenance: row[8] as Provenance,
36+
signature: readRowToMethod(row),
37+
packageName: row[0] as string,
38+
typeName: row[1] as string,
39+
methodName: row[3] as string,
40+
methodParameters: row[4] as string,
41+
}),
42+
},
43+
sink: {
44+
extensiblePredicate: sharedExtensiblePredicates.sink,
45+
supportedKinds: sharedKinds.sink,
46+
// extensible predicate sinkModel(
47+
// string package, string type, boolean subtypes, string name, string signature, string ext,
48+
// string input, string kind, string provenance
49+
// );
50+
generateMethodDefinition: (method) => [
51+
method.packageName,
52+
method.typeName,
53+
true,
54+
method.methodName,
55+
method.methodParameters,
56+
"",
57+
method.input,
58+
method.kind,
59+
method.provenance,
60+
],
61+
readModeledMethod: (row) => ({
62+
type: "sink",
63+
input: row[6] as string,
64+
output: "",
65+
kind: row[7] as string,
66+
provenance: row[8] as Provenance,
67+
signature: readRowToMethod(row),
68+
packageName: row[0] as string,
69+
typeName: row[1] as string,
70+
methodName: row[3] as string,
71+
methodParameters: row[4] as string,
72+
}),
73+
},
74+
summary: {
75+
extensiblePredicate: sharedExtensiblePredicates.summary,
76+
supportedKinds: sharedKinds.summary,
77+
// extensible predicate summaryModel(
78+
// string package, string type, boolean subtypes, string name, string signature, string ext,
79+
// string input, string output, string kind, string provenance
80+
// );
81+
generateMethodDefinition: (method) => [
82+
method.packageName,
83+
method.typeName,
84+
true,
85+
method.methodName,
86+
method.methodParameters,
87+
"",
88+
method.input,
89+
method.output,
90+
method.kind,
91+
method.provenance,
92+
],
93+
readModeledMethod: (row) => ({
94+
type: "summary",
95+
input: row[6] as string,
96+
output: row[7] as string,
97+
kind: row[8] as string,
98+
provenance: row[9] as Provenance,
99+
signature: readRowToMethod(row),
100+
packageName: row[0] as string,
101+
typeName: row[1] as string,
102+
methodName: row[3] as string,
103+
methodParameters: row[4] as string,
104+
}),
105+
},
106+
neutral: {
107+
extensiblePredicate: sharedExtensiblePredicates.neutral,
108+
supportedKinds: sharedKinds.neutral,
109+
// extensible predicate neutralModel(
110+
// string package, string type, string name, string signature, string kind, string provenance
111+
// );
112+
generateMethodDefinition: (method) => [
113+
method.packageName,
114+
method.typeName,
115+
method.methodName,
116+
method.methodParameters,
117+
method.kind,
118+
method.provenance,
119+
],
120+
readModeledMethod: (row) => ({
121+
type: "neutral",
122+
input: "",
123+
output: "",
124+
kind: row[4] as string,
125+
provenance: row[5] as Provenance,
126+
signature: `${row[0]}.${row[1]}#${row[2]}${row[3]}`,
127+
packageName: row[0] as string,
128+
typeName: row[1] as string,
129+
methodName: row[2] as string,
130+
methodParameters: row[3] as string,
131+
}),
132+
},
131133
},
132134
};

extensions/ql-vscode/src/model-editor/yaml.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Method } from "./method";
44
import { ModeledMethod, ModeledMethodType } from "./modeled-method";
55
import {
66
getModelsAsDataLanguage,
7-
ModelsAsDataLanguageModel,
7+
ModelsAsDataLanguagePredicate,
88
} from "./languages";
99

1010
import * as modelExtensionFileSchema from "./model-extension-file.schema.json";
@@ -18,7 +18,7 @@ const modelExtensionFileSchemaValidate = ajv.compile(modelExtensionFileSchema);
1818

1919
function createDataProperty(
2020
methods: readonly ModeledMethod[],
21-
definition: ModelsAsDataLanguageModel,
21+
definition: ModelsAsDataLanguagePredicate,
2222
) {
2323
if (methods.length === 0) {
2424
return " []";
@@ -56,7 +56,7 @@ export function createDataExtensionYaml(
5656
}
5757
}
5858

59-
const extensions = Object.entries(modelsAsDataLanguage).map(
59+
const extensions = Object.entries(modelsAsDataLanguage.predicates).map(
6060
([type, definition]) => ` - addsTo:
6161
pack: codeql/${language}-all
6262
extensible: ${definition.extensiblePredicate}
@@ -260,7 +260,7 @@ export function loadDataExtensionYaml(
260260
const extensible = addsTo.extensible;
261261
const data = extension.data;
262262

263-
const definition = Object.values(modelsAsDataLanguage).find(
263+
const definition = Object.values(modelsAsDataLanguage.predicates).find(
264264
(definition) => definition.extensiblePredicate === extensible,
265265
);
266266
if (!definition) {

extensions/ql-vscode/src/view/model-editor/ModelKindDropdown.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const ModelKindDropdown = ({
2626
const modelsAsDataLanguage = getModelsAsDataLanguage(language);
2727

2828
return modeledMethod?.type && modeledMethod.type !== "none"
29-
? modelsAsDataLanguage[modeledMethod.type]
29+
? modelsAsDataLanguage.predicates[modeledMethod.type]
3030
: undefined;
3131
}, [language, modeledMethod?.type]);
3232

0 commit comments

Comments
 (0)