webpeerjs 0.0.8 → 0.0.10
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/README.md +21 -8
- package/dist/esm/webpeerjs.d.ts +3 -2
- package/dist/esm/webpeerjs.js +532 -233
- package/dist/umd/webpeerjs.js +48600 -47394
- package/package.json +13 -14
- package/src/config.js +49 -10
- package/src/peer.js +2 -5
- package/src/utils.js +19 -8
- package/src/webpeerjs.js +442 -173
package/package.json
CHANGED
|
@@ -1,31 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webpeerjs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"description": "Simple peer-to-peer with IPFS",
|
|
5
5
|
"main": "./dist/umd/webpeerjs.js",
|
|
6
|
-
"module": "./
|
|
6
|
+
"module": "./src/webpeerjs.js",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
-
"import": "./
|
|
9
|
+
"import": "./src/webpeerjs.js",
|
|
10
10
|
"require": "./dist/umd/webpeerjs.js"
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"dist/",
|
|
15
|
-
|
|
15
|
+
"src/",
|
|
16
16
|
"LICENSE"
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
19
|
"start": "npm run dev",
|
|
20
20
|
"dev": "vite serve test",
|
|
21
|
+
"demo": "vite serve demo",
|
|
21
22
|
"eslint": "eslint ./src",
|
|
22
23
|
"eslint:fix": "eslint ./src --fix",
|
|
23
|
-
|
|
24
24
|
"removedir": "node -e \"var fs = require('fs'); try{process.argv.slice(1).map((fpath) => fs.rmdirSync(fpath, { recursive: true }))}catch(err){console.log(`Dist not found`)}; process.exit(0);\"",
|
|
25
25
|
"build-all": "tsc -p config/tsconfig-rollup.json && rollup -c temp/config/rollup.config.build.js && echo {\"type\": \"commonjs\"}>dist\\umd\\package.json && echo {\"type\": \"module\"}>dist\\esm\\package.json",
|
|
26
26
|
"build-types": "tsc -p config/tsconfig-esm.json",
|
|
27
27
|
"build": "npm run removedir dist temp && npm run build-all && npm run build-types",
|
|
28
|
-
|
|
29
28
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
30
29
|
},
|
|
31
30
|
"repository": {
|
|
@@ -36,9 +35,9 @@
|
|
|
36
35
|
"p2p",
|
|
37
36
|
"ipfs",
|
|
38
37
|
"peer",
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
"peer to peer",
|
|
39
|
+
"decentralized",
|
|
40
|
+
"browser to browser"
|
|
42
41
|
],
|
|
43
42
|
"author": {
|
|
44
43
|
"name": "Nuzulul Zulkarnain",
|
|
@@ -60,21 +59,21 @@
|
|
|
60
59
|
"@libp2p/peer-id": "^4.1.2",
|
|
61
60
|
"@libp2p/pubsub-peer-discovery": "^10.0.2",
|
|
62
61
|
"@libp2p/simple-metrics": "^1.0.2",
|
|
62
|
+
"@libp2p/websockets": "^8.1.0",
|
|
63
63
|
"@libp2p/webtransport": "^4.0.32",
|
|
64
|
-
"@multiformats/multiaddr": "^12.2.3",
|
|
65
64
|
"datastore-idb": "^2.1.9",
|
|
66
65
|
"libp2p": "^1.6.0"
|
|
67
66
|
},
|
|
68
67
|
"devDependencies": {
|
|
69
68
|
"@eslint/js": "^9.4.0",
|
|
70
|
-
"eslint": "^9.4.0",
|
|
71
|
-
"globals": "^15.3.0",
|
|
72
|
-
"vite": "^5.2.11",
|
|
73
69
|
"@rollup/plugin-commonjs": "^25.0.8",
|
|
74
70
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
75
71
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
72
|
+
"eslint": "^9.4.0",
|
|
73
|
+
"globals": "^15.3.0",
|
|
76
74
|
"rollup": "^4.18.0",
|
|
77
75
|
"tslib": "^2.6.2",
|
|
78
|
-
"typescript": "^5.4.5"
|
|
76
|
+
"typescript": "^5.4.5",
|
|
77
|
+
"vite": "^5.2.11"
|
|
79
78
|
}
|
|
80
79
|
}
|
package/src/config.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const prefix = 'webpeerjs'
|
|
2
2
|
export const CONFIG_PREFIX = prefix
|
|
3
|
-
export const CONFIG_PROTOCOL = '/'+prefix+'/0.0
|
|
3
|
+
export const CONFIG_PROTOCOL = '/'+prefix+'/1.0.0'
|
|
4
4
|
export const CONFIG_BLOCKSTORE_PATH = prefix+'-blockstore'
|
|
5
5
|
export const CONFIG_DATASTORE_PATH = prefix+'-datastore'
|
|
6
6
|
export const CONFIG_DBSTORE_PATH = prefix+'-dbstore'
|
|
@@ -16,20 +16,23 @@ export const CONFIG_DELEGATED_API = 'https://delegated-ipfs.dev'
|
|
|
16
16
|
export const CONFIG_DNS_RESOLVER = 'https://dns.google/resolve'
|
|
17
17
|
export const CONFIG_KNOWN_BOOTSTRAP_DNS = '_dnsaddr.bootstrap.libp2p.io'
|
|
18
18
|
export const CONFIG_JOIN_ROOM_VERSION = 1
|
|
19
|
+
export const CONFIG_TIMEOUT_DIAL_KNOWN_PEERS = 15000
|
|
20
|
+
|
|
21
|
+
// this list comes from https://github.com/ipfs/kubo/blob/196887cbe5fbcd41243c1dfb0db681a1cc2914ff/config/bootstrap_peers.go
|
|
22
|
+
export const CONFIG_KNOWN_DEFAULT_BOOTSTRAP_ADDRESSES = [
|
|
23
|
+
"/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
|
|
24
|
+
"/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
|
|
25
|
+
"/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
|
|
26
|
+
"/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt",
|
|
27
|
+
"/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
|
|
28
|
+
"/ip4/104.131.131.82/udp/4001/quic/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"
|
|
29
|
+
]
|
|
19
30
|
|
|
20
31
|
export const CONFIG_KNOWN_BOOTSTRAP_PUBLIC_IDS = [
|
|
21
32
|
'QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',
|
|
22
33
|
'QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',
|
|
23
34
|
'QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt',
|
|
24
|
-
'QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ'
|
|
25
|
-
'12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
|
|
26
|
-
'12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
|
|
27
|
-
'12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
|
|
28
|
-
'12D3KooWHh98YpAkJsn3ULjMjK1n9QVkXmi8Sb3gTDMatHxCmDP5',
|
|
29
|
-
'12D3KooWS79EhkPU7ESUwgG4vyHHzW9FDNZLoWVth9b5N5NSrvaj',
|
|
30
|
-
'12D3KooWBbkCD5MpJhMc1mfPAVGEyVkQnyxPKGS7AHwDqQM2JUsk',
|
|
31
|
-
'12D3KooWKLdecs31Zmo2pLBjR9HY2vWo3VwM4eBm21Czeucbe6FL',
|
|
32
|
-
'12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H'
|
|
35
|
+
'QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ'
|
|
33
36
|
]
|
|
34
37
|
|
|
35
38
|
export const CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS = [
|
|
@@ -39,4 +42,40 @@ export const CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS = [
|
|
|
39
42
|
export const CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS = CONFIG_KNOWN_BOOTSTRAP_PUBLIC_IDS.concat(CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS)
|
|
40
43
|
|
|
41
44
|
export const CONFIG_KNOWN_BOOTSTRAP_PEERS_ADDRS = [
|
|
45
|
+
{
|
|
46
|
+
"Peers": [
|
|
47
|
+
{
|
|
48
|
+
"Addrs": [
|
|
49
|
+
"/dns6/sv15.bootstrap.libp2p.io/tcp/443/wss",
|
|
50
|
+
"/dns4/sv15.bootstrap.libp2p.io/tcp/443/wss"
|
|
51
|
+
],
|
|
52
|
+
"ID": "QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
|
|
53
|
+
"Schema": "peer"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"Peers": [
|
|
59
|
+
{
|
|
60
|
+
"Addrs": [
|
|
61
|
+
"/dns4/am6.bootstrap.libp2p.io/tcp/443/wss",
|
|
62
|
+
"/dns6/am6.bootstrap.libp2p.io/tcp/443/wss"
|
|
63
|
+
],
|
|
64
|
+
"ID": "QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
|
|
65
|
+
"Schema": "peer"
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"Peers": [
|
|
71
|
+
{
|
|
72
|
+
"Addrs": [
|
|
73
|
+
"/dns6/sg1.bootstrap.libp2p.io/tcp/443/wss",
|
|
74
|
+
"/dns4/sg1.bootstrap.libp2p.io/tcp/443/wss"
|
|
75
|
+
],
|
|
76
|
+
"ID": "QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt",
|
|
77
|
+
"Schema": "peer"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
42
81
|
]
|
package/src/peer.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-namespace */
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */
|
|
5
|
-
/* eslint-disable @typescript-eslint/no-empty-interface */
|
|
1
|
+
//this code comes from https://github.com/libp2p/js-libp2p-pubsub-peer-discovery/blob/9d0da565f70e9b2403251c9d11dfc0b9b52babfa/src/peer.ts
|
|
2
|
+
|
|
6
3
|
import { decodeMessage, encodeMessage, message } from 'protons-runtime';
|
|
7
4
|
import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';
|
|
8
5
|
export var Peer;
|
package/src/utils.js
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import * as config from './config'
|
|
2
|
-
|
|
3
2
|
import { Peer as PBPeer } from './peer'
|
|
4
|
-
|
|
5
3
|
import { Key } from 'interface-datastore'
|
|
6
|
-
|
|
7
4
|
import { sha256 } from 'multiformats/hashes/sha2'
|
|
5
|
+
import { multiaddr } from '@multiformats/multiaddr'
|
|
6
|
+
import { pipe } from 'it-pipe'
|
|
7
|
+
import { lpStream } from 'it-length-prefixed-stream'
|
|
8
|
+
import * as lp from 'it-length-prefixed'
|
|
9
|
+
import map from 'it-map'
|
|
10
|
+
|
|
11
|
+
export { Key }
|
|
12
|
+
|
|
13
|
+
export { multiaddr }
|
|
8
14
|
|
|
15
|
+
export { pipe }
|
|
16
|
+
|
|
17
|
+
export { lpStream }
|
|
18
|
+
|
|
19
|
+
export { lp }
|
|
20
|
+
|
|
21
|
+
export { map }
|
|
9
22
|
|
|
10
23
|
|
|
11
24
|
const prefix = config.CONFIG_PREFIX
|
|
@@ -35,8 +48,6 @@ export async function first(farr){
|
|
|
35
48
|
}
|
|
36
49
|
}
|
|
37
50
|
|
|
38
|
-
export {Key}
|
|
39
|
-
|
|
40
51
|
//Add id to pupsub message
|
|
41
52
|
export async function msgIdFnStrictNoSign(msg){
|
|
42
53
|
var enc = new TextEncoder()
|
|
@@ -142,16 +153,16 @@ export function metrics(data){
|
|
|
142
153
|
fail = errors+timeouts
|
|
143
154
|
const treshold = errors+timeouts+stats.open+stats.pending
|
|
144
155
|
|
|
145
|
-
if(treshold>
|
|
156
|
+
if(treshold>30){
|
|
146
157
|
//console.log(`Treeshold hit : ${treshold}`)
|
|
147
158
|
}
|
|
148
159
|
|
|
149
|
-
if(fail>
|
|
160
|
+
if(fail>30){
|
|
150
161
|
//console.log(`Open : ${stats.open} , Pending : ${stats.pending} , Succes : ${totals.success} , Fail : ${fail} `)
|
|
151
162
|
|
|
152
163
|
}
|
|
153
164
|
|
|
154
|
-
if ((fail-lastfailtreshold)>
|
|
165
|
+
if ((fail-lastfailtreshold)>30){
|
|
155
166
|
if(isDialEnabled){
|
|
156
167
|
isDialEnabled = false
|
|
157
168
|
const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold})
|