-
Notifications
You must be signed in to change notification settings - Fork 93
/
dump_javascript_paths.mjs
71 lines (62 loc) 路 2.13 KB
/
dump_javascript_paths.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { join as pathJoin, resolve as pathResolve } from "path";
import { readdir as readDir } from "fs/promises";
const pathsToRecurse = [
"./Scripts/",
"./ClientExtracted/",
"./help.steampowered.com/",
"./partner.steamgames.com/",
"./steamcommunity.com/",
"./store.steampowered.com",
"./checkout.steampowered.com",
"./www.dota2.com",
"./www.underlords.com",
];
// Should this just be a recursive search for all webpack files?
const paths = [
"./Scripts/WebUI/",
"./ClientExtracted/clientui/",
"./ClientExtracted/steamui/",
"./help.steampowered.com/public/javascript/applications/help/",
"./partner.steamgames.com/public/javascript/applications/appmgmt/",
"./partner.steamgames.com/public/javascript/webui/storeadmin/",
"./steamcommunity.com/public/javascript/applications/community/",
"./steamcommunity.com/public/javascript/webui/",
"./store.steampowered.com/public/javascript/applications/interactive_recommender/",
"./store.steampowered.com/public/javascript/applications/store/",
"./store.steampowered.com/public/shared/javascript/legacy_web/",
"./www.dota2.com/public/javascript/applications/dpc/",
"./www.dota2.com/public/javascript/dota_react/",
"./www.underlords.com/public/javascript/",
];
async function GetJavascriptFiles(dirName) {
dirName = pathResolve(dirName);
const files = await readDir(dirName);
return files
.filter((fileName) => {
if (fileName == "licenses.js") {
return false;
}
return fileName.endsWith(".js");
})
.map((fileName) => pathJoin(dirName, fileName));
}
export async function GetFilesToParse() {
const promises = await Promise.all(paths.map(GetJavascriptFiles));
return [].concat(...promises).sort();
}
async function* GetRecursiveJavascriptFiles(dir) {
const dirents = await readDir(dir, { withFileTypes: true });
for (const dirent of dirents) {
const res = pathResolve(dir, dirent.name);
if (dirent.isDirectory()) {
yield* GetRecursiveJavascriptFiles(res);
} else if (dirent.isFile() && dirent.name.endsWith(".js")) {
yield res;
}
}
}
export async function* GetRecursiveFilesToParse() {
for (const path of pathsToRecurse) {
yield* GetRecursiveJavascriptFiles(path);
}
}