Created
August 15, 2024 03:40
-
-
Save aztack/dd609e86d53dc7174e1cd4230691d3d6 to your computer and use it in GitHub Desktop.
Mermaid-querystring
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Function to generate Mermaid graph code from package.json files | |
async function generateGraph(files: string[]) { | |
let graph = "graph TD;\n"; | |
for (const file of files) { | |
const packageJson = JSON.parse(fs.readFileSync(file, 'utf-8')); | |
const packageName = await hashId(packageJson.name, packageJson.version); | |
if (packageJson.dependencies) { | |
for (const dependency in packageJson.dependencies) { | |
if (excludePkgs.find(p => dependency === p)) { | |
continue; | |
} | |
const v = packageJson.dependencies[dependency].replace('^', ''); | |
graph += ` ${packageName} --> ${await hashId(dependency, v)}\n`; | |
} | |
} | |
} | |
return graph; | |
} | |
// Function to compress the string using pako | |
function compressString(input: string): string { | |
const enc = new TextEncoder(); | |
const compressed = pako.deflate(enc.encode(JSON.stringify({ | |
autoSync: true, | |
mermaid: JSON.stringify({theme: 'default'}), | |
code: input, | |
pane: true, | |
editorMode: 'code', | |
rough: false, | |
updateDiagram: true | |
})), {level: 9 }); | |
return Buffer.from(compressed).toString('base64'); | |
} | |
// Main function to execute the script | |
async function main(rootDir: string) { | |
try { | |
const files = await globPackages(rootDir); | |
const graph = await generateGraph(files); | |
const compressedGraph = compressString(graph); | |
const url = `https://mermaid.live/edit#pako:${compressedGraph}`; | |
open(url); | |
console.log(`URL Opened: ${url}`); | |
} catch (error) { | |
console.error("Error:", error); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment