@anderson.tec12/utils
Version:
[](https://badge.fury.io/js/%40anderson.tec12%2Futils) [](https://opensource.org/licenses/MIT)
166 lines (113 loc) • 4.59 kB
Markdown
# @anderson.tec12/utils
[](https://badge.fury.io/js/%40anderson.tec12%2Futils)
[](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!