master
Pietro Brenna 2025-08-04 15:34:46 +02:00
commit 8d9cf61ca7
4 changed files with 1146 additions and 0 deletions

1
.gitignore vendored 100644
View File

@ -0,0 +1 @@
node_modules

51
index.js 100644
View File

@ -0,0 +1,51 @@
"use strict";
var javascriptObfuscator = require("javascript-obfuscator");
var fs = require("node:fs");
var path = require("node:path");
function obfuscatorPlugin(obOptions) {
let { excludeChunks, options } = obOptions || {};
return {
name: "vite-plugin-javascript-obfuscator",
enforce: "post",
apply:
(obOptions === null || obOptions === void 0 ? void 0 : obOptions.apply) ||
(() => true),
async writeBundle(output_options, bundle) {
for (let output_file in bundle) {
if (bundle[output_file].type != "chunk") {
continue;
}
let chunk = bundle[output_file];
if (output_file.match(/\.(js|mjs|cjs)$/)) {
if (excludeChunks.indexOf(chunk.name) == -1) {
console.log(
`[briq-vite-obfuscator-plugin] Obfuscating chunk ${chunk.name} (${output_file}) ...`
);
let abs_path = path.join(output_options.dir, output_file);
const obfuscationResult = javascriptObfuscator.obfuscate(
chunk.code,
options
);
let code = obfuscationResult.getObfuscatedCode();
await new Promise((resolve, reject) => {
fs.writeFile(abs_path, code, (err) => {
if (err) {
reject(err);
return;
}
resolve();
});
});
} else {
console.log(
`[briq-vite-obfuscator-plugin] Ignoring chunk ${chunk.name} (explicitly excluded)`
);
}
}
}
},
};
}
module.exports = obfuscatorPlugin;

1080
package-lock.json generated 100644

File diff suppressed because it is too large Load Diff

14
package.json 100644
View File

@ -0,0 +1,14 @@
{
"name": "briq-vite-obfuscator-plugin",
"version": "0.1.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "BSD-2-Clause",
"description": "",
"dependencies": {
"javascript-obfuscator": "^4.1.1"
}
}