{"_id":"@alexwca/gecko-js","_rev":"2-8c157d5fdcdc0f65de89f3234f402300","name":"@alexwca/gecko-js","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@alexwca/gecko-js","version":"1.0.0","keywords":["obfuscator","javascript","protect","reverse-engineering","code-protection","webpack"],"author":{"name":"Alex Willian"},"license":"MIT","_id":"@alexwca/gecko-js@1.0.0","maintainers":[{"name":"alexwca","email":"alexwcaffonso@gmail.com"}],"homepage":"https://github.com/alexwca/gecko-js#readme","bugs":{"url":"https://github.com/alexwca/gecko-js/issues"},"dist":{"shasum":"94962d1d893ad2e67d8141f9df8d8ea21be80e9f","tarball":"https://registry.npmjs.org/@alexwca/gecko-js/-/gecko-js-1.0.0.tgz","fileCount":9,"integrity":"sha512-BrhR5/GfoxR2VGEVfPm1ZcMdhG0PcZhA1FK5vELsM6gX0NodXnDv9QiNlZfzmolc9AbZGD0CfA4EK1ILtaZE+w==","signatures":[{"sig":"MEUCIQDPqUkT3W+IpKLAN5kQdaw/vR12/VL9bd0jOdOzv30XrAIga2FXRgz7ehievq6OYlZlukXoaVWxjZJGJWurumQkqKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25936},"main":"dist/index.js","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./webpack":{"import":"./dist/webpack-plugin.mjs","require":"./dist/webpack-plugin.js"}},"gitHead":"6d4bed789200d11b0071934c16dbe439f84b5da2","scripts":{"build":"node build.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexwca","email":"alexwcaffonso@gmail.com"},"repository":{"url":"git+https://github.com/alexwca/gecko-js.git","type":"git"},"_npmVersion":"10.9.3","description":"Ofuscador JavaScript para proteção de código: dificulta engenharia reversa e cópia de features.","directories":{},"_nodeVersion":"22.20.0","dependencies":{"@babel/types":"^7.24.0","@babel/parser":"^7.24.0","@babel/traverse":"^7.24.0","@babel/generator":"^7.24.0"},"_hasShrinkwrap":false,"peerDependencies":{"webpack":"^4.0.0 || ^5.0.0"},"optionalDependencies":{"webpack-sources":"^3.0.0"},"peerDependenciesMeta":{"webpack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/gecko-js_1.0.0_1772457946804_0.596131546029314","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alexwca/gecko-js","version":"1.0.1","description":"Ofuscador JavaScript para proteção de código: dificulta engenharia reversa e cópia de features.","main":"dist/index.js","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./webpack":{"import":"./dist/webpack-plugin.mjs","require":"./dist/webpack-plugin.js"}},"scripts":{"build":"node build.js","prepublishOnly":"npm run build"},"keywords":["obfuscator","javascript","protect","reverse-engineering","code-protection","webpack"],"author":{"name":"Alex Willian"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/alexwca/gecko-js.git"},"homepage":"https://github.com/alexwca/gecko-js#readme","bugs":{"url":"https://github.com/alexwca/gecko-js/issues"},"dependencies":{"@babel/generator":"^7.24.0","@babel/parser":"^7.24.0","@babel/traverse":"^7.24.0","@babel/types":"^7.24.0"},"optionalDependencies":{"webpack-sources":"^3.0.0"},"peerDependencies":{"webpack":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"webpack":{"optional":true}},"_id":"@alexwca/gecko-js@1.0.1","gitHead":"3b1d8921859a3d1cd35397bda76c54469f8f3c05","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-8i87KMuQyHl8ipA+jgZk1pWnW5GK6jnbZGXOLkFj5t2r77qr8s/S1xkNZ9z7THc60zB7J8Mqx8JRu1BAaFxTrw==","shasum":"c9da49988827dc333d9931801d2000ba7f22b1d3","tarball":"https://registry.npmjs.org/@alexwca/gecko-js/-/gecko-js-1.0.1.tgz","fileCount":9,"unpackedSize":26044,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICLPWg0LkYdFMzyrEu89uuOHJ8yUoQseJBJo3XOeMU7EAiAK2gxrVgROa77+yRBS5ScvIaT1MWJ+EWZa7cArMQL/aA=="}]},"_npmUser":{"name":"alexwca","email":"alexwcaffonso@gmail.com"},"directories":{},"maintainers":[{"name":"alexwca","email":"alexwcaffonso@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gecko-js_1.0.1_1772458071338_0.8924223587561602"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-02T13:25:46.676Z","modified":"2026-03-02T13:27:51.592Z","1.0.0":"2026-03-02T13:25:46.958Z","1.0.1":"2026-03-02T13:27:51.485Z"},"bugs":{"url":"https://github.com/alexwca/gecko-js/issues"},"author":{"name":"Alex Willian"},"license":"MIT","homepage":"https://github.com/alexwca/gecko-js#readme","keywords":["obfuscator","javascript","protect","reverse-engineering","code-protection","webpack"],"repository":{"type":"git","url":"git+https://github.com/alexwca/gecko-js.git"},"description":"Ofuscador JavaScript para proteção de código: dificulta engenharia reversa e cópia de features.","maintainers":[{"name":"alexwca","email":"alexwcaffonso@gmail.com"}],"readme":"# 🦎 Gecko JS\n\n> **O obfuscador JavaScript que se camufla perfeitamente no seu código**\n\n[![npm version](https://img.shields.io/npm/v/@alexwca/gecko-js.svg)](https://www.npmjs.com/package/@alexwca/gecko-js)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![npm downloads](https://img.shields.io/npm/dm/@alexwca/gecko-js.svg)](https://www.npmjs.com/package/@alexwca/gecko-js)\n\n**Gecko JS** é um obfuscador JavaScript de código aberto projetado para proteger sua lógica de negócio no front-end. Assim como o gecko se camufla na natureza, seu código se torna praticamente invisível para engenharia reversa e cópia não autorizada.\n\n## Por que escolher Gecko JS?\n\n- **100% Gratuito** - Sem planos Pro, sem banners, sem limitações\n- **Proteção Multi-Camadas** - Ofusca identificadores, strings, números e fluxo de controle\n- **Fácil Integração** - Use programaticamente ou como plugin Webpack\n- **Focado em Performance** - Ofuscação eficiente sem quebrar a execução\n- **Altamente Configurável** - Ajuste o nível de proteção conforme sua necessidade\n- **Zero Dependências Pesadas** - Leve e rápido\n\n## Quick Start\n\n### Instalação\n\n```bash\nnpm install @alexwca/gecko-js\n```\n\n### Uso Básico (Programático)\n\n```javascript\nconst { obfuscate } = require('@alexwca/gecko-js');\n\nconst codigo = `\n  function calcularTotal(itens) {\n    const taxa = 0.1;\n    return itens.reduce((s, i) => s + i.preco, 0) * (1 + taxa);\n  }\n`;\n\nconst ofuscado = obfuscate(codigo, {\n  compact: true,\n  stringArray: true,\n  rotateStringArray: true,\n  numbersToExpressions: true,\n  deadCodeInjection: true\n});\n\nconsole.log(ofuscado);\n// Código completamente ofuscado e protegido!\n```\n\n### Uso com Webpack\n\n```javascript\nconst GeckoObfuscatorPlugin = require('@alexwca/gecko-js/webpack');\n\nmodule.exports = {\n  plugins: [\n    new GeckoObfuscatorPlugin(\n      {\n        compact: true,\n        identifierNamesGenerator: 'hexadecimal',\n        stringArray: true,\n        rotateStringArray: true,\n        numbersToExpressions: true,\n        deadCodeInjection: true,\n        controlFlowFlattening: false\n      },\n      ['runtime.*.js', 'polyfills.*.js', 'main.*.js'] // chunks específicos\n    )\n  ]\n};\n```\n\n> **Dica**: Se o segundo argumento for omitido ou `[]`, todos os arquivos `.js` emitidos serão ofuscados automaticamente.\n\n## Recursos de Proteção\n\nGecko JS oferece múltiplas camadas de ofuscação para tornar seu código extremamente difícil de analisar:\n\n### Ofuscação de Identificadores\n- Renomeia variáveis, funções e parâmetros com nomes hexadecimal ou mangled\n- Torna o código ilegível mantendo a funcionalidade\n\n### Ofuscação de Strings\n- Armazena strings em arrays embaralhados\n- Decodifica em runtime usando XOR\n- Rotaciona a ordem do array para maior segurança\n\n### Ofuscação de Números\n- Converte números em expressões hexadecimais ou cálculos complexos\n- Dificulta a identificação de valores críticos\n\n### Injeção de Código Morto\n- Injeta blocos `if(false){ ... }` para confundir analisadores\n- Configurável a quantidade de blocos injetados\n\n### Control Flow Flattening\n- Achata o fluxo de controle usando switch/estado\n- Proteção extra (pode aumentar o tamanho do bundle)\n\n## Opções de Configuração\n\n| Opção | Tipo | Padrão | Descrição |\n|-------|------|--------|-----------|\n| `compact` | `boolean` | `true` | Saída minificada em uma linha |\n| `identifierNamesGenerator` | `string` | `'hexadecimal'` | `'hexadecimal'` ou `'mangled'` para nomes de variáveis/funções |\n| `stringArray` | `boolean` | `true` | Coloca strings em um array e decodifica em runtime (XOR) |\n| `rotateStringArray` | `boolean` | `true` | Embaralha a ordem do array de strings |\n| `numbersToExpressions` | `boolean` | `true` | Ofusca números (hex ou expressões). Apenas 30% dos números são ofuscados para manter performance |\n| `deadCodeInjection` | `boolean` | `true` | Injeta blocos `if(false){ ... }` para confundir análise |\n| `deadCodeCount` | `number` | `2` | Quantidade de blocos mortos injetados |\n| `controlFlowFlattening` | `boolean` | `false` | Achata o fluxo com switch/estado (proteção forte, aumenta tamanho) |\n| `minStringLength` | `number` | `3` | Tamanho mínimo de string para ofuscar (strings menores são ignoradas para performance) |\n\n## Exemplos de Uso\n\n### Exemplo 1: Proteção Básica\n\n```javascript\nconst { obfuscate } = require('@alexwca/gecko-js');\n\nconst codigo = `\n  const API_KEY = 'sk-1234567890';\n  function authenticate(key) {\n    return key === API_KEY;\n  }\n`;\n\nconst protegido = obfuscate(codigo, {\n  compact: true,\n  stringArray: true,\n  numbersToExpressions: true\n});\n```\n\n### Exemplo 2: Proteção Máxima\n\n```javascript\nconst { obfuscate } = require('@alexwca/gecko-js');\n\nconst codigo = `\n  // Sua lógica de negócio crítica aqui\n`;\n\nconst ultraProtegido = obfuscate(codigo, {\n  compact: true,\n  identifierNamesGenerator: 'hexadecimal',\n  stringArray: true,\n  rotateStringArray: true,\n  numbersToExpressions: true,\n  deadCodeInjection: true,\n  deadCodeCount: 5,\n  controlFlowFlattening: true // Aviso: Aumenta o tamanho do bundle\n});\n```\n\n### Exemplo 3: Webpack com Filtros\n\n```javascript\nconst GeckoObfuscatorPlugin = require('@alexwca/gecko-js/webpack');\n\nmodule.exports = {\n  plugins: [\n    new GeckoObfuscatorPlugin(\n      { /* opções */ },\n      [\n        'main.*.js',      // Apenas o bundle principal\n        'vendor.*.js',    // E o vendor\n        '!*.min.js'       // Mas não os já minificados\n      ]\n    )\n  ]\n};\n```\n\n## Desenvolvimento\n\n### Build do Projeto\n\n```bash\ngit clone https://github.com/alexwca/gecko-js.git\ncd gecko-js\nnpm install\nnpm run build\n```\n\n### Testar Localmente\n\nPara testar em outro projeto sem publicar no npm:\n\n```bash\n# No diretório gecko-js\nnpm link\n\n# No seu projeto\nnpm link @alexwca/gecko-js\n```\n\nOu instale diretamente do caminho:\n\n```bash\nnpm install /caminho/absoluto/para/gecko-js\n```\n\n## Limitações e Considerações\n\n### Realidade sobre Proteção de Código Front-end\n\n- **Código no navegador nunca é 100% indetectável**: Qualquer pessoa com acesso ao bundle pode inspecioná-lo. O objetivo do Gecko JS é tornar a análise **extremamente difícil e demorada**, não impossível.\n\n### Performance\n\nGecko JS foi projetado para manter segurança sem impactar significativamente a performance:\n\n- **Overhead de runtime**: ~3-8% com configurações padrão\n- **Tamanho do bundle**: +10-20% com configurações padrão\n- **String decoder**: Utiliza array join para decodificação eficiente\n- **Numbers to expressions**: Apenas 30% dos números são ofuscados para manter performance\n- **Dead code**: 2 blocos injetados por padrão\n- **Strings curtas**: Strings menores que 3 caracteres não são ofuscadas (configurável via `minStringLength`)\n- **Control flow flattening**: Desativado por padrão. Use apenas em trechos críticos que precisam de proteção extra (pode aumentar o bundle em 50-200% e reduzir performance em 20-40%)\n\n### Compatibilidade\n\n- Propriedades obrigatórias de APIs (ex.: nomes de métodos chamados por bibliotecas externas) não são renomeadas automaticamente.\n- O obfuscator foca em identificadores (variáveis, parâmetros, funções) e em strings/números.\n\n## Contribuindo\n\nContribuições são bem-vindas! Sinta-se à vontade para:\n\n- Reportar bugs\n- Sugerir novas features\n- Melhorar a documentação\n- Enviar pull requests\n\n## Licença\n\nMIT License - veja o arquivo [LICENSE](LICENSE) para mais detalhes.\n\n## Agradecimentos\n\nGecko JS foi criado para a comunidade de desenvolvedores que precisam proteger seu código sem depender de serviços pagos ou planos Pro. Esperamos que seja útil para você!\n\n---\n\n<div align=\"center\">\n\n**Feito com Gecko por desenvolvedores, para desenvolvedores**\n\n[Dê uma estrela](https://github.com/alexwca/gecko-js) | [npm](https://www.npmjs.com/package/@alexwca/gecko-js) | [Issues](https://github.com/alexwca/gecko-js/issues)\n\n</div>\n","readmeFilename":"README.md"}