Generazione delle source map in cascata (se abilitate)
parent
8d9cf61ca7
commit
0e0e5caf85
52
index.js
52
index.js
|
|
@ -3,6 +3,7 @@
|
||||||
var javascriptObfuscator = require("javascript-obfuscator");
|
var javascriptObfuscator = require("javascript-obfuscator");
|
||||||
var fs = require("node:fs");
|
var fs = require("node:fs");
|
||||||
var path = require("node:path");
|
var path = require("node:path");
|
||||||
|
let { SourceMapConsumer, SourceMapGenerator } = require("source-map");
|
||||||
function obfuscatorPlugin(obOptions) {
|
function obfuscatorPlugin(obOptions) {
|
||||||
let { excludeChunks, options } = obOptions || {};
|
let { excludeChunks, options } = obOptions || {};
|
||||||
return {
|
return {
|
||||||
|
|
@ -25,18 +26,51 @@ function obfuscatorPlugin(obOptions) {
|
||||||
let abs_path = path.join(output_options.dir, output_file);
|
let abs_path = path.join(output_options.dir, output_file);
|
||||||
const obfuscationResult = javascriptObfuscator.obfuscate(
|
const obfuscationResult = javascriptObfuscator.obfuscate(
|
||||||
chunk.code,
|
chunk.code,
|
||||||
options
|
{
|
||||||
|
...options,
|
||||||
|
sourceMapFileName: "sourceMap", // questo lo fa indipendentemente da quello che gli metto (ed è importante per quello che succede dopo), quindi esplicito quello che lui fa già
|
||||||
|
}
|
||||||
);
|
);
|
||||||
let code = obfuscationResult.getObfuscatedCode();
|
let code = obfuscationResult.getObfuscatedCode();
|
||||||
await new Promise((resolve, reject) => {
|
fs.writeFileSync(abs_path, code);
|
||||||
fs.writeFile(abs_path, code, (err) => {
|
console.log(
|
||||||
if (err) {
|
` Obufuscated file written to ${abs_path}`
|
||||||
reject(err);
|
);
|
||||||
return;
|
if (options.sourceMap) {
|
||||||
|
let smap = obfuscationResult.getSourceMap();
|
||||||
|
let abs_path_src = path.join(
|
||||||
|
output_options.dir,
|
||||||
|
output_file + ".map"
|
||||||
|
);
|
||||||
|
// let abs_path_dst = path.join(output_options.dir, 'obf-'+output_file+'.map');
|
||||||
|
if (smap) {
|
||||||
|
// leggo source map precedente
|
||||||
|
let consumer1 = null;
|
||||||
|
try {
|
||||||
|
let content = fs.readFileSync(abs_path_src, {
|
||||||
|
encoding: "utf-8",
|
||||||
|
});
|
||||||
|
consumer1 = await new SourceMapConsumer(JSON.parse(content));
|
||||||
|
} catch (e) {
|
||||||
|
console.error(
|
||||||
|
" can't read original source map"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
resolve();
|
let write_map = "";
|
||||||
});
|
if (consumer1) {
|
||||||
});
|
let consumer2 = await new SourceMapConsumer(JSON.parse(smap));
|
||||||
|
let generator = SourceMapGenerator.fromSourceMap(consumer2);
|
||||||
|
generator.applySourceMap(consumer1, "sourceMap");
|
||||||
|
write_map = generator.toString();
|
||||||
|
} else {
|
||||||
|
write_map = smap;
|
||||||
|
}
|
||||||
|
fs.writeFileSync(abs_path_src, write_map);
|
||||||
|
console.log(
|
||||||
|
` Source map written to ${abs_path_src}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log(
|
console.log(
|
||||||
`[briq-vite-obfuscator-plugin] Ignoring chunk ${chunk.name} (explicitly excluded)`
|
`[briq-vite-obfuscator-plugin] Ignoring chunk ${chunk.name} (explicitly excluded)`
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"javascript-obfuscator": "^4.1.1"
|
"javascript-obfuscator": "^4.1.1",
|
||||||
|
"source-map": "^0.7.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@javascript-obfuscator/escodegen": {
|
"node_modules/@javascript-obfuscator/escodegen": {
|
||||||
|
|
@ -30,6 +31,16 @@
|
||||||
"source-map": "~0.6.1"
|
"source-map": "~0.6.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@javascript-obfuscator/escodegen/node_modules/source-map": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"optional": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@javascript-obfuscator/estraverse": {
|
"node_modules/@javascript-obfuscator/estraverse": {
|
||||||
"version": "5.4.0",
|
"version": "5.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@javascript-obfuscator/estraverse/-/estraverse-5.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@javascript-obfuscator/estraverse/-/estraverse-5.4.0.tgz",
|
||||||
|
|
@ -961,12 +972,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/source-map": {
|
"node_modules/source-map": {
|
||||||
"version": "0.6.1",
|
"version": "0.7.6",
|
||||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
|
||||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
"integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">= 12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/source-map-support": {
|
"node_modules/source-map-support": {
|
||||||
|
|
@ -979,6 +990,15 @@
|
||||||
"source-map": "^0.6.0"
|
"source-map": "^0.6.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/source-map-support/node_modules/source-map": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/string-template": {
|
"node_modules/string-template": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz",
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"description": "",
|
"description": "",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"javascript-obfuscator": "^4.1.1"
|
"javascript-obfuscator": "^4.1.1",
|
||||||
|
"source-map": "^0.7.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue