@libp2p/daemon-server 0.0.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@libp2p/daemon-server",
3
- "version": "0.0.1",
3
+ "version": "1.0.1",
4
4
  "description": "API server for libp2p-daemon instances",
5
5
  "license": "Apache-2.0 OR MIT",
6
- "homepage": "https://github.com/libp2p/js-libp2p-daemon/tree/master/packages/libp2p-daemon#readme",
6
+ "homepage": "https://github.com/libp2p/js-libp2p-daemon/tree/master/packages/libp2p-daemon-server#readme",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/libp2p/js-libp2p-daemon.git"
@@ -18,9 +18,6 @@
18
18
  "node": ">=16.0.0",
19
19
  "npm": ">=7.0.0"
20
20
  },
21
- "bin": {
22
- "jsp2pd": "src/cli/bin.js"
23
- },
24
21
  "type": "module",
25
22
  "types": "./dist/src/index.d.ts",
26
23
  "files": [
@@ -126,34 +123,32 @@
126
123
  ]
127
124
  },
128
125
  "scripts": {
126
+ "clean": "aegir clean",
129
127
  "lint": "aegir lint",
130
- "dep-check": "aegir dep-check dist/src/**/*.js dist/test/**/*.js",
131
- "build": "tsc",
128
+ "dep-check": "aegir dep-check",
129
+ "build": "aegir build",
132
130
  "pretest": "npm run build",
133
- "test": "aegir test -t node -f test/*.js test/**/*.js",
134
- "test:node": "aegir test -t node -f test/*.js test/**/*.js",
135
- "release": "semantic-release"
131
+ "test": "aegir test -t node",
132
+ "test:node": "aegir test -t node",
133
+ "release": "aegir release"
136
134
  },
137
135
  "dependencies": {
138
- "@chainsafe/libp2p-noise": "^6.0.0",
139
- "@libp2p/daemon-protocol": "^0.0.0",
136
+ "@libp2p/daemon-protocol": "^1.0.0",
140
137
  "@libp2p/interfaces": "^1.3.17",
138
+ "@libp2p/logger": "^1.1.2",
139
+ "@libp2p/peer-id": "^1.1.8",
140
+ "@libp2p/tcp": "^1.0.6",
141
141
  "@multiformats/multiaddr": "^10.1.8",
142
142
  "it-drain": "^1.0.5",
143
- "it-handshake": "^3.0.1",
144
143
  "it-length-prefixed": "^7.0.1",
145
144
  "it-pipe": "^2.0.3",
146
145
  "it-pushable": "^2.0.1",
147
- "multiformats": "^9.4.2",
146
+ "multiformats": "^9.6.4",
148
147
  "uint8arrays": "^3.0.0"
149
148
  },
150
149
  "devDependencies": {
151
- "aegir": "^36.0.0",
152
- "delay": "^5.0.0",
153
- "it-buffer": "^0.1.3",
154
- "it-pair": "^2.0.2",
155
- "mocha": "^9.1.1",
156
- "p-defer": "^4.0.0",
157
- "sinon": "^13.0.1"
150
+ "aegir": "^37.0.5",
151
+ "sinon": "^13.0.1",
152
+ "ts-sinon": "^2.0.2"
158
153
  }
159
154
  }
package/src/dht.ts CHANGED
@@ -1,20 +1,23 @@
1
1
  /* eslint max-depth: ["error", 6] */
2
2
 
3
3
  import {
4
- DHTResponse,
4
+ DHTResponse
5
5
  } from '@libp2p/daemon-protocol'
6
6
  import { ErrorResponse, OkResponse } from './responses.js'
7
7
  import type { PeerId } from '@libp2p/interfaces/peer-id'
8
8
  import type { DualDHT } from '@libp2p/interfaces/dht'
9
9
  import type { CID } from 'multiformats/cid'
10
10
  import drain from 'it-drain'
11
+ import { logger } from '@libp2p/logger'
12
+
13
+ const log = logger('libp2p:daemon-server:dht')
11
14
 
12
15
  export interface DHTOperationsInit {
13
16
  dht: DualDHT
14
17
  }
15
18
 
16
19
  export class DHTOperations {
17
- private dht: DualDHT
20
+ private readonly dht: DualDHT
18
21
 
19
22
  constructor (init: DHTOperationsInit) {
20
23
  const { dht } = init
@@ -23,8 +26,13 @@ export class DHTOperations {
23
26
  }
24
27
 
25
28
  async * provide (cid: CID) {
26
- await this.dht.provide(cid)
27
- yield OkResponse()
29
+ try {
30
+ await drain(this.dht.provide(cid))
31
+ yield OkResponse()
32
+ } catch (err: any) {
33
+ log.error(err)
34
+ yield ErrorResponse(err)
35
+ }
28
36
  }
29
37
 
30
38
  async * getClosestPeers (key: Uint8Array) {
@@ -39,33 +47,22 @@ export class DHTOperations {
39
47
  yield * event.closer.map(peer => DHTResponse.encode({
40
48
  type: DHTResponse.Type.VALUE,
41
49
  value: peer.id.toBytes()
42
- }).finish())
50
+ }))
43
51
  }
44
52
  }
45
53
 
46
54
  yield DHTResponse.encode({
47
55
  type: DHTResponse.Type.END
48
- }).finish()
56
+ })
49
57
  }
50
58
 
51
59
  async * getPublicKey (peerId: PeerId) {
52
60
  yield ErrorResponse(new Error('FIX ME: not implemented'))
53
-
54
- /*
55
- const pubKey = await this.dht.getPublicKey(peerId)
56
-
57
- yield OkResponse({
58
- dht: {
59
- type: DHTResponse.Type.VALUE,
60
- value: pubKey.bytes
61
- }
62
- })
63
- */
64
61
  }
65
62
 
66
63
  async * getValue (key: Uint8Array) {
67
64
  try {
68
- for await (const event of this.dht.getClosestPeers(key)) {
65
+ for await (const event of this.dht.get(key)) {
69
66
  if (event.name === 'VALUE') {
70
67
  yield OkResponse({
71
68
  dht: {
@@ -76,7 +73,8 @@ export class DHTOperations {
76
73
  }
77
74
  }
78
75
  } catch (err: any) {
79
- yield ErrorResponse(err.message)
76
+ log.error(err)
77
+ yield ErrorResponse(err)
80
78
  }
81
79
  }
82
80
 
@@ -86,7 +84,8 @@ export class DHTOperations {
86
84
 
87
85
  yield OkResponse()
88
86
  } catch (err: any) {
89
- yield ErrorResponse(err.message)
87
+ log.error(err)
88
+ yield ErrorResponse(err)
90
89
  }
91
90
  }
92
91
 
@@ -108,6 +107,7 @@ export class DHTOperations {
108
107
 
109
108
  throw new Error('Peer not found')
110
109
  } catch (err: any) {
110
+ log.error(err)
111
111
  yield ErrorResponse(err)
112
112
  }
113
113
  }
@@ -132,13 +132,13 @@ export class DHTOperations {
132
132
  type: DHTResponse.Type.VALUE,
133
133
  peer: {
134
134
  id: provider.id.toBytes(),
135
- addrs: (provider.multiaddrs || []).map(m => m.bytes)
135
+ addrs: (provider.multiaddrs ?? []).map(m => m.bytes)
136
136
  }
137
- }).finish()
137
+ })
138
138
  }
139
139
 
140
140
  if (maxNumProviders === found) {
141
- return
141
+ break
142
142
  }
143
143
  }
144
144
  }
@@ -148,6 +148,6 @@ export class DHTOperations {
148
148
 
149
149
  yield DHTResponse.encode({
150
150
  type: DHTResponse.Type.END
151
- }).finish()
151
+ })
152
152
  }
153
153
  }