Skip to content

Commit

Permalink
fix: add @libp2p/record module to monorepo (#2466)
Browse files Browse the repository at this point in the history
To allow reading libp2p records stored in a datastore without requiring
a dependency on `@libp2p/kad-dht`, add a `@libp2p/record` package to
the monorepo.
  • Loading branch information
achingbrain committed Apr 2, 2024
1 parent a17287c commit 3ffecc5
Show file tree
Hide file tree
Showing 73 changed files with 425 additions and 198 deletions.
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"interop":"2.0.23","packages/connection-encrypter-plaintext":"1.0.17","packages/connection-encrypter-tls":"1.0.4","packages/crypto":"4.0.4","packages/interface":"1.1.5","packages/interface-compliance-tests":"5.3.3","packages/interface-internal":"1.0.10","packages/kad-dht":"12.0.10","packages/keychain":"4.0.10","packages/libp2p":"1.3.1","packages/logger":"4.0.8","packages/metrics-prometheus":"3.0.17","packages/multistream-select":"5.1.5","packages/peer-collections":"5.1.8","packages/peer-discovery-bootstrap":"10.0.17","packages/peer-discovery-mdns":"10.0.17","packages/peer-id":"4.0.8","packages/peer-id-factory":"4.0.8","packages/peer-record":"7.0.11","packages/peer-store":"10.0.12","packages/protocol-autonat":"1.0.14","packages/protocol-dcutr":"1.0.14","packages/protocol-echo":"1.0.1","packages/protocol-fetch":"1.0.12","packages/protocol-identify":"1.0.16","packages/protocol-perf":"3.0.17","packages/protocol-ping":"1.0.13","packages/pubsub":"9.0.12","packages/pubsub-floodsub":"9.0.13","packages/stream-multiplexer-mplex":"10.0.17","packages/transport-circuit-relay-v2":"1.0.17","packages/transport-tcp":"9.0.17","packages/transport-webrtc":"4.0.23","packages/transport-websockets":"8.0.17","packages/transport-webtransport":"4.0.22","packages/upnp-nat":"1.0.15","packages/utils":"5.2.7"}
{"interop":"2.0.23","packages/connection-encrypter-plaintext":"1.0.17","packages/connection-encrypter-tls":"1.0.4","packages/crypto":"4.0.4","packages/interface":"1.1.5","packages/interface-compliance-tests":"5.3.3","packages/interface-internal":"1.0.10","packages/kad-dht":"12.0.10","packages/keychain":"4.0.10","packages/libp2p":"1.3.1","packages/logger":"4.0.8","packages/metrics-prometheus":"3.0.17","packages/multistream-select":"5.1.5","packages/peer-collections":"5.1.8","packages/peer-discovery-bootstrap":"10.0.17","packages/peer-discovery-mdns":"10.0.17","packages/peer-id":"4.0.8","packages/peer-id-factory":"4.0.8","packages/peer-record":"7.0.11","packages/peer-store":"10.0.12","packages/protocol-autonat":"1.0.14","packages/protocol-dcutr":"1.0.14","packages/protocol-echo":"1.0.1","packages/protocol-fetch":"1.0.12","packages/protocol-identify":"1.0.16","packages/protocol-perf":"3.0.17","packages/protocol-ping":"1.0.13","packages/pubsub":"9.0.12","packages/pubsub-floodsub":"9.0.13","packages/record":"3.0.4","packages/stream-multiplexer-mplex":"10.0.17","packages/transport-circuit-relay-v2":"1.0.17","packages/transport-tcp":"9.0.17","packages/transport-webrtc":"4.0.23","packages/transport-websockets":"8.0.17","packages/transport-webtransport":"4.0.22","packages/upnp-nat":"1.0.15","packages/utils":"5.2.7"}
1 change: 1 addition & 0 deletions .release-please.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
"packages/protocol-ping": {},
"packages/pubsub": {},
"packages/pubsub-floodsub": {},
"packages/record": {},
"packages/stream-multiplexer-mplex": {},
"packages/transport-circuit-relay-v2": {},
"packages/transport-tcp": {},
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ You can find multiple examples on the [examples repo](https://github.com/libp2p/
- [`/packages/protocol-perf`](./packages/protocol-perf) Implementation of the Perf protocol
- [`/packages/pubsub`](./packages/pubsub) libp2p pubsub base class
- [`/packages/pubsub-floodsub`](./packages/pubsub-floodsub) libp2p-floodsub, also known as pubsub-flood or just dumbsub, this implementation of pubsub focused on delivering an API for Publish/Subscribe, but with no CastTree Forming (it just floods the network).
- [`/packages/record`](./packages/record) libp2p record implementation
- [`/packages/stream-multiplexer-mplex`](./packages/stream-multiplexer-mplex) JavaScript implementation of <https://github.com/libp2p/mplex>
- [`/packages/transport-tcp`](./packages/transport-tcp) A TCP transport for libp2p
- [`/packages/transport-webrtc`](./packages/transport-webrtc) A libp2p transport using WebRTC connections
Expand Down
2 changes: 1 addition & 1 deletion doc/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"doc-check": "aegir doc-check"
},
"devDependencies": {
"aegir": "^42.2.4"
"aegir": "^42.2.5"
},
"private": true
}
4 changes: 2 additions & 2 deletions interop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@
"@libp2p/websockets": "^8.0.17",
"@libp2p/webtransport": "^4.0.22",
"@multiformats/mafmt": "^12.1.6",
"@multiformats/multiaddr": "^12.1.14",
"aegir": "^42.2.4",
"@multiformats/multiaddr": "^12.2.1",
"aegir": "^42.2.5",
"libp2p": "^1.3.1",
"redis": "^4.6.13"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/connection-encrypter-plaintext/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@
"@libp2p/interface-compliance-tests": "^5.3.3",
"@libp2p/logger": "^4.0.8",
"@libp2p/peer-id-factory": "^4.0.8",
"@multiformats/multiaddr": "^12.1.14",
"aegir": "^42.2.4",
"@multiformats/multiaddr": "^12.2.1",
"aegir": "^42.2.5",
"protons": "^7.5.0",
"sinon": "^17.0.1"
},
Expand Down
8 changes: 4 additions & 4 deletions packages/connection-encrypter-tls/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,21 +53,21 @@
"@libp2p/peer-id": "^4.0.8",
"@peculiar/asn1-schema": "^2.3.8",
"@peculiar/asn1-x509": "^2.3.8",
"@peculiar/webcrypto": "^1.4.5",
"@peculiar/webcrypto": "^1.4.6",
"@peculiar/x509": "^1.9.7",
"asn1js": "^3.0.5",
"it-pushable": "^3.2.3",
"it-stream-types": "^2.0.1",
"protons-runtime": "^5.4.0",
"uint8arraylist": "^2.4.8",
"uint8arrays": "^5.0.2"
"uint8arrays": "^5.0.3"
},
"devDependencies": {
"@libp2p/interface-compliance-tests": "^5.3.3",
"@libp2p/logger": "^4.0.8",
"@libp2p/peer-id-factory": "^4.0.8",
"@multiformats/multiaddr": "^12.1.14",
"aegir": "^42.2.4",
"@multiformats/multiaddr": "^12.2.1",
"aegir": "^42.2.5",
"protons": "^7.5.0",
"sinon": "^17.0.1"
},
Expand Down
8 changes: 4 additions & 4 deletions packages/crypto/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,17 +85,17 @@
},
"dependencies": {
"@libp2p/interface": "^1.1.5",
"@noble/curves": "^1.3.0",
"@noble/hashes": "^1.3.3",
"@noble/curves": "^1.4.0",
"@noble/hashes": "^1.4.0",
"asn1js": "^3.0.5",
"multiformats": "^13.1.0",
"protons-runtime": "^5.4.0",
"uint8arraylist": "^2.4.8",
"uint8arrays": "^5.0.2"
"uint8arrays": "^5.0.3"
},
"devDependencies": {
"@types/mocha": "^10.0.6",
"aegir": "^42.2.4",
"aegir": "^42.2.5",
"benchmark": "^2.1.4",
"protons": "^7.5.0"
},
Expand Down
56 changes: 28 additions & 28 deletions packages/integration-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,49 +36,49 @@
"@chainsafe/libp2p-gossipsub": "^13.0.0",
"@chainsafe/libp2p-noise": "^15.0.0",
"@chainsafe/libp2p-yamux": "^6.0.2",
"@libp2p/bootstrap": "^10.0.15",
"@libp2p/circuit-relay-v2": "^1.0.15",
"@libp2p/crypto": "^4.0.2",
"@libp2p/bootstrap": "^10.0.17",
"@libp2p/circuit-relay-v2": "^1.0.17",
"@libp2p/crypto": "^4.0.4",
"@libp2p/daemon-client": "^8.0.4",
"@libp2p/daemon-server": "^7.0.4",
"@libp2p/dcutr": "^1.0.12",
"@libp2p/fetch": "^1.0.10",
"@libp2p/floodsub": "^9.0.11",
"@libp2p/identify": "^1.0.14",
"@libp2p/interface": "^1.1.3",
"@libp2p/interface-compliance-tests": "^5.3.1",
"@libp2p/interface-internal": "^1.0.8",
"@libp2p/dcutr": "^1.0.14",
"@libp2p/fetch": "^1.0.12",
"@libp2p/floodsub": "^9.0.13",
"@libp2p/identify": "^1.0.16",
"@libp2p/interface": "^1.1.5",
"@libp2p/interface-compliance-tests": "^5.3.3",
"@libp2p/interface-internal": "^1.0.10",
"@libp2p/interop": "^11.0.0",
"@libp2p/kad-dht": "^12.0.7",
"@libp2p/logger": "^4.0.6",
"@libp2p/mdns": "^10.0.15",
"@libp2p/mplex": "^10.0.15",
"@libp2p/peer-id": "^4.0.6",
"@libp2p/peer-id-factory": "^4.0.6",
"@libp2p/ping": "^1.0.11",
"@libp2p/plaintext": "^1.0.15",
"@libp2p/tcp": "^9.0.15",
"@libp2p/tls": "^1.0.2",
"@libp2p/webrtc": "^4.0.19",
"@libp2p/websockets": "^8.0.15",
"@libp2p/kad-dht": "^12.0.10",
"@libp2p/logger": "^4.0.8",
"@libp2p/mdns": "^10.0.17",
"@libp2p/mplex": "^10.0.17",
"@libp2p/peer-id": "^4.0.8",
"@libp2p/peer-id-factory": "^4.0.8",
"@libp2p/ping": "^1.0.13",
"@libp2p/plaintext": "^1.0.17",
"@libp2p/tcp": "^9.0.17",
"@libp2p/tls": "^1.0.4",
"@libp2p/webrtc": "^4.0.23",
"@libp2p/websockets": "^8.0.17",
"@multiformats/mafmt": "^12.1.6",
"@multiformats/multiaddr": "^12.1.14",
"aegir": "^42.2.4",
"@multiformats/multiaddr": "^12.2.1",
"aegir": "^42.2.5",
"delay": "^6.0.0",
"execa": "^8.0.1",
"go-libp2p": "^1.1.1",
"it-all": "^3.0.4",
"it-pipe": "^3.0.1",
"libp2p": "^1.2.3",
"libp2p": "^1.3.1",
"merge-options": "^3.0.4",
"multiformats": "^13.1.0",
"p-defer": "^4.0.0",
"p-event": "^6.0.0",
"p-defer": "^4.0.1",
"p-event": "^6.0.1",
"p-retry": "^6.2.0",
"p-wait-for": "^5.0.2",
"sinon": "^17.0.1",
"uint8arraylist": "^2.4.8",
"uint8arrays": "^5.0.2",
"uint8arrays": "^5.0.3",
"wherearewe": "^2.0.1"
},
"browser": {
Expand Down
10 changes: 5 additions & 5 deletions packages/interface-compliance-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@
"@libp2p/peer-id": "^4.0.8",
"@libp2p/peer-id-factory": "^4.0.8",
"@libp2p/utils": "^5.2.7",
"@multiformats/multiaddr": "^12.1.14",
"@multiformats/multiaddr": "^12.2.1",
"abortable-iterator": "^5.0.1",
"aegir": "^42.2.4",
"aegir": "^42.2.5",
"delay": "^6.0.0",
"it-all": "^3.0.4",
"it-byte-stream": "^1.0.8",
Expand All @@ -136,14 +136,14 @@
"it-stream-types": "^2.0.1",
"it-to-buffer": "^4.0.5",
"merge-options": "^3.0.4",
"p-defer": "^4.0.0",
"p-event": "^6.0.0",
"p-defer": "^4.0.1",
"p-event": "^6.0.1",
"p-limit": "^5.0.0",
"p-wait-for": "^5.0.2",
"protons-runtime": "^5.4.0",
"sinon": "^17.0.1",
"uint8arraylist": "^2.4.8",
"uint8arrays": "^5.0.2"
"uint8arrays": "^5.0.3"
},
"devDependencies": {
"protons": "^7.5.0"
Expand Down
4 changes: 2 additions & 2 deletions packages/interface-internal/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@
"dependencies": {
"@libp2p/interface": "^1.1.5",
"@libp2p/peer-collections": "^5.1.8",
"@multiformats/multiaddr": "^12.1.14",
"@multiformats/multiaddr": "^12.2.1",
"uint8arraylist": "^2.4.8"
},
"devDependencies": {
"aegir": "^42.2.4"
"aegir": "^42.2.5"
},
"sideEffects": false
}
4 changes: 2 additions & 2 deletions packages/interface/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,15 @@
"build": "aegir build"
},
"dependencies": {
"@multiformats/multiaddr": "^12.1.14",
"@multiformats/multiaddr": "^12.2.1",
"it-pushable": "^3.2.3",
"it-stream-types": "^2.0.1",
"multiformats": "^13.1.0",
"progress-events": "^1.0.0",
"uint8arraylist": "^2.4.8"
},
"devDependencies": {
"aegir": "^42.2.4"
"aegir": "^42.2.5"
},
"browser": {
"events": "./dist/src/events.browser.js"
Expand Down
15 changes: 8 additions & 7 deletions packages/kad-dht/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@
"@libp2p/interface-internal": "^1.0.10",
"@libp2p/peer-collections": "^5.1.8",
"@libp2p/peer-id": "^4.0.8",
"@libp2p/record": "^3.0.4",
"@libp2p/utils": "^5.2.7",
"@multiformats/multiaddr": "^12.1.14",
"@types/sinon": "^17.0.3",
"@multiformats/multiaddr": "^12.2.1",
"any-signal": "^4.1.1",
"hashlru": "^2.3.0",
"interface-datastore": "^8.2.11",
Expand All @@ -79,15 +79,15 @@
"it-pushable": "^3.2.3",
"it-take": "^3.0.4",
"multiformats": "^13.1.0",
"p-defer": "^4.0.0",
"p-event": "^6.0.0",
"p-defer": "^4.0.1",
"p-event": "^6.0.1",
"p-queue": "^8.0.1",
"progress-events": "^1.0.0",
"protons-runtime": "^5.4.0",
"race-signal": "^1.0.2",
"uint8-varint": "^2.0.4",
"uint8arraylist": "^2.4.8",
"uint8arrays": "^5.0.2"
"uint8arrays": "^5.0.3"
},
"devDependencies": {
"@libp2p/interface-compliance-tests": "^5.3.3",
Expand All @@ -96,9 +96,10 @@
"@libp2p/peer-store": "^10.0.12",
"@types/lodash.random": "^3.2.9",
"@types/lodash.range": "^3.2.9",
"@types/sinon": "^17.0.3",
"@types/which": "^3.0.3",
"aegir": "^42.2.4",
"datastore-core": "^9.2.8",
"aegir": "^42.2.5",
"datastore-core": "^9.2.9",
"datastore-level": "^10.1.7",
"delay": "^6.0.0",
"execa": "^8.0.1",
Expand Down
7 changes: 1 addition & 6 deletions packages/kad-dht/src/content-fetching/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { CodeError } from '@libp2p/interface'
import { Libp2pRecord } from '@libp2p/record'
import map from 'it-map'
import parallel from 'it-parallel'
import { pipe } from 'it-pipe'
Expand All @@ -11,7 +12,6 @@ import {
valueEvent,
queryErrorEvent
} from '../query/events.js'
import { Libp2pRecord } from '../record/index.js'
import { bestRecord } from '../record/selectors.js'
import { verifyRecord } from '../record/validators.js'
import { createPutRecord, bufferToRecordKey } from '../utils.js'
Expand Down Expand Up @@ -53,11 +53,6 @@ export class ContentFetching {
this.network = network
}

async putLocal (key: Uint8Array, rec: Uint8Array): Promise<void> {
const dsKey = bufferToRecordKey(key)
await this.components.datastore.put(dsKey, rec)
}

/**
* Attempt to retrieve the value for the given key from
* the local datastore
Expand Down
2 changes: 1 addition & 1 deletion packages/kad-dht/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ import type { Datastore } from 'interface-datastore'
import type { CID } from 'multiformats/cid'
import type { ProgressEvent } from 'progress-events'

export { Libp2pRecord as Record } from './record/index.js'
export { Libp2pRecord as Record } from '@libp2p/record'
export { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper }

/**
Expand Down
2 changes: 1 addition & 1 deletion packages/kad-dht/src/network.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { TypedEventEmitter } from '@libp2p/interface'
import { Libp2pRecord } from '@libp2p/record'
import { pbStream } from 'it-protobuf-stream'
import { CodeError } from 'protons-runtime'
import { Message } from './message/dht.js'
Expand All @@ -9,7 +10,6 @@ import {
peerResponseEvent,
queryErrorEvent
} from './query/events.js'
import { Libp2pRecord } from './record/index.js'
import type { KadDHTComponents, QueryEvent } from './index.js'
import type { AbortOptions, Logger, Stream, PeerId, PeerInfo, Startable, RoutingOptions } from '@libp2p/interface'

Expand Down
2 changes: 1 addition & 1 deletion packages/kad-dht/src/peer-routing/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { keys } from '@libp2p/crypto'
import { CodeError } from '@libp2p/interface'
import { peerIdFromKeys } from '@libp2p/peer-id'
import { Libp2pRecord } from '@libp2p/record'
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
import { MessageType } from '../message/dht.js'
import { PeerDistanceList } from '../peer-list/peer-distance-list.js'
Expand All @@ -9,7 +10,6 @@ import {
finalPeerEvent,
valueEvent
} from '../query/events.js'
import { Libp2pRecord } from '../record/index.js'
import { verifyRecord } from '../record/validators.js'
import * as utils from '../utils.js'
import type { KadDHTComponents, DHTRecord, DialPeerEvent, FinalPeerEvent, QueryEvent, Validators } from '../index.js'
Expand Down
2 changes: 1 addition & 1 deletion packages/kad-dht/src/query/events.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { CustomEvent } from '@libp2p/interface'
import type { MessageType, SendQueryEvent, PeerResponseEvent, DialPeerEvent, AddPeerEvent, ValueEvent, ProviderEvent, QueryErrorEvent, FinalPeerEvent } from '../index.js'
import type { Libp2pRecord } from '../record/index.js'
import type { PeerId, PeerInfo } from '@libp2p/interface'
import type { Libp2pRecord } from '@libp2p/record'
import type { ProgressOptions } from 'progress-events'

export interface QueryEventFields {
Expand Down
2 changes: 1 addition & 1 deletion packages/kad-dht/src/record/validators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { CodeError } from '@libp2p/interface'
import { sha256 } from 'multiformats/hashes/sha2'
import { equals as uint8ArrayEquals } from 'uint8arrays/equals'
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
import type { Libp2pRecord } from './index.js'
import type { Validators } from '../index.js'
import type { Libp2pRecord } from '@libp2p/record'

/**
* Checks a record and ensures it is still valid.
Expand Down
2 changes: 1 addition & 1 deletion packages/kad-dht/src/rpc/handlers/get-value.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { CodeError } from '@libp2p/interface'
import { Libp2pRecord } from '@libp2p/record'
import {
MAX_RECORD_AGE
} from '../../constants.js'
import { MessageType } from '../../message/dht.js'
import { Libp2pRecord } from '../../record/index.js'
import { bufferToRecordKey, isPublicKeyKey, fromPublicKeyKey } from '../../utils.js'
import type { Message } from '../../message/dht.js'
import type { PeerRouting } from '../../peer-routing/index.js'
Expand Down
2 changes: 1 addition & 1 deletion packages/kad-dht/src/rpc/handlers/put-value.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CodeError } from '@libp2p/interface'
import { Libp2pRecord } from '../../record/index.js'
import { Libp2pRecord } from '@libp2p/record'
import { verifyRecord } from '../../record/validators.js'
import { bufferToRecordKey } from '../../utils.js'
import type { Validators } from '../../index.js'
Expand Down
2 changes: 1 addition & 1 deletion packages/kad-dht/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { peerIdFromBytes } from '@libp2p/peer-id'
import { Libp2pRecord } from '@libp2p/record'
import { isPrivateIp } from '@libp2p/utils/private-ip'
import { Key } from 'interface-datastore/key'
import { sha256 } from 'multiformats/hashes/sha2'
import { concat as uint8ArrayConcat } from 'uint8arrays/concat'
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
import { RECORD_KEY_PREFIX } from './constants.js'
import { Libp2pRecord } from './record/index.js'
import type { PeerId, PeerInfo } from '@libp2p/interface'
import type { Multiaddr } from '@multiformats/multiaddr'

Expand Down
Loading

0 comments on commit 3ffecc5

Please sign in to comment.