vite-plugin-bundle-obfuscator
Version:
JavaScript obfuscator plugin for Vite environments
2 lines (1 loc) • 1.86 kB
JavaScript
import{parentPort as a}from"worker_threads";import m from"path";import S from"javascript-obfuscator";import*as d from"vite";import{Worker as h}from"worker_threads";import O from"path";import R from"os";import{gzipSync as $}from"zlib";import x from"javascript-obfuscator";import b from"@jridgewell/remapping";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)}};function p(e,t,o){return e?t?(o?.("composing source maps..."),b([t,e],()=>null)):e: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(o=>{this.obfuscatedFiles.add(o)})}};a&&a.on("message",e=>{let t=[],o=new s(e.config.log),r=n.getInstance();e.registryState&&Array.isArray(e.registryState)&&r.updateFromSerialized(e.registryState);for(let[i,u]of e.chunk){if(r.isObfuscated(i)){o.info(`skipping ${i} (already in obfuscated registry)`),t.push({fileName:i,obfuscatedCode:u.code});continue}o.info(`worker obfuscating ${i}...`);let l=e.config.options.sourceMap?{...e.config.options,inputFileName:i,sourceMapFileName:`${m.basename(i)}.map`}:e.config.options,c=S.obfuscate(u.code,l);o.info(`worker obfuscation complete for ${i}.`),r.markAsObfuscated(i),o.info(`worker added ${i} to obfuscated files registry`),t.push({fileName:i,obfuscatedCode:c.getObfuscatedCode(),map:p(JSON.parse(JSON.stringify(u.map)||"null"),JSON.parse(c.getSourceMap()||"null"),o.info.bind(o))})}a&&a.postMessage({results:t,registryState:r.serialize()})});