All tests pass in both Chromium (Puppeteer) and Node.js environments.
🧪 Mau Browser Integration Test
✅ 1. Testing module import... PASSED
- createAccount: function
- File: function
- BrowserStorage: function
✅ 2. Creating account... PASSED
- Account stored in IndexedDB
- Fingerprint generated correctly
✅ 3. Writing a test file... PASSED
- File encrypted and stored in IndexedDB
✅ 4. Reading file back... PASSED
- File decrypted successfully
- Content verified
✅ 5. Listing files... PASSED
- Files enumerated from IndexedDB
✅ 6. Testing versioning... PASSED
- Previous versions archived
- Version history working
✅ 7. Exporting public key... PASSED
- PGP key export successful
✅ Account creation
✅ File writing with encryption
✅ File reading with decryption
✅ File listing
✅ Versioning system
1npm install
2npm run build
3npm run build:browser
4node test-browser.cjs
1npm run dev
2# Open http://localhost:5173/test-standalone.html
1npm run build
2node test-integration.mjs
1import { createAccount, staticResolver, dhtResolver, combinedResolver } from '@mau-network/mau';
2
3// Static addresses (for known peers)
4const static = staticResolver(new Map([
5 ['fingerprint123', 'peer1.example.com:443'],
6]));
7
8// DHT resolver (HTTP-based, works in browser!)
9const dht = dhtResolver(['bootstrap.mau.network:443']);
10
11// Combined (try multiple in parallel)
12const resolver = combinedResolver([static, dht]);
13
14// Find peer
15const address = await resolver('fingerprint123');
Browser-compatible resolvers:
staticResolver - Hardcoded address mapdhtResolver - HTTP-based Kademlia (uses fetch())dnsResolver - Node.js only (requires UDP sockets)WebRTC client is available for P2P connections:
1import { WebRTCClient } from '@mau-network/mau';
2
3const client = new WebRTCClient(account, storage, peerFingerprint);
4
5// Create offer
6const offer = await client.createOffer();
7// ... exchange offer/answer via signaling server ...
8
9// Perform mTLS
10const authenticated = await client.performMTLS();
11
12// Send request
13const response = await client.sendRequest({
14 method: 'GET',
15 path: '/p2p/fingerprint/file.json'
16});
examples/signaling-server.tsdhtResolver() works with fetch()