Skip to content

Commit 9cfd3af

Browse files
committed
feat: Filter enums for only real pseudo ones
1 parent 66bd651 commit 9cfd3af

File tree

2 files changed

+104
-3
lines changed

2 files changed

+104
-3
lines changed

package-lock.json

Lines changed: 77 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/metadataProvider/createPseudoModulesInfo.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import {pipeline} from "node:stream/promises";
22
import {Extract} from "unzip-stream";
33
import MetadataProvider from "./MetadataProvider.js";
4-
import {writeFile} from "node:fs/promises";
4+
import {writeFile, readdir} from "node:fs/promises";
5+
import {createRequire} from "module";
6+
const require = createRequire(import.meta.url);
57

68
import type {UI5Enum, UI5EnumValue} from "@ui5-language-assistant/semantic-model-types";
9+
import path from "node:path";
710

811
const RAW_API_JSON_FILES_FOLDER = "tmp/apiJson";
912

@@ -20,13 +23,35 @@ async function downloadAPIJsons(url: string) {
2023
}
2124
}
2225

26+
async function extractPseudoModuleNames() {
27+
const apiJsonList = await readdir(RAW_API_JSON_FILES_FOLDER);
28+
29+
return apiJsonList.flatMap((library) => {
30+
const libApiJson = require(path.resolve(RAW_API_JSON_FILES_FOLDER, library));
31+
return libApiJson.symbols;
32+
}).reduce((acc: Record<string, boolean>, symbol) => {
33+
if (symbol.kind === "enum" && symbol.resource.endsWith("library.js")) {
34+
acc[symbol.name] = true;
35+
}
36+
37+
return acc;
38+
}, Object.create(null) as Record<string, boolean>);
39+
}
40+
2341
async function transformFiles() {
2442
const metadataProvider = new MetadataProvider();
25-
await metadataProvider.init(RAW_API_JSON_FILES_FOLDER);
43+
await metadataProvider.init(RAW_API_JSON_FILES_FOLDER, "1.120.12" /** TODO: Extract it from URL */);
44+
45+
const pseudoModuleNames = await extractPseudoModuleNames();
2646

2747
const {enums} = metadataProvider.getModel();
2848

2949
const groupedEnums = Object.keys(enums).reduce((acc: Record<string, UI5Enum[]>, enumKey: string) => {
50+
// Filter only real pseudo modules i.e. defined within library.js files
51+
if (!pseudoModuleNames[enumKey]) {
52+
return acc;
53+
}
54+
3055
const curEnum = enums[enumKey];
3156

3257
acc[curEnum.library] = acc[curEnum.library] ?? [];

0 commit comments

Comments
 (0)