Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion script/backups/README.md

This file was deleted.

1 change: 0 additions & 1 deletion script/backups/temp.temp

This file was deleted.

Empty file added script/backups/temp.txt
Empty file.
12 changes: 12 additions & 0 deletions script/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = {
DontCompile: [
"config"
],
FileExtension: ".pjs",
Projects: {
Example: [
"directory_1",
"directory_2"
]
}
}
9 changes: 0 additions & 9 deletions script/config.json

This file was deleted.

140 changes: 61 additions & 79 deletions script/index.js
Original file line number Diff line number Diff line change
@@ -1,84 +1,66 @@
const fs = require('fs'), chalk = require(`chalk`), path = require('path'), config = require(`./config.json`), readline = require(`readline`), bytenode = require("bytenode");
var fs = require('fs'), path = require('path'), readline = require('readline'), bytenode = require('bytenode'), cfg = require('./config');
var rl = readline.createInterface({ input: process.stdin, output: process.stdout });

const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
prompt();

async function prompt() {
console.clear();
rl.question(`Provide the directory you would like to compile. Or provide the type of project.\n`, (res) => {
if (config.project_types[res]) return project(res);
encDir(res)
function Log(m, o) {
o = o || {};
var p = '';
if (o.bold) p += '\x1b[1m';
if (o.color) p += `\x1b[${o.color}m`;
if (o.title) p += `[${o.title}]: \x1b[0m`;
console.log(`${p}${m}\x1b[0m`);
};
function Prompt(msg) {
console.clear();
rl.question(`${msg}\n`, function (i) {
var dirs = cfg.Projects[i] || i.split(',').map(function (d) { return d.trim(); });
Compile(dirs);
});
};
function Repeat(total) {
setTimeout(function () {
Log(`✔ Compiled ${total} files.`, { color: 32 });
rl.question('Would you like to run again [Y/N]\n', function (r) {
if (!/y/i.test(r)) return Log('Thank you for using.', { color: 32 }), process.exit(0);
Prompt('Provide the directory you would like to compile. Or provide the type of project.');
});
}

async function project(res) {
const date = new Date(Date.now()).toDateString().replaceAll(" ", "-");
let directories = config.project_types[res];
let total = 0;
console.clear();
console.log(`Compiling directories for ${res}`);
for (let directory of directories) {
let files = await fs.readdirSync(directory);
files.forEach(async(file) => {
if (file.split(".")[1] !== "js") return;
if (config.do_not_compile.includes(file.split(".")[0])) return;
let data = fs.readFileSync(path.join(__dirname, directory, "/", file), "utf-8");
console.log(chalk.italic("Creating backup for " + chalk.blue(`${directory}/${file}`)));
fs.writeFileSync(path.join(__dirname, "backups/", `${file.split(".")[0]}-${date}-${Date.now()}.js`), data);
bytenode.compileFile({
filename: `./${directory}/${file}`,
output: `./${directory}/${file.split(".")[0]}${config.file_extension}`
});
console.log(chalk.italic("Creating Easy Compile File for " + chalk.blue(`${directory}/${file}`)));
fs.unlink(path.join(__dirname, directory, "/", file), () => {});
console.log(chalk.italic("Dropping file " + chalk.blue(`${directory}/${file}`)));
total++;
});
};
repeat(total);
}, 1000);
};

async function encDir(dir) {
const date = new Date(Date.now()).toDateString().replaceAll(" ", "-");
if (fs.existsSync(dir)) {
let total = 0;
const files = await fs.readdirSync(dir);
files.forEach(async(f) => {
if (f.split(".")[1] !== "js") return;
if (config.do_not_compile.includes(f.split(".")[0])) return;
let data = fs.readFileSync(path.join(__dirname, dir, "/", f), "utf-8");
console.log(chalk.italic("Creating backup for " + chalk.blue(`${dir}/${f}`)));
fs.writeFileSync(path.join(__dirname, "backups/", `${f.split(".")[0]}-${date}-${Date.now}.js`), data);
bytenode.compileFile({
filename: `./${dir}/${f}`,
output: `./${dir}/${f.split(".")[0]}${config.file_extension}`
});
console.log(chalk.italic("Creating Easy Compile File for " + chalk.blue(`${dir}/${f}`)));
fs.unlink(path.join(__dirname, dir, "/", f), () => {});
console.log(chalk.italic("Dropping file " + chalk.blue(`${dir}/${f}`)));
total++;
function Process(dir, file, t) {
if (!file.endsWith('.js') || cfg.DontCompile.includes(file.split('.')[0])) return Promise.resolve(0);
var full = path.join(__dirname, dir, file);
return fs.promises.readFile(full, 'utf-8').then(function (data) {
return fs.promises.writeFile(path.join(__dirname, 'backups', `${file.split('.')[0]}-${t}.js`), data);
}).then(function () {
bytenode.compileFile({
filename: `./${dir}/${file}`,
output: `./${dir}/${file.split('.')[0]}${cfg.FileExtension}`
});
return fs.promises.unlink(full);
}).then(function () {
return 1;
});
};
function Compile(dirs) {
var t = Date.now(), total = 0, jobs = [], compiled = [];
dirs.forEach(function (dir) {
if (!fs.existsSync(dir)) return Log(`Directory ${dir} does not exist.`, { color: 31, bold: true, title: 'ERROR' });
jobs.push(fs.promises.readdir(dir).then(function (files) {
return Promise.all(files.map(function (file) {
return Process(dir, file, t).then(function (c) {
total += c;
if (c) compiled.push(`${dir}${file}`);
});
repeat(total);
} else {
console.log(`that directory ${chalk.red(`does not exist.`)}`);
repeat(0);
}
}
}));
}));
});
Log('Creating backups...', { color: 34, title: 'BACKUP' });
Promise.all(jobs).then(function () {
Log(`These files have been compiled:`, { title: 'COMPILED', color: 32, bold: true });
compiled.forEach(function (f) {
Log(` - ${f}`, { color: 32 });
});
Repeat(total);
});
};

async function repeat(total) {
setTimeout(() => {
console.log(`✔ Compiled ${chalk.green(total)} files.`);
rl.question(`Would you like to run again ${chalk.red(`[Y/N]`)}\n`, (res) => {
if (res == "Y" || res == "y") {
prompt();
} else {
console.clear();
console.log(`Thank you for using Easy Compile.`);
process.exit(1);
}
})
}, 3000)
}
Prompt('Provide the directory you would like to compile. Or provide the type of project.');
3 changes: 1 addition & 2 deletions script/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@
"license": "ISC",
"dependencies": {
"bytenode": "^1.3.4",
"chalk": "^4.1.2",
"fs": "^0.0.1-security",
"path": "^0.12.7",
"readline": "^1.3.0"
}
}
}
Empty file added script/projects/temp.txt
Empty file.
2 changes: 1 addition & 1 deletion website/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

This is the Website version for Easy Compile. This can be used to secure your content via the webste by pasting code into it and getting the compiled file in return.

runs as an Express JS application.
Runs as an Express JS application.
1 change: 0 additions & 1 deletion website/backups/readme.md

This file was deleted.

Empty file added website/backups/temp.txt
Empty file.
7 changes: 7 additions & 0 deletions website/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module.exports = {
SiteInformation: {
ProcessPort: 3001,
Domain: "http://localhost:3001",
Extension: ".pjs"
}
}
7 changes: 0 additions & 7 deletions website/config.json

This file was deleted.

1 change: 0 additions & 1 deletion website/files/readme.md

This file was deleted.

Empty file added website/files/temp.txt
Empty file.
64 changes: 32 additions & 32 deletions website/index.js
Original file line number Diff line number Diff line change
@@ -1,45 +1,45 @@
// EasyCompile - created by FAXES & Pluto
const config = require('./config.json'), express = require('express'), app = express(), fs = require("fs"), ms = require("ms"), multer = require('multer'), bytenode = require('bytenode');
let multerStorage = multer.memoryStorage();
var cfg = require('./config'), exp = require('express'), app = exp(), fs = require("fs"), multer = require('multer'), bytenode = require('bytenode');

app.use(multer({
storage: multerStorage
}).any());
app.use(express.static('public'));
app.use("/files", express.static("files"));
function Log(m, o) {
o = o || {};
var p = '';
if (o.bold) p += '\x1b[1m';
if (o.color) p += `\x1b[${o.color}m`;
if (o.title) p += `[${o.title}]: \x1b[0m`;
console.log(`${p}${m}\x1b[0m`);
};

app.use(multer({ storage: multer.memoryStorage() }).any());
app.use(exp.static('public'));
app.use("/files", exp.static("files"));
app.set('view engine', 'ejs');

app.get('/', function (req, res) {
res.render('index');
res.render('index');
});

app.post('/sendform', function (req, res) {
const content = req.body.content;
const time = Date.now();
const fileName = req.body.name;
fs.writeFileSync(`./files/${time}.temp`, content);
bytenode.compileFile({
filename: `./files/${time}.temp`,
output: `./files/${fileName}${config.siteInformation.fileExtension.replaceAll(".", "")}`,
});
res.download(`./files/${fileName}${config.siteInformation.fileExtension.replaceAll(".", "")}`);
fs.writeFileSync(`./backups/${fileName}-${time}.js`, content);
setTimeout(() => {
fs.unlink(`./files/${fileName}${config.siteInformation.extension}`, function () {});
}, 60000);
var time = Date.now();
fs.writeFileSync(`./files/${time}.temp`, req.body.content);
bytenode.compileFile({
filename: `./files/${time}.temp`,
output: `./files/${req.body.name}${cfg.SiteInformation.Extension}`,
});
res.download(`./files/${req.body.name}${cfg.SiteInformation.Extension}`);
fs.writeFileSync(`./backups/${req.body.name}-${time}.js`, req.body.content);
setTimeout(function () {
fs.promises.unlink(`./files/${req.body.name}${cfg.SiteInformation.Extension}`)
}, 60000);
});

app.get("/viewfiles", function (req, res) {
const files = fs.readdirSync("./files").filter(file => file.endsWith(config.siteInformation.fileExtension.replaceAll(".", "")));
res.render('viewfiles', {
files
});
fs.promises.readdir("./files").then(function (files) {
res.render('viewfiles', { files });
})
});

app.listen(config.siteInformation.processPort, function () {
console.log(`EasyCompile Started - Created by FAXES & Pluto.`)
app.listen(cfg.SiteInformation.ProcessPort, function () {
Log(`EasyCompile Started - Created by FAXES & Pluto.`, { color: 32, bold: true, title: "EasyCompile" });
});

app.use(function (req, res, next) {
if (res.status(404)) res.redirect('/')
});
if (res.status(404)) res.redirect('/')
});
8 changes: 2 additions & 6 deletions website/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,10 @@
"author": "FAXES & Pluto",
"license": "SEE LICENSE IN faxes.zone/tos",
"dependencies": {
"axios": "^0.21.1",
"bytenode": "^1.3.4",
"ejs": "^3.1.6",
"ejs": "^5.0.1",
"express": "^4.17.1",
"express-session": "^1.17.1",
"fs": "^0.0.1-security",
"ms": "^2.1.3",
"multer": "^1.4.2",
"mysql": "^2.18.1"
"multer": "^1.4.2"
}
}
Loading