{"_id":"@libp2p/interface-record","_rev":"22-8e26c2c1abff5d83ee71b206aa50a3fe","name":"@libp2p/interface-record","dist-tags":{"latest":"2.0.7","next":"2.0.7-d853d124"},"versions":{"0.0.0":{"name":"@libp2p/interface-record","version":"0.0.0","description":"Compliance tests for implementations of the libp2p connection interface","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interface-compliance-tests#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","typesVersions":{"*":{"*":["*","dist/*","dist/src/*","dist/src/*/index"],"src/*":["*","dist/*","dist/src/*","dist/src/*/index"]}},"exports":{".":{"import":"./dist/src/index.js","types":"./dist/src/index.d.ts"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"chore","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Trivial Changes"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","test":"aegir test","test:chrome":"aegir test -t browser --cov","test:chrome-webworker":"aegir test -t webworker","test:firefox":"aegir test -t browser -- --browser firefox","test:firefox-webworker":"aegir test -t webworker -- --browser firefox","test:node":"aegir test -t node --cov","test:electron-main":"aegir test -t electron-main","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^0.0.0"},"devDependencies":{"aegir":"^37.0.17"},"gitHead":"96a4bcc79da19fd63171b90f81abbb7cead6e9ce","_id":"@libp2p/interface-record@0.0.0","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-kJIZ7kPOpwj7kZh3VfGvfB3/Ojq7OgcXgVn5eXaMTL9+pdu0jR6QZ6dnHG+bA7GUHWoqXU4vCV+dxzIZp23TkA==","shasum":"7447a8f62787e0e9e14ddaccc2264050552335fa","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-0.0.0.tgz","fileCount":3,"unpackedSize":7299,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpafu6rAAjvE1L/rR83rR9N4HFdVsw8C4e06WiRy/iaQIgOx1KhIyDYreWSTehgix9eDiH8jX6oyRxmLmMHvqQGXc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiov+2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqwcA/+Mz/1avSQ3cxERgpxbF28PEp5XiWORJBrK5q/8JyUoKVqzWik\r\nNfDIoE2ZpryQO7XSWRxs6l8Za5VyqMKJqZ0MzdPUqOOEqsibYZgB7oEVbcj4\r\nB3C6FOklFX4YwQOx6L0RZmnjAHwBpOvzKVONqqwt5697zxYmv1O+c/JNfK4a\r\ntnVnrXI6VFpDV5Lr/H3/z7JsBUugHo+C/0Y7G5IGjmGD+xjKIz47Irk2JSIq\r\nRf4bl9qwaHIuVRlkm/hwHPGnLp0hF3RopAedyifXqHtcePhHCKp8YW8MDphQ\r\nMYN4u4jUo7jewsuz94Y2Teie+MpiOacgSyhXONmtD/gJd34kU1haUNepTj8d\r\nG/gTaPZw8r7pudO66/cp7ALgvWHJ5jX1tU6D0w93ztHY2N4y1cE7+Ukzo5LX\r\nRYzfZOt4hDgaHV9vXhwDUo4pMbis9kJQ2+jayo35e0aiq5jNMa/MY3hQRPnO\r\nGBKN4XZdzSA7fdU4IL8pN/8c1UIvYEoWhOg/77n+Gujdp0ak9f/YS0kIcjp/\r\n6kL48YAypXlQwtQJfpVSRL+TbyxCxCZMo62GtTrXf8iBb82cbkK0kBvkNfHM\r\n43+5qK1p1Q7mkXlSfZYeDFWm7PFSoe8Quk5h7bVO6y7T8+TLNEo+9gtOLhbS\r\nW9RQ7ZuKY4DipRzWrwyt0E1UkGNfmziohwI=\r\n=VPbU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"directories":{},"maintainers":[{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_0.0.0_1654849462193_0.9772253429945505"},"_hasShrinkwrap":false},"1.0.0":{"name":"@libp2p/interface-record","version":"1.0.0","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"chore","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Trivial Changes"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"~0.0.0"},"devDependencies":{"aegir":"^37.0.17"},"gitHead":"f4c71faa6270d7426cc9cf123aa00a940fd0342b","_id":"@libp2p/interface-record@1.0.0","_nodeVersion":"16.15.1","_npmVersion":"8.12.1","dist":{"integrity":"sha512-GKMgIEWNNnzCBgtKvX4m7YEv04Y038oawuMZwPazHs1oHu+n/neU3AtMAeIud5Y1iyGP9xI7HSBJ1QMjO+Xdbg==","shasum":"1f0068c9876d3fb6e4a170b60552d33dc713dd45","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-1.0.0.tgz","fileCount":8,"unpackedSize":9428,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD83fromkc9eLGBFBfagtYuGvv4xxRzZ56/jaaP8EuK6AIgMqyT6eUxkchWAP8NdmYu/K3rviDbb79PpxcpZIqshwE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqHL9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoeQ//fWa3vFf5ZKl9PFmZMRyfJ5Bf1q8HKoQ95c76s1ZlnEhO1jmn\r\n7TV560/YQoxGRS8cwLbcR1BTxXf3RgELgDaI+PV0Aa2F3RLQBd7sH52KsANJ\r\nN3ERbfaEhcU9h51GONvzJSoixZWmYYODy5+LRHnS9k65WSiNvidyxmFbEipY\r\nOh6X58Ix691ifvrbYnnuIVoOXS/k4/VgPpv/br0zT2X9gB1yyITRzQVYPCZK\r\n9cGKhwWjZNbZ3gmstaG3salvbWYoNDQmlIbMpT+C1KsbZvPyWgGl3ZyUeVR/\r\nZiJn0ipFIZqUOZYb/2d/Qw+3hlMTEk0x63gF9K/tL40lWgijkz3ok/yl7OX1\r\nT5T+Jc+nSOE67NSWzpzDVo6H6tb4wJBq/MHTfcwnqW8f7AAv/u2q+w8XJNX+\r\nmOUgi2AqerVfzbjaiNAsQn7uqsh5O3AftvCgD/l7qqDmsJLMmfXC23nslFxG\r\n56ViHdn8mqTSlzdHPqz+GH7rdoYpVTxvsik+4MCPzgBE7tQ3ujahClyGHWno\r\nMjtsgHqZTLg3WBwHNEx2QCvwhXN8R2tfuURy7baf6A9pMfjNRdbvKMAK4+ds\r\nCtMSRiDUiaTeBBxWe/AC8sF+orE4/f2fx02FPaSaqldcb7BiVjRKnowI1Gx9\r\nuF8pcCyPCz0xCuOCbn8ujTAryO4QWxZkINs=\r\n=aEHy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"directories":{},"maintainers":[{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_1.0.0_1655206653642_0.08726548125923683"},"_hasShrinkwrap":false},"1.0.1":{"name":"@libp2p/interface-record","version":"1.0.1","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"chore","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Trivial Changes"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^1.0.0"},"devDependencies":{"aegir":"^37.2.0"},"gitHead":"ea3b36c940d155136ba36b32a2febc4fa6fe6ebd","_id":"@libp2p/interface-record@1.0.1","_nodeVersion":"16.15.1","_npmVersion":"8.12.1","dist":{"integrity":"sha512-aD8ssBCom5+lyaj1/T+xvDxWjiVvdmHaIpkYhlfbnv7zys4hNT8udW3mau0QXFf1TdRNl675WosOhmTFThZYng==","shasum":"500fb84e27edd39c4517e15f412e5457d400e8f6","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-1.0.1.tgz","fileCount":8,"unpackedSize":9958,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDv2ubm2pmXdI2refVfGjAsjiTcd4MEEtOf+kysbjJlwIgPOqMiJszZMKVmM4bElFHghdNYJ+bsl3Kt7f8OMVaQF0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqJ+HACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTXg//XQSRuwCg6fO5Jg4MquHiyz/vcdUDgnp+3eCVa4lNwNmNeRFg\r\ndMg2hqAg59yxBDuQseyU1CeMc4A6pIhnrSCGqazPVlTlykezqXhutLerFj1N\r\nebIlimYAFHgvyclAtwyfNTOOm/CP1bKdN2G/gUtxXNg1fCFVSb6XadZsu7sq\r\nctbtLvZcI9xIbj4tqaiC7mUHibNwvF2qaPh6SQUmH+IAlLkKkpzxjBRbGfZX\r\nKhMwFd7rR5ochkOq5Ckh7ozZaNUXzPOaPbOuvp/w47dRrveEs4mAlU/IM9tH\r\neMXjBm9zDc3x7hK6nzY8ZRFc/rWbREc98od4qNyud/Qfq/rxy/QWjSScAbxQ\r\n4rc9JFKBz6omXlIsqMuINfV0HTIUHbVk1afGGAaKKxvWfHCDqJ3KRLIR56Yy\r\nkL3fKNHxucYwkJy8I4nu91WJzIqcRrFswqnbr/VHUtsQRk5d29uGlb7cvsO9\r\nb9PPADzWfQwH5Wf8J/cNuI5OczCf1BH0GNL/tn/5UU8M4CJ60N3FwtWzk1Oe\r\nP+3twFPoA68I8ZHh5i+GVfgBObfWvCAo7FwPrfcN/KNZr51jdUuHwt/aQato\r\nLR7ksMkIQE5KOb/d32H9un7ZIy94XlLjpi2HLOlJT0618MiZ5Vs5cKR8STBG\r\nCLdbAwbPntHWnB57iIl5FRW2OP7+gOrsWug=\r\n=DqWG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"directories":{},"maintainers":[{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_1.0.1_1655218055268_0.14027558789380268"},"_hasShrinkwrap":false},"1.0.2":{"name":"@libp2p/interface-record","version":"1.0.2","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"chore","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Trivial Changes"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^1.0.0"},"devDependencies":{"aegir":"^37.4.0"},"gitHead":"5cd7cf9c97cf2a7e793d0561d6597facf969e9cb","_id":"@libp2p/interface-record@1.0.2","_nodeVersion":"16.15.1","_npmVersion":"8.13.1","dist":{"integrity":"sha512-bYNxKtsUOsNucHeAXCZbAQxFXwR7JvoOmodwEByriMvTWYRbd6d8rm8VHZ/17QgdRFlIwNnpIPuoyyLQ8Wn1rQ==","shasum":"7284598f24f6eb03c2b5ad3d620733d4a28411df","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-1.0.2.tgz","fileCount":8,"unpackedSize":9958,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT0ylZZs6CS39PfGOcXxLiihWh0YWhMz3nvRVmkNLf4AIgGAE/zB+hr7RD57qhPud+/9gOmOq4sTYDAlZdvdW16HI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiueSNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpgiw//ZHe80DmWNThu5D8Ku3pxMIe0clhwalPKLTSq9OeSv/fxsiwZ\r\nQaI4j08hI7+fxRTuBt9r+xsPRwmn0+7nJPDhYYBFGKW46G1OnVSeIfNOo/rr\r\n+Om0UcX784Zo04KhyD1cxWHUv/m/UIXiXftwlIVpAQD+LipD6nBBvGWT0lw1\r\nQ0e4AMFk7f6ZUhoKR1LNazwhQimvQ84RJLgeILvH84hZjE+o9mVICAnqnRLt\r\nq+t96032ETtoN/6Vkh0fpTKcXzDrnBc8cL/nytccDm1VHB9fevsXPRC9OKpQ\r\noGMIxdT2675rNZvKNrf797civ1phXohNup52kJNv/cj1j0uvOMl/RUi5eySj\r\nFT+XWjRJUcjEY+Wxu3FloFzWhUE2W5zjRPofB5+oT9W7aeKsb3/A6qOlIH/q\r\nXYCjhjadq7Q2OHr2I9xoMo/PVm6FvYKTvQbdTocoj+iVa62ETDYk3pBpeYNk\r\nBnLm3Du7vUHPEZyPdGFyG9FYy2u0Co4zQqSauE+D4vt2ZToobGHY5t+85CBw\r\nUCpIBUjGI0MlHPo5lUemJX3bR7LMxrSiS+wG2790kE+xbcJHuU5+SflFBte1\r\nZAq6yU18fH4hZH0MeRNnotR0cD8p7A6FqMtizjc2HEGZxgodlhX0IdysutoK\r\n3N0GcfOMzzsPLQYNLq869XhT83Dm1RjB1wE=\r\n=N3iT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"directories":{},"maintainers":[{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_1.0.2_1656349837530_0.5346571892224674"},"_hasShrinkwrap":false},"2.0.0":{"name":"@libp2p/interface-record","version":"2.0.0","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^1.0.0","uint8arraylist":"^2.0.0"},"devDependencies":{"aegir":"^37.4.0"},"gitHead":"fa3910b9db1c1634dd5b9c1368925f8453887cce","_id":"@libp2p/interface-record@2.0.0","_nodeVersion":"16.16.0","_npmVersion":"8.15.1","dist":{"integrity":"sha512-eaG4X8VDR8DsZ7fcTTJcKvJF4JdNGPlkKbuGywizLAZXtKd3ZNQKAxc8eYxO/y1aa/ZhLu3QzJdEfcP86pUbBw==","shasum":"fb024983d300bf9792055e8766da5a623caa6d88","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.0.tgz","fileCount":8,"unpackedSize":10397,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE5xnofn0OpugvCXNBxSyeNRKAEMu1fWiT50jo7SkqOyAiEA/F+2CifWCisd07WZuIWWv/dzdBgFlaskXrlRes1WNeQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6iP/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqT4BAAjOV7pcX+XKM3OrWr2KMf4JRs03m5JPyHGgUgY5+MdEapFQsG\r\ng2oZpd7OqcpwseeeUwclKdrHg7IIeQEf+E1fzMJ8AK0MydhUR9dEOXHiqVR9\r\nswsnPQSYA3Cbz4AEZ4CDVA/3utO0UiEMhrMKzF7Wduc2vA24hztKFNxJ/0uc\r\nvJEBmSD0yhhTkbzbgshqKYpOB+/IBuIHPYWayPsIkvYF+VkoqxFE+DmhgEJM\r\n6eEHwpRxVOd/yL9bLM8owjIcXIM8V+hOcTQD6xO+eXL8n+eRi8UchPpiejLh\r\n2atCGf+GCVt/I6NTec2c7UJ6t5MUL4jpCFpnyjLxGC2K/oIZDL4E0A6S8DRl\r\nFQWcikgk9iWTz3B38gkR/lfJ5XHsA+kQfJoH2/a+0+dM73BV10BE2qE1GwIH\r\nZ3V8Dmlso2nafRlZGRNdnobbYvj8f1KwREL567z6aLsipIzt7kEOoHkEsCJx\r\nD8dryZYYm1gVTC/2zHWmeuK+aVtj7XENAH1mYDlG/FCe5Papdv0eMfYdq9ay\r\nMBCusoIJ4dRRz/XhrUUOSL/DBIrcY7xiQPVPBu4v+fo2ZklzKmJM5MDagTwI\r\nyu+PASMzlj7N3uToQH1ImKQ448fUWs41YDmX21taQw4JwRFEEaYxA2B4bwBD\r\nah4U/zxWDiTq1egc4jT19ndDZuqIwDPKf/M=\r\n=D3pB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.0_1659511806851_0.2221586137493945"},"_hasShrinkwrap":false},"2.0.1":{"name":"@libp2p/interface-record","version":"2.0.1","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^1.0.0","uint8arraylist":"^2.0.0"},"devDependencies":{"aegir":"^37.4.0"},"gitHead":"79080f3d469cb778a5d1622228c1b257f10e785e","_id":"@libp2p/interface-record@2.0.1","_nodeVersion":"16.16.0","_npmVersion":"8.17.0","dist":{"integrity":"sha512-RqF5jKukI8v3Q8MZb4d8/UVjg0OXbl0R8ErWi/LKf+uklA8kTA7rT4FQXFUBycxrkFmEu/tJnW+R1/4fwRwZVg==","shasum":"2b6de7c3deb3420be80df6a0485dc318d231773d","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.1.tgz","fileCount":8,"unpackedSize":10337,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBUo2D7M6H6LsRlHx3LfvQizBkUsnqKv9944cYPBsZnyAiEAkiK3XJ4YvgegTdT0M+RWeb3jDJ8iECEr+bQelapLkLQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9N18ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpmqg//Q1FORyiVUWqzdmqMl2hcsOxoTmpWxFzyHRewQRG8zeebc+KA\r\nuqUY06kFy0xMY3z6Vf2zMR/IIe3KsU6lko8QWX7/AQSMhaxecuKrJD8X4avE\r\nVnYIEqDIG8kvt3UULIypeACHnc+FZiwVWGMuo0+kE3yFiNXvrij9sOkyANOi\r\n2O5mP7Tpa1/cu/Fyr1RRlgKf1Mb8acQqBblX2+E+khyAivFiJ8sD1etGOAeg\r\n4e5sKBv2EfTYf50WX858mBW2IDCuEoHnA9p9B8LkAJZGFo2wlfZC6rEdrxRR\r\nHJle0PBxKzk3/ljrhwIyPljCueD+iO8Wm4J9NrhF0TWpyXT2GP2GJ1Ig9hlu\r\nxsnjLt02o4y2Bd6LWo6AFdB+hZ2Yf1rhoErUqaYJnkYHbAXaUmuBAmghoM45\r\n0vFo/DkFoQkxk4s/THBq2yz1FTqlx7j1jVbcWc8Os01HKWL7XtfLniiPMuRV\r\nEy8CH19gp+m8vTQrrL2IaLWJzuc05FiicEx8Vf88ee91pkJQHhGj5LddZFEt\r\nh8Nm6vXvCNQTbCcFKMtwG6VMr6/7/Fj/XxcXu8l1UPqxH7px3mm4NZ0LO0sF\r\nvzLpSOVa9XLYm69IONcwVJIyn1n3/eNDtXUKF5JEqS+eg0zJRcZW8ZJsKWYv\r\n8ow4VhULMpzUV5NUKy8mudHunmQD8AVa5Mc=\r\n=xnaC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.1_1660214652390_0.037901520700635016"},"_hasShrinkwrap":false},"2.0.2":{"name":"@libp2p/interface-record","version":"2.0.2","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^1.0.0","uint8arraylist":"^2.1.2"},"devDependencies":{"aegir":"^37.4.0"},"gitHead":"382b9786e86c7a5ab9b84079c19620af81b8df0b","_id":"@libp2p/interface-record@2.0.2","_nodeVersion":"18.12.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-Xq/FJPFo5YiUY13oJ8rZyppF1F31vbVrCYjFxB/YksmoQ0O3cK8bEPLynP580lilD2mK1pAlVd5CUKVPfXs5Xg==","shasum":"5c30de7a1ef669b56184a012a1c4c788fa045caf","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.2.tgz","fileCount":8,"unpackedSize":10195,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXNa2yOoqXAWtRabSeH+jDIXm1YpCVzKzn7gAJ1wvlagIhAI9E0I8rwAhT7AvtbvTxZgjaOClHQEHnerbB/2j1oWyU"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZqnRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo1fw/+J308R0Cl7Tlr6O25lnaMiFstuiHasWx+ZYiPAr/PSFPUN+Ep\r\npZ60Xz6d87YYZY9FDyHLJcZ8tAjKsQCssFO6hiymm0/re9gKpEZ4CMG3ezo9\r\nNFyP/hHwcnyM4LWptp3+oS27Y+DIc8ZqdfmzuzEoeDo1uh7Gprg5Gmh0CAhq\r\nJoOMZWq88r8FkjiCfO3SnJpAlAPR+pkGqd17dZiM+fXAStf+yHvQBJUDFegw\r\n1valz+Se3sRbpBGTT9YWKFlRa+Ltgi97ls0FGR6EOfdja8pRGMLgI5cUt1X7\r\n0XUTGpnkUlcvscQhHNxd5eELvgNJHHIjB/8AjAKz8JUsj0ocZ1mgXnP5/dTC\r\njcfYgCsMDg5N8it9uaGlSHrZYzTATABbUob42JojAHSZF0jiyqWnpfqS8UJr\r\nTMYzTUw1lNqDFWsZcqEQxqrDPXE4jdDRmnzL/mI2z7j8qK/yoVesMZCqUsUI\r\nXtJx+YoM13xU87pldU6gGpzK0LcUeHvpdPjNQtvUHyLhzwQAvwEY8/MSCYk0\r\njzHqKvEG1l72EiN/ZOWkEqt3WjhynzRXANMc5W0yrjE8EONqux26EHYkWRdf\r\nS62dBhHxzG/5S9JeyWXo6BpGVv4buPhgUabtYNXB1QulZ9UGJzqzChLx45ry\r\nBw70NsFC2f2x1xB3gPX7akjRvt+cQSykQPQ=\r\n=NuuL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.2_1667672529197_0.5665765703143049"},"_hasShrinkwrap":false},"2.0.3":{"name":"@libp2p/interface-record","version":"2.0.3","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^1.0.0","uint8arraylist":"^2.1.2"},"devDependencies":{"aegir":"^37.7.3"},"typedoc":{"entryPoint":"./src/index.ts"},"gitHead":"746e12c5f13fad4f369a03623f5c3a0e2eb95a34","_id":"@libp2p/interface-record@2.0.3","_nodeVersion":"18.12.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-SHGLATnt5WG4H13kV4h7ql+YAqcl7UMtMw/Um6C2KJ1Zm8XF2bCXlDo2o4J9V+a80ii3OXkY6LtsbRh4GFpNAA==","shasum":"dfe76596ae7edba881081ca77d296cddbd6195ff","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.3.tgz","fileCount":10,"unpackedSize":11219,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAiO5XpUSXL8lW6T9wP+KLM7sBkHyR+9RzS2RfYxsGPsAiEA9T2MQHV61waccep84ip1AsLrD+ek8nx/EXKQ4LbP/SU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjmhl1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqCQhAAn83a42IsdiVYNhhM/brWXAhdATJ2MBk+ZJovchztNTbayEIL\r\nUGgqDdTlyj0U96V7s7wFvjj1ZRmIgS//a5VT6Y7WT5lB169kvq8D8HAr2hzs\r\n+9mpM8+MjtoGcONhOHcrZ1x4XDwuUaZyf9HoU79kclQeOMVfrfQNr2HPud42\r\nVkShrdlZO8t/k+1v6qot9sL/U8zcoGsUWZaxJMTHnXc1QLZWFp9P9JhUhXHz\r\nMCfnB5stonx5dWZEnlytUHfgB7tJPN3cqSk4yRQ/olIw9/4IFoV8ZKgW9blh\r\njPrSo7cM20yW1cdCeKIE7ZrMFNfFQFfD8blK6VNw87QVDBXPxxlCpcAZZs+0\r\n+bqqJIRLSeynTTAMnAZNlc1F32AwqxewXRVxiQWPTkGrC4Ok/D6w9sJi5qKD\r\nqI3JNlaGzsNq3vAT53Dyozcq2V2zKE5cH1pGItG2eWuZQ2+Ervht5lrJuZCI\r\nZ4fRHwqQx+Go6PNRxuvYdAXDTfHveUej4H9K5N7lD3GbjlIUaEOZlJxH1dgI\r\nv89fy5kJCXVA5xSR8GcWHD7lKJEkLt66a3oI3stPj8Hdwls2BUICEq0cPOEa\r\nzyiIWZk5YV+Galbd1ATWFzFCwA5/aiodfe9Fz6++LTWQlnpm9yOpIcQ/iSEb\r\nz7HFmh0xftyeiUtSEaJHRSz/WXEi3fTDuY0=\r\n=ThS0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.3_1671043445579_0.36152127832986825"},"_hasShrinkwrap":false},"2.0.4":{"name":"@libp2p/interface-record","version":"2.0.4","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^1.0.0","uint8arraylist":"^2.1.2"},"devDependencies":{"aegir":"^37.7.3"},"typedoc":{"entryPoint":"./src/index.ts"},"gitHead":"2cc70925a8aeec47c947c8ba049334c7afb605f9","_id":"@libp2p/interface-record@2.0.4","_nodeVersion":"18.12.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-HEk14u5rajXB0puRqzCIdmqLeDZkw7xxy3VGf3MSMZYZJZTGCF5Viyt2/X+V4xIEglp6dhq3RIwdwId747kDuA==","shasum":"a7826c6d581f056e3c1f5cd9a34e636c31f2d52f","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.4.tgz","fileCount":10,"unpackedSize":11292,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZFCtpJOCM/7MBZYwcdoUySwGHYpxYjRziaV8uBW2z5AiAvOo23dkLG/Mrxv5azKAP26tXzKAOX+9NpGCpKym0sfw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnEGoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqPuQ//XoEzWdjSrHinV1wHqLyCb4Pn3hHNtkkVDAoEj2gnL7MhrLRh\r\nz5hPaj5HgwBQHzNR+Qn1H5Xiy8EY3EIvly3sFoxLc9HybYCOYlUlWbXYPRf+\r\nn3IHuJPi0+RX3+/T29XE5vk5gsLJZb6jj4rhspa3L5nsFB5LJSSS1Y3W+xWq\r\nAftF7v6nTBZJEwBub49Phefp9VID1mRku3SqBhHG4shyx39w/TVuh7hPRD3k\r\n3ceTDd4SZYFBOE6SSnG7u3bygNOXBi/1/6prXLYAdTxpIeoPNlFidUr+3Xv8\r\n1izS5f2veU0Ea2NlssZMTqyaNto0aK17dDOYpUkgSfLZQXrW9aT2AoJGUkCK\r\niZ0oHZQ9KHZDu4VeZMkdQhqc8cgYDmrvN8bPmsUoMNJyeYb05Z76GNTJtwJA\r\nJLgWr0wetcUM9qTEqI5q8PRQyVB+4LnxGpkZT+135OPhzyJsiPwbVNYl6fFd\r\nGLPqKMEG2bVrx+Ly2td0kXSmAEWQkS7RSV9w5lKLwKxVukgh4Tg4sNCSB1ql\r\nZNV2wQV4xVNmeo249FC1B+LtI+UErV3YCqPcuP7rUSznS6Y1nbSDI8L1avZo\r\nOxlRfbOad7NaxLWxc3c5Kwj0J1A8FVRWVQYzxpsbZfvzfpMEWkPhv1cMMS4j\r\nOfyPHWwgs8R392ub57/F1nTnxCO3hlxx+Cg=\r\n=gxNd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.4_1671184808555_0.28278813530493574"},"_hasShrinkwrap":false},"2.0.5":{"name":"@libp2p/interface-record","version":"2.0.5","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^2.0.0","uint8arraylist":"^2.1.2"},"devDependencies":{"aegir":"^37.7.3"},"typedoc":{"entryPoint":"./src/index.ts"},"gitHead":"0f0e1c5da5b3f382a55840f230d5952639e524d2","_id":"@libp2p/interface-record@2.0.5","_nodeVersion":"18.12.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-QWsGP/wmGSM5qHvmBz6HOzpjICQ96/fQxLeAriR0QQdfQTX7g0IkrIncrck7Aagoa5RzXDt4chhGLOj/G9G1pg==","shasum":"2e8f591a50005ca35470dd5a216025926628aeac","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.5.tgz","fileCount":10,"unpackedSize":11303,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/UIUfM2/TrYs8tIr08qmDO5zYy9F+oi8uhaJRUjozvAiEAsIkwk4d0uyInoumrRgxG6Cp9X8lJJLpEhZtLNfETtwA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjuA9VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmodHQ/+PSPXMwBX6udjAQpMs4Fqn2bUpkCBNOJj9MGg9bxVRdOq9Fh5\r\nv9tp7eB6KGmvwjAt1iePzDjyM/agI6xSz9z97kt9WcI7PYV04kYH24e60yeZ\r\n/HTFzuOMX6xxXW1kiXPCft8ILSWJ2NdBGteWWVVikt9/sttvSK/I1J5ukORK\r\nLcWvW7X0xgfS1lyBToHLG0s7KKqnEl+uqqJ1U1hylKZWc1lxRWcvriS/8mTv\r\nbJZh81ywOXgFiNsrZthF5B897UJuV2bbmMD15RUrQA48M+todGm0k9J3QawK\r\ndaMhvdIewYdT3uQDbVPd+wfJz7hF+vYQ8kiEgShJ+QWKEP3MRD/WCbUUxAGZ\r\nWqsYOyg9LY7md1ffPBFHoiWTqPTJQ2ntRGB0YJj0pVxwfyTBlNY7p04GPsj8\r\nnJc0gh021RyfKFNHlUO+OBsap+zcaOFVs98/bomBIEkWBrkfuvn3bdPwRtFm\r\nRUIBxFCDg7Xfr03SICokI+57RgvZnp7VWETV9Ymz6NXVCuSMKsavP7Atpbg+\r\nWu3KJBBs5nrMEvumwZxkZ6btLnruXGBpYWLiu5RLSrAvQAcf3vzfjXK6xeZf\r\n3edNkMz38ylx532/c6z/oHFERibMP5UALKcEpjEng5pc+DBY3DCL5k0gnRG1\r\n3+z+0ChXWVcXto0AxssZqqBioHLpF8WxDVk=\r\n=/vGM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.5_1673006933450_0.9240284020177418"},"_hasShrinkwrap":false},"2.0.6":{"name":"@libp2p/interface-record","version":"2.0.6","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^2.0.0","uint8arraylist":"^2.1.2"},"devDependencies":{"aegir":"^38.1.0"},"typedoc":{"entryPoint":"./src/index.ts"},"gitHead":"2f1fc4e40c71bba6bbf37639f96e69d5a32b8fd4","_id":"@libp2p/interface-record@2.0.6","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-4EtDkY3sbYapWM8++gVHlv31HZXoLmj9I7CRXUKXzFkVE0GLK/A8jYWl7K0lmf2juPjeYm2eHITeA9/wAtIS3w==","shasum":"44597e144bc3e9960cc64f8c5fcd9822ea3e283f","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.6.tgz","fileCount":10,"unpackedSize":11309,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgoLdj6P0yzN/N9gu3E1kFaI9TSX4dc9nJg+w32fjOkgIhANM+tBu/VZKE1QFdkf0PR0koL/uJjoyd13O9BVgGxn50"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjx/otACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLTg//SDK0UawjkRaGH8g0vem/r8ogH0cewYlBKFqJ4ZcVyI7lTJUU\r\nW5BMO/uFGolVrgSL/kw9UAtILL535C8YJLaBZBWhZB4mIftd46SYZLtw95FA\r\nXu8nWLFOB3uS6qirORtR84Q4YTOoFv08ffPqKBikFN2CgQNurw6EKXvR83Hz\r\nDNmViIoJEi9tDcV3a+ID1+LPa7WcCuVo9TpRtgb3O9vqdTppDpjpqppZZdy2\r\nmqPC72IdyEA7y7kwvC7pv3uUvOSwZ29ciDQvocjOvlVqRmRUb9kizW70CGe4\r\nKLMZPLW+TNWL36COvGwX4f9CMy/8ofpsR34F0eJtLhnpIzy1isrIEhgjb6pV\r\n3QoYfgTWFhETtgRGF/34tMLhlI7lR9pl9qdHW+YZcEXOPK+xps8h5in8AVEu\r\nKNkIC9WEd08SWxKauWr3qGLl4pgifbZZ6cD35zhx+Sj9ppQ9bXnwQuaGyZAX\r\npbQBlYELLu/CrypKGQYviR8BZJftT5dLeO6gnojZsButDLAOCrjCGVClAhUX\r\n+aeiVk/tYY+d+lg/46yrmEpFrDe1U66yP76oul6le2bXVrjlH2kUh5Lo194h\r\nmaiKiUwgF2YPlH8q0eqwxVYdysnz7kl+Eiugb2YHa5+X5fIazLpXcXq0LaD9\r\nVtGIh6rkrqkDPVhgZbqPzfimBV7tnC7VZDo=\r\n=rWA3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.6_1674050093316_0.5805380372017874"},"_hasShrinkwrap":false},"2.0.7":{"name":"@libp2p/interface-record","version":"2.0.7","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"keywords":["interface","libp2p"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"^2.0.0","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.5"},"typedoc":{"entryPoint":"./src/index.ts"},"gitHead":"f52bd1149a331c1bc19a17faffa8e6702acdb358","_id":"@libp2p/interface-record@2.0.7","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-AFPytZWI+p8FJWP0xuK5zbSjalLAOIMzEed2lBKdRWvdGBQUHt9ENLTkfkI9G7p/Pp3hlhVzzBXdIErKd+0GxQ==","shasum":"d083776e465cfa66d10e1d3c8e015677a9fc7635","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7.tgz","fileCount":10,"unpackedSize":11298,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdvMU1TbvQ+5X548zSGXhkcjMOkQa6bh0HTFhJavD1lwIgVu3G1aU2Pjm4/lcOexPrOGB8+6iyFyVsP00RNLexc+A="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkU+efACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoWA/+Mu0JncVSnom49Fn6BcsNjGfkSV5YNhddUS3IxnBqn0z+XhoJ\r\nr6lyECqH+V7tWLsgHcB5bGsxjZsLCU8nvtdPbhbCt63IG5Oup1Tw3/8uXOJs\r\nIQBPwwR2GvLmNW45z0SphvCtu03V4WJYMGm5V/jGQr3eo7UZ8Qh251aGpAJR\r\nU/o9jcAxPClUabwT88oOD+iXGjfBjVM2zIfnVVHI9TTbYA10wbyVHvzvlnLR\r\nFZNXGQKYqRMZZptV9Do6aqvsaf5Jfyxva7iJwtw1XZJnZD4xw5YAK2losZjm\r\n2JXq/5k6s1NoFvgtKJqB0zlZ2BIUf5EOCEpMnYlJmDTyVPKP5Nwut7QdhVZf\r\nxNDhmx7onr4PxX1gMk4dXeSpuGXBFLJRZ1Oas+jXxxhlgClXyFQ5f6sX6TwZ\r\ntWoisH/oCXqMKGFTT0LPaPG2MWEOckzxz9KPKafLHWlWUWC1zfGUH5r3Jc6O\r\ngamHqbXptifknd5+YjeCbpJfxDsGcFFFGRy0GJ+0kRIe+HrSTBoFlq3/dlfT\r\ns3OyKpI5CWiaT6dYNXBpwqF6wpCpE1VFcG1rmZVZZR/EPraKRHaYnMBkqSab\r\n0cbvAGuCRFSn78RJiBkjiZNQqMOtrPiMxFn8gMAHrKlhuKMv2GlN1+BkHcnc\r\nT4GxvSaWx0pc7h+i76c77ET+vOtw7Bqjrak=\r\n=uoew\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7_1683220383595_0.6648906174440392"},"_hasShrinkwrap":false},"2.0.7-1c6702c8":{"name":"@libp2p/interface-record","version":"2.0.7-1c6702c8","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p/issues"},"keywords":["interface","libp2p"],"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build","release":"aegir release"},"dependencies":{"@libp2p/interface-peer-id":"2.0.2-1c6702c8","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.5"},"typedoc":{"entryPoint":"./src/index.ts"},"readme":"# @libp2p/interface-record <!-- omit in toc -->\n\n[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)\n[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)\n[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)\n\n> Record interface for libp2p\n\n## Table of contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [Create Record](#create-record)\n- [API](#api)\n  - [marshal](#marshal)\n  - [equals](#equals)\n- [API Docs](#api-docs)\n- [License](#license)\n- [Contribution](#contribution)\n\n## Install\n\n```console\n$ npm i @libp2p/interface-record\n```\n\nA libp2p node needs to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information. Libp2p provides an all-purpose data container called **envelope**, which includes a signature of the data, so that it its authenticity can be verified.\n\nThe record represents the data that will be stored inside the **envelope** when distributing records across the network. The `interface-record` aims to guarantee that any type of record created is compliant with the libp2p **envelope**.\n\nTaking into account that a record might be used in different contexts, an **envelope** signature made for a specific purpose **must not** be considered valid for a different purpose. Accordingly, each record has a short and descriptive string representing the record use case, known as **domain**. The data to be signed will be prepended with the domain string, in order to create a domain signature.\n\nA record can also contain a Uint8Array codec (ideally registered as a [multicodec](https://github.com/multiformats/multicodec)). This codec will prefix the record data in the **envelope** , so that it can be deserialized deterministically.\n\n## Usage\n\n```js\nconst tests = require('libp2p-interfaces-compliance-tests/record')\ndescribe('your record', () => {\n  tests({\n    async setup () {\n      return YourRecord\n    },\n    async teardown () {\n      // cleanup resources created by setup()\n    }\n  })\n})\n```\n\n## Create Record\n\n```js\nconst multicodec = require('multicodec')\nconst Record = require('libp2p-interfaces/src/record')\nconst { fromString } = require('uint8arrays/from-string')\n// const Protobuf = require('./record.proto')\n\nconst ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record'\nconst ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = fromString('0301', 'hex')\n\n/**\n * @implements {import('libp2p-interfaces/src/record/types').Record}\n */\nclass PeerRecord {\n  constructor (peerId, multiaddrs, seqNumber) {\n    this.domain = ENVELOPE_DOMAIN_PEER_RECORD\n    this.codec = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD\n  }\n\n  /**\n   * Marshal a record to be used in an envelope.\n   *\n   * @returns {Uint8Array}\n   */\n  marshal () {\n    // Implement and return using Protobuf\n  }\n\n  /**\n   * Returns true if `this` record equals the `other`.\n   *\n   * @param {PeerRecord} other\n   * @returns {other is Record}\n   */\n  equals (other) {\n    // Verify\n  }\n}\n```\n\n## API\n\n### marshal\n\n- `record.marshal()`\n\nMarshal a record to be used in a libp2p envelope.\n\n**Returns**\n\nIt returns a `Protobuf` containing the record data.\n\n### equals\n\n- `record.equals(other)`\n\nVerifies if the other Record is identical to this one.\n\n**Parameters**\n\n- other is a `Record` to compare with the current instance.\n\n**Returns**\n\n- `other is Record`\n\n## API Docs\n\n- <https://libp2p.github.io/js-libp2p/modules/_libp2p_interface_record.html>\n\n## License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","readmeFilename":"README.md","gitHead":"1c6702c8a48a25e97910c0821f748802edf9ac42","_id":"@libp2p/interface-record@2.0.7-1c6702c8","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-0eDuHrt8QIYHvNFmG3v2ri97h0qZnlDHlmYcrr1d2OHdEmpObrzsX3m1bBhgJVX+fNoHctpUxY0+mtyxDR4L+g==","shasum":"44f6765f2213c0cae760e14a435316070bf07420","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7-1c6702c8.tgz","fileCount":9,"unpackedSize":10908,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBGRqzQ/msZmkU7kbFWKa/C/2dl5Ux8TNWTNOm3EqLnkAiA59bx/vVlUNuUX3e46mbbmX9kwrkmlLKTpmfnBrfmX3w=="}]},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7-1c6702c8_1686816670075_0.6465759443173555"},"_hasShrinkwrap":false},"2.0.7-883082ca":{"name":"@libp2p/interface-record","version":"2.0.7-883082ca","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p/issues"},"keywords":["interface","libp2p"],"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build"},"dependencies":{"@libp2p/interface-peer-id":"2.0.2-883082ca","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.5"},"typedoc":{"entryPoint":"./src/index.ts"},"readme":"# @libp2p/interface-record <!-- omit in toc -->\n\n[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)\n[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)\n[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)\n\n> Record interface for libp2p\n\n## Table of contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [Create Record](#create-record)\n- [API](#api)\n  - [marshal](#marshal)\n  - [equals](#equals)\n- [API Docs](#api-docs)\n- [License](#license)\n- [Contribution](#contribution)\n\n## Install\n\n```console\n$ npm i @libp2p/interface-record\n```\n\nA libp2p node needs to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information. Libp2p provides an all-purpose data container called **envelope**, which includes a signature of the data, so that it its authenticity can be verified.\n\nThe record represents the data that will be stored inside the **envelope** when distributing records across the network. The `interface-record` aims to guarantee that any type of record created is compliant with the libp2p **envelope**.\n\nTaking into account that a record might be used in different contexts, an **envelope** signature made for a specific purpose **must not** be considered valid for a different purpose. Accordingly, each record has a short and descriptive string representing the record use case, known as **domain**. The data to be signed will be prepended with the domain string, in order to create a domain signature.\n\nA record can also contain a Uint8Array codec (ideally registered as a [multicodec](https://github.com/multiformats/multicodec)). This codec will prefix the record data in the **envelope** , so that it can be deserialized deterministically.\n\n## Usage\n\n```js\nconst tests = require('libp2p-interfaces-compliance-tests/record')\ndescribe('your record', () => {\n  tests({\n    async setup () {\n      return YourRecord\n    },\n    async teardown () {\n      // cleanup resources created by setup()\n    }\n  })\n})\n```\n\n## Create Record\n\n```js\nconst multicodec = require('multicodec')\nconst Record = require('libp2p-interfaces/src/record')\nconst { fromString } = require('uint8arrays/from-string')\n// const Protobuf = require('./record.proto')\n\nconst ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record'\nconst ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = fromString('0301', 'hex')\n\n/**\n * @implements {import('libp2p-interfaces/src/record/types').Record}\n */\nclass PeerRecord {\n  constructor (peerId, multiaddrs, seqNumber) {\n    this.domain = ENVELOPE_DOMAIN_PEER_RECORD\n    this.codec = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD\n  }\n\n  /**\n   * Marshal a record to be used in an envelope.\n   *\n   * @returns {Uint8Array}\n   */\n  marshal () {\n    // Implement and return using Protobuf\n  }\n\n  /**\n   * Returns true if `this` record equals the `other`.\n   *\n   * @param {PeerRecord} other\n   * @returns {other is Record}\n   */\n  equals (other) {\n    // Verify\n  }\n}\n```\n\n## API\n\n### marshal\n\n- `record.marshal()`\n\nMarshal a record to be used in a libp2p envelope.\n\n**Returns**\n\nIt returns a `Protobuf` containing the record data.\n\n### equals\n\n- `record.equals(other)`\n\nVerifies if the other Record is identical to this one.\n\n**Parameters**\n\n- other is a `Record` to compare with the current instance.\n\n**Returns**\n\n- `other is Record`\n\n## API Docs\n\n- <https://libp2p.github.io/js-libp2p/modules/_libp2p_interface_record.html>\n\n## License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","readmeFilename":"README.md","gitHead":"883082ca284b346cd5c232236356773d97b78d8b","_id":"@libp2p/interface-record@2.0.7-883082ca","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-Ne5PdSTbcT8THnaxIkxIapQLpJsbOlWSaN8MK1jjCTjVb8Lj+O4YgtXkhGg2PthmDs4pJQ0FeFLEg6Qe1DJpwQ==","shasum":"d43ae26c0820bd63da3421cb485fd672e52b869d","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7-883082ca.tgz","fileCount":9,"unpackedSize":10876,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLaLKIXEFy8wuvfwBUwLwel3YzqIJhA7jXgzZlYwbqXwIhAM4DYXcPYWImFML7+en7yixquz2wdZpnQcdD2TzsHgyw"}]},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7-883082ca_1686821823497_0.45055535059905627"},"_hasShrinkwrap":false},"2.0.7-5a9fb4d6":{"name":"@libp2p/interface-record","version":"2.0.7-5a9fb4d6","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p/issues"},"keywords":["interface","libp2p"],"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build"},"dependencies":{"@libp2p/interface-peer-id":"2.0.2-5a9fb4d6","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.5"},"typedoc":{"entryPoint":"./src/index.ts"},"readme":"# @libp2p/interface-record <!-- omit in toc -->\n\n[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)\n[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)\n[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)\n\n> Record interface for libp2p\n\n## Table of contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [Create Record](#create-record)\n- [API](#api)\n  - [marshal](#marshal)\n  - [equals](#equals)\n- [API Docs](#api-docs)\n- [License](#license)\n- [Contribution](#contribution)\n\n## Install\n\n```console\n$ npm i @libp2p/interface-record\n```\n\nA libp2p node needs to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information. Libp2p provides an all-purpose data container called **envelope**, which includes a signature of the data, so that it its authenticity can be verified.\n\nThe record represents the data that will be stored inside the **envelope** when distributing records across the network. The `interface-record` aims to guarantee that any type of record created is compliant with the libp2p **envelope**.\n\nTaking into account that a record might be used in different contexts, an **envelope** signature made for a specific purpose **must not** be considered valid for a different purpose. Accordingly, each record has a short and descriptive string representing the record use case, known as **domain**. The data to be signed will be prepended with the domain string, in order to create a domain signature.\n\nA record can also contain a Uint8Array codec (ideally registered as a [multicodec](https://github.com/multiformats/multicodec)). This codec will prefix the record data in the **envelope** , so that it can be deserialized deterministically.\n\n## Usage\n\n```js\nconst tests = require('libp2p-interfaces-compliance-tests/record')\ndescribe('your record', () => {\n  tests({\n    async setup () {\n      return YourRecord\n    },\n    async teardown () {\n      // cleanup resources created by setup()\n    }\n  })\n})\n```\n\n## Create Record\n\n```js\nconst multicodec = require('multicodec')\nconst Record = require('libp2p-interfaces/src/record')\nconst { fromString } = require('uint8arrays/from-string')\n// const Protobuf = require('./record.proto')\n\nconst ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record'\nconst ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = fromString('0301', 'hex')\n\n/**\n * @implements {import('libp2p-interfaces/src/record/types').Record}\n */\nclass PeerRecord {\n  constructor (peerId, multiaddrs, seqNumber) {\n    this.domain = ENVELOPE_DOMAIN_PEER_RECORD\n    this.codec = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD\n  }\n\n  /**\n   * Marshal a record to be used in an envelope.\n   *\n   * @returns {Uint8Array}\n   */\n  marshal () {\n    // Implement and return using Protobuf\n  }\n\n  /**\n   * Returns true if `this` record equals the `other`.\n   *\n   * @param {PeerRecord} other\n   * @returns {other is Record}\n   */\n  equals (other) {\n    // Verify\n  }\n}\n```\n\n## API\n\n### marshal\n\n- `record.marshal()`\n\nMarshal a record to be used in a libp2p envelope.\n\n**Returns**\n\nIt returns a `Protobuf` containing the record data.\n\n### equals\n\n- `record.equals(other)`\n\nVerifies if the other Record is identical to this one.\n\n**Parameters**\n\n- other is a `Record` to compare with the current instance.\n\n**Returns**\n\n- `other is Record`\n\n## API Docs\n\n- <https://libp2p.github.io/js-libp2p/modules/_libp2p_interface_record.html>\n\n## License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","readmeFilename":"README.md","gitHead":"5a9fb4d6855b24a4bd63c6b94a5c13d03d7e7ce9","_id":"@libp2p/interface-record@2.0.7-5a9fb4d6","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-uhhaRzx30cSh0Ue7JhzCxBL9tOG5X9FEInnGNh6nW3EFHqi05OXIStFSSMMHaUnFxSX6H0gWgh8BzD/ehQtp1g==","shasum":"c091035e33dce9c63ab908d51414f0b679c68fa8","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7-5a9fb4d6.tgz","fileCount":9,"unpackedSize":10876,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDai473Fjmrkyg2APlsf/SbiCNGTdn2NjW8Bn/xiTU2fAiBAyD8rQUzMgemotZh1WRMZbz1zB6lv5687Gg2lO/gJAg=="}]},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7-5a9fb4d6_1686825272555_0.8103501181236132"},"_hasShrinkwrap":false},"2.0.7-d2f1eff4":{"name":"@libp2p/interface-record","version":"2.0.7-d2f1eff4","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p/issues"},"keywords":["interface","libp2p"],"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build"},"dependencies":{"@libp2p/interface-peer-id":"2.0.2-d2f1eff4","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.5"},"typedoc":{"entryPoint":"./src/index.ts"},"readme":"# @libp2p/interface-record <!-- omit in toc -->\n\n[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)\n[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)\n[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)\n\n> Record interface for libp2p\n\n## Table of contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [Create Record](#create-record)\n- [API](#api)\n  - [marshal](#marshal)\n  - [equals](#equals)\n- [API Docs](#api-docs)\n- [License](#license)\n- [Contribution](#contribution)\n\n## Install\n\n```console\n$ npm i @libp2p/interface-record\n```\n\nA libp2p node needs to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information. Libp2p provides an all-purpose data container called **envelope**, which includes a signature of the data, so that it its authenticity can be verified.\n\nThe record represents the data that will be stored inside the **envelope** when distributing records across the network. The `interface-record` aims to guarantee that any type of record created is compliant with the libp2p **envelope**.\n\nTaking into account that a record might be used in different contexts, an **envelope** signature made for a specific purpose **must not** be considered valid for a different purpose. Accordingly, each record has a short and descriptive string representing the record use case, known as **domain**. The data to be signed will be prepended with the domain string, in order to create a domain signature.\n\nA record can also contain a Uint8Array codec (ideally registered as a [multicodec](https://github.com/multiformats/multicodec)). This codec will prefix the record data in the **envelope** , so that it can be deserialized deterministically.\n\n## Usage\n\n```js\nconst tests = require('libp2p-interfaces-compliance-tests/record')\ndescribe('your record', () => {\n  tests({\n    async setup () {\n      return YourRecord\n    },\n    async teardown () {\n      // cleanup resources created by setup()\n    }\n  })\n})\n```\n\n## Create Record\n\n```js\nconst multicodec = require('multicodec')\nconst Record = require('libp2p-interfaces/src/record')\nconst { fromString } = require('uint8arrays/from-string')\n// const Protobuf = require('./record.proto')\n\nconst ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record'\nconst ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = fromString('0301', 'hex')\n\n/**\n * @implements {import('libp2p-interfaces/src/record/types').Record}\n */\nclass PeerRecord {\n  constructor (peerId, multiaddrs, seqNumber) {\n    this.domain = ENVELOPE_DOMAIN_PEER_RECORD\n    this.codec = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD\n  }\n\n  /**\n   * Marshal a record to be used in an envelope.\n   *\n   * @returns {Uint8Array}\n   */\n  marshal () {\n    // Implement and return using Protobuf\n  }\n\n  /**\n   * Returns true if `this` record equals the `other`.\n   *\n   * @param {PeerRecord} other\n   * @returns {other is Record}\n   */\n  equals (other) {\n    // Verify\n  }\n}\n```\n\n## API\n\n### marshal\n\n- `record.marshal()`\n\nMarshal a record to be used in a libp2p envelope.\n\n**Returns**\n\nIt returns a `Protobuf` containing the record data.\n\n### equals\n\n- `record.equals(other)`\n\nVerifies if the other Record is identical to this one.\n\n**Parameters**\n\n- other is a `Record` to compare with the current instance.\n\n**Returns**\n\n- `other is Record`\n\n## API Docs\n\n- <https://libp2p.github.io/js-libp2p/modules/_libp2p_interface_record.html>\n\n## License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","readmeFilename":"README.md","gitHead":"d2f1eff45ca2dd30c98497bb5dcbc3fb33496b6d","_id":"@libp2p/interface-record@2.0.7-d2f1eff4","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-8usAIKzNDMjqnVn0yYPYW9ql5Joiq3DIgKFHi3IiGZJ4IahbVMxQqmVdW2MbGPIeotuCWqBEmOVj7/joT8gJJQ==","shasum":"b38ac69bfe8fea8cce93e4828b9df46c18690bee","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7-d2f1eff4.tgz","fileCount":9,"unpackedSize":10876,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWRunp7nL2OMzipi8KtGYlvxgAIzEHTMxVWa1oA+rIgAiBNjn4ETtn+vDBLCIXKya0lQxrhZr68f3ChaYMkUxZ4Qw=="}]},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7-d2f1eff4_1686830955664_0.5465484108581578"},"_hasShrinkwrap":false},"2.0.7-8c6b6d24":{"name":"@libp2p/interface-record","version":"2.0.7-8c6b6d24","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p/issues"},"keywords":["interface","libp2p"],"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build"},"dependencies":{"@libp2p/interface-peer-id":"2.0.2-8c6b6d24","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.5"},"typedoc":{"entryPoint":"./src/index.ts"},"readme":"# @libp2p/interface-record <!-- omit in toc -->\n\n[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)\n[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)\n[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)\n\n> Record interface for libp2p\n\n## Table of contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [Create Record](#create-record)\n- [API](#api)\n  - [marshal](#marshal)\n  - [equals](#equals)\n- [API Docs](#api-docs)\n- [License](#license)\n- [Contribution](#contribution)\n\n## Install\n\n```console\n$ npm i @libp2p/interface-record\n```\n\nA libp2p node needs to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information. Libp2p provides an all-purpose data container called **envelope**, which includes a signature of the data, so that it its authenticity can be verified.\n\nThe record represents the data that will be stored inside the **envelope** when distributing records across the network. The `interface-record` aims to guarantee that any type of record created is compliant with the libp2p **envelope**.\n\nTaking into account that a record might be used in different contexts, an **envelope** signature made for a specific purpose **must not** be considered valid for a different purpose. Accordingly, each record has a short and descriptive string representing the record use case, known as **domain**. The data to be signed will be prepended with the domain string, in order to create a domain signature.\n\nA record can also contain a Uint8Array codec (ideally registered as a [multicodec](https://github.com/multiformats/multicodec)). This codec will prefix the record data in the **envelope** , so that it can be deserialized deterministically.\n\n## Usage\n\n```js\nconst tests = require('libp2p-interfaces-compliance-tests/record')\ndescribe('your record', () => {\n  tests({\n    async setup () {\n      return YourRecord\n    },\n    async teardown () {\n      // cleanup resources created by setup()\n    }\n  })\n})\n```\n\n## Create Record\n\n```js\nconst multicodec = require('multicodec')\nconst Record = require('libp2p-interfaces/src/record')\nconst { fromString } = require('uint8arrays/from-string')\n// const Protobuf = require('./record.proto')\n\nconst ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record'\nconst ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = fromString('0301', 'hex')\n\n/**\n * @implements {import('libp2p-interfaces/src/record/types').Record}\n */\nclass PeerRecord {\n  constructor (peerId, multiaddrs, seqNumber) {\n    this.domain = ENVELOPE_DOMAIN_PEER_RECORD\n    this.codec = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD\n  }\n\n  /**\n   * Marshal a record to be used in an envelope.\n   *\n   * @returns {Uint8Array}\n   */\n  marshal () {\n    // Implement and return using Protobuf\n  }\n\n  /**\n   * Returns true if `this` record equals the `other`.\n   *\n   * @param {PeerRecord} other\n   * @returns {other is Record}\n   */\n  equals (other) {\n    // Verify\n  }\n}\n```\n\n## API\n\n### marshal\n\n- `record.marshal()`\n\nMarshal a record to be used in a libp2p envelope.\n\n**Returns**\n\nIt returns a `Protobuf` containing the record data.\n\n### equals\n\n- `record.equals(other)`\n\nVerifies if the other Record is identical to this one.\n\n**Parameters**\n\n- other is a `Record` to compare with the current instance.\n\n**Returns**\n\n- `other is Record`\n\n## API Docs\n\n- <https://libp2p.github.io/js-libp2p/modules/_libp2p_interface_record.html>\n\n## License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","readmeFilename":"README.md","gitHead":"8c6b6d2404d403104d244628def748397733dcd4","_id":"@libp2p/interface-record@2.0.7-8c6b6d24","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-yKUkxpT+iFdXK1TU9niAag+iq5KiZYw+5MevyRpWk7nbMwJztTUZqarh44iR+TgbDf8W0jPlPKIpSHCswjFaaw==","shasum":"aa4948367520893e64c99decec408c56e117e535","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7-8c6b6d24.tgz","fileCount":9,"unpackedSize":10876,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDciR+ZHNlGZ80nivBMwVj8o7pH+87+Ttn7cyyYXJB3IQIhAKuW/fh0HCSCvYf+m7xqzzCucVcnTfky6UOU1ovHG4um"}]},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7-8c6b6d24_1686832589616_0.045333241997038476"},"_hasShrinkwrap":false},"2.0.7-3dfc236e":{"name":"@libp2p/interface-record","version":"2.0.7-3dfc236e","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p/issues"},"keywords":["interface","libp2p"],"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build"},"dependencies":{"@libp2p/interface-peer-id":"2.0.2-3dfc236e","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.10"},"typedoc":{"entryPoint":"./src/index.ts"},"readme":"# @libp2p/interface-record <!-- omit in toc -->\n\n[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)\n[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)\n[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)\n\n> Record interface for libp2p\n\n## Table of contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [Create Record](#create-record)\n- [API](#api)\n  - [marshal](#marshal)\n  - [equals](#equals)\n- [API Docs](#api-docs)\n- [License](#license)\n- [Contribution](#contribution)\n\n## Install\n\n```console\n$ npm i @libp2p/interface-record\n```\n\nA libp2p node needs to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information. Libp2p provides an all-purpose data container called **envelope**, which includes a signature of the data, so that it its authenticity can be verified.\n\nThe record represents the data that will be stored inside the **envelope** when distributing records across the network. The `interface-record` aims to guarantee that any type of record created is compliant with the libp2p **envelope**.\n\nTaking into account that a record might be used in different contexts, an **envelope** signature made for a specific purpose **must not** be considered valid for a different purpose. Accordingly, each record has a short and descriptive string representing the record use case, known as **domain**. The data to be signed will be prepended with the domain string, in order to create a domain signature.\n\nA record can also contain a Uint8Array codec (ideally registered as a [multicodec](https://github.com/multiformats/multicodec)). This codec will prefix the record data in the **envelope** , so that it can be deserialized deterministically.\n\n## Usage\n\n```js\nconst tests = require('libp2p-interfaces-compliance-tests/record')\ndescribe('your record', () => {\n  tests({\n    async setup () {\n      return YourRecord\n    },\n    async teardown () {\n      // cleanup resources created by setup()\n    }\n  })\n})\n```\n\n## Create Record\n\n```js\nconst multicodec = require('multicodec')\nconst Record = require('libp2p-interfaces/src/record')\nconst { fromString } = require('uint8arrays/from-string')\n// const Protobuf = require('./record.proto')\n\nconst ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record'\nconst ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = fromString('0301', 'hex')\n\n/**\n * @implements {import('libp2p-interfaces/src/record/types').Record}\n */\nclass PeerRecord {\n  constructor (peerId, multiaddrs, seqNumber) {\n    this.domain = ENVELOPE_DOMAIN_PEER_RECORD\n    this.codec = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD\n  }\n\n  /**\n   * Marshal a record to be used in an envelope.\n   *\n   * @returns {Uint8Array}\n   */\n  marshal () {\n    // Implement and return using Protobuf\n  }\n\n  /**\n   * Returns true if `this` record equals the `other`.\n   *\n   * @param {PeerRecord} other\n   * @returns {other is Record}\n   */\n  equals (other) {\n    // Verify\n  }\n}\n```\n\n## API\n\n### marshal\n\n- `record.marshal()`\n\nMarshal a record to be used in a libp2p envelope.\n\n**Returns**\n\nIt returns a `Protobuf` containing the record data.\n\n### equals\n\n- `record.equals(other)`\n\nVerifies if the other Record is identical to this one.\n\n**Parameters**\n\n- other is a `Record` to compare with the current instance.\n\n**Returns**\n\n- `other is Record`\n\n## API Docs\n\n- <https://libp2p.github.io/js-libp2p/modules/_libp2p_interface_record.html>\n\n## License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","readmeFilename":"README.md","gitHead":"3dfc236e1789fb5c1e9d96189483a71124ad1bf4","_id":"@libp2p/interface-record@2.0.7-3dfc236e","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-QaKgv4B5y+z2nys0GHvbfbaGSR6vCWzazQkxqMPQmRyQh3UaVDFFZ6Nj26xiv7O8gg/OymRwT9x1lHxghf45XA==","shasum":"f8476ec400a1fabaa37097e5e443442652ca292c","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7-3dfc236e.tgz","fileCount":9,"unpackedSize":8915,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwe4MSoXPbd1TCjcgEeMOnFjgR3AWOOKVZODhz8/OQKQIgYS54AaIcijB1GmMSe6VbLXaAjNXtMQJadizIXfxAzZI="}]},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7-3dfc236e_1686923011308_0.8349249123579436"},"_hasShrinkwrap":false},"2.0.7-ab0e3980":{"name":"@libp2p/interface-record","version":"2.0.7-ab0e3980","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p/issues"},"keywords":["interface","libp2p"],"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build"},"dependencies":{"@libp2p/interface-peer-id":"2.0.2-ab0e3980","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.10"},"typedoc":{"entryPoint":"./src/index.ts"},"readme":"# @libp2p/interface-record <!-- omit in toc -->\n\n[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)\n[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)\n[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)\n\n> Record interface for libp2p\n\n## Table of contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [Create Record](#create-record)\n- [API](#api)\n  - [marshal](#marshal)\n  - [equals](#equals)\n- [API Docs](#api-docs)\n- [License](#license)\n- [Contribution](#contribution)\n\n## Install\n\n```console\n$ npm i @libp2p/interface-record\n```\n\nA libp2p node needs to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information. Libp2p provides an all-purpose data container called **envelope**, which includes a signature of the data, so that it its authenticity can be verified.\n\nThe record represents the data that will be stored inside the **envelope** when distributing records across the network. The `interface-record` aims to guarantee that any type of record created is compliant with the libp2p **envelope**.\n\nTaking into account that a record might be used in different contexts, an **envelope** signature made for a specific purpose **must not** be considered valid for a different purpose. Accordingly, each record has a short and descriptive string representing the record use case, known as **domain**. The data to be signed will be prepended with the domain string, in order to create a domain signature.\n\nA record can also contain a Uint8Array codec (ideally registered as a [multicodec](https://github.com/multiformats/multicodec)). This codec will prefix the record data in the **envelope** , so that it can be deserialized deterministically.\n\n## Usage\n\n```js\nconst tests = require('libp2p-interfaces-compliance-tests/record')\ndescribe('your record', () => {\n  tests({\n    async setup () {\n      return YourRecord\n    },\n    async teardown () {\n      // cleanup resources created by setup()\n    }\n  })\n})\n```\n\n## Create Record\n\n```js\nconst multicodec = require('multicodec')\nconst Record = require('libp2p-interfaces/src/record')\nconst { fromString } = require('uint8arrays/from-string')\n// const Protobuf = require('./record.proto')\n\nconst ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record'\nconst ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = fromString('0301', 'hex')\n\n/**\n * @implements {import('libp2p-interfaces/src/record/types').Record}\n */\nclass PeerRecord {\n  constructor (peerId, multiaddrs, seqNumber) {\n    this.domain = ENVELOPE_DOMAIN_PEER_RECORD\n    this.codec = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD\n  }\n\n  /**\n   * Marshal a record to be used in an envelope.\n   *\n   * @returns {Uint8Array}\n   */\n  marshal () {\n    // Implement and return using Protobuf\n  }\n\n  /**\n   * Returns true if `this` record equals the `other`.\n   *\n   * @param {PeerRecord} other\n   * @returns {other is Record}\n   */\n  equals (other) {\n    // Verify\n  }\n}\n```\n\n## API\n\n### marshal\n\n- `record.marshal()`\n\nMarshal a record to be used in a libp2p envelope.\n\n**Returns**\n\nIt returns a `Protobuf` containing the record data.\n\n### equals\n\n- `record.equals(other)`\n\nVerifies if the other Record is identical to this one.\n\n**Parameters**\n\n- other is a `Record` to compare with the current instance.\n\n**Returns**\n\n- `other is Record`\n\n## API Docs\n\n- <https://libp2p.github.io/js-libp2p/modules/_libp2p_interface_record.html>\n\n## License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","readmeFilename":"README.md","gitHead":"ab0e3980160dcbacf00825cfc4c6ba1d0c07a20c","_id":"@libp2p/interface-record@2.0.7-ab0e3980","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-m71fa4TsvGIwriH5cRKBq7nODEbvxJlC2woo4bfT63p05jWRsKLGkpEugeBERaSXmy9hZIf9AAayDhqwUgjbmg==","shasum":"3f674476e80c98917793994e5b6db087ceecef88","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7-ab0e3980.tgz","fileCount":9,"unpackedSize":8915,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOT+x3SQqbtCgbkQ+MStW2SWBktt9Tnjb10F4C+2uPsAiAC0+MdIftCt0UaQFY3BPUjgo9+6xDBKU+2Iqbk44AORw=="}]},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7-ab0e3980_1687169048213_0.1684439960635522"},"_hasShrinkwrap":false},"2.0.7-ea8a0637":{"name":"@libp2p/interface-record","version":"2.0.7-ea8a0637","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p/issues"},"keywords":["interface","libp2p"],"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build"},"dependencies":{"@libp2p/interface-peer-id":"2.0.2-ea8a0637","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.10"},"typedoc":{"entryPoint":"./src/index.ts"},"readme":"# @libp2p/interface-record <!-- omit in toc -->\n\n[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)\n[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)\n[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)\n\n> Record interface for libp2p\n\n## Table of contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [Create Record](#create-record)\n- [API](#api)\n  - [marshal](#marshal)\n  - [equals](#equals)\n- [API Docs](#api-docs)\n- [License](#license)\n- [Contribution](#contribution)\n\n## Install\n\n```console\n$ npm i @libp2p/interface-record\n```\n\nA libp2p node needs to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information. Libp2p provides an all-purpose data container called **envelope**, which includes a signature of the data, so that it its authenticity can be verified.\n\nThe record represents the data that will be stored inside the **envelope** when distributing records across the network. The `interface-record` aims to guarantee that any type of record created is compliant with the libp2p **envelope**.\n\nTaking into account that a record might be used in different contexts, an **envelope** signature made for a specific purpose **must not** be considered valid for a different purpose. Accordingly, each record has a short and descriptive string representing the record use case, known as **domain**. The data to be signed will be prepended with the domain string, in order to create a domain signature.\n\nA record can also contain a Uint8Array codec (ideally registered as a [multicodec](https://github.com/multiformats/multicodec)). This codec will prefix the record data in the **envelope** , so that it can be deserialized deterministically.\n\n## Usage\n\n```js\nconst tests = require('libp2p-interfaces-compliance-tests/record')\ndescribe('your record', () => {\n  tests({\n    async setup () {\n      return YourRecord\n    },\n    async teardown () {\n      // cleanup resources created by setup()\n    }\n  })\n})\n```\n\n## Create Record\n\n```js\nconst multicodec = require('multicodec')\nconst Record = require('libp2p-interfaces/src/record')\nconst { fromString } = require('uint8arrays/from-string')\n// const Protobuf = require('./record.proto')\n\nconst ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record'\nconst ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = fromString('0301', 'hex')\n\n/**\n * @implements {import('libp2p-interfaces/src/record/types').Record}\n */\nclass PeerRecord {\n  constructor (peerId, multiaddrs, seqNumber) {\n    this.domain = ENVELOPE_DOMAIN_PEER_RECORD\n    this.codec = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD\n  }\n\n  /**\n   * Marshal a record to be used in an envelope.\n   *\n   * @returns {Uint8Array}\n   */\n  marshal () {\n    // Implement and return using Protobuf\n  }\n\n  /**\n   * Returns true if `this` record equals the `other`.\n   *\n   * @param {PeerRecord} other\n   * @returns {other is Record}\n   */\n  equals (other) {\n    // Verify\n  }\n}\n```\n\n## API\n\n### marshal\n\n- `record.marshal()`\n\nMarshal a record to be used in a libp2p envelope.\n\n**Returns**\n\nIt returns a `Protobuf` containing the record data.\n\n### equals\n\n- `record.equals(other)`\n\nVerifies if the other Record is identical to this one.\n\n**Parameters**\n\n- other is a `Record` to compare with the current instance.\n\n**Returns**\n\n- `other is Record`\n\n## API Docs\n\n- <https://libp2p.github.io/js-libp2p/modules/_libp2p_interface_record.html>\n\n## License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","readmeFilename":"README.md","gitHead":"ea8a06378d6733c0bcac28bed3aa3baef1e30ead","_id":"@libp2p/interface-record@2.0.7-ea8a0637","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-bCyL7c0dMPySaB5CS99yAJR2KwNM/sue9E7W4mCzJtUVD9/Vyak0ReGpSWuiQF0N9JoaVllcXZAIRSKxiPqjTw==","shasum":"70a72d2fe48386693302ee2c73c22cdb0dbcd874","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7-ea8a0637.tgz","fileCount":9,"unpackedSize":8915,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEStqR1j3d3IrBGNUXm0zmdbvqkYGvdPm610Ou3DhdEuAiEAr8DPajEJcnFUibUKjsO2OTXOZUWRKFsJTbZUTYbqJnw="}]},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7-ea8a0637_1687170502329_0.06300437481584797"},"_hasShrinkwrap":false},"2.0.7-d853d124":{"name":"@libp2p/interface-record","version":"2.0.7-d853d124","description":"Record interface for libp2p","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p/tree/master/packages/interface-record#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p/issues"},"keywords":["interface","libp2p"],"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"scripts":{"clean":"aegir clean","lint":"aegir lint","dep-check":"aegir dep-check","build":"aegir build"},"dependencies":{"@libp2p/interface-peer-id":"2.0.2-d853d124","uint8arraylist":"^2.4.3"},"devDependencies":{"aegir":"^39.0.10"},"typedoc":{"entryPoint":"./src/index.ts"},"readme":"# @libp2p/interface-record <!-- omit in toc -->\n\n[![libp2p.io](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)\n[![codecov](https://img.shields.io/codecov/c/github/libp2p/js-libp2p.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p)\n[![CI](https://img.shields.io/github/actions/workflow/status/libp2p/js-libp2p/main.yml?branch=master\\&style=flat-square)](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amaster)\n\n> Record interface for libp2p\n\n## Table of contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [Create Record](#create-record)\n- [API](#api)\n  - [marshal](#marshal)\n  - [equals](#equals)\n- [API Docs](#api-docs)\n- [License](#license)\n- [Contribution](#contribution)\n\n## Install\n\n```console\n$ npm i @libp2p/interface-record\n```\n\nA libp2p node needs to store data in a public location (e.g. a DHT), or rely on potentially untrustworthy intermediaries to relay information. Libp2p provides an all-purpose data container called **envelope**, which includes a signature of the data, so that it its authenticity can be verified.\n\nThe record represents the data that will be stored inside the **envelope** when distributing records across the network. The `interface-record` aims to guarantee that any type of record created is compliant with the libp2p **envelope**.\n\nTaking into account that a record might be used in different contexts, an **envelope** signature made for a specific purpose **must not** be considered valid for a different purpose. Accordingly, each record has a short and descriptive string representing the record use case, known as **domain**. The data to be signed will be prepended with the domain string, in order to create a domain signature.\n\nA record can also contain a Uint8Array codec (ideally registered as a [multicodec](https://github.com/multiformats/multicodec)). This codec will prefix the record data in the **envelope** , so that it can be deserialized deterministically.\n\n## Usage\n\n```js\nconst tests = require('libp2p-interfaces-compliance-tests/record')\ndescribe('your record', () => {\n  tests({\n    async setup () {\n      return YourRecord\n    },\n    async teardown () {\n      // cleanup resources created by setup()\n    }\n  })\n})\n```\n\n## Create Record\n\n```js\nconst multicodec = require('multicodec')\nconst Record = require('libp2p-interfaces/src/record')\nconst { fromString } = require('uint8arrays/from-string')\n// const Protobuf = require('./record.proto')\n\nconst ENVELOPE_DOMAIN_PEER_RECORD = 'libp2p-peer-record'\nconst ENVELOPE_PAYLOAD_TYPE_PEER_RECORD = fromString('0301', 'hex')\n\n/**\n * @implements {import('libp2p-interfaces/src/record/types').Record}\n */\nclass PeerRecord {\n  constructor (peerId, multiaddrs, seqNumber) {\n    this.domain = ENVELOPE_DOMAIN_PEER_RECORD\n    this.codec = ENVELOPE_PAYLOAD_TYPE_PEER_RECORD\n  }\n\n  /**\n   * Marshal a record to be used in an envelope.\n   *\n   * @returns {Uint8Array}\n   */\n  marshal () {\n    // Implement and return using Protobuf\n  }\n\n  /**\n   * Returns true if `this` record equals the `other`.\n   *\n   * @param {PeerRecord} other\n   * @returns {other is Record}\n   */\n  equals (other) {\n    // Verify\n  }\n}\n```\n\n## API\n\n### marshal\n\n- `record.marshal()`\n\nMarshal a record to be used in a libp2p envelope.\n\n**Returns**\n\nIt returns a `Protobuf` containing the record data.\n\n### equals\n\n- `record.equals(other)`\n\nVerifies if the other Record is identical to this one.\n\n**Parameters**\n\n- other is a `Record` to compare with the current instance.\n\n**Returns**\n\n- `other is Record`\n\n## API Docs\n\n- <https://libp2p.github.io/js-libp2p/modules/_libp2p_interface_record.html>\n\n## License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","readmeFilename":"README.md","gitHead":"d853d1247f90317966bc95bd56f56dac0e9fee88","_id":"@libp2p/interface-record@2.0.7-d853d124","_nodeVersion":"18.16.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-Ca3cv+BZUHjvH50UfFGW8RitMWE+44xBwI1PpSUVgV/ofVQAWOS4NErzrz4Q4N0sfNh3JtCpuvRfYXabd4efgw==","shasum":"7ba526804ecd2a41f0ece9f9e42ff4911759c0b0","tarball":"https://registry.npmjs.org/@libp2p/interface-record/-/interface-record-2.0.7-d853d124.tgz","fileCount":9,"unpackedSize":8915,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn0ycfdnZfxt/KzxzP5FbQ3fu7rbQYsRTvdSftDRAeqwIgGImngOb5zuCkRBq7+643XLV44wTs3N3LppPfPHA0LF8="}]},"_npmUser":{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},"directories":{},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/interface-record_2.0.7-d853d124_1687182472407_0.19236569734593734"},"_hasShrinkwrap":false}},"time":{"created":"2022-06-10T08:24:22.134Z","0.0.0":"2022-06-10T08:24:22.422Z","modified":"2023-06-19T13:47:52.696Z","1.0.0":"2022-06-14T11:37:33.803Z","1.0.1":"2022-06-14T14:47:35.516Z","1.0.2":"2022-06-27T17:10:37.694Z","2.0.0":"2022-08-03T07:30:07.003Z","2.0.1":"2022-08-11T10:44:12.639Z","2.0.2":"2022-11-05T18:22:09.392Z","2.0.3":"2022-12-14T18:44:05.827Z","2.0.4":"2022-12-16T10:00:08.708Z","2.0.5":"2023-01-06T12:08:53.667Z","2.0.6":"2023-01-18T13:54:53.548Z","2.0.7":"2023-05-04T17:13:03.766Z","2.0.7-1c6702c8":"2023-06-15T08:11:10.303Z","2.0.7-883082ca":"2023-06-15T09:37:03.629Z","2.0.7-5a9fb4d6":"2023-06-15T10:34:32.739Z","2.0.7-d2f1eff4":"2023-06-15T12:09:15.810Z","2.0.7-8c6b6d24":"2023-06-15T12:36:29.783Z","2.0.7-3dfc236e":"2023-06-16T13:43:31.486Z","2.0.7-ab0e3980":"2023-06-19T10:04:08.357Z","2.0.7-ea8a0637":"2023-06-19T10:28:22.487Z","2.0.7-d853d124":"2023-06-19T13:47:52.545Z"},"maintainers":[{"name":"jacobheun","email":"jacobheun@gmail.com"},{"name":"npm-service-account-libp2p","email":"npm-service-account+libp2p@protocol.ai"},{"name":"alanshaw","email":"alan138@gmail.com"},{"name":"vascosantos","email":"santos.vasco10@gmail.com"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"daviddias","email":"mail@daviddias.me"}],"description":"Record interface for libp2p","homepage":"https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/interface-record#readme","keywords":["interface","libp2p"],"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-interfaces.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-interfaces/issues"},"license":"Apache-2.0 OR MIT","readme":"","readmeFilename":""}