summaryrefslogtreecommitdiff
path: root/src/node_modules/javascript-obfuscator/src/source-code/ObfuscatedCode.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/node_modules/javascript-obfuscator/src/source-code/ObfuscatedCode.ts')
-rw-r--r--src/node_modules/javascript-obfuscator/src/source-code/ObfuscatedCode.ts102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/node_modules/javascript-obfuscator/src/source-code/ObfuscatedCode.ts b/src/node_modules/javascript-obfuscator/src/source-code/ObfuscatedCode.ts
new file mode 100644
index 0000000..4f0e478
--- /dev/null
+++ b/src/node_modules/javascript-obfuscator/src/source-code/ObfuscatedCode.ts
@@ -0,0 +1,102 @@
+import { inject, injectable } from 'inversify';
+import { ServiceIdentifiers } from '../container/ServiceIdentifiers';
+
+import { ICryptUtils } from '../interfaces/utils/ICryptUtils';
+import { IObfuscatedCode } from '../interfaces/source-code/IObfuscatedCode';
+
+import { initializable } from '../decorators/Initializable';
+import { SourceMapMode } from '../enums/source-map/SourceMapMode';
+import { IOptions } from '../interfaces/options/IOptions';
+
+@injectable()
+export class ObfuscatedCode implements IObfuscatedCode {
+ /**
+ * @type {string}
+ */
+ @initializable()
+ private obfuscatedCode!: string;
+
+ /**
+ * @type {string}
+ */
+ @initializable()
+ private sourceMap!: string;
+
+ /**
+ * @type {ICryptUtils}
+ */
+ private readonly cryptUtils: ICryptUtils;
+
+ /**
+ * @type {IOptions}
+ */
+ private readonly options: IOptions;
+
+ public constructor (
+ @inject(ServiceIdentifiers.ICryptUtils) cryptUtils: ICryptUtils,
+ @inject(ServiceIdentifiers.IOptions) options: IOptions
+ ) {
+ this.cryptUtils = cryptUtils;
+ this.options = options;
+ }
+
+ /**
+ * @param {string} obfuscatedCode
+ * @param {string} sourceMap
+ */
+ public initialize (obfuscatedCode: string, sourceMap: string): void {
+ this.obfuscatedCode = obfuscatedCode;
+ this.sourceMap = sourceMap;
+ }
+
+ /**
+ * @returns {string}
+ */
+ public getObfuscatedCode (): string {
+ return this.correctObfuscatedCode();
+ }
+
+ /**
+ * @returns {string}
+ */
+ public getSourceMap (): string {
+ return this.sourceMap;
+ }
+
+ /**
+ * @returns {string}
+ */
+ public toString (): string {
+ return this.obfuscatedCode;
+ }
+
+ /**
+ * @returns {string}
+ */
+ private correctObfuscatedCode (): string {
+ if (!this.sourceMap) {
+ return this.obfuscatedCode;
+ }
+
+ const sourceMapUrl: string = this.options.sourceMapBaseUrl + this.options.sourceMapFileName;
+
+ let sourceMappingUrl: string = '//# sourceMappingURL=';
+
+ switch (this.options.sourceMapMode) {
+ case SourceMapMode.Inline:
+ sourceMappingUrl += `data:application/json;base64,${this.cryptUtils.btoa(this.sourceMap)}`;
+
+ break;
+
+ case SourceMapMode.Separate:
+ default:
+ if (!sourceMapUrl) {
+ return this.obfuscatedCode;
+ }
+
+ sourceMappingUrl += sourceMapUrl;
+ }
+
+ return `${this.obfuscatedCode}\n${sourceMappingUrl}`;
+ }
+}