vanzy-protect
Version:
Epic Obfuscator Yeahhh
47 lines (39 loc) • 1.49 kB
text/typescript
import { cfg } from '../config/cfg'
import { warn } from '../log/warn'
import { comment } from '../obfuscate/comment'
import { obfuscateName } from '../obfuscate/obfuscateName'
import { arrayPattern } from './arrayPattern'
import { assignmentExpression } from './assignmentExpression'
import { objectPattern } from './objectPattern'
import { traverse } from './traverse'
export function drawFunction(fnblock: any, data = '') {
if (fnblock.async) {
data += 'async'
data += ' '
data += comment(1)
}
data += 'function '
data += comment(1)
var name: string = fnblock.id.name
if (cfg().transforms.obfuscateNames) name = obfuscateName(name)
data += name
data += comment(2)
data += '('
;(fnblock.params as any[]).forEach((i, n) => {
if (i.type === 'Identifier') {
var pname: string = i.name
if (cfg().transforms.obfuscateNames) pname = obfuscateName(pname)
data += pname + comment(3) + ',' + comment(3)
} else if (i.type === 'AssignmentPattern') {
data += assignmentExpression({ operator: '=', ...i }) + comment(3) + ',' + comment(3)
} else if (i.type === 'ObjectPattern') {
data += objectPattern(i) + comment(3) + ',' + comment(3)
} else if (i.type === 'ArrayPattern') {
data += arrayPattern(i) + comment(3) + ',' + comment(3)
} else warn(`Unknown expression type in methodDefinition(e) => e.params[${n}] : ${i.type}`)
})
data += ')' + comment(2) + '{'
data += traverse(fnblock.body.body)
data += comment(3) + '}' + comment(1)
return data
}