Remove the ModeledExternalApiUsage type in favour of just ModeledMethod
This commit is contained in:
@@ -14,28 +14,19 @@ import { sanitizeExtensionPackName } from "./extension-pack-name";
|
||||
const ajv = new Ajv({ allErrors: true });
|
||||
const dataSchemaValidate = ajv.compile(dataSchemaJson);
|
||||
|
||||
type ModeledExternalApiUsage = {
|
||||
externalApiUsage: ExternalApiUsage;
|
||||
modeledMethod?: ModeledMethod;
|
||||
};
|
||||
|
||||
function createDataProperty(
|
||||
methods: ModeledExternalApiUsage[],
|
||||
methods: ModeledMethod[],
|
||||
definition: ExtensiblePredicateDefinition,
|
||||
) {
|
||||
if (methods.length === 0) {
|
||||
return " []";
|
||||
}
|
||||
|
||||
const modeledMethods = methods.filter(
|
||||
(method) => method.modeledMethod !== undefined,
|
||||
);
|
||||
|
||||
return `\n${modeledMethods
|
||||
return `\n${methods
|
||||
.map(
|
||||
(method) =>
|
||||
` - ${JSON.stringify(
|
||||
definition.generateMethodDefinition(method.modeledMethod!),
|
||||
definition.generateMethodDefinition(method),
|
||||
)}`,
|
||||
)
|
||||
.join("\n")}`;
|
||||
@@ -43,11 +34,11 @@ function createDataProperty(
|
||||
|
||||
export function createDataExtensionYaml(
|
||||
language: string,
|
||||
modeledUsages: ModeledExternalApiUsage[],
|
||||
modeledMethods: ModeledMethod[],
|
||||
) {
|
||||
const methodsByType: Record<
|
||||
Exclude<ModeledMethodType, "none">,
|
||||
ModeledExternalApiUsage[]
|
||||
ModeledMethod[]
|
||||
> = {
|
||||
source: [],
|
||||
sink: [],
|
||||
@@ -55,11 +46,9 @@ export function createDataExtensionYaml(
|
||||
neutral: [],
|
||||
};
|
||||
|
||||
for (const modeledUsage of modeledUsages) {
|
||||
const { modeledMethod } = modeledUsage;
|
||||
|
||||
for (const modeledMethod of modeledMethods) {
|
||||
if (modeledMethod?.type && modeledMethod.type !== "none") {
|
||||
methodsByType[modeledMethod.type].push(modeledUsage);
|
||||
methodsByType[modeledMethod.type].push(modeledMethod);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,32 +72,24 @@ export function createDataExtensionYamlsForApplicationMode(
|
||||
externalApiUsages: ExternalApiUsage[],
|
||||
modeledMethods: Record<string, ModeledMethod>,
|
||||
): Record<string, string> {
|
||||
const methodsByLibraryFilename: Record<string, ModeledExternalApiUsage[]> =
|
||||
{};
|
||||
const methodsByLibraryFilename: Record<string, ModeledMethod[]> = {};
|
||||
|
||||
for (const externalApiUsage of externalApiUsages) {
|
||||
const modeledMethod = modeledMethods[externalApiUsage.signature];
|
||||
if (!modeledMethod) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const filename = createFilenameForLibrary(externalApiUsage.library);
|
||||
|
||||
methodsByLibraryFilename[filename] =
|
||||
methodsByLibraryFilename[filename] || [];
|
||||
methodsByLibraryFilename[filename].push({
|
||||
externalApiUsage,
|
||||
modeledMethod,
|
||||
});
|
||||
methodsByLibraryFilename[filename].push(modeledMethod);
|
||||
}
|
||||
|
||||
const result: Record<string, string> = {};
|
||||
|
||||
for (const [filename, methods] of Object.entries(methodsByLibraryFilename)) {
|
||||
const hasModeledMethods = methods.some(
|
||||
(method) => method.modeledMethod !== undefined,
|
||||
);
|
||||
if (!hasModeledMethods) {
|
||||
continue;
|
||||
}
|
||||
|
||||
result[filename] = createDataExtensionYaml(language, methods);
|
||||
}
|
||||
|
||||
@@ -129,10 +110,9 @@ export function createDataExtensionYamlsForFrameworkMode(
|
||||
.map((part) => sanitizeExtensionPackName(part))
|
||||
.join("-");
|
||||
|
||||
const methods = externalApiUsages.map((externalApiUsage) => ({
|
||||
externalApiUsage,
|
||||
modeledMethod: modeledMethods[externalApiUsage.signature],
|
||||
}));
|
||||
const methods = externalApiUsages
|
||||
.map((externalApiUsage) => modeledMethods[externalApiUsage.signature])
|
||||
.filter((modeledMethod) => modeledMethod !== undefined);
|
||||
|
||||
return {
|
||||
[`${prefix}${libraryName}${suffix}.yml`]: createDataExtensionYaml(
|
||||
|
||||
@@ -10,82 +10,16 @@ describe("createDataExtensionYaml", () => {
|
||||
it("creates the correct YAML file", () => {
|
||||
const yaml = createDataExtensionYaml("java", [
|
||||
{
|
||||
externalApiUsage: {
|
||||
library: "sql2o-1.6.0.jar",
|
||||
signature: "org.sql2o.Connection#createQuery(String)",
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Connection",
|
||||
methodName: "createQuery",
|
||||
methodParameters: "(String)",
|
||||
supported: true,
|
||||
usages: [
|
||||
{
|
||||
label: "createQuery(...)",
|
||||
url: {
|
||||
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
|
||||
startLine: 15,
|
||||
startColumn: 13,
|
||||
endLine: 15,
|
||||
endColumn: 56,
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "createQuery(...)",
|
||||
url: {
|
||||
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
|
||||
startLine: 26,
|
||||
startColumn: 13,
|
||||
endLine: 26,
|
||||
endColumn: 39,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
modeledMethod: {
|
||||
type: "sink",
|
||||
input: "Argument[0]",
|
||||
output: "",
|
||||
kind: "sql",
|
||||
provenance: "df-generated",
|
||||
signature: "org.sql2o.Connection#createQuery(String)",
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Connection",
|
||||
methodName: "createQuery",
|
||||
methodParameters: "(String)",
|
||||
},
|
||||
},
|
||||
{
|
||||
externalApiUsage: {
|
||||
library: "sql2o-1.6.0.jar",
|
||||
signature: "org.sql2o.Query#executeScalar(Class)",
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Query",
|
||||
methodName: "executeScalar",
|
||||
methodParameters: "(Class)",
|
||||
supported: true,
|
||||
usages: [
|
||||
{
|
||||
label: "executeScalar(...)",
|
||||
url: {
|
||||
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
|
||||
startLine: 15,
|
||||
startColumn: 13,
|
||||
endLine: 15,
|
||||
endColumn: 85,
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "executeScalar(...)",
|
||||
url: {
|
||||
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
|
||||
startLine: 26,
|
||||
startColumn: 13,
|
||||
endLine: 26,
|
||||
endColumn: 68,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
type: "sink",
|
||||
input: "Argument[0]",
|
||||
output: "",
|
||||
kind: "sql",
|
||||
provenance: "df-generated",
|
||||
signature: "org.sql2o.Connection#createQuery(String)",
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Connection",
|
||||
methodName: "createQuery",
|
||||
methodParameters: "(String)",
|
||||
},
|
||||
]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user