@evolvejs/core
Version:
An advanced Discord API wrapper with TS and JS support
101 lines (93 loc) • 2.9 kB
JavaScript
const { readFile, readdirSync, appendFile, mkdir } = require("fs");
const nodeDenoReplacement = {
process: "Deno",
'import { URL } from "url";': "",
'import fetch from "node-fetch";': "",
'import ws from "ws";':
'import { WebSocket as ws, WebSocketError as Error } from "https://deno.land/x/websocket@v0.0.5/mod";',
"@evolvejs/objex": "https://deno.land/x/objex/mod",
"sign-logger": "https://deno.land/x/sign_logger/mod",
'require("erlpack").unpack(Buffer.from(data.toString(), "binary"))':
'(await (await import("https://deno.land/std/encoding/toml")).parse(new TextDecoder().decode(data as unknown as ArrayBuffer)))[0] as Payload',
'require("erlpack").pack(data)': "payload = new TextEncoder().encode(data)",
};
const replaceIfPresent = (stringedData, original, replacer) =>
stringedData.includes(original)
? stringedData.replaceAll(original, replacer)
: stringedData;
function editFile(filename) {
readFile(`${filename}`, (err, data) => {
if (err) throw err;
let stringedData = data.toString();
const args = stringedData.split(/ +/g);
for (const [k, v] of Object.entries(nodeDenoReplacement)) {
stringedData = replaceIfPresent(stringedData, k, v);
}
for (let i = 0; i < args.length; i++) {
if (args[i] === "from") {
const double = args[i + 1].lastIndexOf('"');
args[i + 1] =
args[i + 1].slice(0, double) + ".ts" + args[i + 1].slice(double);
}
}
stringedData = args.join(" ");
stringedData = replaceIfPresent(stringedData, "...ts", "../mod.ts");
filename = replaceIfPresent(filename, "index.ts", "mod.ts");
filename = replaceIfPresent(filename, "src", "deno/src");
appendFile(filename, stringedData, {}, () => {
console.log(`Wrote Data to ${filename}`);
});
});
}
function readDir(dirName) {
try {
readdirSync(dirName, { withFileTypes: true }).forEach((file) => {
if (file.isDirectory()) {
mkdir(`${dirName.replace("src", "deno/src")}/${file.name}`, () => {
readDir(`${dirName}/${file.name}`);
});
} else {
editFile(`${dirName}/${file.name}`);
}
});
} catch (e) {
console.error(e);
}
}
mkdir("deno", () => {
mkdir("deno/src", () => {
mkdir("deno/.vscode", () => {
appendFile(
"deno/.vscode/settings.json",
JSON.stringify(
{
"deno.enable": true,
},
null,
4
),
{},
() => {
readFile("README.md", (err, data) => {
if (err) console.error(err);
appendFile("deno/README.md", data, {}, () => {
appendFile(
"deno/src/README.md",
"# [EvolveJS README](https://github.com/EvolveJS/EvolveJS/blob/deno-master/README.md)",
{},
() => {
readFile("LICENSE", (err, data) => {
if (err) console.error(err);
appendFile("LICENSE", data, {}, () => {
readDir("src");
});
});
}
);
});
});
}
);
});
});
});