nostr-metadata-utils
v0.2.0
Published
Comprehensive metadata utilities for Nostr, including enhanced NIP-05 verification and badge generation
Maintainers
Readme
nostr-metadata-utils
A comprehensive utility library for handling Nostr metadata, including enhanced NIP-05 verification and badge generation.
Features
- 🔍 NIP-05 verification via both well-known URL and DNS TXT records
- 🎯 Multiple DNS server fallback (Google, Cloudflare, Quad9)
- 🏷️ Verification badge generation
- 📦 Built-in caching system
- 🚀 Batch verification support
- 📊 Status monitoring capabilities
Installation
npm install nostr-metadata-utilsUsage
Basic Verification
import { MetadataValidator } from 'nostr-metadata-utils';
const validator = new MetadataValidator({
cacheTimeout: 3600, // 1 hour
retryAttempts: 3,
verificationTimeout: 5000
});
// Verify a single identifier
const result = await validator.verify('[email protected]');
console.log(result);
// {
// identifier: '[email protected]',
// isValid: true,
// pubkey: 'npub1...',
// dnsValid: true,
// timestamp: 1645356789
// }
// Batch verification
const results = await validator.verifyBatch([
'[email protected]',
'[email protected]'
]);Badge Generation
const badge = await validator.generateBadge('[email protected]', {
style: 'modern',
size: 'large',
colors: {
background: '#1a1a1a',
text: '#ffffff',
border: '#333333'
}
});Status Monitoring
validator.watchStatus('[email protected]', (status) => {
console.log('Verification status changed:', status);
});API Documentation
MetadataValidator
Constructor Options
cacheTimeout: Cache duration in seconds (default: 3600)retryAttempts: Number of retry attempts for failed verifications (default: 3)verificationTimeout: Timeout for verification requests in ms (default: 5000)checkDNS: Enable DNS verification (default: true)checkRelays: Enable relay verification (default: true)validateSignature: Enable signature validation (default: true)
Methods
verify(identifier: string): Promise<VerificationResult>verifyBatch(identifiers: string[]): Promise<VerificationResult[]>generateBadge(identifier: string, options?: BadgeOptions): Promise<string>watchStatus(identifier: string, callback: (status: VerificationResult) => void): () => void
Contributing
Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Built with TypeScript
- Inspired by the Nostr community
- Uses DNS resolution techniques from various open-source projects
