Wakaru é o decompilador JavaScript para o front -end moderno. Ele traz de volta o código original de uma fonte agrupada e transpiliada.
Veja a demonstração ao vivo para obter exemplos detalhados.
Converter o código transpilado de volta ao seu formulário legível e restaura sintaxes rebaixadas.
Suporta os seguintes transpilers:
Leia a documentação para obter mais informações.
Converter JavaScript agrupado em módulos separados
Suporta os seguintes pacotes:
Teste a ferramenta e veja -a em ação no Playground.
Por padrão, o CLI será executado no modo interativo e o guiará pelo processo.
Você também pode passar opções para pular algumas etapas no modo interativo.
npx @wakaru/cli
# or
pnpm dlx @wakaru/cli Execute npx @wakaru/cli --help para ver a lista completa de opções.
| Opção | Padrão | Descrição |
|---|---|---|
--output | "out" | Diretório de saída |
--force | false | Diretório de saída de substituição de força |
--concurrency | 1 | Específico o número de tarefas simultâneas |
--perf | false | Mostre métricas de desempenho |
--perf-output | Diretório de saída de métricas de desempenho |
--concurrency pode ser usada para acelerar o processo. Mas, por favor, ciente de que o processo pode aumentar se o arquivo de entrada for muito grande.
Se você deseja executar a CLI no modo não interativo, pode especificar o recurso passando o nome do recurso como o primeiro argumento.
unpacker e unminify executará apenas o recurso correspondente.
all serão executados em unpacker e unminify sequencialmente.
npx @wakaru/cli all <files...> [options]
npx @wakaru/cli unpacker <files...> [options]
npx @wakaru/cli unminify <files...> [options]
Essas opções estão disponíveis apenas em all os modos.
| Opção | Padrão | Descrição |
|---|---|---|
--unpacker-output | "out/unpack" | Substituir o diretório de saída do Unpbacker |
--unminify-output | "out/unminify" | Substituir o diretório de saída não dinificado |
Ao executar um único recurso ( unpacker ou unminify ), a CLI usará apenas o caminho especificado na opção --output . Isso significa que, diferentemente do modo all em que os subdiretos ( out/unpack e out/unminify ) são criados automaticamente no diretório de saída, no modo de recurso único, os arquivos de saída são colocados diretamente no diretório --output especificado sem subdiretos adicionais.
npm install @wakaru/unpacker @wakaru/unminify
# or
pnpm install @wakaru/unpacker @wakaru/unminify
# or
yarn add @wakaru/unpacker @wakaru/unminify@wakaru/unpacker import { unpack } from '@wakaru/unpacker' ;
const { modules , moduleIdMapping } = await unpack ( sourceCode ) ;
for ( const mod of modules ) {
const filename = moduleIdMapping [ mod . id ] ?? `module- ${ mod . id } .js` ;
fs . writeFileSync ( outputPath , mod . code , 'utf-8' ) ;
}@wakaru/unminify import { runDefaultTransformationRules , runTransformationRules } from '@wakaru/unminify' ;
const file = {
source : '...' , // source code
path : '...' , // path to the file, used for advanced usecases. Can be empty.
}
// This function will apply all rules that are enabled by default.
const { code } = await runDefaultTransformationRules ( file ) ;
// You can also specify the rules to apply. Order matters.
const rules = [
'un-esm' ,
...
]
const { code } = await runTransformationRules ( file , rules ) ;Você pode verificar todas as regras em /unminify/src/transformations/index.ts.
Por favor, ciente de que este projeto ainda está em desenvolvimento inicial. A API pode mudar no futuro.
E o tamanho do pacote desses pacotes é enorme. Pode ser reduzido no futuro. Use com cuidado no navegador (sim, como o playground, ele pode ser executado no navegador).
O uso de wakaru para atacar alvos sem consentimento mútuo prévio é ilegal. É responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não se responsabilizam e não são responsáveis por qualquer uso indevido ou dano causado por este programa.
Mit