{
"repo": "blind-pairing",
"timestamp": "2026-01-16T23:55:54.545Z",
"entryPoint": "index.js",
"exports": {
"packageJson": {
"main": "index.js"
}
},
"api": {
"file": "index.js",
"exports": [
{
"type": "default",
"name": "BlindPairing"
}
],
"classes": [
{
"name": "TimeoutPromise"
},
{
"name": "BlindPairing"
},
{
"name": "Member"
},
{
"name": "Candidate"
}
],
"functions": [
{
"name": "noop"
},
{
"name": "deriveReplyKeyPair"
},
{
"name": "deriveEphemeralKeyPair"
},
{
"name": "deriveDiscoveryKey"
},
{
"name": "getMuxer"
},
{
"name": "randomInterval"
}
]
},
"readme": {
"content": "# blind-pairing\n\nBlind pairing over HyperDHT\n\n```\nnpm install blind-pairing\n```\n\n## Usage\n\n``` js\nimport createTestnet from 'hyperdht/testnet.js'\nimport Hyperswarm from 'hyperswarm'\nimport BlindPairing from './index.js'\n\nconst t = await createTestnet()\nconst autobaseKey = Buffer.alloc(32).fill('the-autobase-key')\n\n// Create an invite to share\nconst { invite, publicKey, discoveryKey } = BlindPairing.createInvite(autobaseKey)\n\nconst a = new BlindPairing(new Hyperswarm({ bootstrap: t.bootstrap }), { poll: 5000 })\n\n// Prepare to receive candidates with invites\nconst m = a.addMember({\n discoveryKey,\n async onadd (candidate) {\n console.log('candiate id is', candidate.inviteId)\n candidate.open(publicKey)\n console.log('add candidate:', candidate.userData)\n\n // Confirm the candidate is good\n candidate.confirm({ key: autobaseKey })\n }\n})\n\nawait m.flushed()\n\n// Candidate (aka using the invite)\nconst userData = Buffer.alloc(32).fill('i am a candidate')\n\nconst b = new BlindPairing",
"sections": [
"intro",
"usage",
"license"
],
"hasApi": true,
"hasExamples": true,
"exampleCount": 2,
"examples": [
"npm install blind-pairing",
"### Usage with Additional Nodes provided\n\nInvites may contain additional nodes for you to use. These are known Peers allowing you to connect without DHT connectivity being required."
]
},
"patterns": [
"peer-discovery",
"dht-discovery"
]
}