| const fs = require('fs'); |
| |
| function depends(module, from) |
| { |
| if (module === from) |
| return true; |
| var desc = descriptors[module]; |
| if (!desc) |
| return false; |
| for (var dep of desc.dependencies || []) { |
| if (dep === from) |
| return true; |
| if (depends(dep, from)) |
| return true; |
| } |
| return false; |
| } |
| |
| var map = new Map(); |
| var sortedKeys; |
| var moduleNames = new Set(); |
| |
| String.prototype.replaceAll = function(a, b) |
| { |
| var result = this; |
| return result.split(a).join(b); |
| }; |
| |
| function read(filePath) |
| { |
| var content = fs.readFileSync(filePath).toString(); |
| |
| var oldModuleName = filePath.replace(/front_end\/([^/]+)\/.*/, "$1"); |
| if (oldModuleName.endsWith("_lazy")) |
| oldModuleName = oldModuleName.substring(0, oldModuleName.length - "_lazy".length); |
| |
| var moduleName = oldModuleName; |
| |
| if (moduleName === "sdk" || moduleName == "ui") |
| moduleName = moduleName.toUpperCase(); |
| moduleName = moduleName.split("_").map(a => a.substring(0, 1).toUpperCase() + a.substring(1)).join(""); |
| if (moduleName.includes("/")) |
| return; |
| moduleNames.add(moduleName); |
| |
| var lines = content.split("\n"); |
| for (var line of lines) { |
| // Replace with your own logic |
| if (!line.startsWith("var ")) |
| continue; |
| var globalVariableMatch = line.match(/^var ([a-z_A-Z0-9]+)\s*(\=)/); |
| var match = globalVariableMatch; |
| |
| if (!match) |
| continue; |
| var name = match[1]; |
| var weight = line.endsWith(name + ";") ? 2 : 1; |
| |
| var newName; |
| |
| newName = moduleName + "." + name; |
| var existing = map.get(name); |
| if (existing && existing.weight > weight) |
| continue; |
| if (existing && existing.weight === weight && newName !== existing.name) |
| console.log("Conflict: " + newName + " vs " + existing.name + " " + weight); |
| map.set(name, {name:newName, weight}); |
| } |
| } |
| |
| function write(filePath) |
| { |
| var content = fs.readFileSync(filePath).toString(); |
| var newContent = content; |
| for (var key of sortedKeys) { |
| var originalIdentifier = key; |
| var newIdentifier = map.get(key).name; |
| newContent = newContent.split("\n").map(function (line) { |
| return processLine(line); |
| }).join("\n"); |
| } |
| |
| if (content !== newContent) |
| fs.writeFileSync(filePath, newContent); |
| } |
| |
| function processLine(line) { |
| // Add transformation logic |
| return line; |
| } |
| |
| function walkSync(currentDirPath, process, json) { |
| var path = require('path'); |
| fs.readdirSync(currentDirPath).forEach(function (name) { |
| var filePath = path.join(currentDirPath, name); |
| var stat = fs.statSync(filePath); |
| if (stat.isFile() && (filePath.endsWith(".js") || filePath.endsWith(".html") || filePath.endsWith(".xhtml") || filePath.endsWith("-expected.txt") || (json && filePath.endsWith(".json")))) { |
| if (filePath.includes("ExtensionAPI.js")) |
| return; |
| if (filePath.includes("externs.js")) |
| return; |
| if (filePath.includes("eslint") || filePath.includes("lighthouse-background.js") || filePath.includes("/cm/") || filePath.includes("/xterm.js/") || filePath.includes("/acorn/") || filePath.includes("/gonzales-scss")) |
| return; |
| if (filePath.includes("/cm_modes/") && !filePath.includes("DefaultCodeMirror") && !filePath.includes("module.json")) |
| return; |
| process(filePath); |
| } else if (stat.isDirectory()) { |
| walkSync(filePath, process, json); |
| } |
| }); |
| } |
| |
| walkSync('front_end', read); |
| |
| sortedKeys = Array.from(map.keys()); |
| sortedKeys.sort((a, b) => a.localeCompare(b)); |
| |
| for (var key of sortedKeys) |
| console.log(key + " => " + map.get(key).name); |
| |
| walkSync('front_end', write, true); |
| |
| walkSync('../../LayoutTests/http/tests/inspector', write, false); |
| walkSync('../../LayoutTests/http/tests/inspector-enabled', write, false); |
| walkSync('../../LayoutTests/http/tests/inspector-protocol', write, false); |
| walkSync('../../LayoutTests/http/tests/inspector-unit', write, false); |
| walkSync('../../LayoutTests/inspector', write, false); |
| walkSync('../../LayoutTests/inspector-enabled', write, false); |
| walkSync('../../LayoutTests/inspector-protocol', write, false); |