1- import { ModeledMethod , ModeledMethodType , Provenance } from "./modeled-method" ;
2- import { DataTuple } from "./model-extension-file" ;
3-
4- export type ExtensiblePredicateDefinition = {
5- extensiblePredicate : string ;
6- generateMethodDefinition : ( method : ModeledMethod ) => DataTuple [ ] ;
7- readModeledMethod : ( row : DataTuple [ ] ) => ModeledMethod ;
8-
9- supportedKinds ?: string [ ] ;
10- } ;
1+ import { ModelsAsDataLanguage } from "./models-as-data" ;
2+ import { ModeledMethodType , Provenance } from "../modeled-method" ;
3+ import { DataTuple } from "../model-extension-file" ;
4+ import { sharedExtensiblePredicates , sharedKinds } from "./shared" ;
115
126function readRowToMethod ( row : DataTuple [ ] ) : string {
137 return `${ row [ 0 ] } .${ row [ 1 ] } #${ row [ 3 ] } ${ row [ 4 ] } ` ;
148}
159
16- export const extensiblePredicateDefinitions : Record <
17- Exclude < ModeledMethodType , "none" > ,
18- ExtensiblePredicateDefinition
19- > = {
10+ export const staticLanguage : ModelsAsDataLanguage = {
2011 source : {
21- extensiblePredicate : "sourceModel" ,
12+ extensiblePredicate : sharedExtensiblePredicates . source ,
13+ supportedKinds : sharedKinds . source ,
2214 // extensible predicate sourceModel(
2315 // string package, string type, boolean subtypes, string name, string signature, string ext,
2416 // string output, string kind, string provenance
@@ -35,7 +27,7 @@ export const extensiblePredicateDefinitions: Record<
3527 method . provenance ,
3628 ] ,
3729 readModeledMethod : ( row ) => ( {
38- type : "source" ,
30+ type : "source" as ModeledMethodType ,
3931 input : "" ,
4032 output : row [ 6 ] as string ,
4133 kind : row [ 7 ] as string ,
@@ -46,10 +38,10 @@ export const extensiblePredicateDefinitions: Record<
4638 methodName : row [ 3 ] as string ,
4739 methodParameters : row [ 4 ] as string ,
4840 } ) ,
49- supportedKinds : [ "local" , "remote" ] ,
5041 } ,
5142 sink : {
52- extensiblePredicate : "sinkModel" ,
43+ extensiblePredicate : sharedExtensiblePredicates . sink ,
44+ supportedKinds : sharedKinds . sink ,
5345 // extensible predicate sinkModel(
5446 // string package, string type, boolean subtypes, string name, string signature, string ext,
5547 // string input, string kind, string provenance
@@ -77,22 +69,10 @@ export const extensiblePredicateDefinitions: Record<
7769 methodName : row [ 3 ] as string ,
7870 methodParameters : row [ 4 ] as string ,
7971 } ) ,
80- supportedKinds : [
81- "code-injection" ,
82- "command-injection" ,
83- "file-content-store" ,
84- "html-injection" ,
85- "js-injection" ,
86- "ldap-injection" ,
87- "log-injection" ,
88- "path-injection" ,
89- "request-forgery" ,
90- "sql-injection" ,
91- "url-redirection" ,
92- ] ,
9372 } ,
9473 summary : {
95- extensiblePredicate : "summaryModel" ,
74+ extensiblePredicate : sharedExtensiblePredicates . summary ,
75+ supportedKinds : sharedKinds . summary ,
9676 // extensible predicate summaryModel(
9777 // string package, string type, boolean subtypes, string name, string signature, string ext,
9878 // string input, string output, string kind, string provenance
@@ -121,10 +101,10 @@ export const extensiblePredicateDefinitions: Record<
121101 methodName : row [ 3 ] as string ,
122102 methodParameters : row [ 4 ] as string ,
123103 } ) ,
124- supportedKinds : [ "taint" , "value" ] ,
125104 } ,
126105 neutral : {
127- extensiblePredicate : "neutralModel" ,
106+ extensiblePredicate : sharedExtensiblePredicates . neutral ,
107+ supportedKinds : sharedKinds . neutral ,
128108 // extensible predicate neutralModel(
129109 // string package, string type, string name, string signature, string kind, string provenance
130110 // );
@@ -148,6 +128,5 @@ export const extensiblePredicateDefinitions: Record<
148128 methodName : row [ 2 ] as string ,
149129 methodParameters : row [ 3 ] as string ,
150130 } ) ,
151- supportedKinds : [ "summary" , "source" , "sink" ] ,
152131 } ,
153132} ;
0 commit comments