vite-plugin-bundle-obfuscator
Version:
JavaScript obfuscator plugin for Vite environments
2 lines (1 loc) • 1.65 kB
JavaScript
import{parentPort as a}from"worker_threads";import g from"javascript-obfuscator";import*as d from"vite";import{Worker as m}from"worker_threads";import h from"path";import y from"os";import{gzipSync as v}from"zlib";import $ from"javascript-obfuscator";var s=class{constructor(t){this._log=t?console.log.bind(console):this.noop}noop(){}forceLog(...t){console.log(...t)}info(t){this._log(t)}};var n=class e{constructor(){this.obfuscatedFiles=new Set}static getInstance(){return e.instance||(e.instance=new e),e.instance}markAsObfuscated(t){t&&this.obfuscatedFiles.add(t)}isObfuscated(t){return t?this.obfuscatedFiles.has(t):!1}getAllObfuscatedFiles(){return Array.from(this.obfuscatedFiles)}clear(){this.obfuscatedFiles.clear()}serialize(){return Array.from(this.obfuscatedFiles)}updateFromSerialized(t){!t||!Array.isArray(t)||t.forEach(i=>{this.obfuscatedFiles.add(i)})}};a&&a.on("message",e=>{let t=[],i=new s(e.config.log),r=n.getInstance();e.registryState&&Array.isArray(e.registryState)&&r.updateFromSerialized(e.registryState);for(let[o,u]of e.chunk){if(r.isObfuscated(o)){i.info(`skipping ${o} (already in obfuscated registry)`),t.push({fileName:o,obfuscatedCode:u.code});continue}i.info(`worker obfuscating ${o}...`);let l=e.config.options.sourceMap?{...e.config.options,inputFileName:o,sourceMapFileName:`${o}.map`}:e.config.options,c=g.obfuscate(u.code,l);i.info(`worker obfuscation complete for ${o}.`),r.markAsObfuscated(o),i.info(`worker added ${o} to obfuscated files registry`),t.push({fileName:o,obfuscatedCode:c.getObfuscatedCode(),map:JSON.parse(c.getSourceMap()||"null")})}a&&a.postMessage({results:t,registryState:r.serialize()})});