Skip to content

Commit f744f90

Browse files
committed
2 parents 70f212a + 76b302c commit f744f90

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

dist/index.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Compiler } from 'webpack';
2+
import { IOptions as JavaScriptObfuscatorOptions } from 'javascript-obfuscator/src/interfaces/options/IOptions';
3+
declare class WebpackObfuscator {
4+
options: Partial<JavaScriptObfuscatorOptions>;
5+
excludes: string[];
6+
constructor(options: Partial<JavaScriptObfuscatorOptions>, excludes?: string | string[]);
7+
apply(compiler: Compiler): void;
8+
private shouldExclude;
9+
private extractSourceAndSourceMap;
10+
private obfuscate;
11+
}
12+
export = WebpackObfuscator;

dist/index.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
var javascript_obfuscator_1 = require("javascript-obfuscator");
6+
var webpack_sources_1 = require("webpack-sources");
7+
var multimatch_1 = __importDefault(require("multimatch"));
8+
var transferSourceMap = require("multi-stage-sourcemap").transfer;
9+
var WebpackObfuscator = (function () {
10+
function WebpackObfuscator(options, excludes) {
11+
this.options = options;
12+
this.excludes = [];
13+
this.options = options;
14+
this.excludes = this.excludes.concat(excludes || []);
15+
}
16+
WebpackObfuscator.prototype.apply = function (compiler) {
17+
var _this = this;
18+
var pluginName = this.constructor.name;
19+
compiler.hooks.emit.tap(pluginName, function (compilation) {
20+
for (var fileName in compilation.assets) {
21+
if (fileName.toLowerCase().endsWith('.js') || _this.shouldExclude(fileName)) {
22+
return;
23+
}
24+
var asset = compilation.assets[fileName];
25+
var _a = _this.extractSourceAndSourceMap(asset), inputSource = _a.inputSource, inputSourceMap = _a.inputSourceMap;
26+
var _b = _this.obfuscate(inputSource), obfuscatedSource = _b.obfuscatedSource, obfuscationSourceMap = _b.obfuscationSourceMap;
27+
if (_this.options.sourceMap && inputSourceMap) {
28+
var transferredSourceMap = transferSourceMap({
29+
fromSourceMap: obfuscationSourceMap,
30+
toSourceMap: inputSource
31+
});
32+
compilation.assets[fileName] = new webpack_sources_1.SourceMapSource(obfuscatedSource, fileName, transferredSourceMap, inputSource, inputSourceMap);
33+
}
34+
else {
35+
compilation.assets[fileName] = new webpack_sources_1.RawSource(obfuscatedSource);
36+
}
37+
}
38+
});
39+
};
40+
WebpackObfuscator.prototype.shouldExclude = function (filePath) {
41+
return multimatch_1.default(filePath, this.excludes).length > 0;
42+
};
43+
WebpackObfuscator.prototype.extractSourceAndSourceMap = function (asset) {
44+
if (asset.sourceAndMap) {
45+
var _a = asset.sourceAndMap(), inputSource = _a.inputSource, inputSourceMap = _a.inputSourceMap;
46+
return { inputSource: inputSource, inputSourceMap: inputSourceMap };
47+
}
48+
else {
49+
return {
50+
inputSource: asset.source(),
51+
inputSourceMap: asset.map()
52+
};
53+
}
54+
};
55+
WebpackObfuscator.prototype.obfuscate = function (javascript) {
56+
var obfuscationResult = javascript_obfuscator_1.JavaScriptObfuscator.obfuscate(javascript, this.options);
57+
return {
58+
obfuscatedSource: obfuscationResult.toString(),
59+
obfuscationSourceMap: obfuscationResult.getSourceMap()
60+
};
61+
};
62+
return WebpackObfuscator;
63+
}());
64+
module.exports = WebpackObfuscator;

0 commit comments

Comments
 (0)