{
  "name": "libp2p",
  "version": "0.31.0",
  "description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
  "leadMaintainer": "Jacob Heun <jacobheun@gmail.com>",
  "main": "src/index.js",
  "types": "dist/src/index.d.ts",
  "typesVersions": {
    "*": {
      "src/*": [
        "dist/src/*",
        "dist/src/*/index"
      ]
    }
  },
  "files": [
    "dist",
    "src"
  ],
  "scripts": {
    "lint": "aegir lint",
    "build": "aegir build",
    "build:proto": "npm run build:proto:circuit && npm run build:proto:identify && npm run build:proto:plaintext && npm run build:proto:address-book && npm run build:proto:proto-book && npm run build:proto:peer-record && npm run build:proto:envelope",
    "build:proto:circuit": "pbjs -t static-module -w commonjs -r libp2p-circuit --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/circuit/protocol/index.js ./src/circuit/protocol/index.proto",
    "build:proto:identify": "pbjs -t static-module -w commonjs -r libp2p-identify --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/identify/message.js ./src/identify/message.proto",
    "build:proto:plaintext": "pbjs -t static-module -w commonjs -r libp2p-plaintext --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/insecure/proto.js ./src/insecure/proto.proto",
    "build:proto:address-book": "pbjs -t static-module -w commonjs -r libp2p-address-book --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/peer-store/persistent/pb/address-book.js ./src/peer-store/persistent/pb/address-book.proto",
    "build:proto:proto-book": "pbjs -t static-module -w commonjs -r libp2p-proto-book --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/peer-store/persistent/pb/proto-book.js ./src/peer-store/persistent/pb/proto-book.proto",
    "build:proto:peer-record": "pbjs -t static-module -w commonjs -r libp2p-peer-record --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/record/peer-record/peer-record.js ./src/record/peer-record/peer-record.proto",
    "build:proto:envelope": "pbjs -t static-module -w commonjs -r libp2p-envelope --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/record/envelope/envelope.js ./src/record/envelope/envelope.proto",
    "build:proto-types": "npm run build:proto-types:circuit && npm run build:proto-types:identify && npm run build:proto-types:plaintext && npm run build:proto-types:address-book && npm run build:proto-types:proto-book && npm run build:proto-types:peer-record && npm run build:proto-types:envelope",
    "build:proto-types:circuit": "pbts -o src/circuit/protocol/index.d.ts src/circuit/protocol/index.js",
    "build:proto-types:identify": "pbts -o src/identify/message.d.ts src/identify/message.js",
    "build:proto-types:plaintext": "pbts -o src/insecure/proto.d.ts src/insecure/proto.js",
    "build:proto-types:address-book": "pbts -o src/peer-store/persistent/pb/address-book.d.ts src/peer-store/persistent/pb/address-book.js",
    "build:proto-types:proto-book": "pbts -o src/peer-store/persistent/pb/proto-book.d.ts src/peer-store/persistent/pb/proto-book.js",
    "build:proto-types:peer-record": "pbts -o src/record/peer-record/peer-record.d.ts src/record/peer-record/peer-record.js",
    "build:proto-types:envelope": "pbts -o src/record/envelope/envelope.d.ts src/record/envelope/envelope.js",
    "test": "aegir test",
    "test:ts": "aegir build --no-bundle && npm run test --prefix test/ts-use",
    "test:node": "aegir test -t node -f \"./test/**/*.{node,spec}.js\"",
    "test:browser": "aegir test -t browser",
    "test:examples": "cd examples && npm run test:all",
    "prepare": "aegir build --no-bundle",
    "release": "aegir release -t node -t browser",
    "release-minor": "aegir release --type minor -t node -t browser",
    "release-major": "aegir release --type major -t node -t browser",
    "coverage": "nyc --reporter=text --reporter=lcov npm run test:node"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/libp2p/js-libp2p.git"
  },
  "keywords": [
    "libp2p",
    "network",
    "p2p",
    "peer",
    "peer-to-peer",
    "IPFS"
  ],
  "bugs": {
    "url": "https://github.com/libp2p/js-libp2p/issues"
  },
  "homepage": "https://libp2p.io",
  "license": "MIT",
  "engines": {
    "node": ">=14.0.0"
  },
  "browser": {
    "@motrix/nat-api": false
  },
  "eslintConfig": {
    "extends": "ipfs",
    "ignorePatterns": [
      "!.aegir.js",
      "test/ts-use"
    ]
  },
  "dependencies": {
    "@motrix/nat-api": "^0.3.1",
    "abort-controller": "^3.0.0",
    "aggregate-error": "^3.1.0",
    "any-signal": "^2.1.1",
    "bignumber.js": "^9.0.1",
    "cids": "^1.1.5",
    "class-is": "^1.1.0",
    "debug": "^4.3.1",
    "err-code": "^3.0.0",
    "es6-promisify": "^6.1.1",
    "events": "^3.3.0",
    "hashlru": "^2.3.0",
    "interface-datastore": "^4.0.0",
    "ipfs-utils": "^6.0.0",
    "it-all": "^1.0.4",
    "it-buffer": "^0.1.2",
    "it-drain": "^1.0.3",
    "it-filter": "^1.0.1",
    "it-first": "^1.0.4",
    "it-handshake": "^2.0.0",
    "it-length-prefixed": "^5.0.2",
    "it-map": "^1.0.4",
    "it-merge": "1.0.0",
    "it-pipe": "^1.1.0",
    "it-take": "1.0.0",
    "libp2p-crypto": "^0.19.4",
    "libp2p-interfaces": "^0.10.4",
    "libp2p-utils": "^0.3.1",
    "mafmt": "^9.0.0",
    "merge-options": "^3.0.4",
    "@vascosantos/moving-average": "^1.1.0",
    "multiaddr": "^9.0.1",
    "multicodec": "^3.0.1",
    "multihashing-async": "^2.1.2",
    "multistream-select": "^2.0.0",
    "mutable-proxy": "^1.0.0",
    "node-forge": "^0.10.0",
    "p-any": "^3.0.0",
    "p-fifo": "^1.0.0",
    "p-retry": "^4.4.0",
    "p-settle": "^4.1.1",
    "peer-id": "^0.14.2",
    "private-ip": "^2.1.0",
    "protobufjs": "^6.10.2",
    "retimer": "^3.0.0",
    "sanitize-filename": "^1.6.3",
    "set-delayed-interval": "^1.0.0",
    "streaming-iterables": "^5.0.2",
    "timeout-abort-controller": "^1.1.1",
    "varint": "^6.0.0",
    "xsalsa20": "^1.1.0"
  },
  "devDependencies": {
    "@nodeutils/defaults-deep": "^1.1.0",
    "@types/es6-promisify": "^6.0.0",
    "@types/node-forge": "^0.9.7",
    "@types/varint": "^6.0.0",
    "abortable-iterator": "^3.0.0",
    "aegir": "^33.1.1",
    "buffer": "^6.0.3",
    "delay": "^5.0.0",
    "interop-libp2p": "^0.3.0",
    "into-stream": "^6.0.0",
    "ipfs-http-client": "^49.0.4",
    "it-concat": "^1.0.0",
    "it-pair": "^1.0.0",
    "it-pushable": "^1.4.0",
    "libp2p": ".",
    "libp2p-bootstrap": "^0.12.3",
    "libp2p-delegated-content-routing": "^0.10.0",
    "libp2p-delegated-peer-routing": "^0.9.0",
    "libp2p-floodsub": "^0.25.0",
    "libp2p-gossipsub": "^0.9.0",
    "libp2p-kad-dht": "^0.22.0",
    "libp2p-mdns": "^0.16.0",
    "libp2p-mplex": "^0.10.1",
    "libp2p-noise": "^3.0.0",
    "libp2p-tcp": "^0.15.4",
    "libp2p-webrtc-star": "^0.22.2",
    "libp2p-websockets": "^0.15.6",
    "multihashes": "^4.0.2",
    "nock": "^13.0.3",
    "p-defer": "^3.0.0",
    "p-times": "^3.0.0",
    "p-wait-for": "^3.2.0",
    "rimraf": "^3.0.2",
    "sinon": "^10.0.0",
    "uint8arrays": "^2.1.3",
    "util": "^0.12.3"
  },
  "contributors": [
    "David Dias <daviddias.p@gmail.com>",
    "Vasco Santos <vasco.santos@moxy.studio>",
    "Jacob Heun <jacobheun@gmail.com>",
    "Alex Potsides <alex@achingbrain.net>",
    "Alan Shaw <alan@tableflip.io>",
    "Cayman <caymannava@gmail.com>",
    "Pedro Teixeira <i@pgte.me>",
    "Friedel Ziegelmayer <dignifiedquire@gmail.com>",
    "Maciej Krüger <mkg20001@gmail.com>",
    "Hugo Dias <mail@hugodias.me>",
    "dirkmc <dirkmdev@gmail.com>",
    "Volker Mische <volker.mische@gmail.com>",
    "Richard Littauer <richard.littauer@gmail.com>",
    "a1300 <matthias-knopp@gmx.net>",
    "Elven <mon.samuel@qq.com>",
    "Giovanni T. Parra <fiatjaf@gmail.com>",
    "ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ <victorbjelkholm@gmail.com>",
    "Thomas Eizinger <thomas@eizinger.io>",
    "Samlior <samlior@foxmail.com>",
    "Ryan Bell <ryan@piing.net>",
    "Andrew Nesbitt <andrewnez@gmail.com>",
    "Didrik Nordström <didrik.nordstrom@gmail.com>",
    "Nuno Nogueira <nunofmn@gmail.com>",
    "Philipp Muens <raute1337@gmx.de>",
    "Smite Chow <xiaopengyou@live.com>",
    "Soeren <nikorpoulsen@gmail.com>",
    "Sönke Hahn <soenkehahn@gmail.com>",
    "TJKoury <TJKoury@gmail.com>",
    "Tiago Alves <alvesjtiago@gmail.com>",
    "Yusef Napora <yusef@napora.org>",
    "Zane Starr <zcstarr@gmail.com>",
    "ebinks <elizabethjbinks@gmail.com>",
    "isan_rivkin <isanrivkin@gmail.com>",
    "robertkiel <robert.kiel@validitylabs.org>",
    "RasmusErik Voel Jensen <github@solsort.com>",
    "Aleksei <vozhdb@gmail.com>",
    "Bernd Strehl <bernd.strehl@gmail.com>",
    "Chris Bratlien <chrisbratlien@gmail.com>",
    "Cindy Wu <ciindy.wu@gmail.com>",
    "Daijiro Wachi <daijiro.wachi@gmail.com>",
    "Diogo Silva <fsdiogo@gmail.com>",
    "Dmitriy Ryajov <dryajov@gmail.com>",
    "Ethan Lam <elmemphis2000@gmail.com>",
    "Fei Liu <liu.feiwood@gmail.com>",
    "Felipe Martins <felipebrasil93@gmail.com>",
    "Florian-Merle <florian.david.merle@gmail.com>",
    "Francis Gulotta <wizard@roborooter.com>",
    "Franck Royer <franck@royer.one>",
    "Henrique Dias <hacdias@gmail.com>",
    "Irakli Gozalishvili <rfobic@gmail.com>",
    "Joel Gustafson <joelg@mit.edu>",
    "Julien Bouquillon <contact@revolunet.com>",
    "Kevin Kwok <antimatter15@gmail.com>",
    "Kevin Lacker <lacker@gmail.com>",
    "Miguel Mota <miguelmota2@gmail.com>"
  ]
}
