UNPKG

@anderson.tec12/utils

Version:

[![npm version](https://badge.fury.io/js/%40anderson.tec12%2Futils.svg)](https://badge.fury.io/js/%40anderson.tec12%2Futils) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

166 lines (113 loc) 4.59 kB
# @anderson.tec12/utils [![npm version](https://badge.fury.io/js/%40anderson.tec12%2Futils.svg)](https://badge.fury.io/js/%40anderson.tec12%2Futils) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) Uma biblioteca TypeScript com utilitários essenciais para desenvolvimento web, incluindo armazenamento seguro criptografado e verificação de dispositivos de mídia. ## 📦 Instalação ```bash npm install @anderson.tec12/utils ``` ## 🚀 Funcionalidades ### 🔐 SecureStorage Armazenamento seguro no localStorage com criptografia AES-GCM de 256 bits. ### 📹 Device Verification Verificação de disponibilidade de câmera e microfone do usuário. ## 📖 Uso ### SecureStorage O `secureStorage` permite armazenar dados de forma criptografada no localStorage do navegador: ```typescript import { secureStorage } from '@anderson.tec12/utils'; // Armazenar dados await secureStorage.setItem('userData', { name: 'João', email: 'joao@example.com', preferences: { theme: 'dark' } }); // Recuperar dados const userData = await secureStorage.getItem<{ name: string; email: string; preferences: { theme: string }; }>('userData'); console.log(userData); // { name: 'João', email: 'joao@example.com', ... } // Remover item específico secureStorage.removeItem('userData'); // Limpar todo o storage secureStorage.clear(); ``` ### Verificação de Dispositivos Verifique se o usuário possui câmera e microfone disponíveis: ```typescript import { verifyMicAndCam } from '@anderson.tec12/utils'; const hasDevices = await verifyMicAndCam(); if (hasDevices) { console.log('Usuário possui câmera e microfone'); // Prosseguir com funcionalidades de vídeo/áudio } else { console.log('Dispositivos não disponíveis'); // Mostrar mensagem de erro ou alternativas } ``` ## 📚 API Reference ### SecureStorage #### `setItem(key: string, value: any): Promise<void>` Armazena um valor criptografado no localStorage. - **key**: Chave para identificar o item - **value**: Qualquer valor serializável em JSON #### `getItem<T>(key: string): Promise<T | null>` Recupera e descriptografa um valor do localStorage. - **key**: Chave do item a ser recuperado - **Retorna**: O valor descriptografado ou `null` se não encontrado #### `removeItem(key: string): void` Remove um item específico do localStorage. #### `clear(): void` Remove todos os itens do localStorage. ### Device Verification #### `verifyMicAndCam(): Promise<boolean>` Verifica se o usuário possui câmera e microfone disponíveis. - **Retorna**: `true` se ambos os dispositivos estão disponíveis, `false` caso contrário ## 🔒 Segurança O `SecureStorage` utiliza: - **Algoritmo**: AES-GCM com chave de 256 bits - **Derivação de chave**: PBKDF2 com 100.000 iterações - **Salt**: Valor fixo para consistência - **IV**: Vetor de inicialização aleatório para cada operação > ⚠️ **Importante**: Esta implementação é adequada para proteger dados contra acesso casual ao localStorage, mas não substitui medidas de segurança do lado servidor para dados altamente sensíveis. ## 🌐 Compatibilidade Esta biblioteca requer navegadores com suporte à: - **Web Crypto API** (para SecureStorage) - **MediaDevices API** (para verificação de dispositivos) ### Navegadores Suportados: - Chrome 37+ - Firefox 34+ - Safari 7+ - Edge 12+ ## 🛠️ Desenvolvimento ```bash # Instalar dependências npm install # Compilar TypeScript npm run build # Preparar para publicação npm run prepublishOnly ``` ## 📄 Estrutura do Projeto ``` src/ ├── index.ts # Exportações principais ├── storage/ │ └── index.ts # SecureStorage implementation └── devices/ └── index.ts # Device verification utilities ``` ## 🤝 Contribuição 1. Faça um fork do projeto 2. Crie uma branch para sua feature (`git checkout -b feature/AmazingFeature`) 3. Commit suas mudanças (`git commit -m 'Add some AmazingFeature'`) 4. Push para a branch (`git push origin feature/AmazingFeature`) 5. Abra um Pull Request ## 📝 Licença Este projeto está licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes. ## 👨‍💻 Autor **Anderson** - [@anderson-tec12](https://github.com/anderson-tec12) --- ⭐ Se este projeto foi útil para você, considere dar uma estrela no GitHub!