https://github.com/ccesarfp/dsa-tools
https://github.com/ccesarfp/dsa-tools
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/ccesarfp/dsa-tools
- Owner: ccesarfp
- Created: 2025-07-29T23:36:54.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-07-30T00:29:54.000Z (10 months ago)
- Last Synced: 2025-07-30T02:49:39.741Z (10 months ago)
- Language: Go
- Size: 25.4 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# dsa-tools CLI
## Visão Geral
dsa-tools é uma ferramenta de linha de comando (CLI) projetada para auxiliar em diversas tarefas de automação de desenvolvimento e segurança. Suas duas principais funcionalidades são:
- **Migrations:** Gerencie, versiona e aplique mudanças no esquema do banco de dados de forma fácil.
- **Obfuscate:** Ofusque arquivos e diretórios JavaScript para proteção de código.
## Funcionalidades
- **Migrations:**
- Inicialize o sistema de migrações
- Aplique, simule (fake) e verifique o status das migrações
- Controle e versionamento das alterações no esquema do banco de dados
- **Obfuscate:**
- Ofusque arquivos JavaScript (`.js`) ou diretórios inteiros
- Controle detalhado sobre as opções de ofuscação (arrays de strings, embaralhamento de identificadores, controle de fluxo, etc.)
- Processamento recursivo de diretórios, preservando a estrutura no resultado
- Integração com Node.js e npm para gerenciamento de dependências
## Instalação
Certifique-se de ter os seguintes pré-requisitos:
- [Go](https://golang.org/dl/) (para compilar/executar a CLI)
- [Node.js](https://nodejs.org/) e [npm](https://www.npmjs.com/) (para ofuscação de JavaScript)
Clone o repositório e construa a CLI:
```sh
git clone
cd dsa-tools
go build -o dsa-tools ./cmd/dsa-tools
```
## Uso
### Comando Obfuscate
O comando `obfuscate` permite ofuscar arquivos ou diretórios JavaScript. Ele utiliza o pacote `javascript-obfuscator` internamente.
#### Uso Básico
```sh
./dsa-tools obfuscate:run --path --dest [opções]
```
- `--path`, `-p`: Caminho para o diretório ou arquivo a ser ofuscado (obrigatório)
- `--dest`, `-d`: Diretório de destino para os arquivos ofuscados (obrigatório)
#### Exemplo
```sh
./dsa-tools obfuscate:run --path ./src --dest ./dist
```
Isso irá encontrar recursivamente todos os arquivos `.js` em `./src`, ofuscá-los e gravar os resultados nos caminhos correspondentes em `./dist`.
#### Opções
Você pode customizar o processo de ofuscação usando as seguintes flags:
**Transformações de Array de Strings:**
- `--string-array` (padrão: true): Habilita transformação de array de strings
- `--string-array-rotate` (padrão: true): Habilita rotação do array de strings
- `--string-array-shuffle` (padrão: true): Habilita embaralhamento do array de strings
- `--string-array-threshold` (padrão: 0.75): Limite para array de strings (0-1)
- `--string-array-index-shift` (padrão: true): Habilita deslocamento de índice do array de strings
- `--string-array-indexes-type` (padrão: hexadecimal-number): Tipo de índice do array de strings (`hexadecimal-number`|`hexadecimal-numeric-string`)
- `--string-array-wrappers-count` (padrão: 1): Quantidade de wrappers do array de strings
- `--string-array-wrappers-type` (padrão: variable): Tipo de wrapper do array de strings (`variable`|`function`)
- `--string-array-wrappers-chained-calls` (padrão: true): Habilita chamadas encadeadas de wrappers do array de strings
- `--string-array-encoding` (padrão: none): Codificação do array de strings (`none`|`base64`|`rc4`)
**Transformações de Identificadores:**
- `--identifier-names-generator` (padrão: hexadecimal): Gerador de nomes de identificadores (`hexadecimal`|`mangled`|`dictionary`)
- `--identifiers-prefix`: Prefixo para identificadores
- `--rename-globals` (padrão: false): Renomeia identificadores globais
- `--rename-properties` (padrão: false): Renomeia propriedades
**Outras Transformações:**
- `--compact` (padrão: true): Habilita saída compacta
- `--simplify` (padrão: true): Habilita simplificação de código
- `--transform-object-keys` (padrão: false): Transforma chaves de objetos
- `--numbers-to-expressions` (padrão: false): Converte números em expressões
- `--control-flow-flattening` (padrão: false): Habilita achatamento do fluxo de controle
- `--control-flow-flattening-threshold` (padrão: 0.75): Limite para achatamento do fluxo de controle (0-1)
- `--dead-code-injection` (padrão: false): Habilita injeção de código morto
- `--dead-code-injection-threshold` (padrão: 0.4): Limite para injeção de código morto (0-1)
#### Ajuda
Para ver todas as opções disponíveis e suas descrições, execute:
```sh
./dsa-tools obfuscate:run --help
```
---
### Comando Migrations
dsa-tools também oferece um conjunto de comandos para gerenciar migrações de banco de dados, facilitando o versionamento, aplicação e acompanhamento das mudanças no seu esquema de banco de dados.
#### Comandos Disponíveis de Migração
- `migrate:init` – Inicializa o sistema de migrações no seu projeto, criando a estrutura de diretórios e arquivos de configuração necessários.
- `migrate:run` – Aplica todas as migrações pendentes ao banco de dados.
- `migrate:status` – Mostra o status atual das migrações (quais foram aplicadas, quais estão pendentes).
- `migrate:fake-run` – Marca migrações como aplicadas sem realmente executá-las (útil para sincronizar o estado).
#### Uso Básico
```sh
./dsa-tools migrate:init
./dsa-tools migrate:run
./dsa-tools migrate:status
./dsa-tools migrate:fake-run
```
#### Exemplo de Fluxo
1. **Inicialize as migrações:**
```sh
./dsa-tools migrate:init
```
2. **Aplique as migrações:**
```sh
./dsa-tools migrate:run
```
3. **Verifique o status das migrações:**
```sh
./dsa-tools migrate:status
```
4. **Simule a aplicação das migrações (marcar como aplicadas):**
```sh
./dsa-tools migrate:fake-run
```
#### Observações
- Os arquivos de migração devem ser colocados no diretório de migrações criado pelo `migrate:init`.
- Cada migração deve seguir as convenções de nome e estrutura descritas na documentação ou configuração gerada.
- Sempre faça backup do seu banco de dados antes de rodar migrações em ambientes de produção.
## Como Funciona
1. A CLI verifica a presença do pacote `javascript-obfuscator` via npm e o instala globalmente se necessário.
2. Ela escaneia recursivamente o caminho de entrada em busca de arquivos `.js`.
3. Para cada arquivo, invoca o `javascript-obfuscator` via Node.js, passando as opções selecionadas.
4. O resultado ofuscado é gravado no diretório de destino, preservando a estrutura de diretórios original.
5. Para migrações, a CLI gerencia os arquivos de migração, aplica no banco de dados e acompanha seu status.
## Solução de Problemas
- Certifique-se de que Node.js e npm estão instalados e disponíveis no seu PATH.
- Se encontrar problemas com o ofuscador, tente rodar `npm install -g javascript-obfuscator` manualmente.
- Para problemas com migrações, verifique a conexão com o banco de dados e a estrutura dos arquivos de migração.
- Para erros de permissão, verifique as permissões dos seus arquivos e diretórios.