mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-07-22 20:11:57 +00:00
Compare commits
697 Commits
v0.20.0
...
fix/event-
Author | SHA1 | Date | |
---|---|---|---|
|
8dd045e8bb | ||
|
c95b32de5f | ||
|
16587d6657 | ||
|
ee0111a877 | ||
|
d92ff16745 | ||
|
2df6271eeb | ||
|
36f6d42ead | ||
|
d76356e56a | ||
|
e9543eb2e1 | ||
|
5282708263 | ||
|
ed494f03ae | ||
|
ac370fc967 | ||
|
ef4393649f | ||
|
f23fd4b7c7 | ||
|
5372f7af2f | ||
|
97da0ba740 | ||
|
88b04156bf | ||
|
64f3af897b | ||
|
54e502afcb | ||
|
086b0ec0df | ||
|
cc1f4af879 | ||
|
6456a0fff8 | ||
|
44463b9145 | ||
|
7eb2cea570 | ||
|
c381be3510 | ||
|
975e77991e | ||
|
b043bca607 | ||
|
3ffeb4ebe6 | ||
|
06e8f3dd42 | ||
|
3f7dde3e13 | ||
|
6f4e7ceeac | ||
|
2af692fb4d | ||
|
906315ce73 | ||
|
49f04cbe70 | ||
|
3d0a79eff3 | ||
|
55ee332907 | ||
|
ffe122d47e | ||
|
21c9aeecb1 | ||
|
a93cca9178 | ||
|
828a32d4f5 | ||
|
b4fb9b7bf2 | ||
|
0aed9fe1b3 | ||
|
9d1b917e8a | ||
|
8506414ea1 | ||
|
8e1743cac4 | ||
|
3ea95ce642 | ||
|
c4cae29ef3 | ||
|
a7128f07ec | ||
|
c3e147df6b | ||
|
b89445274d | ||
|
b9e3bcd91e | ||
|
f5c1cd1fb0 | ||
|
975e4b0fe0 | ||
|
9504f1951a | ||
|
8e1fc78353 | ||
|
8895a092b6 | ||
|
f2f361998d | ||
|
5f702f3481 | ||
|
03b34cac7d | ||
|
9c67364caa | ||
|
a1424826e7 | ||
|
3d5bba070b | ||
|
3f314d5e90 | ||
|
4ee3e1973b | ||
|
fc6558b897 | ||
|
3e302570e5 | ||
|
a34d2bbcc3 | ||
|
9941414a91 | ||
|
46cb46188a | ||
|
1af8472dc6 | ||
|
f6a4cad827 | ||
|
b1079474de | ||
|
a150ea60c5 | ||
|
aec8e3d3bb | ||
|
3abf4aeb35 | ||
|
a36b2112aa | ||
|
8d3b61710a | ||
|
5dbbeef311 | ||
|
3e7594f697 | ||
|
ce2a624a09 | ||
|
a64c02838c | ||
|
74d07e5e8c | ||
|
eeda056883 | ||
|
f06e06a006 | ||
|
28f52bbf75 | ||
|
ed5f8f853f | ||
|
0a6bc0d101 | ||
|
b5c9e48b68 | ||
|
9942cbd50c | ||
|
037c965a67 | ||
|
748b552876 | ||
|
961b48bb8d | ||
|
000826db21 | ||
|
45c33675a7 | ||
|
a28c878f4a | ||
|
67067c97d5 | ||
|
f45cd1c4b5 | ||
|
0a02207116 | ||
|
0b854a949f | ||
|
9014ea657a | ||
|
f40697975e | ||
|
6c41e30456 | ||
|
77e8273a64 | ||
|
d60922b799 | ||
|
42b51d8f01 | ||
|
d19401aa4c | ||
|
24bb8df521 | ||
|
58d4f9a915 | ||
|
239413e331 | ||
|
01d43a7b60 | ||
|
37d66fd88c | ||
|
21e8ced81a | ||
|
9ae1b758e9 | ||
|
408868655c | ||
|
c5f61ac05f | ||
|
5d0ac529e4 | ||
|
bc05083207 | ||
|
169bb806a7 | ||
|
7809e6444e | ||
|
f7e1426b9e | ||
|
7d76ba1367 | ||
|
b538ebdc0a | ||
|
baedf3fe5a | ||
|
4ebcdb085c | ||
|
4448de8432 | ||
|
585ad52b4c | ||
|
e50c6abcf2 | ||
|
49fffda23c | ||
|
689c35ed1c | ||
|
1a13e2c6ca | ||
|
5758db8ea9 | ||
|
ef9d3ca2c6 | ||
|
97e3633f47 | ||
|
e36b67a212 | ||
|
e977039c8a | ||
|
a5337c1797 | ||
|
ee23fb9508 | ||
|
11a46ea71e | ||
|
5c72424e57 | ||
|
0bf0b7cf89 | ||
|
55020056ee | ||
|
bb83cacb5a | ||
|
447d0ed0dd | ||
|
43eda43f06 | ||
|
7b93ece7f2 | ||
|
74bdfd1024 | ||
|
4d1fcdb3d2 | ||
|
caf66ea143 | ||
|
48656712ea | ||
|
1a5ae74741 | ||
|
8691465a52 | ||
|
6350a187c7 | ||
|
8e3bb09279 | ||
|
73204958ee | ||
|
e9e4b731a5 | ||
|
d0a9fada32 | ||
|
824a444f56 | ||
|
fef54b2b2c | ||
|
8f29a667a1 | ||
|
093c0ea13f | ||
|
61c36f9e09 | ||
|
f82da56901 | ||
|
06f26e586f | ||
|
8879634363 | ||
|
4a80afce8f | ||
|
f75ae341bb | ||
|
f2d010a3ab | ||
|
e04224a1e2 | ||
|
4c6be91588 | ||
|
5f50054d94 | ||
|
d7d8439e71 | ||
|
4c7a89b710 | ||
|
4eabe07bde | ||
|
2fd3b0a0e5 | ||
|
ec6f7d1cfd | ||
|
a1053bdc54 | ||
|
0d48fc4f5a | ||
|
60d437f595 | ||
|
96df4b7dc4 | ||
|
bb59b518f1 | ||
|
fb4b2734d3 | ||
|
0087218194 | ||
|
58b793d700 | ||
|
63ba2f8fa3 | ||
|
bd26bde876 | ||
|
3c2a45a9d2 | ||
|
bbf8ef7065 | ||
|
d6d1a746ea | ||
|
28b79a76a8 | ||
|
81e70df742 | ||
|
e9478cee2e | ||
|
7be17a3ce1 | ||
|
93dda74085 | ||
|
cfbd52d7f7 | ||
|
6cd23ea6c9 | ||
|
9b75a0f184 | ||
|
b606ce0e91 | ||
|
64c8c0f097 | ||
|
9be582e222 | ||
|
55c9bfac44 | ||
|
1e869717ff | ||
|
9107efe121 | ||
|
cd09327eb6 | ||
|
ca57e65ecc | ||
|
f574e82a5d | ||
|
15613ccf19 | ||
|
dab1c8b2a5 | ||
|
d437defede | ||
|
74d414c21f | ||
|
8f2e69048f | ||
|
b0a36ccbc8 | ||
|
3158366579 | ||
|
1d318e12d8 | ||
|
8a97dded26 | ||
|
e50f0eeb7b | ||
|
ee57a643cc | ||
|
89658dd655 | ||
|
4ab125e017 | ||
|
71daac24b1 | ||
|
02a5095b9c | ||
|
3e5d450eca | ||
|
098f3d1dd3 | ||
|
689f90a698 | ||
|
0e3cc5866b | ||
|
4851680c4d | ||
|
0e18735b8c | ||
|
f68ff35625 | ||
|
8c56ec0d23 | ||
|
fa5ee873e3 | ||
|
51d7ca44c1 | ||
|
726a746479 | ||
|
a331b84f13 | ||
|
78d152dd68 | ||
|
7e14aa19b5 | ||
|
2440c872df | ||
|
6c7e5e5eef | ||
|
388df6b6e6 | ||
|
7dbfe6ab1a | ||
|
cea59a1fe4 | ||
|
7da9ad44ab | ||
|
3896941128 | ||
|
856b38de67 | ||
|
798d7b73c1 | ||
|
f2d0d8b51d | ||
|
999c1b7740 | ||
|
99ff361a55 | ||
|
6115f8b680 | ||
|
9ccab40fc8 | ||
|
619e5dd73c | ||
|
0fd23f6a5f | ||
|
5a84dd56d0 | ||
|
7b05d6922b | ||
|
08a4fad80b | ||
|
51da8874d8 | ||
|
5cd8c19567 | ||
|
db766eaca9 | ||
|
a1308d640d | ||
|
19e7254c3d | ||
|
f4898eb883 | ||
|
9bec719fce | ||
|
b664c0aafd | ||
|
b524bbf627 | ||
|
07bd269fb0 | ||
|
a8219e61a0 | ||
|
a1590acc8b | ||
|
a0cf83c640 | ||
|
b56cdda0ef | ||
|
b621fbdfdc | ||
|
24dd1d22c5 | ||
|
a1a1213bdc | ||
|
90a9d93968 | ||
|
8f680e20e9 | ||
|
afafd08943 | ||
|
c038550fad | ||
|
d60a3215d0 | ||
|
1e51295150 | ||
|
5299995998 | ||
|
64a66f08ac | ||
|
e2a63bab62 | ||
|
294b032b0b | ||
|
72f37acd4a | ||
|
52a615f922 | ||
|
698c1df1b4 | ||
|
7f4662f8d8 | ||
|
84b935f682 | ||
|
0fbb59748e | ||
|
56316b8c1e | ||
|
aaa1155633 | ||
|
aa5e232479 | ||
|
eb7adcf1ab | ||
|
0be74e6a61 | ||
|
6065923356 | ||
|
2b45fee0ed | ||
|
8bf5a70bb8 | ||
|
6627278a87 | ||
|
65e87460b0 | ||
|
7b8d01697d | ||
|
ce38033c10 | ||
|
3f2b06dc26 | ||
|
1e3d6f4b56 | ||
|
48a9a3eecc | ||
|
9ea9287bea | ||
|
5123a8357b | ||
|
43630f1e0b | ||
|
aaf62a40ec | ||
|
7fbd1556e8 | ||
|
51474c334a | ||
|
d75cc97ced | ||
|
2a7967c1cc | ||
|
9e9ec0b575 | ||
|
d3a4bf0a3f | ||
|
d33919d0b3 | ||
|
c215339a27 | ||
|
cb597b57d7 | ||
|
12e48adafa | ||
|
ed6d5bb4b4 | ||
|
e9d225c9dc | ||
|
2aac3b0f69 | ||
|
9862653051 | ||
|
b781911ac2 | ||
|
3fa1fa3a0b | ||
|
dfed982404 | ||
|
60b6a55906 | ||
|
aadeb73c94 | ||
|
ea6b1ecce4 | ||
|
d3ab238738 | ||
|
97455957ac | ||
|
5255d87d0a | ||
|
03ce7c3103 | ||
|
ea0621b2f6 | ||
|
9197df309b | ||
|
8dd361338b | ||
|
9b13fe321a | ||
|
1f85e0213a | ||
|
09a604b5e5 | ||
|
ed16b69057 | ||
|
c940f2d384 | ||
|
2620d46f01 | ||
|
e192eb6508 | ||
|
b57de4ed0c | ||
|
760d8b4c3a | ||
|
7b56f559cb | ||
|
0fd5188176 | ||
|
bd7fd0f755 | ||
|
da83721d6d | ||
|
1414e45969 | ||
|
9e35fbc316 | ||
|
30728753cf | ||
|
afdbe3deac | ||
|
ce58805e90 | ||
|
b5303fd788 | ||
|
aa78d2ef15 | ||
|
5a4641980d | ||
|
f4ec35573e | ||
|
524e6f8433 | ||
|
fad9cb22e0 | ||
|
e1b158fbb9 | ||
|
1837d6e95e | ||
|
4bce6aa0b9 | ||
|
4d11edd62c | ||
|
a8984c6cd3 | ||
|
0882dcea3b | ||
|
b3d8132ea6 | ||
|
a317a8b011 | ||
|
8bed8f39ff | ||
|
58c0c7c03e | ||
|
f662fdcf36 | ||
|
5608178247 | ||
|
dcd58693f5 | ||
|
8bf05e6db6 | ||
|
0589d53616 | ||
|
eb2528c1d6 | ||
|
141cf90ca0 | ||
|
f4ec459a7b | ||
|
56a7842664 | ||
|
be8fc9daf1 | ||
|
f39e8f0da9 | ||
|
ed0c2cb6c1 | ||
|
c6592c5797 | ||
|
33cef10721 | ||
|
2d6408eb30 | ||
|
29a96690ad | ||
|
8b94cd1e2e | ||
|
b83880765f | ||
|
560d7084fe | ||
|
d21b7ce4ff | ||
|
c1038bec92 | ||
|
bb2e56e6c7 | ||
|
4222c49556 | ||
|
2f2ba420ef | ||
|
e9d16ba190 | ||
|
afb552c063 | ||
|
721151b9fc | ||
|
efc96c2f19 | ||
|
ba4681b312 | ||
|
6b00eeab0a | ||
|
c339be10ee | ||
|
7b326cc525 | ||
|
835a689965 | ||
|
b08d81cee7 | ||
|
6445fda050 | ||
|
4ca481b869 | ||
|
5d7ee50e76 | ||
|
48fd64182b | ||
|
58db09a9d3 | ||
|
15f7c2a974 | ||
|
4384d139d2 | ||
|
bd1068e5d9 | ||
|
854ac49a10 | ||
|
f9d0047bf6 | ||
|
ae5ce9a66f | ||
|
14a1955a78 | ||
|
f1eb373235 | ||
|
dabee00127 | ||
|
17b6a3fd73 | ||
|
4f7586886c | ||
|
71f46bf4a6 | ||
|
cba035a75b | ||
|
2c5183bd70 | ||
|
a586efb5f7 | ||
|
1db69c5f27 | ||
|
9e1a9f04ae | ||
|
287f1b98e5 | ||
|
90ecc57dbc | ||
|
ae52d483fc | ||
|
2570a1ba30 | ||
|
633b0c291f | ||
|
7d505494be | ||
|
1df52ae205 | ||
|
ba02764c5f | ||
|
404fa69513 | ||
|
85988cfaab | ||
|
def3574ba0 | ||
|
6b1da8326f | ||
|
a12006a4fa | ||
|
466b4dfd70 | ||
|
98e82df5e1 | ||
|
6ad840c3f3 | ||
|
7ac5e42a1a | ||
|
b86ef64904 | ||
|
b6cd48b798 | ||
|
a5b54a7017 | ||
|
e1e3be8106 | ||
|
b7432bd02b | ||
|
7c2fefda46 | ||
|
2788982c53 | ||
|
76ec1ccd21 | ||
|
e445a17278 | ||
|
2329ef3ea3 | ||
|
ce8e60bb0d | ||
|
12fc069873 | ||
|
9a6e07d70b | ||
|
8da9fc97d4 | ||
|
a020db183a | ||
|
f77ce39484 | ||
|
18a062ed12 | ||
|
1999606ecc | ||
|
472e14f2b4 | ||
|
953d185c39 | ||
|
c563e06a60 | ||
|
f28b09fc0d | ||
|
2104578924 | ||
|
bcad60995e | ||
|
432b0997ae | ||
|
2afdbb71b2 | ||
|
c7a54f34f7 | ||
|
9d52b80c45 | ||
|
582094a834 | ||
|
fe2a8eddbb | ||
|
5e1dbc21a2 | ||
|
b37ccc7279 | ||
|
440fbf0c04 | ||
|
0cef51d4c2 | ||
|
b277b26043 | ||
|
bc071ce7d7 | ||
|
01730214d6 | ||
|
0826531e31 | ||
|
35ac02dcb5 | ||
|
b73348078d | ||
|
21cd9c67bc | ||
|
0fc4537a5e | ||
|
6a05f3e6e7 | ||
|
93a1e42ef3 | ||
|
35aa45ce92 | ||
|
b11c6fc7e9 | ||
|
ebedd3510b | ||
|
ae6af20e8e | ||
|
2a80618740 | ||
|
5b1bd389f8 | ||
|
3e31c2d0df | ||
|
8079c2078b | ||
|
80cf0777b5 | ||
|
60b0cbc179 | ||
|
3eef695bc0 | ||
|
b3deb356f1 | ||
|
299cfefa01 | ||
|
aa95ab9928 | ||
|
b0f124b5ff | ||
|
b294301456 | ||
|
d92306f222 | ||
|
fd738f9d51 | ||
|
d788433b43 | ||
|
d5a977b227 | ||
|
0489972b4b | ||
|
3f31b1f422 | ||
|
a2b3446ed7 | ||
|
ff7a6c86a0 | ||
|
9a8d609a59 | ||
|
9fef58cb7d | ||
|
684f283aec | ||
|
3e95e6f9e4 | ||
|
f4f3f0f03a | ||
|
7c2c852fc0 | ||
|
e8d8aab278 | ||
|
dd48d268ec | ||
|
99a53592e2 | ||
|
2a2e7a1012 | ||
|
791f39a09b | ||
|
65d52857a5 | ||
|
48b1b442e9 | ||
|
9554b05c6f | ||
|
df6ef45a2d | ||
|
b4a70ea476 | ||
|
45716da465 | ||
|
905c911946 | ||
|
10811e9ced | ||
|
9c2789bc15 | ||
|
24be691bc1 | ||
|
9433c6c398 | ||
|
04faf1806c | ||
|
b06ca1b3c7 | ||
|
bde30cac45 | ||
|
28c054c21e | ||
|
c346e8066b | ||
|
40978a1940 | ||
|
71dcaafcac | ||
|
5319e065ec | ||
|
f3801f0e6c | ||
|
51cc993876 | ||
|
a800c1ad91 | ||
|
54c474de98 | ||
|
f28dffb268 | ||
|
c049074cb5 | ||
|
1bde70f1b5 | ||
|
cfa4df6e11 | ||
|
eb5aa03232 | ||
|
4cb541ddae | ||
|
aa1d9b273a | ||
|
7313f781fc | ||
|
313b1eae20 | ||
|
01aa44724e | ||
|
8b627797e2 | ||
|
e5f19e860b | ||
|
5204da73f7 | ||
|
66130ccba8 | ||
|
aa1bb3ab75 | ||
|
813a59b9ce | ||
|
eee60ed37d | ||
|
e52ce66ab7 | ||
|
da52af704e | ||
|
282ce62703 | ||
|
ef3238bdee | ||
|
4c06c54fc5 | ||
|
bb0c45d704 | ||
|
eb10b5c6d2 | ||
|
a282fbe139 | ||
|
6cfb0b2692 | ||
|
de84ee473c | ||
|
f28ecb2483 | ||
|
bba6f7eff8 | ||
|
9f5f07269e | ||
|
5f92acd5bb | ||
|
dfe8f632f7 | ||
|
9f47100713 | ||
|
d497961938 | ||
|
6e76aade7f | ||
|
ec7d0761de | ||
|
59fe9732d7 | ||
|
4ed5c039fc | ||
|
9e7a080a5c | ||
|
558e5987be | ||
|
dcf59a8468 | ||
|
ab028a2be3 | ||
|
91e60d4253 | ||
|
679d446daa | ||
|
8047fb76fa | ||
|
c4cab007af | ||
|
ebaab3e47f | ||
|
b31690c8e6 | ||
|
3bde9c8bed | ||
|
14e12ee1f1 | ||
|
2374929990 | ||
|
26de739bb1 | ||
|
0f8d6afd8f | ||
|
daa26859e0 | ||
|
fdfb7b4e86 | ||
|
15bdb795a4 | ||
|
7d78728f54 | ||
|
53ed3bdb99 | ||
|
ae513887f5 | ||
|
7c78faa171 | ||
|
7d12eb9e26 | ||
|
581a1de472 | ||
|
288ac17954 | ||
|
2e4459b315 | ||
|
2a5232b541 | ||
|
44915b3723 | ||
|
64bba57255 | ||
|
88ebd1fc09 | ||
|
92cd591da4 | ||
|
320d84f541 | ||
|
970deec2a4 | ||
|
714b6ec2b9 | ||
|
f71fdfdf35 | ||
|
e92053da9a | ||
|
17b5f73b3d | ||
|
c18d2a4147 | ||
|
f1baa7e0b1 | ||
|
4abc868ab3 | ||
|
40e840d5fd | ||
|
9518eb44b3 | ||
|
0b75f99d75 | ||
|
686379efb0 | ||
|
a95389a28e | ||
|
3226632d83 | ||
|
dd934b9690 | ||
|
cef3c8b5cc | ||
|
eedb20e9a3 | ||
|
e51260434c | ||
|
7e6c9eeb38 | ||
|
c537140fbc | ||
|
3b7c4b5eb0 | ||
|
4460e8246c | ||
|
a63432e24b | ||
|
69f7264123 | ||
|
e052021397 | ||
|
fdd714ee60 | ||
|
65e7223ce0 | ||
|
eddec7d2e4 | ||
|
7b6c921d36 | ||
|
05c16e4262 | ||
|
c8a86db310 | ||
|
ce29902691 | ||
|
0b729621db | ||
|
e6e5b872dc | ||
|
550af3cbde | ||
|
5aa9ebbbe8 | ||
|
7f68a13433 | ||
|
2b7cc55c88 | ||
|
40739e9639 | ||
|
6106915923 | ||
|
d9059dbad9 | ||
|
187d584086 | ||
|
7502ba86a5 | ||
|
cc51fa59f9 | ||
|
1c10842bd3 | ||
|
c07ffa1317 | ||
|
b7f67f2764 | ||
|
8665286764 | ||
|
a43d73eea7 | ||
|
4ad70efb00 | ||
|
1af5ba9093 | ||
|
be9eafe20f | ||
|
27c6587747 | ||
|
9521e79061 | ||
|
80f0b6077a | ||
|
ac5cacba33 | ||
|
e320854db7 | ||
|
501cc22fb4 | ||
|
a57f1b22d0 | ||
|
7baf9f47ac | ||
|
4e8ac0b7a8 | ||
|
b593adef56 | ||
|
8c803d5901 | ||
|
9fadd1d7b8 | ||
|
6905f1ba41 | ||
|
b80e89269c | ||
|
deba7ea28e | ||
|
d5972045da | ||
|
28ffa0c7dc | ||
|
1790ded144 | ||
|
abc6257bf7 | ||
|
dd84190d47 | ||
|
65073792aa | ||
|
0bf203b087 | ||
|
37471135fa | ||
|
2a21c20ea3 | ||
|
9a2d4e3d72 | ||
|
7c2a19e3cc | ||
|
26d5e69c62 | ||
|
5042e09bb4 | ||
|
409e7a8e1f | ||
|
52938e9f39 | ||
|
32941a807a | ||
|
32d34d3b83 | ||
|
074b8af09d | ||
|
4117bd7552 |
109
.aegir.js
109
.aegir.js
@@ -1,71 +1,70 @@
|
||||
'use strict'
|
||||
|
||||
const PeerInfo = require('peer-info')
|
||||
const path = require('path')
|
||||
const Libp2p = require('./src')
|
||||
const { MULTIADDRS_WEBSOCKETS } = require('./test/fixtures/browser')
|
||||
const Peers = require('./test/fixtures/peers')
|
||||
const PeerId = require('peer-id')
|
||||
const pull = require('pull-stream')
|
||||
const parallel = require('async/parallel')
|
||||
const WebSockets = require('libp2p-websockets')
|
||||
const Muxer = require('libp2p-mplex')
|
||||
const { NOISE: Crypto } = require('libp2p-noise')
|
||||
const pipe = require('it-pipe')
|
||||
let libp2p
|
||||
|
||||
const rawPeer = require('./test/fixtures/test-peer.json')
|
||||
const Node = require('./test/utils/bundle.node.js')
|
||||
const sigServer = require('libp2p-webrtc-star/src/sig-server')
|
||||
const WebSocketStarRendezvous = require('libp2p-websocket-star-rendezvous')
|
||||
const before = async () => {
|
||||
// Use the last peer
|
||||
const peerId = await PeerId.createFromJSON(Peers[Peers.length - 1])
|
||||
|
||||
let wrtcRendezvous
|
||||
let wsRendezvous
|
||||
let node
|
||||
|
||||
const before = (done) => {
|
||||
parallel([
|
||||
(cb) => {
|
||||
sigServer.start({
|
||||
port: 15555
|
||||
// cryptoChallenge: true TODO: needs https://github.com/libp2p/js-libp2p-webrtc-star/issues/128
|
||||
}, (err, server) => {
|
||||
if (err) { return cb(err) }
|
||||
wrtcRendezvous = server
|
||||
cb()
|
||||
})
|
||||
libp2p = new Libp2p({
|
||||
addresses: {
|
||||
listen: [MULTIADDRS_WEBSOCKETS[0]]
|
||||
},
|
||||
(cb) => {
|
||||
WebSocketStarRendezvous.start({
|
||||
port: 14444,
|
||||
refreshPeerListIntervalMS: 1000,
|
||||
strictMultiaddr: false,
|
||||
cryptoChallenge: true
|
||||
}, (err, _server) => {
|
||||
if (err) { return cb(err) }
|
||||
wsRendezvous = _server
|
||||
cb()
|
||||
})
|
||||
peerId,
|
||||
modules: {
|
||||
transport: [WebSockets],
|
||||
streamMuxer: [Muxer],
|
||||
connEncryption: [Crypto]
|
||||
},
|
||||
(cb) => {
|
||||
PeerId.createFromJSON(rawPeer, (err, peerId) => {
|
||||
if (err) {
|
||||
return done(err)
|
||||
config: {
|
||||
relay: {
|
||||
enabled: true,
|
||||
hop: {
|
||||
enabled: true,
|
||||
active: false
|
||||
}
|
||||
const peer = new PeerInfo(peerId)
|
||||
|
||||
peer.multiaddrs.add('/ip4/127.0.0.1/tcp/9200/ws')
|
||||
|
||||
node = new Node(peer)
|
||||
node.handle('/echo/1.0.0', (protocol, conn) => pull(conn, conn))
|
||||
node.start(cb)
|
||||
})
|
||||
},
|
||||
nat: {
|
||||
enabled: false
|
||||
}
|
||||
}
|
||||
], done)
|
||||
})
|
||||
// Add the echo protocol
|
||||
libp2p.handle('/echo/1.0.0', ({ stream }) => pipe(stream, stream))
|
||||
|
||||
await libp2p.start()
|
||||
}
|
||||
|
||||
const after = (done) => {
|
||||
setTimeout(() => parallel(
|
||||
[node, wrtcRendezvous, wsRendezvous].map((s) => {
|
||||
return (cb) => s.stop(cb)
|
||||
})
|
||||
, done), 2000)
|
||||
const after = async () => {
|
||||
await libp2p.stop()
|
||||
}
|
||||
|
||||
/** @type {import('aegir').Options["build"]["config"]} */
|
||||
const esbuild = {
|
||||
inject: [path.join(__dirname, './scripts/node-globals.js')]
|
||||
}
|
||||
|
||||
/** @type {import('aegir').PartialOptions} */
|
||||
module.exports = {
|
||||
hooks: {
|
||||
pre: before,
|
||||
post: after
|
||||
build: {
|
||||
bundlesizeMax: '253kB'
|
||||
},
|
||||
test: {
|
||||
before,
|
||||
after,
|
||||
browser: {
|
||||
config: {
|
||||
buildConfig: esbuild
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
102
.github/workflows/examples.yml
vendored
Normal file
102
.github/workflows/examples.yml
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
name: examples
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: npx aegir lint
|
||||
- run: npx aegir ts -p check
|
||||
- run: npx aegir build
|
||||
test-auto-relay-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- auto-relay
|
||||
test-chat-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- chat
|
||||
test-connection-encryption-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- connection-encryption
|
||||
test-discovery-mechanisms-example:
|
||||
needs: check
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- discovery-mechanisms
|
||||
test-echo-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- echo
|
||||
test-libp2p-in-the-browser-example:
|
||||
needs: check
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- libp2p-in-the-browser
|
||||
test-peer-and-content-routing-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- peer-and-content-routing
|
||||
test-pnet-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- pnet
|
||||
test-protocol-and-stream-muxing-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- protocol-and-stream-muxing
|
||||
test-pubsub-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- pubsub
|
||||
test-transports-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- transports
|
||||
test-webrtc-direct-example:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd examples && yarn && npm run test -- webrtc-direct
|
67
.github/workflows/main.yml
vendored
Normal file
67
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
name: ci
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: npx aegir lint
|
||||
- uses: gozala/typescript-error-reporter-action@v1.0.8
|
||||
- run: npx aegir build
|
||||
- run: npx aegir dep-check
|
||||
- uses: ipfs/aegir/actions/bundle-size@master
|
||||
name: size
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
test-node:
|
||||
needs: check
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-latest, ubuntu-latest, macos-latest]
|
||||
node: [14]
|
||||
fail-fast: true
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node }}
|
||||
- run: npm install
|
||||
- run: npx aegir test -t node --cov --bail
|
||||
- uses: codecov/codecov-action@v1
|
||||
test-chrome:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: npx aegir test -t browser -t webworker --bail
|
||||
test-firefox:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: npx aegir test -t browser -t webworker --bail -- --browser firefox
|
||||
test-ts:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: npm run test:ts
|
||||
test-interop:
|
||||
needs: check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: npm install
|
||||
- run: cd node_modules/interop-libp2p && yarn && LIBP2P_JS=${GITHUB_WORKSPACE}/src/index.js npx aegir test -t node --bail
|
5
.gitignore
vendored
5
.gitignore
vendored
@@ -3,12 +3,15 @@ docs
|
||||
**/*.log
|
||||
test/repo-tests*
|
||||
**/bundle.js
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
coverage
|
||||
.nyc_output
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
@@ -34,10 +37,10 @@ build
|
||||
node_modules
|
||||
|
||||
lib
|
||||
dist
|
||||
test/test-data/go-ipfs-repo/LOCK
|
||||
test/test-data/go-ipfs-repo/LOG
|
||||
test/test-data/go-ipfs-repo/LOG.old
|
||||
|
||||
# while testing npm5
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
|
37
.npmignore
37
.npmignore
@@ -1,37 +0,0 @@
|
||||
**/node_modules/
|
||||
**/*.log
|
||||
test/repo-tests*
|
||||
img
|
||||
docs
|
||||
examples
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
coverage
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
|
||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
build
|
||||
|
||||
# Dependency directory
|
||||
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
|
||||
node_modules
|
||||
|
||||
test
|
23
.travis.yml
23
.travis.yml
@@ -1,23 +0,0 @@
|
||||
# Warning: This file is automatically synced from https://github.com/ipfs/ci-sync so if you want to change it, please change it there and ask someone to sync all repositories.
|
||||
sudo: false
|
||||
language: node_js
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- node_js: 'stable'
|
||||
env: CXX=g++-4.8
|
||||
|
||||
script:
|
||||
- npm run test
|
||||
|
||||
before_script:
|
||||
- export DISPLAY=:99.0
|
||||
- sh -e /etc/init.d/xvfb start
|
||||
|
||||
addons:
|
||||
firefox: 'latest'
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- g++-4.8
|
1183
CHANGELOG.md
1183
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
||||
# Contributing guidelines
|
||||
|
||||
libp2p as a project, including js-libp2p and all of its modules, follows the [standard IPFS Community contributing guidelines](https://github.com/ipfs/community/blob/master/contribution-guidelines.md).
|
||||
libp2p as a project, including js-libp2p and all of its modules, follows the [standard IPFS Community contributing guidelines](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md).
|
||||
|
||||
We also adhere to the [IPFS JavaScript Community contributing guidelines](https://github.com/ipfs/community/blob/master/js-project-guidelines.md) which provide additional information of how to collaborate and contribute in the JavaScript implementation of libp2p.
|
||||
We also adhere to the [IPFS JavaScript Community contributing guidelines](https://github.com/ipfs/community/blob/master/CONTRIBUTING_JS.md) which provide additional information of how to collaborate and contribute in the JavaScript implementation of libp2p.
|
||||
|
||||
We appreciate your time and attention for going over these. Please open an issue on [ipfs/community](https://github.com/ipfs/community) if you have any question.
|
||||
|
||||
|
@@ -37,7 +37,7 @@ One of following:
|
||||
|
||||
<!--
|
||||
This is for you! Please read, and then delete this text before posting it.
|
||||
The js-ipfs issues are only for bug reports and directly actionable features.
|
||||
The js-libp2p issues are only for bug reports and directly actionable features.
|
||||
|
||||
Read https://github.com/ipfs/community/blob/master/contributing.md#reporting-issues if your issue doesn't fit either of those categories.
|
||||
Read https://github.com/ipfs/community/blob/master/CONTRIBUTING.md#reporting-issues if your issue doesn't fit either of those categories.
|
||||
-->
|
||||
|
45
MIGRATION_TEMPLATE.md
Normal file
45
MIGRATION_TEMPLATE.md
Normal file
@@ -0,0 +1,45 @@
|
||||
<!--Specify versions for migration below-->
|
||||
# Migrating to libp2p@__
|
||||
|
||||
A migration guide for refactoring your application code from libp2p v__ to v__.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [API](#api)
|
||||
- [Module Updates](#module-updates)
|
||||
|
||||
## API
|
||||
|
||||
<!--Describe breaking APIs with examples for Before and After
|
||||
Example:
|
||||
|
||||
### Peer Discovery
|
||||
|
||||
__Describe__
|
||||
|
||||
**Before**
|
||||
|
||||
```js
|
||||
|
||||
```
|
||||
|
||||
**After**
|
||||
|
||||
```js
|
||||
|
||||
```
|
||||
|
||||
-->
|
||||
|
||||
## Module Updates
|
||||
|
||||
With this release you should update the following libp2p modules if you are relying on them:
|
||||
|
||||
<!--Specify module versions in JSON for migration below.
|
||||
It's recommended to check package.json changes for this:
|
||||
`git diff <release> <prev> -- package.json`
|
||||
-->
|
||||
|
||||
```json
|
||||
|
||||
```
|
19
OKR.md
Normal file
19
OKR.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Quarterly Objectives and Key Results
|
||||
|
||||
We try to frame our ongoing work using a process based on quarterly Objectives and Key Results (OKRs). Objectives reflect outcomes that are challenging, but realistic. Results are tangible and measurable.
|
||||
|
||||
## 2019 Q1
|
||||
|
||||
Find the js-libp2p OKRs for 2019 Q1 at the [2019 Q1 libp2p OKRs Spreadsheet](https://docs.google.com/spreadsheets/d/11GKG1DBRIIAiQnHvLD7_IqWxDGsVdaZFpxJM6NWtXe8/edit#gid=1271182838)
|
||||
|
||||
## 2018 Q4
|
||||
|
||||
Find the js-libp2p OKRs for 2018 Q4 at the [2018 Q4 libp2p OKRs Spreadsheet](https://docs.google.com/spreadsheets/d/1BYwmbVicgo6_tOHAbgiUXWge8Ej0qR1M_gAUulazmrg/edit#gid=1241853194)
|
||||
|
||||
## 2018 Q3
|
||||
|
||||
Find the js-libp2p OKRs for 2018 Q3 at the [2018 Q3 libp2p OKRs Spreadsheet](https://docs.google.com/spreadsheets/d/1HTXfgR5FyPTFhsTkFPRThkeMvHvCgJOaAs7BSl_vQ_0/edit#gid=1241853194)
|
||||
|
||||
## Previous Quarters
|
||||
|
||||
For the quarters before 2018 Q3, js-libp2p shared their KRs with the [IPFS OKRs](https://github.com/ipfs/js-ipfs/blob/master/OKR.md).
|
456
README.md
456
README.md
@@ -1,26 +1,30 @@
|
||||
<h1 align="center">
|
||||
<a href="libp2p.io"><img width="250" src="https://github.com/libp2p/libp2p/blob/master/logo/alternates/libp2p-logo-alt-2.png?raw=true" alt="libp2p hex logo" /></a>
|
||||
<a href="libp2p.io"><img width="250" src="https://github.com/libp2p/libp2p/blob/master/logo/black-bg-2.png?raw=true" alt="libp2p hex logo" /></a>
|
||||
</h1>
|
||||
|
||||
<h3 align="center">The JavaScript implementation of the libp2p Networking Stack.</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="http://ipn.io"><img src="https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square" /></a>
|
||||
<a href="http://libp2p.io/"><img src="https://img.shields.io/badge/project-libp2p-blue.svg?style=flat-square" /></a>
|
||||
<a href="http://webchat.freenode.net/?channels=%23ipfs"><img src="https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square" /></a>
|
||||
<a href="https://waffle.io/libp2p/libp2p"><img src="https://img.shields.io/badge/pm-waffle-blue.svg?style=flat-square" /></a>
|
||||
<a href="http://protocol.ai"><img src="https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square" /></a>
|
||||
<a href="http://libp2p.io/"><img src="https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square" /></a>
|
||||
<a href="http://webchat.freenode.net/?channels=%23libp2p"><img src="https://img.shields.io/badge/freenode-%23libp2p-yellow.svg?style=flat-square" /></a>
|
||||
<a href="https://riot.im/app/#/room/#libp2p:matrix.org"><img src="https://img.shields.io/badge/matrix-%23libp2p%3Apermaweb.io-blue.svg?style=flat-square" /> </a>
|
||||
<a href="https://discord.gg/66KBrm2"><img src="https://img.shields.io/discord/475789330380488707?color=blueviolet&label=discord&style=flat-square" /></a>
|
||||
<a href="https://discuss.libp2p.io"><img src="https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg" /></a>
|
||||
<a href="https://www.npmjs.com/package/libp2p"><img src="https://img.shields.io/npm/dm/libp2p.svg" /></a>
|
||||
<a href="https://www.jsdelivr.com/package/npm/libp2p"><img src="https://data.jsdelivr.com/v1/package/npm/libp2p/badge"/></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://travis-ci.org/libp2p/js-libp2p"><img src="https://travis-ci.org/libp2p/js-libp2p.svg?branch=master" /></a>
|
||||
<a href="https://circleci.com/gh/libp2p/js-libp2p"><img src="https://circleci.com/gh/libp2p/js-libp2p.svg?style=svg" /></a>
|
||||
<a href="https://coveralls.io/github/libp2p/js-libp2p?branch=master"><img src="https://coveralls.io/repos/github/libp2p/js-libp2p/badge.svg?branch=master"></a>
|
||||
<a href="https://github.com/libp2p/js-libp2p/actions?query=branch%3Amaster+workflow%3Aci+"><img src="https://img.shields.io/github/workflow/status/libp2p/js-libp2p/ci?label=ci&style=flat-square" /></a>
|
||||
<a href="https://codecov.io/gh/libp2p/js-libp2p"><img src="https://img.shields.io/codecov/c/github/libp2p/js-libp2p/master.svg?style=flat-square"></a>
|
||||
<a href="https://bundlephobia.com/result?p=ipfsd-ctl"><img src="https://flat.badgen.net/bundlephobia/minzip/ipfsd-ctl"></a>
|
||||
<br>
|
||||
<a href="https://david-dm.org/libp2p/js-libp2p"><img src="https://david-dm.org/libp2p/js-libp2p.svg?style=flat-square" /></a>
|
||||
<a href="https://github.com/feross/standard"><img src="https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square"></a>
|
||||
<a href="https://github.com/RichardLitt/standard-readme"><img src="https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square" /></a>
|
||||
<a href=""><img src="https://img.shields.io/badge/npm-%3E%3D3.0.0-orange.svg?style=flat-square" /></a>
|
||||
<a href=""><img src="https://img.shields.io/badge/Node.js-%3E%3D6.0.0-orange.svg?style=flat-square" /></a>
|
||||
<a href=""><img src="https://img.shields.io/badge/npm-%3E%3D6.0.0-orange.svg?style=flat-square" /></a>
|
||||
<a href=""><img src="https://img.shields.io/badge/Node.js-%3E%3D12.0.0-orange.svg?style=flat-square" /></a>
|
||||
<br>
|
||||
</p>
|
||||
|
||||
@@ -28,18 +32,28 @@
|
||||
|
||||
We've come a long way, but this project is still in Alpha, lots of development is happening, API might change, beware of the Dragons 🐉..
|
||||
|
||||
**Want to get started?** Check our [examples folder](/examples). You can check the development status at the [Waffle Board](https://waffle.io/libp2p/js-libp2p).
|
||||
The documentation in the master branch may contain changes from a pre-release.
|
||||
If you are looking for the documentation of the latest release, you can view the latest release on [**npm**](https://www.npmjs.com/package/libp2p), or select the tag in github that matches the version you are looking for.
|
||||
|
||||
[](https://waffle.io/libp2p/js-libp2p/metrics/throughput)
|
||||
**Want to get started?** Check our [GETTING_STARTED.md](./doc/GETTING_STARTED.md) guide and [examples folder](/examples).
|
||||
|
||||
**Want to update libp2p in your project?** Check our [migrations folder](./doc/migrations).
|
||||
|
||||
[**`Weekly Core Dev Calls`**](https://github.com/libp2p/team-mgmt/issues/16)
|
||||
|
||||
## Lead Maintainer
|
||||
|
||||
[Jacob Heun](https://github.com/jacobheun/)
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Background](#background)
|
||||
- [Bundles](#bundles)
|
||||
- [Install](#install)
|
||||
- [Usage](#usage)
|
||||
- [Install](#install)
|
||||
- [Usage](#usage)
|
||||
- [Configuration](#configuration)
|
||||
- [API](#api)
|
||||
- [Getting Started](#getting-started)
|
||||
- [Tutorials and Examples](#tutorials-and-examples)
|
||||
- [Development](#development)
|
||||
- [Tests](#tests)
|
||||
- [Packages](#packages)
|
||||
@@ -48,12 +62,14 @@ We've come a long way, but this project is still in Alpha, lots of development i
|
||||
|
||||
## Background
|
||||
|
||||
libp2p is the product of a long and arduous quest to understand the evolution of the Internet networking stack. In order to build P2P applications, devs have long had to made custom ad-hoc solutions to fit their needs, sometimes making some hard assumptions about their runtimes and the state of the network at the time of their development. Today, looking back more than 20 years, we see a clear pattern in the types of mechanisms built around the Internet Protocol, IP, which can be found throughout many layers of the OSI layer system, libp2p distils these mechanisms into flat categories and defines clear interfaces that once exposed, enable other protocols and applications to use and swap them, enabling upgradability and adaptability for the runtime, without breaking the API.
|
||||
libp2p is the product of a long and arduous quest to understand the evolution of the Internet networking stack. In order to build P2P applications, devs have long had to make custom ad-hoc solutions to fit their needs, sometimes making some hard assumptions about their runtimes and the state of the network at the time of their development. Today, looking back more than 20 years, we see a clear pattern in the types of mechanisms built around the Internet Protocol, IP, which can be found throughout many layers of the OSI layer system, libp2p distils these mechanisms into flat categories and defines clear interfaces that once exposed, enable other protocols and applications to use and swap them, enabling upgradability and adaptability for the runtime, without breaking the API.
|
||||
|
||||
We are in the process of writing better documentation, blog posts, tutorials and a formal specification. Today you can find:
|
||||
|
||||
- [libp2p.io](https://libp2p.io)
|
||||
- [docs.libp2p.io](https://docs.libp2p.io)
|
||||
- [Specification (WIP)](https://github.com/libp2p/specs)
|
||||
- [Discussion Forums](https://discuss.libp2p.io)
|
||||
- Talks
|
||||
- [`libp2p <3 ethereum` at DEVCON2](https://ethereumfoundation.org/devcon/?session=libp2p) [📼 video](https://www.youtube.com/watch?v=HxueJbeMVG4) [slides](https://ethereumfoundation.org/devcon/wp-content/uploads/2016/10/libp2p-HEART-devp2p-IPFS-PLUS-Ethereum-networking.pdf) [📼 demo-1](https://ethereumfoundation.org/devcon/wp-content/uploads/2016/10/libp2p_demo1-1.mp4) [📼 demo-2](https://ethereumfoundation.org/devcon/wp-content/uploads/2016/10/libp2p_demo2-1.mp4)
|
||||
- Articles
|
||||
@@ -61,336 +77,37 @@ We are in the process of writing better documentation, blog posts, tutorials and
|
||||
|
||||
To sum up, libp2p is a "network stack" -- a protocol suite -- that cleanly separates concerns, and enables sophisticated applications to only use the protocols they absolutely need, without giving up interoperability and upgradeability. libp2p grew out of IPFS, but it is built so that lots of people can use it, for lots of different projects.
|
||||
|
||||
## Bundles
|
||||
|
||||
With its modular nature, libp2p can be found being used in different projects with different sets of features, while preserving the same top level API. `js-libp2p` is only a skeleton and should not be installed directly, if you are looking for a prebundled libp2p stack, please check:
|
||||
|
||||
- [libp2p-ipfs-nodejs](https://github.com/ipfs/js-ipfs/tree/master/src/core/runtime/libp2p-nodejs.js) - The libp2p build used by js-ipfs when run in Node.js
|
||||
- [libp2p-ipfs-browser](https://github.com/ipfs/js-ipfs/tree/master/src/core/runtime/libp2p-browser.js) - The libp2p build used by js-ipfs when run in a Browser (that supports WebRTC)
|
||||
|
||||
If you have developed a libp2p bundle, please consider submitting it to this list so that it can be found easily by the users of libp2p.
|
||||
|
||||
## Install
|
||||
|
||||
Again, as noted above, this module is only a skeleton and should not be used directly other than libp2p bundle implementors that want to extend its code.
|
||||
|
||||
```sh
|
||||
npm install --save libp2p
|
||||
npm install libp2p
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### [Tutorials and Examples](/examples)
|
||||
### Configuration
|
||||
|
||||
You can find multiple examples on the [examples folder](/examples) that will guide you through using libp2p for several scenarios.
|
||||
|
||||
### Extending libp2p skeleton
|
||||
|
||||
libp2p becomes very simple and basically acts as a glue for every module that compose this library. Since it can be highly customized, it requires some setup. What we recommend is to have a libp2p build for the system you are developing taking into account in your needs (e.g. for a browser working version of libp2p that acts as the network layer of IPFS, we have a built and minified version that browsers can require).
|
||||
|
||||
**Example:**
|
||||
|
||||
```JavaScript
|
||||
// Creating a bundle that adds:
|
||||
// transport: websockets + tcp
|
||||
// stream-muxing: SPDY
|
||||
// crypto-channel: secio
|
||||
// discovery: multicast-dns
|
||||
|
||||
const libp2p = require('libp2p')
|
||||
const TCP = require('libp2p-tcp')
|
||||
const WS = require('libp2p-websockets')
|
||||
const spdy = require('libp2p-spdy')
|
||||
const secio = require('libp2p-secio')
|
||||
const MulticastDNS = require('libp2p-mdns')
|
||||
const DHT = require('libp2p-kad-dht')
|
||||
|
||||
class Node extends libp2p {
|
||||
constructor (peerInfo, peerBook, options) {
|
||||
options = options || {}
|
||||
|
||||
const modules = {
|
||||
transport: [
|
||||
new TCP(),
|
||||
new WS()
|
||||
],
|
||||
connection: {
|
||||
muxer: [
|
||||
spdy
|
||||
],
|
||||
crypto: [
|
||||
secio
|
||||
]
|
||||
},
|
||||
discovery: [
|
||||
new MulticastDNS(peerInfo)
|
||||
],
|
||||
// DHT is passed as its own enabling PeerRouting, ContentRouting and DHT itself components
|
||||
dht: DHT
|
||||
}
|
||||
|
||||
super(modules, peerInfo, peerBook, options)
|
||||
}
|
||||
}
|
||||
|
||||
// Now all the nodes you create, will have TCP, WebSockets, SPDY, SECIO and MulticastDNS support.
|
||||
```
|
||||
For all the information on how you can configure libp2p see [CONFIGURATION.md](./doc/CONFIGURATION.md).
|
||||
|
||||
### API
|
||||
|
||||
#### Create a Node - `new libp2p.Node([peerInfo, peerBook, options])`
|
||||
The specification is available on [API.md](./doc/API.md).
|
||||
|
||||
> Creates an instance of the libp2p.Node.
|
||||
### Getting started
|
||||
|
||||
- `peerInfo`: instance of [PeerInfo][] that contains the [PeerId][], Keys and [multiaddrs][multiaddr] of the libp2p Node. Optional.
|
||||
- `peerBook`: instance of [PeerBook][] that contains the [PeerInfo][] of known peers. Optional.
|
||||
- `options`: Object containing custom options for the bundle.
|
||||
If you are starting your journey with `js-libp2p`, read the [GETTING_STARTED.md](./doc/GETTING_STARTED.md) guide.
|
||||
|
||||
#### `libp2p.start(callback)`
|
||||
|
||||
> Start the libp2p Node.
|
||||
|
||||
`callback` is a function with the following `function (err) {}` signature, where `err` is an Error in case starting the node fails.
|
||||
|
||||
#### `libp2p.stop(callback)`
|
||||
|
||||
> Stop the libp2p Node.
|
||||
|
||||
`callback` is a function with the following `function (err) {}` signature, where `err` is an Error in case stopping the node fails.
|
||||
|
||||
#### `libp2p.dial(peer, callback)`
|
||||
|
||||
> Dials to another peer in the network, establishes the connection.
|
||||
|
||||
- `peer`: can be an instance of [PeerInfo][], [PeerId][], [multiaddr][], or a multiaddr string
|
||||
- `callback`: Function with signature `function (err, conn) {}` where `conn` is a [Connection](https://github.com/libp2p/interface-connection) object
|
||||
|
||||
`callback` is a function with the following `function (err, conn) {}` signature, where `err` is an Error in of failure to dial the connection and `conn` is a [Connection][] instance in case of a protocol selected, if not it is undefined.
|
||||
|
||||
#### `libp2p.dialProtocol(peer, protocol, callback)`
|
||||
|
||||
> Dials to another peer in the network and selects a protocol to talk with that peer.
|
||||
|
||||
- `peer`: can be an instance of [PeerInfo][], [PeerId][], [multiaddr][], or a multiaddr string
|
||||
- `protocol`: String that defines the protocol (e.g '/ipfs/bitswap/1.1.0')
|
||||
- `callback`: Function with signature `function (err, conn) {}` where `conn` is a [Connection](https://github.com/libp2p/interface-connection) object
|
||||
|
||||
`callback` is a function with the following `function (err, conn) {}` signature, where `err` is an Error in of failure to dial the connection and `conn` is a [Connection][] instance in case of a protocol selected, if not it is undefined.
|
||||
|
||||
#### `libp2p.hangUp(peer, callback)`
|
||||
|
||||
> Closes an open connection with a peer, graciously.
|
||||
|
||||
- `peer`: can be an instance of [PeerInfo][], [PeerId][] or [multiaddr][]
|
||||
|
||||
`callback` is a function with the following `function (err) {}` signature, where `err` is an Error in case stopping the node fails.
|
||||
|
||||
#### `libp2p.peerRouting.findPeer(id, callback)`
|
||||
|
||||
> Looks up for multiaddrs of a peer in the DHT
|
||||
|
||||
- `id`: instance of [PeerId][]
|
||||
|
||||
#### `libp2p.contentRouting.findProviders(key, timeout, callback)`
|
||||
|
||||
- `key`: Buffer
|
||||
- `timeout`: Number miliseconds
|
||||
|
||||
#### `libp2p.contentRouting.provide(key, callback)`
|
||||
|
||||
- `key`: Buffer
|
||||
|
||||
|
||||
#### `libp2p.handle(protocol, handlerFunc [, matchFunc])`
|
||||
|
||||
> Handle new protocol
|
||||
|
||||
- `protocol`: String that defines the protocol (e.g '/ipfs/bitswap/1.1.0')
|
||||
- `handlerFunc`: Function with signature `function (protocol, conn) {}` where `conn` is a [Connection](https://github.com/libp2p/interface-connection) object
|
||||
- `matchFunc`: Function for matching on protocol (exact matching, semver, etc). Default to exact match.
|
||||
|
||||
#### `libp2p.unhandle(protocol)`
|
||||
|
||||
> Stop handling protocol
|
||||
|
||||
- `protocol`: String that defines the protocol (e.g '/ipfs/bitswap/1.1.0')
|
||||
|
||||
#### `libp2p.on('peer:discovery', (peer) => {})`
|
||||
|
||||
> Peer has been discovered.
|
||||
|
||||
- `peer`: instance of [PeerInfo][]
|
||||
|
||||
#### `libp2p.on('peer:connect', (peer) => {})`
|
||||
|
||||
> We connected to a new peer
|
||||
|
||||
- `peer`: instance of [PeerInfo][]
|
||||
|
||||
#### `libp2p.on('peer:disconnect', (peer) => {})`
|
||||
|
||||
> We disconnected from Peer
|
||||
|
||||
- `peer`: instance of [PeerInfo][]
|
||||
|
||||
#### `libp2p.isStarted()`
|
||||
|
||||
> Check if libp2p is started
|
||||
|
||||
#### `libp2p.ping(peer [, options], callback)`
|
||||
|
||||
> Ping a node in the network
|
||||
|
||||
#### `libp2p.peerBook`
|
||||
|
||||
> PeerBook instance of the node
|
||||
|
||||
#### `libp2p.peerInfo`
|
||||
|
||||
> PeerInfo instance of the node
|
||||
|
||||
#### `libp2p.pubsub`
|
||||
|
||||
> Same API as IPFS PubSub, defined in the [CORE API Spec](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/PUBSUB.md). Just replace `ipfs` by `libp2p` and you are golden.
|
||||
|
||||
---------------------
|
||||
|
||||
`DHT methods also exposed for the time being`
|
||||
|
||||
#### `libp2p.dht.put(key, value, callback)`
|
||||
|
||||
- `key`: Buffer
|
||||
- `value`: Buffer
|
||||
|
||||
#### `libp2p.dht.get(key, callback)`
|
||||
|
||||
- `key`: Buffer
|
||||
|
||||
#### `libp2p.dht.getMany(key, nVals, callback)`
|
||||
|
||||
- `key`: Buffer
|
||||
- `nVals`: Number
|
||||
|
||||
[PeerInfo]: https://github.com/libp2p/js-peer-info
|
||||
[PeerId]: https://github.com/libp2p/js-peer-id
|
||||
[PeerBook]: https://github.com/libp2p/js-peer-book
|
||||
[multiaddr]: https://github.com/multiformats/js-multiaddr
|
||||
[Connection]: https://github.com/libp2p/interface-connection
|
||||
|
||||
-------
|
||||
|
||||
### Switch Stats API
|
||||
|
||||
##### `libp2p.stats.emit('update')`
|
||||
|
||||
Every time any stat value changes, this object emits an `update` event.
|
||||
|
||||
#### Global stats
|
||||
|
||||
##### `libp2p.stats.global.snapshot`
|
||||
|
||||
Should return a stats snapshot, which is an object containing the following keys and respective values:
|
||||
|
||||
- dataSent: amount of bytes sent, [Big](https://github.com/MikeMcl/big.js#readme) number
|
||||
- dataReceived: amount of bytes received, [Big](https://github.com/MikeMcl/big.js#readme) number
|
||||
|
||||
##### `libp2p.stats.global.movingAverages`
|
||||
|
||||
Returns an object containing the following keys:
|
||||
|
||||
- dataSent
|
||||
- dataReceived
|
||||
|
||||
Each one of them contains an object that has a key for each interval (`60000`, `300000` and `900000` miliseconds).
|
||||
|
||||
Each one of these values is [an exponential moving-average instance](https://github.com/pgte/moving-average#readme).
|
||||
|
||||
#### Per-transport stats
|
||||
|
||||
##### `libp2p.stats.transports()`
|
||||
|
||||
Returns an array containing the tags (string) for each observed transport.
|
||||
|
||||
##### `libp2p.stats.forTransport(transportTag).snapshot`
|
||||
|
||||
Should return a stats snapshot, which is an object containing the following keys and respective values:
|
||||
|
||||
- dataSent: amount of bytes sent, [Big](https://github.com/MikeMcl/big.js#readme) number
|
||||
- dataReceived: amount of bytes received, [Big](https://github.com/MikeMcl/big.js#readme) number
|
||||
|
||||
##### `libp2p.stats.forTransport(transportTag).movingAverages`
|
||||
|
||||
Returns an object containing the following keys:
|
||||
|
||||
dataSent
|
||||
dataReceived
|
||||
|
||||
Each one of them contains an object that has a key for each interval (`60000`, `300000` and `900000` miliseconds).
|
||||
|
||||
Each one of these values is [an exponential moving-average instance](https://github.com/pgte/moving-average#readme).
|
||||
|
||||
#### Per-protocol stats
|
||||
|
||||
##### `libp2p.stats.protocols()`
|
||||
|
||||
Returns an array containing the tags (string) for each observed protocol.
|
||||
|
||||
##### `libp2p.stats.forProtocol(protocolTag).snapshot`
|
||||
|
||||
Should return a stats snapshot, which is an object containing the following keys and respective values:
|
||||
|
||||
- dataSent: amount of bytes sent, [Big](https://github.com/MikeMcl/big.js#readme) number
|
||||
- dataReceived: amount of bytes received, [Big](https://github.com/MikeMcl/big.js#readme) number
|
||||
|
||||
|
||||
##### `libp2p.stats.forProtocol(protocolTag).movingAverages`
|
||||
|
||||
Returns an object containing the following keys:
|
||||
|
||||
- dataSent
|
||||
- dataReceived
|
||||
|
||||
Each one of them contains an object that has a key for each interval (`60000`, `300000` and `900000` miliseconds).
|
||||
|
||||
Each one of these values is [an exponential moving-average instance](https://github.com/pgte/moving-average#readme).
|
||||
|
||||
#### Per-peer stats
|
||||
|
||||
##### `libp2p.stats.peers()`
|
||||
|
||||
Returns an array containing the peerIDs (B58-encoded string) for each observed peer.
|
||||
|
||||
##### `libp2p.stats.forPeer(peerId:String).snapshot`
|
||||
|
||||
Should return a stats snapshot, which is an object containing the following keys and respective values:
|
||||
|
||||
- dataSent: amount of bytes sent, [Big](https://github.com/MikeMcl/big.js#readme) number
|
||||
- dataReceived: amount of bytes received, [Big](https://github.com/MikeMcl/big.js#readme) number
|
||||
|
||||
|
||||
##### `libp2p.stats.forPeer(peerId:String).movingAverages`
|
||||
|
||||
Returns an object containing the following keys:
|
||||
|
||||
- dataSent
|
||||
- dataReceived
|
||||
|
||||
Each one of them contains an object that has a key for each interval (`60000`, `300000` and `900000` miliseconds).
|
||||
|
||||
Each one of these values is [an exponential moving-average instance](https://github.com/pgte/moving-average#readme).
|
||||
|
||||
#### Stats update interval
|
||||
|
||||
Stats are not updated in real-time. Instead, measurements are buffered and stats are updated at an interval. The maximum interval can be defined through the `Switch` constructor option `stats.computeThrottleTimeout`, defined in miliseconds.
|
||||
### Tutorials and Examples
|
||||
|
||||
You can find multiple examples on the [examples folder](./examples) that will guide you through using libp2p for several scenarios.
|
||||
|
||||
## Development
|
||||
|
||||
**Clone and install dependencies:**
|
||||
|
||||
```sh
|
||||
> git clone https://github.com/ipfs/js-ipfs.git
|
||||
> cd js-ipfs
|
||||
> git clone https://github.com/libp2p/js-libp2p.git
|
||||
> cd js-libp2p
|
||||
> npm install
|
||||
```
|
||||
|
||||
@@ -409,55 +126,52 @@ Stats are not updated in real-time. Instead, measurements are buffered and stats
|
||||
> npm run test:browser
|
||||
```
|
||||
|
||||
#### Run interop tests
|
||||
|
||||
```sh
|
||||
N/A
|
||||
```
|
||||
|
||||
#### Run benchmark tests
|
||||
|
||||
```sh
|
||||
N/A
|
||||
```
|
||||
|
||||
### Packages
|
||||
|
||||
List of packages currently in existence for libp2p
|
||||
|
||||
| Package | Version | Dependencies | DevDependencies |
|
||||
|---------|---------|--------------|-----------------|
|
||||
| **Transports** |
|
||||
| [`libp2p-utp`](//github.com/libp2p/js-libp2p-utp) | [](//github.com/libp2p/js-libp2p-utp/releases) | [](https://david-dm.org/libp2p/js-libp2p-utp) | [](https://david-dm.org/libp2p/js-libp2p-utp?type=dev) |
|
||||
| [`libp2p-websockets`](//github.com/libp2p/js-libp2p-websockets) | [](//github.com/libp2p/js-libp2p-websockets/releases) | [](https://david-dm.org/libp2p/js-libp2p-websockets) | [](https://david-dm.org/libp2p/js-libp2p-websockets?type=dev) |
|
||||
| [`libp2p-webrtc-star`](//github.com/libp2p/js-libp2p-webrtc-star) | [](//github.com/libp2p/js-libp2p-webrtc-star/releases) | [](https://david-dm.org/libp2p/js-libp2p-webrtc-star) | [](https://david-dm.org/libp2p/js-libp2p-webrtc-star?type=dev) |
|
||||
| [`libp2p-websocket-star`](//github.com/libp2p/js-libp2p-websocket-star) | [](//github.com/libp2p/js-libp2p-websocket-star/releases) | [](https://david-dm.org/libp2p/js-libp2p-websocket-star) | [](https://david-dm.org/libp2p/js-libp2p-websocket-star?type=dev) |
|
||||
| [`libp2p-websocket-star-rendezvous`](//github.com/libp2p/js-libp2p-websocket-star-rendezvous) | [](//github.com/libp2p/js-libp2p-websocket-star-rendezvous/releases) | [](https://david-dm.org/libp2p/js-libp2p-websocket-star-rendezvous) | [](https://david-dm.org/libp2p/js-libp2p-websocket-star-rendezvous?type=dev) |
|
||||
| **Connection Upgrades** |
|
||||
| [`interface-connection`](//github.com/libp2p/interface-connection) | [](//github.com/libp2p/interface-connection/releases) | [](https://david-dm.org/libp2p/interface-connection) | [](https://david-dm.org/libp2p/interface-connection?type=dev) |
|
||||
| **Stream Muxers** |
|
||||
| [`interface-stream-muxer`](//github.com/libp2p/interface-stream-muxer) | [](//github.com/libp2p/interface-stream-muxer/releases) | [](https://david-dm.org/libp2p/interface-stream-muxer) | [](https://david-dm.org/libp2p/interface-stream-muxer?type=dev) |
|
||||
| [`libp2p-spdy`](//github.com/libp2p/js-libp2p-spdy) | [](//github.com/libp2p/js-libp2p-spdy/releases) | [](https://david-dm.org/libp2p/js-libp2p-spdy) | [](https://david-dm.org/libp2p/js-libp2p-spdy?type=dev) |
|
||||
| [`libp2p-multiplex`](https://github.com/libp2p/js-libp2p-multiplex)
|
||||
| **Discovery** |
|
||||
| [`libp2p-mdns-discovery`](//github.com/libp2p/js-libp2p-mdns-discovery) | [](//github.com/libp2p/js-libp2p-mdns-discovery/releases) | [](https://david-dm.org/libp2p/js-libp2p-mdns-discovery) | [](https://david-dm.org/libp2p/js-libp2p-mdns-discovery?type=dev) |
|
||||
| [`libp2p-railing`](//github.com/libp2p/js-libp2p-railing) | [](//github.com/libp2p/js-libp2p-railing/releases) | [](https://david-dm.org/libp2p/js-libp2p-railing) | [](https://david-dm.org/libp2p/js-libp2p-railing?type=dev) |
|
||||
| **Crypto Channels** |
|
||||
| [`libp2p-secio`](//github.com/libp2p/js-libp2p-secio) | [](//github.com/libp2p/js-libp2p-secio/releases) | [](https://david-dm.org/libp2p/js-libp2p-secio) | [](https://david-dm.org/libp2p/js-libp2p-secio?type=dev) |
|
||||
| **Peer Routing** |
|
||||
| [`libp2p-kad-routing`](//github.com/libp2p/js-libp2p-kad-routing) | [](//github.com/libp2p/js-libp2p-kad-routing/releases) | [](https://david-dm.org/libp2p/js-libp2p-kad-routing) | [](https://david-dm.org/libp2p/js-libp2p-kad-routing?type=dev) |
|
||||
| **Content Routing** |
|
||||
| [`interface-record-store`](//github.com/libp2p/interface-record-store) | [](//github.com/libp2p/interface-record-store/releases) | [](https://david-dm.org/libp2p/interface-record-store) | [](https://david-dm.org/libp2p/interface-record-store?type=dev) |
|
||||
| [`libp2p-record`](//github.com/libp2p/js-libp2p-record) | [](//github.com/libp2p/js-libp2p-record/releases) | [](https://david-dm.org/libp2p/js-libp2p-record) | [](https://david-dm.org/libp2p/js-libp2p-record?type=dev) |
|
||||
| [`libp2p-distributed-record-store`](//github.com/libp2p/js-libp2p-distributed-record-store) | [](//github.com/libp2p/js-libp2p-distributed-record-store/releases) | [](https://david-dm.org/libp2p/js-libp2p-distributed-record-store) | [](https://david-dm.org/libp2p/js-libp2p-distributed-record-store?type=dev) |
|
||||
| [`libp2p-kad-record-store`](//github.com/libp2p/js-libp2p-kad-record-store) | [](//github.com/libp2p/js-libp2p-kad-record-store/releases) | [](https://david-dm.org/libp2p/js-libp2p-kad-record-store) | [](https://david-dm.org/libp2p/js-libp2p-kad-record-store?type=dev) |
|
||||
| **Generics** |
|
||||
| [`libp2p-swarm`](//github.com/libp2p/js-libp2p-swarm) | [](//github.com/libp2p/js-libp2p-swarm/releases) | [](https://david-dm.org/libp2p/js-libp2p-swarm) | [](https://david-dm.org/libp2p/js-libp2p-swarm?type=dev) |
|
||||
| [`libp2p-ping`](//github.com/libp2p/js-libp2p-ping) | [](//github.com/libp2p/js-libp2p-ping/releases) | [](https://david-dm.org/libp2p/js-libp2p-ping) | [](https://david-dm.org/libp2p/js-libp2p-ping?type=dev) |
|
||||
| [`multistream-select`](//github.com/libp2p/js-multistream) | [](//github.com/libp2p/js-multistream/releases) | [](https://david-dm.org/libp2p/js-multistream) | [](https://david-dm.org/libp2p/js-multistream?type=dev) |
|
||||
| **Data Types** |
|
||||
| [`peer-book`](//github.com/libp2p/js-peer-book) | [](//github.com/libp2p/js-peer-book/releases) | [](https://david-dm.org/libp2p/js-peer-book) | [](https://david-dm.org/libp2p/js-peer-book?type=dev) |
|
||||
| [`peer-id`](https://github.com/libp2p/js-peer-id)
|
||||
> This table is generated using the module `package-table` with `package-table --data=package-list.json`.
|
||||
|
||||
| Package | Version | Deps | CI | Coverage | Lead Maintainer |
|
||||
| ---------|---------|---------|---------|---------|--------- |
|
||||
| **libp2p** |
|
||||
| [`libp2p`](//github.com/libp2p/js-libp2p) | [](//github.com/libp2p/js-libp2p/releases) | [](https://david-dm.org/libp2p/js-libp2p) | [](https://travis-ci.com/libp2p/js-libp2p) | [](https://codecov.io/gh/libp2p/js-libp2p) | [Jacob Heun](mailto:jacobheun@gmail.com) |
|
||||
| [`libp2p-daemon`](//github.com/libp2p/js-libp2p-daemon) | [](//github.com/libp2p/js-libp2p-daemon/releases) | [](https://david-dm.org/libp2p/js-libp2p-daemon) | [](https://travis-ci.com/libp2p/js-libp2p-daemon) | [](https://codecov.io/gh/libp2p/js-libp2p-daemon) | [Jacob Heun](mailto:jacobheun@gmail.com) |
|
||||
| [`libp2p-daemon-client`](//github.com/libp2p/js-libp2p-daemon-client) | [](//github.com/libp2p/js-libp2p-daemon-client/releases) | [](https://david-dm.org/libp2p/js-libp2p-daemon-client) | [](https://travis-ci.com/libp2p/js-libp2p-daemon-client) | [](https://codecov.io/gh/libp2p/js-libp2p-daemon-client) | [Vasco Santos](mailto:santos.vasco10@gmail.com) |
|
||||
| [`libp2p-interfaces`](//github.com/libp2p/js-interfaces) | [](//github.com/libp2p/js-interfaces/releases) | [](https://david-dm.org/libp2p/js-interfaces) | [](https://travis-ci.com/libp2p/js-interfaces) | [](https://codecov.io/gh/libp2p/js-interfaces) | [Jacob Heun](mailto:jacobheun@gmail.com) |
|
||||
| [`interop-libp2p`](//github.com/libp2p/interop) | [](//github.com/libp2p/interop/releases) | [](https://david-dm.org/libp2p/interop) | [](https://travis-ci.com/libp2p/interop) | [](https://codecov.io/gh/libp2p/interop) | [Vasco Santos](mailto:santos.vasco10@gmail.com) |
|
||||
| **transports** |
|
||||
| [`libp2p-tcp`](//github.com/libp2p/js-libp2p-tcp) | [](//github.com/libp2p/js-libp2p-tcp/releases) | [](https://david-dm.org/libp2p/js-libp2p-tcp) | [](https://travis-ci.com/libp2p/js-libp2p-tcp) | [](https://codecov.io/gh/libp2p/js-libp2p-tcp) | [Jacob Heun](mailto:jacobheun@gmail.com) |
|
||||
| [`libp2p-webrtc-direct`](//github.com/libp2p/js-libp2p-webrtc-direct) | [](//github.com/libp2p/js-libp2p-webrtc-direct/releases) | [](https://david-dm.org/libp2p/js-libp2p-webrtc-direct) | [](https://travis-ci.com/libp2p/js-libp2p-webrtc-direct) | [](https://codecov.io/gh/libp2p/js-libp2p-webrtc-direct) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
|
||||
| [`libp2p-webrtc-star`](//github.com/libp2p/js-libp2p-webrtc-star) | [](//github.com/libp2p/js-libp2p-webrtc-star/releases) | [](https://david-dm.org/libp2p/js-libp2p-webrtc-star) | [](https://travis-ci.com/libp2p/js-libp2p-webrtc-star) | [](https://codecov.io/gh/libp2p/js-libp2p-webrtc-star) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
|
||||
| [`libp2p-websockets`](//github.com/libp2p/js-libp2p-websockets) | [](//github.com/libp2p/js-libp2p-websockets/releases) | [](https://david-dm.org/libp2p/js-libp2p-websockets) | [](https://travis-ci.com/libp2p/js-libp2p-websockets) | [](https://codecov.io/gh/libp2p/js-libp2p-websockets) | [Jacob Heun](mailto:jacobheun@gmail.com) |
|
||||
| **secure channels** |
|
||||
| [`libp2p-noise`](//github.com/NodeFactoryIo/js-libp2p-noise) | [](//github.com/NodeFactoryIo/js-libp2p-noise/releases) | [](https://david-dm.org/NodeFactoryIo/js-libp2p-noise) | [](https://travis-ci.com/NodeFactoryIo/js-libp2p-noise) | [](https://codecov.io/gh/NodeFactoryIo/js-libp2p-noise) | N/A |
|
||||
| **stream multiplexers** |
|
||||
| [`libp2p-mplex`](//github.com/libp2p/js-libp2p-mplex) | [](//github.com/libp2p/js-libp2p-mplex/releases) | [](https://david-dm.org/libp2p/js-libp2p-mplex) | [](https://travis-ci.com/libp2p/js-libp2p-mplex) | [](https://codecov.io/gh/libp2p/js-libp2p-mplex) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
|
||||
| **peer discovery** |
|
||||
| [`libp2p-bootstrap`](//github.com/libp2p/js-libp2p-bootstrap) | [](//github.com/libp2p/js-libp2p-bootstrap/releases) | [](https://david-dm.org/libp2p/js-libp2p-bootstrap) | [](https://travis-ci.com/libp2p/js-libp2p-bootstrap) | [](https://codecov.io/gh/libp2p/js-libp2p-bootstrap) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
|
||||
| [`libp2p-kad-dht`](//github.com/libp2p/js-libp2p-kad-dht) | [](//github.com/libp2p/js-libp2p-kad-dht/releases) | [](https://david-dm.org/libp2p/js-libp2p-kad-dht) | [](https://travis-ci.com/libp2p/js-libp2p-kad-dht) | [](https://codecov.io/gh/libp2p/js-libp2p-kad-dht) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
|
||||
| [`libp2p-mdns`](//github.com/libp2p/js-libp2p-mdns) | [](//github.com/libp2p/js-libp2p-mdns/releases) | [](https://david-dm.org/libp2p/js-libp2p-mdns) | [](https://travis-ci.com/libp2p/js-libp2p-mdns) | [](https://codecov.io/gh/libp2p/js-libp2p-mdns) | [Jacob Heun](mailto:jacobheun@gmail.com) |
|
||||
| [`libp2p-webrtc-star`](//github.com/libp2p/js-libp2p-webrtc-star) | [](//github.com/libp2p/js-libp2p-webrtc-star/releases) | [](https://david-dm.org/libp2p/js-libp2p-webrtc-star) | [](https://travis-ci.com/libp2p/js-libp2p-webrtc-star) | [](https://codecov.io/gh/libp2p/js-libp2p-webrtc-star) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
|
||||
| [`@chainsafe/discv5`](//github.com/ChainSafe/discv5) | [](//github.com/ChainSafe/discv5/releases) | [](https://david-dm.org/ChainSafe/discv5) | [](https://travis-ci.com/ChainSafe/discv5) | [](https://codecov.io/gh/ChainSafe/discv5) | [Cayman Nava](mailto:caymannava@gmail.com) |
|
||||
| **content routing** |
|
||||
| [`libp2p-delegated-content-routing`](//github.com/libp2p/js-libp2p-delegated-content-routing) | [](//github.com/libp2p/js-libp2p-delegated-content-routing/releases) | [](https://david-dm.org/libp2p/js-libp2p-delegated-content-routing) | [](https://travis-ci.com/libp2p/js-libp2p-delegated-content-routing) | [](https://codecov.io/gh/libp2p/js-libp2p-delegated-content-routing) | [Jacob Heun](mailto:jacobheun@gmail.com) |
|
||||
| [`libp2p-kad-dht`](//github.com/libp2p/js-libp2p-kad-dht) | [](//github.com/libp2p/js-libp2p-kad-dht/releases) | [](https://david-dm.org/libp2p/js-libp2p-kad-dht) | [](https://travis-ci.com/libp2p/js-libp2p-kad-dht) | [](https://codecov.io/gh/libp2p/js-libp2p-kad-dht) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
|
||||
| **peer routing** |
|
||||
| [`libp2p-delegated-peer-routing`](//github.com/libp2p/js-libp2p-delegated-peer-routing) | [](//github.com/libp2p/js-libp2p-delegated-peer-routing/releases) | [](https://david-dm.org/libp2p/js-libp2p-delegated-peer-routing) | [](https://travis-ci.com/libp2p/js-libp2p-delegated-peer-routing) | [](https://codecov.io/gh/libp2p/js-libp2p-delegated-peer-routing) | [Jacob Heun](mailto:jacobheun@gmail.com) |
|
||||
| [`libp2p-kad-dht`](//github.com/libp2p/js-libp2p-kad-dht) | [](//github.com/libp2p/js-libp2p-kad-dht/releases) | [](https://david-dm.org/libp2p/js-libp2p-kad-dht) | [](https://travis-ci.com/libp2p/js-libp2p-kad-dht) | [](https://codecov.io/gh/libp2p/js-libp2p-kad-dht) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
|
||||
| **utilities** |
|
||||
| [`libp2p-crypto`](//github.com/libp2p/js-libp2p-crypto) | [](//github.com/libp2p/js-libp2p-crypto/releases) | [](https://david-dm.org/libp2p/js-libp2p-crypto) | [](https://travis-ci.com/libp2p/js-libp2p-crypto) | [](https://codecov.io/gh/libp2p/js-libp2p-crypto) | [Jacob Heun](mailto:jacobheun@gmail.com) |
|
||||
| [`libp2p-crypto-secp256k1`](//github.com/libp2p/js-libp2p-crypto-secp256k1) | [](//github.com/libp2p/js-libp2p-crypto-secp256k1/releases) | [](https://david-dm.org/libp2p/js-libp2p-crypto-secp256k1) | [](https://travis-ci.com/libp2p/js-libp2p-crypto-secp256k1) | [](https://codecov.io/gh/libp2p/js-libp2p-crypto-secp256k1) | [Friedel Ziegelmayer](mailto:dignifiedquire@gmail.com) |
|
||||
| **data types** |
|
||||
| [`peer-id`](//github.com/libp2p/js-peer-id) | [](//github.com/libp2p/js-peer-id/releases) | [](https://david-dm.org/libp2p/js-peer-id) | [](https://travis-ci.com/libp2p/js-peer-id) | [](https://codecov.io/gh/libp2p/js-peer-id) | [Vasco Santos](mailto:santos.vasco10@gmail.com) |
|
||||
| **pubsub** |
|
||||
| [`libp2p-floodsub`](//github.com/libp2p/js-libp2p-floodsub) | [](//github.com/libp2p/js-libp2p-floodsub/releases) | [](https://david-dm.org/libp2p/js-libp2p-floodsub) | [](https://travis-ci.com/libp2p/js-libp2p-floodsub) | [](https://codecov.io/gh/libp2p/js-libp2p-floodsub) | [Vasco Santos](mailto:vasco.santos@moxy.studio) |
|
||||
| [`libp2p-gossipsub`](//github.com/ChainSafe/js-libp2p-gossipsub) | [](//github.com/ChainSafe/js-libp2p-gossipsub/releases) | [](https://david-dm.org/ChainSafe/js-libp2p-gossipsub) | [](https://travis-ci.com/ChainSafe/js-libp2p-gossipsub) | [](https://codecov.io/gh/ChainSafe/js-libp2p-gossipsub) | [Cayman Nava](mailto:caymannava@gmail.com) |
|
||||
| **extensions** |
|
||||
| [`libp2p-nat-mgnr`](//github.com/libp2p/js-libp2p-nat-mgnr) | [](//github.com/libp2p/js-libp2p-nat-mgnr/releases) | [](https://david-dm.org/libp2p/js-libp2p-nat-mgnr) | [](https://travis-ci.com/libp2p/js-libp2p-nat-mgnr) | [](https://codecov.io/gh/libp2p/js-libp2p-nat-mgnr) | N/A |
|
||||
| [`libp2p-utils`](//github.com/libp2p/js-libp2p-utils) | [](//github.com/libp2p/js-libp2p-utils/releases) | [](https://david-dm.org/libp2p/js-libp2p-utils) | [](https://travis-ci.com/libp2p/js-libp2p-utils) | [](https://codecov.io/gh/libp2p/js-libp2p-utils) | [Vasco Santos](mailto:santos.vasco10@gmail.com) |
|
||||
|
||||
## Contribute
|
||||
|
||||
@@ -469,4 +183,4 @@ The libp2p implementation in JavaScript is a work in progress. As such, there ar
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE) © David Dias
|
||||
[MIT](LICENSE) © Protocol Labs
|
||||
|
59
RELEASE.md
Normal file
59
RELEASE.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# Release Template
|
||||
|
||||
> short tl;dr; of the release
|
||||
|
||||
# 🗺 What's left for release
|
||||
|
||||
# 🔦 Highlights
|
||||
|
||||
# 🏗 API Changes
|
||||
|
||||
# ✅ Release Checklist
|
||||
|
||||
- Robustness and quality
|
||||
- [ ] Ensure that all tests are passing, this includes:
|
||||
- [ ] unit
|
||||
- [ ] Publish a release candidate to npm
|
||||
```sh
|
||||
# Minor prerelease (e.g. 0.24.1 -> 0.25.0-rc.0)
|
||||
$ npx aegir release --type preminor -t node -t browser --preid rc --dist-tag next
|
||||
|
||||
# Increment prerelease (e.g. 0.25.0-rc.0 -> 0.25.0-rc.1)
|
||||
$ npx aegir release --type prerelease -t node -t browser --preid rc --dist-tag next
|
||||
```
|
||||
- [ ] Run tests of the following projects with the new release:
|
||||
- [ ] [js-ipfs](https://github.com/ipfs/js-ipfs)
|
||||
- Documentation
|
||||
- [ ] Ensure that README.md is up to date
|
||||
- [ ] Ensure [libp2p/js-libp2p-examples](https://github.com/libp2p/js-libp2p-examples) is updated
|
||||
- [ ] Ensure that [libp2p/docs](https://github.com/libp2p/docs) is updated
|
||||
- Communication
|
||||
- [ ] Create the release issue
|
||||
- [ ] Take a snapshot between of everyone that has contributed to this release (including its subdeps in IPFS, libp2p, IPLD and multiformats) using [`name-your-contributors`](https://www.npmjs.com/package/name-your-contributors). Generate a nice markdown list with [this script](https://gist.github.com/jacobheun/d2ff479ca991733c13cdcf688a1317e5)
|
||||
- [ ] Announcements (both pre-release and post-release)
|
||||
- [ ] Twitter
|
||||
- [ ] IRC
|
||||
- [ ] Reddit
|
||||
- [ ] [discuss.libp2p.io](https://discuss.libp2p.io/c/news)
|
||||
- [ ] Blog post
|
||||
- [ ] Copy release notes to the [GitHub Release description](https://github.com/libp2p/js-libp2p/releases)
|
||||
|
||||
# ❤️ Huge thank you to everyone that made this release possible
|
||||
|
||||
In alphabetical order, here are all the humans that contributed to the release:
|
||||
|
||||
- ...
|
||||
|
||||
# 🙌🏽 Want to contribute?
|
||||
|
||||
Would you like to contribute to the libp2p project and don't know how? Well, there are a few places you can get started:
|
||||
|
||||
- Check the issues with the `help wanted` label in the [libp2p repo](https://github.com/libp2p/js-libp2p/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
|
||||
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt#all-hands-call
|
||||
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
|
||||
- Join the discussion at http://discuss.libp2p.io/ and help users finding their answers.
|
||||
- Join the [⚡️libp2p Weekly Sync 🙌🏽](https://github.com/libp2p/team-mgmt/issues/16) and be part of the Sprint action!
|
||||
|
||||
# ⁉️ Do you have questions?
|
||||
|
||||
The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.libp2p.io](https://discuss.libp2p.io). We are also available at the #libp2p channel on Freenode.
|
29
appveyor.yml
29
appveyor.yml
@@ -1,29 +0,0 @@
|
||||
# Warning: This file is automatically synced from https://github.com/ipfs/ci-sync so if you want to change it, please change it there and ask someone to sync all repositories.
|
||||
version: "{build}"
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- nodejs_version: "6"
|
||||
- nodejs_version: "8"
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
|
||||
install:
|
||||
# Install Node.js
|
||||
- ps: Install-Product node $env:nodejs_version
|
||||
|
||||
# Upgrade npm
|
||||
- npm install -g npm
|
||||
|
||||
# Output our current versions for debugging
|
||||
- node --version
|
||||
- npm --version
|
||||
|
||||
# Install our package dependencies
|
||||
- npm install
|
||||
|
||||
test_script:
|
||||
- npm run test:node
|
||||
|
||||
build: off
|
2
ci/Jenkinsfile
vendored
2
ci/Jenkinsfile
vendored
@@ -1,2 +0,0 @@
|
||||
// Warning: This file is automatically synced from https://github.com/ipfs/ci-sync so if you want to change it, please change it there and ask someone to sync all repositories.
|
||||
javascript()
|
24
circle.yml
24
circle.yml
@@ -1,24 +0,0 @@
|
||||
machine:
|
||||
node:
|
||||
version: stable
|
||||
|
||||
test:
|
||||
pre:
|
||||
- npm run lint
|
||||
post:
|
||||
- npm run coverage -- --upload --providers coveralls
|
||||
|
||||
dependencies:
|
||||
pre:
|
||||
- google-chrome --version
|
||||
- curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
||||
- for v in $(curl http://archive.ubuntu.com/ubuntu/pool/main/n/nss/ | grep "href=" | grep "libnss3.*deb\"" -o | grep -o "libnss3.*deb" | grep "3.28" | grep "14.04"); do curl -L -o $v http://archive.ubuntu.com/ubuntu/pool/main/n/nss/$v; done && rm libnss3-tools*_i386.deb libnss3-dev*_i386.deb
|
||||
- sudo dpkg -i google-chrome.deb || true
|
||||
- sudo dpkg -i libnss3*.deb || true
|
||||
- sudo apt-get update
|
||||
- sudo apt-get install -f || true
|
||||
- sudo dpkg -i libnss3*.deb
|
||||
- sudo apt-get install -f
|
||||
- sudo apt-get install --only-upgrade lsb-base
|
||||
- sudo dpkg -i google-chrome.deb
|
||||
- google-chrome --version
|
49
dist/index.min.js
vendored
Normal file
49
dist/index.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
72
dist/src/address-manager/index.d.ts
vendored
Normal file
72
dist/src/address-manager/index.d.ts
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
export = AddressManager;
|
||||
/**
|
||||
* @typedef {Object} AddressManagerOptions
|
||||
* @property {string[]} [listen = []] - list of multiaddrs string representation to listen.
|
||||
* @property {string[]} [announce = []] - list of multiaddrs string representation to announce.
|
||||
*/
|
||||
/**
|
||||
* @fires AddressManager#change:addresses Emitted when a addresses change.
|
||||
*/
|
||||
declare class AddressManager extends EventEmitter {
|
||||
/**
|
||||
* Responsible for managing the peer addresses.
|
||||
* Peers can specify their listen and announce addresses.
|
||||
* The listen addresses will be used by the libp2p transports to listen for new connections,
|
||||
* while the announce addresses will be used for the peer addresses' to other peers in the network.
|
||||
*
|
||||
* @class
|
||||
* @param {PeerId} peerId - The Peer ID of the node
|
||||
* @param {object} [options]
|
||||
* @param {Array<string>} [options.listen = []] - list of multiaddrs string representation to listen.
|
||||
* @param {Array<string>} [options.announce = []] - list of multiaddrs string representation to announce.
|
||||
*/
|
||||
constructor(peerId: PeerId, { listen, announce }?: {
|
||||
listen?: string[] | undefined;
|
||||
announce?: string[] | undefined;
|
||||
} | undefined);
|
||||
peerId: PeerId;
|
||||
listen: Set<string>;
|
||||
announce: Set<string>;
|
||||
observed: Set<any>;
|
||||
/**
|
||||
* Get peer listen multiaddrs.
|
||||
*
|
||||
* @returns {Multiaddr[]}
|
||||
*/
|
||||
getListenAddrs(): Multiaddr[];
|
||||
/**
|
||||
* Get peer announcing multiaddrs.
|
||||
*
|
||||
* @returns {Multiaddr[]}
|
||||
*/
|
||||
getAnnounceAddrs(): Multiaddr[];
|
||||
/**
|
||||
* Get observed multiaddrs.
|
||||
*
|
||||
* @returns {Array<Multiaddr>}
|
||||
*/
|
||||
getObservedAddrs(): Array<Multiaddr>;
|
||||
/**
|
||||
* Add peer observed addresses
|
||||
*
|
||||
* @param {string | Multiaddr} addr
|
||||
*/
|
||||
addObservedAddr(addr: string | Multiaddr): void;
|
||||
}
|
||||
declare namespace AddressManager {
|
||||
export { AddressManagerOptions };
|
||||
}
|
||||
import { EventEmitter } from "events";
|
||||
import PeerId = require("peer-id");
|
||||
import { Multiaddr } from "multiaddr";
|
||||
type AddressManagerOptions = {
|
||||
/**
|
||||
* - list of multiaddrs string representation to listen.
|
||||
*/
|
||||
listen?: string[] | undefined;
|
||||
/**
|
||||
* - list of multiaddrs string representation to announce.
|
||||
*/
|
||||
announce?: string[] | undefined;
|
||||
};
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/address-manager/index.d.ts.map
vendored
Normal file
1
dist/src/address-manager/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/address-manager/index.js"],"names":[],"mappings":";AAMA;;;;GAIG;AAEH;;GAEG;AACH;IACE;;;;;;;;;;;OAWG;IACH,oBALW,MAAM;;;mBAYhB;IAJC,eAAoB;IACpB,oBAAsD;IACtD,sBAA0D;IAC1D,mBAAyB;IAG3B;;;;OAIG;IACH,kBAFa,SAAS,EAAE,CAIvB;IAED;;;;OAIG;IACH,oBAFa,SAAS,EAAE,CAIvB;IAED;;;;OAIG;IACH,oBAFa,MAAM,SAAS,CAAC,CAI5B;IAED;;;;OAIG;IACH,sBAFW,MAAM,GAAG,SAAS,QAyB5B;CACF"}
|
109
dist/src/circuit/auto-relay.d.ts
vendored
Normal file
109
dist/src/circuit/auto-relay.d.ts
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
export = AutoRelay;
|
||||
/**
|
||||
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
|
||||
* @typedef {import('../peer-store/address-book').Address} Address
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} AutoRelayProperties
|
||||
* @property {import('../')} libp2p
|
||||
*
|
||||
* @typedef {Object} AutoRelayOptions
|
||||
* @property {number} [maxListeners = 1] - maximum number of relays to listen.
|
||||
* @property {(error: Error, msg?: string) => {}} [onError]
|
||||
*/
|
||||
declare class AutoRelay {
|
||||
/**
|
||||
* Creates an instance of AutoRelay.
|
||||
*
|
||||
* @class
|
||||
* @param {AutoRelayProperties & AutoRelayOptions} props
|
||||
*/
|
||||
constructor({ libp2p, maxListeners, onError }: AutoRelayProperties & AutoRelayOptions);
|
||||
_libp2p: import("../");
|
||||
_peerId: PeerId;
|
||||
_peerStore: import("../peer-store");
|
||||
_connectionManager: import("../connection-manager");
|
||||
_transportManager: import("../transport-manager");
|
||||
_addressSorter: (addresses: import("../peer-store/address-book").Address[]) => import("../peer-store/address-book").Address[];
|
||||
maxListeners: number;
|
||||
/**
|
||||
* @type {Set<string>}
|
||||
*/
|
||||
_listenRelays: Set<string>;
|
||||
/**
|
||||
* Check if a peer supports the relay protocol.
|
||||
* If the protocol is not supported, check if it was supported before and remove it as a listen relay.
|
||||
* If the protocol is supported, check if the peer supports **HOP** and add it as a listener if
|
||||
* inside the threshold.
|
||||
*
|
||||
* @param {Object} props
|
||||
* @param {PeerId} props.peerId
|
||||
* @param {string[]} props.protocols
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
_onProtocolChange({ peerId, protocols }: {
|
||||
peerId: PeerId;
|
||||
protocols: string[];
|
||||
}): Promise<void>;
|
||||
/**
|
||||
* Peer disconnects.
|
||||
*
|
||||
* @param {Connection} connection - connection to the peer
|
||||
* @returns {void}
|
||||
*/
|
||||
_onPeerDisconnected(connection: Connection): void;
|
||||
/**
|
||||
* @param {Error} error
|
||||
* @param {string} [msg]
|
||||
*/
|
||||
_onError: (error: Error, msg?: string | undefined) => void;
|
||||
/**
|
||||
* Attempt to listen on the given relay connection.
|
||||
*
|
||||
* @private
|
||||
* @param {Connection} connection - connection to the peer
|
||||
* @param {string} id - peer identifier string
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
private _addListenRelay;
|
||||
/**
|
||||
* Remove listen relay.
|
||||
*
|
||||
* @private
|
||||
* @param {string} id - peer identifier string.
|
||||
* @returns {void}
|
||||
*/
|
||||
private _removeListenRelay;
|
||||
/**
|
||||
* Try to listen on available hop relay connections.
|
||||
* The following order will happen while we do not have enough relays.
|
||||
* 1. Check the metadata store for known relays, try to listen on the ones we are already connected.
|
||||
* 2. Dial and try to listen on the peers we know that support hop but are not connected.
|
||||
* 3. Search the network.
|
||||
*
|
||||
* @param {string[]} [peersToIgnore]
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
_listenOnAvailableHopRelays(peersToIgnore?: string[] | undefined): Promise<void>;
|
||||
/**
|
||||
* @param {PeerId} peerId
|
||||
*/
|
||||
_tryToListenOnRelay(peerId: PeerId): Promise<void>;
|
||||
}
|
||||
declare namespace AutoRelay {
|
||||
export { Connection, Address, AutoRelayProperties, AutoRelayOptions };
|
||||
}
|
||||
import PeerId = require("peer-id");
|
||||
type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
type AutoRelayProperties = {
|
||||
libp2p: import('../');
|
||||
};
|
||||
type AutoRelayOptions = {
|
||||
/**
|
||||
* - maximum number of relays to listen.
|
||||
*/
|
||||
maxListeners?: number | undefined;
|
||||
onError?: ((error: Error, msg?: string | undefined) => {}) | undefined;
|
||||
};
|
||||
type Address = import('../peer-store/address-book').Address;
|
||||
//# sourceMappingURL=auto-relay.d.ts.map
|
1
dist/src/circuit/auto-relay.d.ts.map
vendored
Normal file
1
dist/src/circuit/auto-relay.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"auto-relay.d.ts","sourceRoot":"","sources":["../../../src/circuit/auto-relay.js"],"names":[],"mappings":";AAsBA;;;GAGG;AAEH;;;;;;;GAOG;AAEH;IACE;;;;;OAKG;IACH,+CAFW,mBAAmB,GAAG,gBAAgB,EA+BhD;IA5BC,uBAAqB;IACrB,gBAA4B;IAC5B,oCAAkC;IAClC,oDAAkD;IAClD,kDAAgD;IAChD,8HAAiD;IAEjD,qBAAgC;IAEhC;;OAEG;IACH,eAFU,IAAI,MAAM,CAAC,CAES;IAkBhC;;;;;;;;;;OAUG;IACH;QAJyB,MAAM,EAApB,MAAM;QACU,SAAS,EAAzB,MAAM,EAAE;QACN,QAAQ,IAAI,CAAC,CAsCzB;IAED;;;;;OAKG;IACH,gCAHW,UAAU,GACR,IAAI,CAYhB;IA3EC;;;OAGG;IACH,kBAHW,KAAK,oCAMf;IAsEH;;;;;;;OAOG;IACH,wBA0BC;IAED;;;;;;OAMG;IACH,2BAKC;IAED;;;;;;;;;OASG;IACH,mEAFa,QAAQ,IAAI,CAAC,CAyEzB;IAED;;OAEG;IACH,4BAFW,MAAM,iBAShB;CACF;;;;;;;YAhQa,OAAO,KAAK,CAAC;;;;;;;uBAIL,KAAK,+BAAmB,EAAE;;eATnC,OAAO,4BAA4B,EAAE,OAAO"}
|
67
dist/src/circuit/circuit/hop.d.ts
vendored
Normal file
67
dist/src/circuit/circuit/hop.d.ts
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
export type ICircuitRelay = import('../protocol').ICircuitRelay;
|
||||
export type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
export type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
|
||||
export type Transport = import('../transport');
|
||||
export type HopRequest = {
|
||||
connection: Connection;
|
||||
request: ICircuitRelay;
|
||||
streamHandler: StreamHandler;
|
||||
circuit: Transport;
|
||||
};
|
||||
/**
|
||||
* @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
|
||||
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
|
||||
* @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
|
||||
* @typedef {import('../transport')} Transport
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} HopRequest
|
||||
* @property {Connection} connection
|
||||
* @property {ICircuitRelay} request
|
||||
* @property {StreamHandler} streamHandler
|
||||
* @property {Transport} circuit
|
||||
*/
|
||||
/**
|
||||
* @param {HopRequest} options
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
export function handleHop({ connection, request, streamHandler, circuit }: HopRequest): Promise<void>;
|
||||
/**
|
||||
* Performs a HOP request to a relay peer, to request a connection to another
|
||||
* peer. A new, virtual, connection will be created between the two via the relay.
|
||||
*
|
||||
* @param {object} options
|
||||
* @param {Connection} options.connection - Connection to the relay
|
||||
* @param {ICircuitRelay} options.request
|
||||
* @returns {Promise<MuxedStream>}
|
||||
*/
|
||||
export function hop({ connection, request }: {
|
||||
connection: Connection;
|
||||
request: ICircuitRelay;
|
||||
}): Promise<MuxedStream>;
|
||||
/**
|
||||
* Performs a CAN_HOP request to a relay peer, in order to understand its capabilities.
|
||||
*
|
||||
* @param {object} options
|
||||
* @param {Connection} options.connection - Connection to the relay
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
export function canHop({ connection }: {
|
||||
connection: Connection;
|
||||
}): Promise<boolean>;
|
||||
/**
|
||||
* Creates an unencoded CAN_HOP response based on the Circuits configuration
|
||||
*
|
||||
* @param {Object} options
|
||||
* @param {Connection} options.connection
|
||||
* @param {StreamHandler} options.streamHandler
|
||||
* @param {Transport} options.circuit
|
||||
* @private
|
||||
*/
|
||||
export function handleCanHop({ connection, streamHandler, circuit }: {
|
||||
connection: Connection;
|
||||
streamHandler: StreamHandler;
|
||||
circuit: Transport;
|
||||
}): void;
|
||||
import StreamHandler = require("./stream-handler");
|
||||
//# sourceMappingURL=hop.d.ts.map
|
1
dist/src/circuit/circuit/hop.d.ts.map
vendored
Normal file
1
dist/src/circuit/circuit/hop.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"hop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/hop.js"],"names":[],"mappings":"4BAoBa,OAAO,aAAa,EAAE,aAAa;;0BAEnC,OAAO,0CAA0C,EAAE,WAAW;wBAC9D,OAAO,cAAc,CAAC;;gBAKrB,UAAU;aACV,aAAa;mBACb,aAAa;aACb,SAAS;;AAZvB;;;;;GAKG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AACH,2EAHW,UAAU,GACR,QAAQ,IAAI,CAAC,CA4EzB;AAED;;;;;;;;GAQG;AACH;IAJ+B,UAAU,EAA9B,UAAU;IACa,OAAO,EAA9B,aAAa;IACX,QAAQ,WAAW,CAAC,CA0BhC;AAED;;;;;;GAMG;AACH;IAH+B,UAAU,EAA9B,UAAU;IACR,QAAQ,OAAO,CAAC,CAqB5B;AAED;;;;;;;;GAQG;AACH;IAL+B,UAAU,EAA9B,UAAU;IACa,aAAa,EAApC,aAAa;IACM,OAAO,EAA1B,SAAS;SAcnB"}
|
14
dist/src/circuit/circuit/stop.d.ts
vendored
Normal file
14
dist/src/circuit/circuit/stop.d.ts
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
export function handleStop({ connection, request, streamHandler }: {
|
||||
connection: Connection;
|
||||
request: ICircuitRelay;
|
||||
streamHandler: StreamHandler;
|
||||
}): Promise<MuxedStream> | void;
|
||||
export function stop({ connection, request }: {
|
||||
connection: Connection;
|
||||
request: ICircuitRelay;
|
||||
}): Promise<MuxedStream | void>;
|
||||
export type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
export type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
|
||||
export type ICircuitRelay = import('../protocol').ICircuitRelay;
|
||||
import StreamHandler = require("./stream-handler");
|
||||
//# sourceMappingURL=stop.d.ts.map
|
1
dist/src/circuit/circuit/stop.d.ts.map
vendored
Normal file
1
dist/src/circuit/circuit/stop.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stop.js"],"names":[],"mappings":"AA4B4B;IALG,UAAU,EAA9B,UAAU;IACa,OAAO,EAA9B,aAAa;IACU,aAAa,EAApC,aAAa;IACX,QAAQ,WAAW,CAAC,GAAC,IAAI,CAqBrC;AAWqB;IAJS,UAAU,EAA9B,UAAU;IACa,OAAO,EAA9B,aAAa;IACX,QAAQ,WAAW,GAAC,IAAI,CAAC,CAwBrC;;0BAlEY,OAAO,0CAA0C,EAAE,WAAW;4BAC9D,OAAO,aAAa,EAAE,aAAa"}
|
58
dist/src/circuit/circuit/stream-handler.d.ts
vendored
Normal file
58
dist/src/circuit/circuit/stream-handler.d.ts
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
export = StreamHandler;
|
||||
/**
|
||||
* @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
|
||||
* @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
|
||||
*/
|
||||
declare class StreamHandler {
|
||||
/**
|
||||
* Create a stream handler for connection
|
||||
*
|
||||
* @class
|
||||
* @param {object} options
|
||||
* @param {MuxedStream} options.stream - A duplex iterable
|
||||
* @param {number} [options.maxLength = 4096] - max bytes length of message
|
||||
*/
|
||||
constructor({ stream, maxLength }: {
|
||||
stream: MuxedStream;
|
||||
maxLength?: number | undefined;
|
||||
});
|
||||
stream: import("libp2p-interfaces/src/stream-muxer/types").MuxedStream;
|
||||
shake: any;
|
||||
decoder: AsyncGenerator<any, void, unknown>;
|
||||
/**
|
||||
* Read and decode message
|
||||
*
|
||||
* @async
|
||||
*/
|
||||
read(): Promise<CircuitRelay | undefined>;
|
||||
/**
|
||||
* Encode and write array of buffers
|
||||
*
|
||||
* @param {ICircuitRelay} msg - An unencoded CircuitRelay protobuf message
|
||||
* @returns {void}
|
||||
*/
|
||||
write(msg: ICircuitRelay): void;
|
||||
/**
|
||||
* Return the handshake rest stream and invalidate handler
|
||||
*
|
||||
* @returns {*} A duplex iterable
|
||||
*/
|
||||
rest(): any;
|
||||
/**
|
||||
* @param {ICircuitRelay} msg - An unencoded CircuitRelay protobuf message
|
||||
*/
|
||||
end(msg: ICircuitRelay): void;
|
||||
/**
|
||||
* Close the stream
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
close(): void;
|
||||
}
|
||||
declare namespace StreamHandler {
|
||||
export { MuxedStream, ICircuitRelay };
|
||||
}
|
||||
import { CircuitRelay } from "../protocol";
|
||||
type ICircuitRelay = import('../protocol').ICircuitRelay;
|
||||
type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
|
||||
//# sourceMappingURL=stream-handler.d.ts.map
|
1
dist/src/circuit/circuit/stream-handler.d.ts.map
vendored
Normal file
1
dist/src/circuit/circuit/stream-handler.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stream-handler.js"],"names":[],"mappings":";AAYA;;;GAGG;AAEH;IACE;;;;;;;OAOG;IACH;QAHgC,MAAM,EAA3B,WAAW;QACM,SAAS;OAQpC;IALC,uEAAoB;IAEpB,WAAmC;IAEnC,4CAAoF;IAGtF;;;;OAIG;IACH,0CAWC;IAED;;;;;OAKG;IACH,WAHW,aAAa,GACX,IAAI,CAMhB;IAED;;;;OAIG;IACH,YAGC;IAED;;OAEG;IACH,SAFW,aAAa,QAKvB;IAED;;;;OAIG;IACH,SAFa,IAAI,CAKhB;CACF;;;;;qBA7EY,OAAO,aAAa,EAAE,aAAa;mBADnC,OAAO,0CAA0C,EAAE,WAAW"}
|
10
dist/src/circuit/circuit/utils.d.ts
vendored
Normal file
10
dist/src/circuit/circuit/utils.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
export type StreamHandler = import('./stream-handler');
|
||||
export type ICircuitRelay = import('../protocol').ICircuitRelay;
|
||||
/**
|
||||
* Validate incomming HOP/STOP message
|
||||
*
|
||||
* @param {ICircuitRelay} msg - A CircuitRelay unencoded protobuf message
|
||||
* @param {StreamHandler} streamHandler
|
||||
*/
|
||||
export function validateAddrs(msg: ICircuitRelay, streamHandler: StreamHandler): void;
|
||||
//# sourceMappingURL=utils.d.ts.map
|
1
dist/src/circuit/circuit/utils.d.ts.map
vendored
Normal file
1
dist/src/circuit/circuit/utils.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/utils.js"],"names":[],"mappings":"4BAMa,OAAO,kBAAkB,CAAC;4BAC1B,OAAO,aAAa,EAAE,aAAa;AAgBhD;;;;;GAKG;AACH,mCAHW,aAAa,iBACb,aAAa,QA4BvB"}
|
7
dist/src/circuit/constants.d.ts
vendored
Normal file
7
dist/src/circuit/constants.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
export const ADVERTISE_BOOT_DELAY: number;
|
||||
export const ADVERTISE_TTL: number;
|
||||
export const CIRCUIT_PROTO_CODE: number;
|
||||
export const HOP_METADATA_KEY: string;
|
||||
export const HOP_METADATA_VALUE: string;
|
||||
export const RELAY_RENDEZVOUS_NS: string;
|
||||
//# sourceMappingURL=constants.d.ts.map
|
1
dist/src/circuit/constants.d.ts.map
vendored
Normal file
1
dist/src/circuit/constants.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/circuit/constants.js"],"names":[],"mappings":""}
|
85
dist/src/circuit/index.d.ts
vendored
Normal file
85
dist/src/circuit/index.d.ts
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
export = Relay;
|
||||
/**
|
||||
* @typedef {import('../')} Libp2p
|
||||
*
|
||||
* @typedef {Object} RelayAdvertiseOptions
|
||||
* @property {number} [bootDelay = ADVERTISE_BOOT_DELAY]
|
||||
* @property {boolean} [enabled = true]
|
||||
* @property {number} [ttl = ADVERTISE_TTL]
|
||||
*
|
||||
* @typedef {Object} HopOptions
|
||||
* @property {boolean} [enabled = false]
|
||||
* @property {boolean} [active = false]
|
||||
*
|
||||
* @typedef {Object} AutoRelayOptions
|
||||
* @property {number} [maxListeners = 2] - maximum number of relays to listen.
|
||||
* @property {boolean} [enabled = false]
|
||||
*/
|
||||
declare class Relay {
|
||||
/**
|
||||
* Creates an instance of Relay.
|
||||
*
|
||||
* @class
|
||||
* @param {Libp2p} libp2p
|
||||
*/
|
||||
constructor(libp2p: Libp2p);
|
||||
_libp2p: import("../");
|
||||
_options: {
|
||||
enabled: boolean;
|
||||
advertise: {
|
||||
bootDelay: number;
|
||||
enabled: boolean;
|
||||
ttl: number;
|
||||
} & RelayAdvertiseOptions;
|
||||
hop: {
|
||||
enabled: boolean;
|
||||
active: boolean;
|
||||
} & HopOptions;
|
||||
autoRelay: {
|
||||
enabled: boolean;
|
||||
maxListeners: number;
|
||||
} & AutoRelayOptions;
|
||||
};
|
||||
_autoRelay: false | AutoRelay;
|
||||
/**
|
||||
* Advertise hop relay service in the network.
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
_advertiseService(): Promise<void>;
|
||||
/**
|
||||
* Start Relay service.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
start(): void;
|
||||
_timeout: any;
|
||||
/**
|
||||
* Stop Relay service.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
stop(): void;
|
||||
}
|
||||
declare namespace Relay {
|
||||
export { Libp2p, RelayAdvertiseOptions, HopOptions, AutoRelayOptions };
|
||||
}
|
||||
type RelayAdvertiseOptions = {
|
||||
bootDelay?: number | undefined;
|
||||
enabled?: boolean | undefined;
|
||||
ttl?: number | undefined;
|
||||
};
|
||||
type HopOptions = {
|
||||
enabled?: boolean | undefined;
|
||||
active?: boolean | undefined;
|
||||
};
|
||||
type AutoRelayOptions = {
|
||||
/**
|
||||
* - maximum number of relays to listen.
|
||||
*/
|
||||
maxListeners?: number | undefined;
|
||||
enabled?: boolean | undefined;
|
||||
};
|
||||
import AutoRelay = require("./auto-relay");
|
||||
type Libp2p = import('../');
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/circuit/index.d.ts.map
vendored
Normal file
1
dist/src/circuit/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/circuit/index.js"],"names":[],"mappings":";AAmBA;;;;;;;;;;;;;;;GAeG;AAEH;IACE;;;;;OAKG;IACH,oBAFW,MAAM,EAYhB;IATC,uBAAqB;IACrB;;;;;;;;;;;;;;;MAEC;IAGD,8BAA0G;IA8B5G;;;;OAIG;IACH,qBAFa,QAAQ,IAAI,CAAC,CAezB;IA3CD;;;;OAIG;IACH,SAFa,IAAI,CAWhB;IAJG,cAEC;IAIL;;;;OAIG;IACH,QAFa,IAAI,CAIhB;CAqBF;;;;;;;;;;;;;;;;;;;;;cA/EY,OAAO,KAAK,CAAC"}
|
4
dist/src/circuit/listener.d.ts
vendored
Normal file
4
dist/src/circuit/listener.d.ts
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
declare function _exports(libp2p: import('../')): Listener;
|
||||
export = _exports;
|
||||
export type Listener = import('libp2p-interfaces/src/transport/types').Listener;
|
||||
//# sourceMappingURL=listener.d.ts.map
|
1
dist/src/circuit/listener.d.ts.map
vendored
Normal file
1
dist/src/circuit/listener.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/circuit/listener.js"],"names":[],"mappings":"AAaiB,kCAHN,OAAO,KAAK,CAAC,GACX,QAAQ,CA+DpB;;uBApEY,OAAO,uCAAuC,EAAE,QAAQ"}
|
2
dist/src/circuit/multicodec.d.ts
vendored
Normal file
2
dist/src/circuit/multicodec.d.ts
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export const relay: string;
|
||||
//# sourceMappingURL=multicodec.d.ts.map
|
1
dist/src/circuit/multicodec.d.ts.map
vendored
Normal file
1
dist/src/circuit/multicodec.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"multicodec.d.ts","sourceRoot":"","sources":["../../../src/circuit/multicodec.js"],"names":[],"mappings":""}
|
173
dist/src/circuit/protocol/index.d.ts
vendored
Normal file
173
dist/src/circuit/protocol/index.d.ts
vendored
Normal file
@@ -0,0 +1,173 @@
|
||||
import * as $protobuf from "protobufjs";
|
||||
/** Properties of a CircuitRelay. */
|
||||
export interface ICircuitRelay {
|
||||
|
||||
/** CircuitRelay type */
|
||||
type?: (CircuitRelay.Type|null);
|
||||
|
||||
/** CircuitRelay srcPeer */
|
||||
srcPeer?: (CircuitRelay.IPeer|null);
|
||||
|
||||
/** CircuitRelay dstPeer */
|
||||
dstPeer?: (CircuitRelay.IPeer|null);
|
||||
|
||||
/** CircuitRelay code */
|
||||
code?: (CircuitRelay.Status|null);
|
||||
}
|
||||
|
||||
/** Represents a CircuitRelay. */
|
||||
export class CircuitRelay implements ICircuitRelay {
|
||||
|
||||
/**
|
||||
* Constructs a new CircuitRelay.
|
||||
* @param [p] Properties to set
|
||||
*/
|
||||
constructor(p?: ICircuitRelay);
|
||||
|
||||
/** CircuitRelay type. */
|
||||
public type: CircuitRelay.Type;
|
||||
|
||||
/** CircuitRelay srcPeer. */
|
||||
public srcPeer?: (CircuitRelay.IPeer|null);
|
||||
|
||||
/** CircuitRelay dstPeer. */
|
||||
public dstPeer?: (CircuitRelay.IPeer|null);
|
||||
|
||||
/** CircuitRelay code. */
|
||||
public code: CircuitRelay.Status;
|
||||
|
||||
/**
|
||||
* Encodes the specified CircuitRelay message. Does not implicitly {@link CircuitRelay.verify|verify} messages.
|
||||
* @param m CircuitRelay message or plain object to encode
|
||||
* @param [w] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(m: ICircuitRelay, w?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes a CircuitRelay message from the specified reader or buffer.
|
||||
* @param r Reader or buffer to decode from
|
||||
* @param [l] Message length if known beforehand
|
||||
* @returns CircuitRelay
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): CircuitRelay;
|
||||
|
||||
/**
|
||||
* Creates a CircuitRelay message from a plain object. Also converts values to their respective internal types.
|
||||
* @param d Plain object
|
||||
* @returns CircuitRelay
|
||||
*/
|
||||
public static fromObject(d: { [k: string]: any }): CircuitRelay;
|
||||
|
||||
/**
|
||||
* Creates a plain object from a CircuitRelay message. Also converts values to other types if specified.
|
||||
* @param m CircuitRelay
|
||||
* @param [o] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(m: CircuitRelay, o?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this CircuitRelay to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
|
||||
export namespace CircuitRelay {
|
||||
|
||||
/** Status enum. */
|
||||
enum Status {
|
||||
SUCCESS = 100,
|
||||
HOP_SRC_ADDR_TOO_LONG = 220,
|
||||
HOP_DST_ADDR_TOO_LONG = 221,
|
||||
HOP_SRC_MULTIADDR_INVALID = 250,
|
||||
HOP_DST_MULTIADDR_INVALID = 251,
|
||||
HOP_NO_CONN_TO_DST = 260,
|
||||
HOP_CANT_DIAL_DST = 261,
|
||||
HOP_CANT_OPEN_DST_STREAM = 262,
|
||||
HOP_CANT_SPEAK_RELAY = 270,
|
||||
HOP_CANT_RELAY_TO_SELF = 280,
|
||||
STOP_SRC_ADDR_TOO_LONG = 320,
|
||||
STOP_DST_ADDR_TOO_LONG = 321,
|
||||
STOP_SRC_MULTIADDR_INVALID = 350,
|
||||
STOP_DST_MULTIADDR_INVALID = 351,
|
||||
STOP_RELAY_REFUSED = 390,
|
||||
MALFORMED_MESSAGE = 400
|
||||
}
|
||||
|
||||
/** Type enum. */
|
||||
enum Type {
|
||||
HOP = 1,
|
||||
STOP = 2,
|
||||
STATUS = 3,
|
||||
CAN_HOP = 4
|
||||
}
|
||||
|
||||
/** Properties of a Peer. */
|
||||
interface IPeer {
|
||||
|
||||
/** Peer id */
|
||||
id: Uint8Array;
|
||||
|
||||
/** Peer addrs */
|
||||
addrs?: (Uint8Array[]|null);
|
||||
}
|
||||
|
||||
/** Represents a Peer. */
|
||||
class Peer implements IPeer {
|
||||
|
||||
/**
|
||||
* Constructs a new Peer.
|
||||
* @param [p] Properties to set
|
||||
*/
|
||||
constructor(p?: CircuitRelay.IPeer);
|
||||
|
||||
/** Peer id. */
|
||||
public id: Uint8Array;
|
||||
|
||||
/** Peer addrs. */
|
||||
public addrs: Uint8Array[];
|
||||
|
||||
/**
|
||||
* Encodes the specified Peer message. Does not implicitly {@link CircuitRelay.Peer.verify|verify} messages.
|
||||
* @param m Peer message or plain object to encode
|
||||
* @param [w] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(m: CircuitRelay.IPeer, w?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes a Peer message from the specified reader or buffer.
|
||||
* @param r Reader or buffer to decode from
|
||||
* @param [l] Message length if known beforehand
|
||||
* @returns Peer
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): CircuitRelay.Peer;
|
||||
|
||||
/**
|
||||
* Creates a Peer message from a plain object. Also converts values to their respective internal types.
|
||||
* @param d Plain object
|
||||
* @returns Peer
|
||||
*/
|
||||
public static fromObject(d: { [k: string]: any }): CircuitRelay.Peer;
|
||||
|
||||
/**
|
||||
* Creates a plain object from a Peer message. Also converts values to other types if specified.
|
||||
* @param m Peer
|
||||
* @param [o] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(m: CircuitRelay.Peer, o?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this Peer to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
}
|
93
dist/src/circuit/transport.d.ts
vendored
Normal file
93
dist/src/circuit/transport.d.ts
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
export = Circuit;
|
||||
/**
|
||||
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
|
||||
* @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
|
||||
*/
|
||||
declare class Circuit {
|
||||
/**
|
||||
* Checks if the given value is a Transport instance.
|
||||
*
|
||||
* @param {any} other
|
||||
* @returns {other is Transport}
|
||||
*/
|
||||
static isTransport(other: any): other is Transport;
|
||||
/**
|
||||
* Creates an instance of the Circuit Transport.
|
||||
*
|
||||
* @class
|
||||
* @param {object} options
|
||||
* @param {import('../')} options.libp2p
|
||||
* @param {import('../upgrader')} options.upgrader
|
||||
*/
|
||||
constructor({ libp2p, upgrader }: {
|
||||
libp2p: import('../');
|
||||
upgrader: import('../upgrader');
|
||||
});
|
||||
_dialer: import("../dialer");
|
||||
_registrar: import("../registrar");
|
||||
_connectionManager: import("../connection-manager");
|
||||
_upgrader: import("../upgrader");
|
||||
_options: {
|
||||
enabled: boolean;
|
||||
advertise: {
|
||||
bootDelay: number;
|
||||
enabled: boolean;
|
||||
ttl: number;
|
||||
};
|
||||
hop: {
|
||||
enabled: boolean;
|
||||
active: boolean;
|
||||
};
|
||||
autoRelay: {
|
||||
enabled: boolean;
|
||||
maxListeners: number;
|
||||
};
|
||||
} & import("../").RelayOptions;
|
||||
_libp2p: import("../");
|
||||
peerId: PeerId;
|
||||
/**
|
||||
* @param {Object} props
|
||||
* @param {Connection} props.connection
|
||||
* @param {MuxedStream} props.stream
|
||||
*/
|
||||
_onProtocol({ connection, stream }: {
|
||||
connection: Connection;
|
||||
stream: MuxedStream;
|
||||
}): Promise<void>;
|
||||
/**
|
||||
* Dial a peer over a relay
|
||||
*
|
||||
* @param {Multiaddr} ma - the multiaddr of the peer to dial
|
||||
* @param {Object} options - dial options
|
||||
* @param {AbortSignal} [options.signal] - An optional abort signal
|
||||
* @returns {Promise<Connection>} - the connection
|
||||
*/
|
||||
dial(ma: Multiaddr, options: {
|
||||
signal?: AbortSignal | undefined;
|
||||
}): Promise<Connection>;
|
||||
/**
|
||||
* Create a listener
|
||||
*
|
||||
* @param {any} options
|
||||
* @param {Function} handler
|
||||
* @returns {import('libp2p-interfaces/src/transport/types').Listener}
|
||||
*/
|
||||
createListener(options: any, handler: Function): import('libp2p-interfaces/src/transport/types').Listener;
|
||||
handler: Function | undefined;
|
||||
/**
|
||||
* Filter check for all Multiaddrs that this transport can dial on
|
||||
*
|
||||
* @param {Multiaddr[]} multiaddrs
|
||||
* @returns {Multiaddr[]}
|
||||
*/
|
||||
filter(multiaddrs: Multiaddr[]): Multiaddr[];
|
||||
get [Symbol.toStringTag](): string;
|
||||
}
|
||||
declare namespace Circuit {
|
||||
export { Connection, MuxedStream };
|
||||
}
|
||||
import PeerId = require("peer-id");
|
||||
type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
|
||||
import { Multiaddr } from "multiaddr";
|
||||
//# sourceMappingURL=transport.d.ts.map
|
1
dist/src/circuit/transport.d.ts.map
vendored
Normal file
1
dist/src/circuit/transport.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/circuit/transport.js"],"names":[],"mappings":";AAwBA;;;GAGG;AAEH;IA4LE;;;;;OAKG;IACH,0BAHW,GAAG,sBAKb;IAnMD;;;;;;;OAOG;IACH;QAHkC,MAAM,EAA7B,OAAO,KAAK,CAAC;QACkB,QAAQ,EAAvC,OAAO,aAAa,CAAC;OAY/B;IATC,6BAA4B;IAC5B,mCAAkC;IAClC,oDAAkD;IAClD,iCAAyB;IACzB;;;;;;;;;;;;;;;mCAAoC;IACpC,uBAAqB;IACrB,eAA2B;IAK7B;;;;OAIG;IACH;QAH6B,UAAU,EAA5B,UAAU;QACS,MAAM,EAAzB,WAAW;sBA6DrB;IAED;;;;;;;OAOG;IACH,SALW,SAAS;QAEa,MAAM;QAC1B,QAAQ,UAAU,CAAC,CAwD/B;IAED;;;;;;OAMG;IACH,wBAJW,GAAG,sBAED,OAAO,uCAAuC,EAAE,QAAQ,CAYpE;IAHC,8BAAsB;IAKxB;;;;;OAKG;IACH,mBAHW,SAAS,EAAE,GACT,SAAS,EAAE,CAQvB;IAED,mCAEC;CAWF;;;;;;mBAxMY,OAAO,0CAA0C,EAAE,WAAW"}
|
3
dist/src/circuit/utils.d.ts
vendored
Normal file
3
dist/src/circuit/utils.d.ts
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export function namespaceToCid(namespace: string): Promise<CID>;
|
||||
import CID = require("cids");
|
||||
//# sourceMappingURL=utils.d.ts.map
|
1
dist/src/circuit/utils.d.ts.map
vendored
Normal file
1
dist/src/circuit/utils.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/circuit/utils.js"],"names":[],"mappings":"AAagC,0CAHrB,MAAM,GACJ,QAAQ,GAAG,CAAC,CAOxB"}
|
90
dist/src/config.d.ts
vendored
Normal file
90
dist/src/config.d.ts
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
export function validate(opts: Libp2pOptions): {
|
||||
addresses: {
|
||||
listen: never[];
|
||||
announce: never[];
|
||||
noAnnounce: never[];
|
||||
announceFilter: (multiaddrs: Multiaddr[]) => import("multiaddr").Multiaddr[];
|
||||
};
|
||||
connectionManager: {
|
||||
minConnections: number;
|
||||
};
|
||||
transportManager: {
|
||||
faultTolerance: number;
|
||||
};
|
||||
dialer: {
|
||||
maxParallelDials: number;
|
||||
maxDialsPerPeer: number;
|
||||
dialTimeout: number;
|
||||
resolvers: {
|
||||
dnsaddr: any;
|
||||
};
|
||||
addressSorter: typeof publicAddressesFirst;
|
||||
};
|
||||
host: {
|
||||
agentVersion: string;
|
||||
};
|
||||
metrics: {
|
||||
enabled: boolean;
|
||||
};
|
||||
peerStore: {
|
||||
persistence: boolean;
|
||||
threshold: number;
|
||||
};
|
||||
peerRouting: {
|
||||
refreshManager: {
|
||||
enabled: boolean;
|
||||
interval: number;
|
||||
bootDelay: number;
|
||||
};
|
||||
};
|
||||
config: {
|
||||
dht: {
|
||||
enabled: boolean;
|
||||
kBucketSize: number;
|
||||
randomWalk: {
|
||||
enabled: boolean;
|
||||
queriesPerPeriod: number;
|
||||
interval: number;
|
||||
timeout: number;
|
||||
};
|
||||
};
|
||||
nat: {
|
||||
enabled: boolean;
|
||||
ttl: number;
|
||||
keepAlive: boolean;
|
||||
gateway: null;
|
||||
externalIp: null;
|
||||
pmp: {
|
||||
enabled: boolean;
|
||||
};
|
||||
};
|
||||
peerDiscovery: {
|
||||
autoDial: boolean;
|
||||
};
|
||||
pubsub: {
|
||||
enabled: boolean;
|
||||
};
|
||||
relay: {
|
||||
enabled: boolean;
|
||||
advertise: {
|
||||
bootDelay: number;
|
||||
enabled: boolean;
|
||||
ttl: number;
|
||||
};
|
||||
hop: {
|
||||
enabled: boolean;
|
||||
active: boolean;
|
||||
};
|
||||
autoRelay: {
|
||||
enabled: boolean;
|
||||
maxListeners: number;
|
||||
};
|
||||
};
|
||||
transport: {};
|
||||
};
|
||||
} & Libp2pOptions & constructorOptions;
|
||||
export type Multiaddr = import('multiaddr').Multiaddr;
|
||||
export type Libp2pOptions = import('.').Libp2pOptions;
|
||||
export type constructorOptions = import('.').constructorOptions;
|
||||
import { publicAddressesFirst } from "libp2p-utils/src/address-sort";
|
||||
//# sourceMappingURL=config.d.ts.map
|
1
dist/src/config.d.ts.map
vendored
Normal file
1
dist/src/config.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.js"],"names":[],"mappings":"AA6G0B,+BAHf,aAAa,GACX;;;;;qCAnFmB,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmFd,aAAa,GAAG,kBAAkB,CAS9D;wBAtGY,OAAO,WAAW,EAAE,SAAS;4BAC7B,OAAO,GAAG,EAAE,aAAa;iCACzB,OAAO,GAAG,EAAE,kBAAkB"}
|
204
dist/src/connection-manager/index.d.ts
vendored
Normal file
204
dist/src/connection-manager/index.d.ts
vendored
Normal file
@@ -0,0 +1,204 @@
|
||||
export = ConnectionManager;
|
||||
/**
|
||||
* @typedef {import('../')} Libp2p
|
||||
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} ConnectionManagerOptions
|
||||
* @property {number} [maxConnections = Infinity] - The maximum number of connections allowed.
|
||||
* @property {number} [minConnections = 0] - The minimum number of connections to avoid pruning.
|
||||
* @property {number} [maxData = Infinity] - The max data (in and out), per average interval to allow.
|
||||
* @property {number} [maxSentData = Infinity] - The max outgoing data, per average interval to allow.
|
||||
* @property {number} [maxReceivedData = Infinity] - The max incoming data, per average interval to allow.
|
||||
* @property {number} [maxEventLoopDelay = Infinity] - The upper limit the event loop can take to run.
|
||||
* @property {number} [pollInterval = 2000] - How often, in milliseconds, metrics and latency should be checked.
|
||||
* @property {number} [movingAverageInterval = 60000] - How often, in milliseconds, to compute averages.
|
||||
* @property {number} [defaultPeerValue = 1] - The value of the peer.
|
||||
* @property {boolean} [autoDial = true] - Should preemptively guarantee connections are above the low watermark.
|
||||
* @property {number} [autoDialInterval = 10000] - How often, in milliseconds, it should preemptively guarantee connections are above the low watermark.
|
||||
*/
|
||||
/**
|
||||
*
|
||||
* @fires ConnectionManager#peer:connect Emitted when a new peer is connected.
|
||||
* @fires ConnectionManager#peer:disconnect Emitted when a peer is disconnected.
|
||||
*/
|
||||
declare class ConnectionManager extends EventEmitter {
|
||||
/**
|
||||
* Responsible for managing known connections.
|
||||
*
|
||||
* @class
|
||||
* @param {Libp2p} libp2p
|
||||
* @param {ConnectionManagerOptions} options
|
||||
*/
|
||||
constructor(libp2p: Libp2p, options?: ConnectionManagerOptions);
|
||||
_libp2p: import("../");
|
||||
_peerId: string;
|
||||
_options: any;
|
||||
/**
|
||||
* Map of peer identifiers to their peer value for pruning connections.
|
||||
*
|
||||
* @type {Map<string, number>}
|
||||
*/
|
||||
_peerValues: Map<string, number>;
|
||||
/**
|
||||
* Map of connections per peer
|
||||
*
|
||||
* @type {Map<string, Connection[]>}
|
||||
*/
|
||||
connections: Map<string, Connection[]>;
|
||||
_started: boolean;
|
||||
_timer: any;
|
||||
_autoDialTimeout: any;
|
||||
/**
|
||||
* Checks the libp2p metrics to determine if any values have exceeded
|
||||
* the configured maximums.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _checkMetrics;
|
||||
/**
|
||||
* Proactively tries to connect to known peers stored in the PeerStore.
|
||||
* It will keep the number of connections below the upper limit and sort
|
||||
* the peers to connect based on wether we know their keys and protocols.
|
||||
*
|
||||
* @async
|
||||
* @private
|
||||
*/
|
||||
private _autoDial;
|
||||
/**
|
||||
* Get current number of open connections.
|
||||
*/
|
||||
get size(): number;
|
||||
/**
|
||||
* Starts the Connection Manager. If Metrics are not enabled on libp2p
|
||||
* only event loop and connection limits will be monitored.
|
||||
*/
|
||||
start(): void;
|
||||
_latencyMonitor: LatencyMonitor | undefined;
|
||||
/**
|
||||
* If the event loop is slow, maybe close a connection
|
||||
*
|
||||
* @private
|
||||
* @param {*} summary - The LatencyMonitor summary
|
||||
*/
|
||||
private _onLatencyMeasure;
|
||||
/**
|
||||
* Stops the Connection Manager
|
||||
*
|
||||
* @async
|
||||
*/
|
||||
stop(): Promise<void>;
|
||||
/**
|
||||
* Cleans up the connections
|
||||
*
|
||||
* @async
|
||||
*/
|
||||
_close(): Promise<void>;
|
||||
/**
|
||||
* Sets the value of the given peer. Peers with lower values
|
||||
* will be disconnected first.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @param {number} value - A number between 0 and 1
|
||||
* @returns {void}
|
||||
*/
|
||||
setPeerValue(peerId: PeerId, value: number): void;
|
||||
/**
|
||||
* Tracks the incoming connection and check the connection limit
|
||||
*
|
||||
* @param {Connection} connection
|
||||
* @returns {void}
|
||||
*/
|
||||
onConnect(connection: Connection): void;
|
||||
/**
|
||||
* Removes the connection from tracking
|
||||
*
|
||||
* @param {Connection} connection
|
||||
* @returns {void}
|
||||
*/
|
||||
onDisconnect(connection: Connection): void;
|
||||
/**
|
||||
* Get a connection with a peer.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @returns {Connection|null}
|
||||
*/
|
||||
get(peerId: PeerId): Connection | null;
|
||||
/**
|
||||
* Get all open connections with a peer.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @returns {Connection[]}
|
||||
*/
|
||||
getAll(peerId: PeerId): Connection[];
|
||||
/**
|
||||
* If the `value` of `name` has exceeded its limit, maybe close a connection
|
||||
*
|
||||
* @private
|
||||
* @param {string} name - The name of the field to check limits for
|
||||
* @param {number} value - The current value of the field
|
||||
*/
|
||||
private _checkMaxLimit;
|
||||
/**
|
||||
* If we have more connections than our maximum, close a connection
|
||||
* to the lowest valued peer.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _maybeDisconnectOne;
|
||||
}
|
||||
declare namespace ConnectionManager {
|
||||
export { Libp2p, Connection, ConnectionManagerOptions };
|
||||
}
|
||||
import { EventEmitter } from "events";
|
||||
type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
import LatencyMonitor = require("./latency-monitor");
|
||||
import PeerId = require("peer-id");
|
||||
type Libp2p = import('../');
|
||||
type ConnectionManagerOptions = {
|
||||
/**
|
||||
* - The maximum number of connections allowed.
|
||||
*/
|
||||
maxConnections?: number | undefined;
|
||||
/**
|
||||
* - The minimum number of connections to avoid pruning.
|
||||
*/
|
||||
minConnections?: number | undefined;
|
||||
/**
|
||||
* - The max data (in and out), per average interval to allow.
|
||||
*/
|
||||
maxData?: number | undefined;
|
||||
/**
|
||||
* - The max outgoing data, per average interval to allow.
|
||||
*/
|
||||
maxSentData?: number | undefined;
|
||||
/**
|
||||
* - The max incoming data, per average interval to allow.
|
||||
*/
|
||||
maxReceivedData?: number | undefined;
|
||||
/**
|
||||
* - The upper limit the event loop can take to run.
|
||||
*/
|
||||
maxEventLoopDelay?: number | undefined;
|
||||
/**
|
||||
* - How often, in milliseconds, metrics and latency should be checked.
|
||||
*/
|
||||
pollInterval?: number | undefined;
|
||||
/**
|
||||
* - How often, in milliseconds, to compute averages.
|
||||
*/
|
||||
movingAverageInterval?: number | undefined;
|
||||
/**
|
||||
* - The value of the peer.
|
||||
*/
|
||||
defaultPeerValue?: number | undefined;
|
||||
/**
|
||||
* - Should preemptively guarantee connections are above the low watermark.
|
||||
*/
|
||||
autoDial?: boolean | undefined;
|
||||
/**
|
||||
* - How often, in milliseconds, it should preemptively guarantee connections are above the low watermark.
|
||||
*/
|
||||
autoDialInterval?: number | undefined;
|
||||
};
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/connection-manager/index.d.ts.map
vendored
Normal file
1
dist/src/connection-manager/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/index.js"],"names":[],"mappings":";AAkCA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH;;;;GAIG;AACH;IACE;;;;;;OAMG;IACH,oBAHW,MAAM,YACN,wBAAwB,EAkClC;IA7BC,uBAAqB;IACrB,gBAA0C;IAE1C,cAAqF;IAOrF;;;;OAIG;IACH,aAFU,IAAI,MAAM,EAAE,MAAM,CAAC,CAED;IAE5B;;;;OAIG;IACH,aAFU,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC,CAEP;IAE5B,kBAAqB;IACrB,YAAkB;IAClB,sBAA4B;IAoF9B;;;;;OAKG;IACH,sBAcC;IA8GD;;;;;;;OAOG;IACH,kBAqCC;IA9PD;;OAEG;IACH,mBAGC;IAED;;;OAGG;IACH,cAiBC;IAXC,4CAGE;IAkKJ;;;;;OAKG;IACH,0BAEC;IAhKD;;;;OAIG;IACH,sBAQC;IAED;;;;OAIG;IACH,wBAWC;IAED;;;;;;;OAOG;IACH,qBAJW,MAAM,SACN,MAAM,GACJ,IAAI,CAOhB;IAwBD;;;;;OAKG;IACH,sBAHW,UAAU,GACR,IAAI,CAqBhB;IAED;;;;;OAKG;IACH,yBAHW,UAAU,GACR,IAAI,CAchB;IAED;;;;;OAKG;IACH,YAHW,MAAM,GACJ,UAAU,GAAC,IAAI,CAQ3B;IAED;;;;;OAKG;IACH,eAHW,MAAM,GACJ,UAAU,EAAE,CAexB;IAYD;;;;;;OAMG;IACH,uBAOC;IAiDD;;;;;OAKG;IACH,4BAiBC;CACF;;;;;;;;cA1VY,OAAO,KAAK,CAAC"}
|
139
dist/src/connection-manager/latency-monitor.d.ts
vendored
Normal file
139
dist/src/connection-manager/latency-monitor.d.ts
vendored
Normal file
@@ -0,0 +1,139 @@
|
||||
export = LatencyMonitor;
|
||||
/**
|
||||
* @typedef {Object} SummaryObject
|
||||
* @property {number} events How many events were called
|
||||
* @property {number} minMS What was the min time for a cb to be called
|
||||
* @property {number} maxMS What was the max time for a cb to be called
|
||||
* @property {number} avgMs What was the average time for a cb to be called
|
||||
* @property {number} lengthMs How long this interval was in ms
|
||||
*
|
||||
* @typedef {Object} LatencyMonitorOptions
|
||||
* @property {number} [latencyCheckIntervalMs=500] - How often to add a latency check event (ms)
|
||||
* @property {number} [dataEmitIntervalMs=5000] - How often to summarize latency check events. null or 0 disables event firing
|
||||
* @property {Function} [asyncTestFn] - What cb-style async function to use
|
||||
* @property {number} [latencyRandomPercentage=5] - What percent (+/-) of latencyCheckIntervalMs should we randomly use? This helps avoid alignment to other events.
|
||||
*/
|
||||
/**
|
||||
* A class to monitor latency of any async function which works in a browser or node. This works by periodically calling
|
||||
* the asyncTestFn and timing how long it takes the callback to be called. It can also periodically emit stats about this.
|
||||
* This can be disabled and stats can be pulled via setting dataEmitIntervalMs = 0.
|
||||
*
|
||||
* @extends {EventEmitter}
|
||||
*
|
||||
* The default implementation is an event loop latency monitor. This works by firing periodic events into the event loop
|
||||
* and timing how long it takes to get back.
|
||||
*
|
||||
* @example
|
||||
* const monitor = new LatencyMonitor();
|
||||
* monitor.on('data', (summary) => console.log('Event Loop Latency: %O', summary));
|
||||
*
|
||||
* @example
|
||||
* const monitor = new LatencyMonitor({latencyCheckIntervalMs: 1000, dataEmitIntervalMs: 60000, asyncTestFn:ping});
|
||||
* monitor.on('data', (summary) => console.log('Ping Pong Latency: %O', summary));
|
||||
*/
|
||||
declare class LatencyMonitor extends EventEmitter {
|
||||
/**
|
||||
* @class
|
||||
* @param {LatencyMonitorOptions} [options]
|
||||
*/
|
||||
constructor({ latencyCheckIntervalMs, dataEmitIntervalMs, asyncTestFn, latencyRandomPercentage }?: LatencyMonitorOptions | undefined);
|
||||
latencyCheckIntervalMs: number;
|
||||
latencyRandomPercentage: number;
|
||||
_latecyCheckMultiply: number;
|
||||
_latecyCheckSubtract: number;
|
||||
dataEmitIntervalMs: number | undefined;
|
||||
asyncTestFn: Function | undefined;
|
||||
_latencyData: {
|
||||
startTime: any;
|
||||
minMs: number;
|
||||
maxMs: number;
|
||||
events: number;
|
||||
totalMs: number;
|
||||
};
|
||||
/**
|
||||
* Start internal timers
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _startTimers;
|
||||
_emitIntervalID: NodeJS.Timeout | undefined;
|
||||
/**
|
||||
* Stop internal timers
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _stopTimers;
|
||||
_checkLatencyID: NodeJS.Timeout | undefined;
|
||||
/**
|
||||
* Emit summary only if there were events. It might not have any events if it was forced via a page hidden/show
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _emitSummary;
|
||||
/**
|
||||
* Calling this function will end the collection period. If a timing event was already fired and somewhere in the queue,
|
||||
* it will not count for this time period
|
||||
*
|
||||
* @returns {SummaryObject}
|
||||
*/
|
||||
getSummary(): SummaryObject;
|
||||
/**
|
||||
* Randomly calls an async fn every roughly latencyCheckIntervalMs (plus some randomness). If no async fn is found,
|
||||
* it will simply report on event loop latency.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _checkLatency;
|
||||
_initLatencyData(): {
|
||||
startTime: any;
|
||||
minMs: number;
|
||||
maxMs: number;
|
||||
events: number;
|
||||
totalMs: number;
|
||||
};
|
||||
}
|
||||
declare namespace LatencyMonitor {
|
||||
export { SummaryObject, LatencyMonitorOptions };
|
||||
}
|
||||
import { EventEmitter } from "events";
|
||||
type SummaryObject = {
|
||||
/**
|
||||
* How many events were called
|
||||
*/
|
||||
events: number;
|
||||
/**
|
||||
* What was the min time for a cb to be called
|
||||
*/
|
||||
minMS: number;
|
||||
/**
|
||||
* What was the max time for a cb to be called
|
||||
*/
|
||||
maxMS: number;
|
||||
/**
|
||||
* What was the average time for a cb to be called
|
||||
*/
|
||||
avgMs: number;
|
||||
/**
|
||||
* How long this interval was in ms
|
||||
*/
|
||||
lengthMs: number;
|
||||
};
|
||||
type LatencyMonitorOptions = {
|
||||
/**
|
||||
* - How often to add a latency check event (ms)
|
||||
*/
|
||||
latencyCheckIntervalMs?: number | undefined;
|
||||
/**
|
||||
* - How often to summarize latency check events. null or 0 disables event firing
|
||||
*/
|
||||
dataEmitIntervalMs?: number | undefined;
|
||||
/**
|
||||
* - What cb-style async function to use
|
||||
*/
|
||||
asyncTestFn?: Function | undefined;
|
||||
/**
|
||||
* - What percent (+/-) of latencyCheckIntervalMs should we randomly use? This helps avoid alignment to other events.
|
||||
*/
|
||||
latencyRandomPercentage?: number | undefined;
|
||||
};
|
||||
//# sourceMappingURL=latency-monitor.d.ts.map
|
1
dist/src/connection-manager/latency-monitor.d.ts.map
vendored
Normal file
1
dist/src/connection-manager/latency-monitor.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"latency-monitor.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/latency-monitor.js"],"names":[],"mappings":";AAWA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH;IACE;;;OAGG;IACH,sIA+DC;IA1DC,+BAA2D;IAC3D,gCAA4D;IAC5D,6BAAoG;IACpG,6BAAyD;IAEzD,uCAEkC;IASlC,kCAA8B;IAqB9B;;;;;;MAA2C;IAuB7C;;;;OAIG;IACH,qBAYC;IALG,4CAAsF;IAO1F;;;;OAIG;IACH,oBASC;IANG,4CAAgC;IAQpC;;;;OAIG;IACH,qBAKC;IAED;;;;;OAKG;IACH,cAFa,aAAa,CAmBzB;IAED;;;;;OAKG;IACH,sBAgDC;IAED;;;;;;MAQC;CACF;;;;;;;;;YA9Oa,MAAM;;;;WACN,MAAM;;;;WACN,MAAM;;;;WACN,MAAM;;;;cACN,MAAM"}
|
67
dist/src/connection-manager/visibility-change-emitter.d.ts
vendored
Normal file
67
dist/src/connection-manager/visibility-change-emitter.d.ts
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
export = VisibilityChangeEmitter;
|
||||
/**
|
||||
* Listen to page visibility change events (i.e. when the page is focused / blurred) by an event emitter.
|
||||
*
|
||||
* Warning: This does not work on all browsers, but should work on all modern browsers
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* const myVisibilityEmitter = new VisibilityChangeEmitter();
|
||||
*
|
||||
* myVisibilityEmitter.on('visibilityChange', (pageInFocus) => {
|
||||
* if ( pageInFocus ){
|
||||
* // Page is in focus
|
||||
* console.log('In focus');
|
||||
* }
|
||||
* else {
|
||||
* // Page is blurred
|
||||
* console.log('Out of focus');
|
||||
* }
|
||||
* });
|
||||
* // To access the visibility state directly, call:
|
||||
* console.log('Am I focused now? ' + myVisibilityEmitter.isVisible());
|
||||
*/
|
||||
declare class VisibilityChangeEmitter extends EventEmitter {
|
||||
/**
|
||||
* Creates a VisibilityChangeEmitter
|
||||
*
|
||||
* @class
|
||||
*/
|
||||
constructor();
|
||||
/**
|
||||
* document.hidden and document.visibilityChange are the two variables we need to check for;
|
||||
* Since these variables are named differently in different browsers, this function sets
|
||||
* the appropriate name based on the browser being used. Once executed, tha actual names of
|
||||
* document.hidden and document.visibilityChange are found in this._hidden and this._visibilityChange
|
||||
* respectively
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _initializeVisibilityVarNames;
|
||||
_hidden: string | undefined;
|
||||
_visibilityChange: string | undefined;
|
||||
/**
|
||||
* Adds an event listener on the document that listens to changes in document.visibilityChange
|
||||
* (or whatever name by which the visibilityChange variable is known in the browser)
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _addVisibilityChangeListener;
|
||||
/**
|
||||
* The function returns ```true``` if the page is visible or ```false``` if the page is not visible and
|
||||
* ```undefined``` if the page visibility API is not supported by the browser.
|
||||
*
|
||||
* @returns {boolean | void} whether the page is now visible or not (undefined is unknown)
|
||||
*/
|
||||
isVisible(): boolean | void;
|
||||
/**
|
||||
* The function that is called when document.visibilityChange has changed
|
||||
* It emits an event called visibilityChange and sends the value of document.hidden as a
|
||||
* parameter
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _handleVisibilityChange;
|
||||
}
|
||||
import { EventEmitter } from "events";
|
||||
//# sourceMappingURL=visibility-change-emitter.d.ts.map
|
1
dist/src/connection-manager/visibility-change-emitter.d.ts.map
vendored
Normal file
1
dist/src/connection-manager/visibility-change-emitter.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"visibility-change-emitter.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/visibility-change-emitter.js"],"names":[],"mappings":";AAYA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IACE;;;;OAIG;IACH,cAQC;IAED;;;;;;;;OAQG;IACH,sCAkBC;IAFC,4BAAqB;IACrB,sCAAyC;IAG3C;;;;;OAKG;IACH,qCAQC;IAED;;;;;OAKG;IACH,aAFa,OAAO,GAAG,IAAI,CAQ1B;IAED;;;;;;OAMG;IACH,gCAKC;CACF"}
|
10
dist/src/constants.d.ts
vendored
Normal file
10
dist/src/constants.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
export const DIAL_TIMEOUT: number;
|
||||
export const MAX_PARALLEL_DIALS: number;
|
||||
export const MAX_PER_PEER_DIALS: number;
|
||||
export namespace METRICS {
|
||||
const computeThrottleMaxQueueSize: number;
|
||||
const computeThrottleTimeout: number;
|
||||
const movingAverageIntervals: number[];
|
||||
const maxOldPeersRetention: number;
|
||||
}
|
||||
//# sourceMappingURL=constants.d.ts.map
|
1
dist/src/constants.d.ts.map
vendored
Normal file
1
dist/src/constants.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.js"],"names":[],"mappings":""}
|
95
dist/src/content-routing/index.d.ts
vendored
Normal file
95
dist/src/content-routing/index.d.ts
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
export = ContentRouting;
|
||||
/**
|
||||
* @typedef {import('peer-id')} PeerId
|
||||
* @typedef {import('multiaddr').Multiaddr} Multiaddr
|
||||
* @typedef {import('cids')} CID
|
||||
* @typedef {import('libp2p-interfaces/src/content-routing/types').ContentRouting} ContentRoutingModule
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} GetData
|
||||
* @property {PeerId} from
|
||||
* @property {Uint8Array} val
|
||||
*/
|
||||
declare class ContentRouting {
|
||||
/**
|
||||
* @class
|
||||
* @param {import('..')} libp2p
|
||||
*/
|
||||
constructor(libp2p: import('..'));
|
||||
libp2p: import("..");
|
||||
/** @type {ContentRoutingModule[]} */
|
||||
routers: ContentRoutingModule[];
|
||||
dht: any;
|
||||
/**
|
||||
* Iterates over all content routers in parallel to find providers of the given key.
|
||||
*
|
||||
* @param {CID} key - The CID key of the content to find
|
||||
* @param {object} [options]
|
||||
* @param {number} [options.timeout] - How long the query should run
|
||||
* @param {number} [options.maxNumProviders] - maximum number of providers to find
|
||||
* @returns {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>}
|
||||
*/
|
||||
findProviders(key: CID, options?: {
|
||||
timeout?: number | undefined;
|
||||
maxNumProviders?: number | undefined;
|
||||
} | undefined): AsyncIterable<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}>;
|
||||
/**
|
||||
* Iterates over all content routers in parallel to notify it is
|
||||
* a provider of the given key.
|
||||
*
|
||||
* @param {CID} key - The CID key of the content to find
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
provide(key: CID): Promise<void>;
|
||||
/**
|
||||
* Store the given key/value pair in the DHT.
|
||||
*
|
||||
* @param {Uint8Array} key
|
||||
* @param {Uint8Array} value
|
||||
* @param {Object} [options] - put options
|
||||
* @param {number} [options.minPeers] - minimum number of peers required to successfully put
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
put(key: Uint8Array, value: Uint8Array, options?: {
|
||||
minPeers?: number | undefined;
|
||||
} | undefined): Promise<void>;
|
||||
/**
|
||||
* Get the value to the given key.
|
||||
* Times out after 1 minute by default.
|
||||
*
|
||||
* @param {Uint8Array} key
|
||||
* @param {Object} [options] - get options
|
||||
* @param {number} [options.timeout] - optional timeout (default: 60000)
|
||||
* @returns {Promise<GetData>}
|
||||
*/
|
||||
get(key: Uint8Array, options?: {
|
||||
timeout?: number | undefined;
|
||||
} | undefined): Promise<GetData>;
|
||||
/**
|
||||
* Get the `n` values to the given key without sorting.
|
||||
*
|
||||
* @param {Uint8Array} key
|
||||
* @param {number} nVals
|
||||
* @param {Object} [options] - get options
|
||||
* @param {number} [options.timeout] - optional timeout (default: 60000)
|
||||
* @returns {Promise<GetData[]>}
|
||||
*/
|
||||
getMany(key: Uint8Array, nVals: number, options?: {
|
||||
timeout?: number | undefined;
|
||||
} | undefined): Promise<GetData[]>;
|
||||
}
|
||||
declare namespace ContentRouting {
|
||||
export { PeerId, Multiaddr, CID, ContentRoutingModule, GetData };
|
||||
}
|
||||
type ContentRoutingModule = import('libp2p-interfaces/src/content-routing/types').ContentRouting;
|
||||
type CID = import('cids');
|
||||
type PeerId = import('peer-id');
|
||||
type Multiaddr = import('multiaddr').Multiaddr;
|
||||
type GetData = {
|
||||
from: PeerId;
|
||||
val: Uint8Array;
|
||||
};
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/content-routing/index.d.ts.map
vendored
Normal file
1
dist/src/content-routing/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.js"],"names":[],"mappings":";AAcA;;;;;GAKG;AAEH;;;;GAIG;AAEH;IACE;;;OAGG;IACH,oBAFW,OAAO,IAAI,CAAC,EAYtB;IATC,qBAAoB;IACpB,qCAAqC;IACrC,SADW,oBAAoB,EAAE,CACkB;IACnD,SAAsB;IAQxB;;;;;;;;OAQG;IACH,mBANW,GAAG;;;oBAID,cAAc;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CAgBlE;IAED;;;;;;OAMG;IACH,aAHW,GAAG,GACD,QAAQ,IAAI,CAAC,CAQzB;IAED;;;;;;;;OAQG;IACH,SANW,UAAU,SACV,UAAU;;oBAGR,QAAQ,IAAI,CAAC,CAQzB;IAED;;;;;;;;OAQG;IACH,SALW,UAAU;;oBAGR,QAAQ,OAAO,CAAC,CAQ5B;IAED;;;;;;;;OAQG;IACH,aANW,UAAU,SACV,MAAM;;oBAGJ,QAAQ,OAAO,EAAE,CAAC,CAQ9B;CACF;;;;4BApHY,OAAO,6CAA6C,EAAE,cAAc;WADpE,OAAO,MAAM,CAAC;cAFd,OAAO,SAAS,CAAC;iBACjB,OAAO,WAAW,EAAE,SAAS;;UAO5B,MAAM;SACN,UAAU"}
|
59
dist/src/content-routing/utils.d.ts
vendored
Normal file
59
dist/src/content-routing/utils.d.ts
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
export type PeerId = import('peer-id');
|
||||
export type Multiaddr = import('multiaddr').Multiaddr;
|
||||
/**
|
||||
* @typedef {import('peer-id')} PeerId
|
||||
* @typedef {import('multiaddr').Multiaddr} Multiaddr
|
||||
*/
|
||||
/**
|
||||
* Store the multiaddrs from every peer in the passed peer store
|
||||
*
|
||||
* @param {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>} source
|
||||
* @param {import('../peer-store')} peerStore
|
||||
*/
|
||||
export function storeAddresses(source: AsyncIterable<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}>, peerStore: import('../peer-store')): AsyncIterable<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}>;
|
||||
/**
|
||||
* Filter peers by unique peer id
|
||||
*
|
||||
* @param {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>} source
|
||||
*/
|
||||
export function uniquePeers(source: AsyncIterable<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}>): AsyncGenerator<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}, void, unknown>;
|
||||
/**
|
||||
* Require at least `min` peers to be yielded from `source`
|
||||
*
|
||||
* @param {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>} source
|
||||
* @param {number} min
|
||||
*/
|
||||
export function requirePeers(source: AsyncIterable<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}>, min?: number): AsyncGenerator<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}, void, unknown>;
|
||||
/**
|
||||
* If `max` is passed, only take that number of peers from the source
|
||||
* otherwise take all the peers
|
||||
*
|
||||
* @param {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>} source
|
||||
* @param {number} [max]
|
||||
*/
|
||||
export function maybeLimitSource(source: AsyncIterable<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}>, max?: number | undefined): AsyncIterable<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}>;
|
||||
//# sourceMappingURL=utils.d.ts.map
|
1
dist/src/content-routing/utils.d.ts.map
vendored
Normal file
1
dist/src/content-routing/utils.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/content-routing/utils.js"],"names":[],"mappings":"qBAQa,OAAO,SAAS,CAAC;wBACjB,OAAO,WAAW,EAAE,SAAS;AAF1C;;;GAGG;AAEH;;;;;GAKG;AACH,uCAHW,cAAc;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,aACtD,OAAO,eAAe,CAAC;QADH,MAAM;gBAAc,SAAS,EAAE;GAU7D;AAED;;;;GAIG;AACH,oCAFW,cAAc;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;QAAlC,MAAM;gBAAc,SAAS,EAAE;kBAgB7D;AAED;;;;;GAKG;AACH,qCAHW,cAAc;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,QACtD,MAAM;QADc,MAAM;gBAAc,SAAS,EAAE;kBAe7D;AAED;;;;;;GAMG;AACH,yCAHW,cAAc;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;QAAlC,MAAM;gBAAc,SAAS,EAAE;GAS7D"}
|
55
dist/src/dialer/dial-request.d.ts
vendored
Normal file
55
dist/src/dialer/dial-request.d.ts
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
export = DialRequest;
|
||||
/**
|
||||
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
|
||||
* @typedef {import('./')} Dialer
|
||||
* @typedef {import('multiaddr').Multiaddr} Multiaddr
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} DialOptions
|
||||
* @property {AbortSignal} signal
|
||||
*
|
||||
* @typedef {Object} DialRequestOptions
|
||||
* @property {Multiaddr[]} addrs
|
||||
* @property {(m: Multiaddr, options: DialOptions) => Promise<Connection>} dialAction
|
||||
* @property {Dialer} dialer
|
||||
*/
|
||||
declare class DialRequest {
|
||||
/**
|
||||
* Manages running the `dialAction` on multiple provided `addrs` in parallel
|
||||
* up to a maximum determined by the number of tokens returned
|
||||
* from `dialer.getTokens`. Once a DialRequest is created, it can be
|
||||
* started using `DialRequest.run(options)`. Once a single dial has succeeded,
|
||||
* all other dials in the request will be cancelled.
|
||||
*
|
||||
* @class
|
||||
* @param {DialRequestOptions} options
|
||||
*/
|
||||
constructor({ addrs, dialAction, dialer }: DialRequestOptions);
|
||||
addrs: import("multiaddr").Multiaddr[];
|
||||
dialer: import("./");
|
||||
dialAction: (m: Multiaddr, options: DialOptions) => Promise<Connection>;
|
||||
/**
|
||||
* @async
|
||||
* @param {object} [options]
|
||||
* @param {AbortSignal} [options.signal] - An AbortController signal
|
||||
* @returns {Promise<Connection>}
|
||||
*/
|
||||
run(options?: {
|
||||
signal?: AbortSignal | undefined;
|
||||
} | undefined): Promise<Connection>;
|
||||
}
|
||||
declare namespace DialRequest {
|
||||
export { Connection, Dialer, Multiaddr, DialOptions, DialRequestOptions };
|
||||
}
|
||||
type Multiaddr = import('multiaddr').Multiaddr;
|
||||
type DialOptions = {
|
||||
signal: AbortSignal;
|
||||
};
|
||||
type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
type DialRequestOptions = {
|
||||
addrs: Multiaddr[];
|
||||
dialAction: (m: Multiaddr, options: DialOptions) => Promise<Connection>;
|
||||
dialer: Dialer;
|
||||
};
|
||||
type Dialer = import('./');
|
||||
//# sourceMappingURL=dial-request.d.ts.map
|
1
dist/src/dialer/dial-request.d.ts.map
vendored
Normal file
1
dist/src/dialer/dial-request.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dial-request.d.ts","sourceRoot":"","sources":["../../../src/dialer/dial-request.js"],"names":[],"mappings":";AASA;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH;IACE;;;;;;;;;OASG;IACH,2CAFW,kBAAkB,EAU5B;IAHC,uCAAkB;IAClB,qBAAoB;IACpB,gBAtBc,SAAS,WAAW,WAAW,KAAK,QAAQ,UAAU,CAAC,CAsBzC;IAG9B;;;;;OAKG;IACH;;oBAFa,QAAQ,UAAU,CAAC,CAuC/B;CACF;;;;iBA9EY,OAAO,WAAW,EAAE,SAAS;;YAK5B,WAAW;;;;WAGX,SAAS,EAAE;oBACP,SAAS,WAAW,WAAW,KAAK,QAAQ,UAAU,CAAC;YAC3D,MAAM;;cAXP,OAAO,IAAI,CAAC"}
|
155
dist/src/dialer/index.d.ts
vendored
Normal file
155
dist/src/dialer/index.d.ts
vendored
Normal file
@@ -0,0 +1,155 @@
|
||||
export = Dialer;
|
||||
/**
|
||||
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
|
||||
* @typedef {import('peer-id')} PeerId
|
||||
* @typedef {import('../peer-store')} PeerStore
|
||||
* @typedef {import('../peer-store/address-book').Address} Address
|
||||
* @typedef {import('../transport-manager')} TransportManager
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} DialerProperties
|
||||
* @property {PeerStore} peerStore
|
||||
* @property {TransportManager} transportManager
|
||||
*
|
||||
* @typedef {(addr:Multiaddr) => Promise<string[]>} Resolver
|
||||
*
|
||||
* @typedef {Object} DialerOptions
|
||||
* @property {(addresses: Address[]) => Address[]} [options.addressSorter = publicAddressesFirst] - Sort the known addresses of a peer before trying to dial.
|
||||
* @property {number} [maxParallelDials = MAX_PARALLEL_DIALS] - Number of max concurrent dials.
|
||||
* @property {number} [maxDialsPerPeer = MAX_PER_PEER_DIALS] - Number of max concurrent dials per peer.
|
||||
* @property {number} [dialTimeout = DIAL_TIMEOUT] - How long a dial attempt is allowed to take.
|
||||
* @property {Record<string, Resolver>} [resolvers = {}] - multiaddr resolvers to use when dialing
|
||||
*
|
||||
* @typedef DialTarget
|
||||
* @property {string} id
|
||||
* @property {Multiaddr[]} addrs
|
||||
*
|
||||
* @typedef PendingDial
|
||||
* @property {DialRequest} dialRequest
|
||||
* @property {TimeoutController} controller
|
||||
* @property {Promise<Connection>} promise
|
||||
* @property {function():void} destroy
|
||||
*/
|
||||
declare class Dialer {
|
||||
/**
|
||||
* @class
|
||||
* @param {DialerProperties & DialerOptions} options
|
||||
*/
|
||||
constructor({ transportManager, peerStore, addressSorter, maxParallelDials, dialTimeout, maxDialsPerPeer, resolvers }: DialerProperties & DialerOptions);
|
||||
transportManager: import("../transport-manager");
|
||||
peerStore: import("../peer-store");
|
||||
addressSorter: (addresses: Address[]) => Address[];
|
||||
maxParallelDials: number;
|
||||
timeout: number;
|
||||
maxDialsPerPeer: number;
|
||||
tokens: number[];
|
||||
_pendingDials: Map<any, any>;
|
||||
/**
|
||||
* Clears any pending dials
|
||||
*/
|
||||
destroy(): void;
|
||||
/**
|
||||
* Connects to a given `peer` by dialing all of its known addresses.
|
||||
* The dial to the first address that is successfully able to upgrade a connection
|
||||
* will be used.
|
||||
*
|
||||
* @param {PeerId|Multiaddr|string} peer - The peer to dial
|
||||
* @param {object} [options]
|
||||
* @param {AbortSignal} [options.signal] - An AbortController signal
|
||||
* @returns {Promise<Connection>}
|
||||
*/
|
||||
connectToPeer(peer: PeerId | Multiaddr | string, options?: {
|
||||
signal?: AbortSignal | undefined;
|
||||
} | undefined): Promise<Connection>;
|
||||
/**
|
||||
* Creates a DialTarget. The DialTarget is used to create and track
|
||||
* the DialRequest to a given peer.
|
||||
* If a multiaddr is received it should be the first address attempted.
|
||||
* Multiaddrs not supported by the available transports will be filtered out.
|
||||
*
|
||||
* @private
|
||||
* @param {PeerId|Multiaddr|string} peer - A PeerId or Multiaddr
|
||||
* @returns {Promise<DialTarget>}
|
||||
*/
|
||||
private _createDialTarget;
|
||||
/**
|
||||
* Creates a PendingDial that wraps the underlying DialRequest
|
||||
*
|
||||
* @private
|
||||
* @param {DialTarget} dialTarget
|
||||
* @param {object} [options]
|
||||
* @param {AbortSignal} [options.signal] - An AbortController signal
|
||||
* @returns {PendingDial}
|
||||
*/
|
||||
private _createPendingDial;
|
||||
/**
|
||||
* @param {number} num
|
||||
*/
|
||||
getTokens(num: number): number[];
|
||||
/**
|
||||
* @param {number} token
|
||||
*/
|
||||
releaseToken(token: number): void;
|
||||
/**
|
||||
* Resolve multiaddr recursively.
|
||||
*
|
||||
* @param {Multiaddr} ma
|
||||
* @returns {Promise<Multiaddr[]>}
|
||||
*/
|
||||
_resolve(ma: Multiaddr): Promise<Multiaddr[]>;
|
||||
/**
|
||||
* Resolve a given multiaddr. If this fails, an empty array will be returned
|
||||
*
|
||||
* @param {Multiaddr} ma
|
||||
* @returns {Promise<Multiaddr[]>}
|
||||
*/
|
||||
_resolveRecord(ma: Multiaddr): Promise<Multiaddr[]>;
|
||||
}
|
||||
declare namespace Dialer {
|
||||
export { Connection, PeerId, PeerStore, Address, TransportManager, DialerProperties, Resolver, DialerOptions, DialTarget, PendingDial };
|
||||
}
|
||||
type Address = import('../peer-store/address-book').Address;
|
||||
type PeerId = import('peer-id');
|
||||
import { Multiaddr } from "multiaddr";
|
||||
type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
type DialerProperties = {
|
||||
peerStore: PeerStore;
|
||||
transportManager: TransportManager;
|
||||
};
|
||||
type DialerOptions = {
|
||||
/**
|
||||
* - Sort the known addresses of a peer before trying to dial.
|
||||
*/
|
||||
addressSorter?: ((addresses: Address[]) => Address[]) | undefined;
|
||||
/**
|
||||
* - Number of max concurrent dials.
|
||||
*/
|
||||
maxParallelDials?: number | undefined;
|
||||
/**
|
||||
* - Number of max concurrent dials per peer.
|
||||
*/
|
||||
maxDialsPerPeer?: number | undefined;
|
||||
/**
|
||||
* - How long a dial attempt is allowed to take.
|
||||
*/
|
||||
dialTimeout?: number | undefined;
|
||||
/**
|
||||
* - multiaddr resolvers to use when dialing
|
||||
*/
|
||||
resolvers?: Record<string, Resolver> | undefined;
|
||||
};
|
||||
type PeerStore = import('../peer-store');
|
||||
type TransportManager = import('../transport-manager');
|
||||
type Resolver = (addr: Multiaddr) => Promise<string[]>;
|
||||
type DialTarget = {
|
||||
id: string;
|
||||
addrs: Multiaddr[];
|
||||
};
|
||||
type PendingDial = {
|
||||
dialRequest: DialRequest;
|
||||
controller: any;
|
||||
promise: Promise<Connection>;
|
||||
destroy: () => void;
|
||||
};
|
||||
import DialRequest = require("./dial-request");
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/dialer/index.d.ts.map
vendored
Normal file
1
dist/src/dialer/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dialer/index.js"],"names":[],"mappings":";AAuBA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;IACE;;;OAGG;IACH,uHAFW,gBAAgB,GAAG,aAAa,EAuB1C;IAZC,iDAAwC;IACxC,mCAA0B;IAC1B,2BAjCsB,OAAO,EAAE,KAAK,OAAO,EAAE,CAiCX;IAClC,yBAAwC;IACxC,gBAA0B;IAC1B,wBAAsC;IACtC,iBAAuE;IACvE,6BAA8B;IAOhC;;OAEG;IACH,gBASC;IAED;;;;;;;;;OASG;IACH,oBALW,MAAM,GAAC,SAAS,GAAC,MAAM;;oBAGrB,QAAQ,UAAU,CAAC,CAwB/B;IAED;;;;;;;;;OASG;IACH,0BA8BC;IAED;;;;;;;;OAQG;IACH,2BAiCC;IAED;;OAEG;IACH,eAFW,MAAM,YAOhB;IAED;;OAEG;IACH,oBAFW,MAAM,QAOhB;IAED;;;;;OAKG;IACH,aAHW,SAAS,GACP,QAAQ,SAAS,EAAE,CAAC,CAwBhC;IAED;;;;;OAKG;IACH,mBAHW,SAAS,GACP,QAAQ,SAAS,EAAE,CAAC,CAWhC;CACF;;;;eAjQY,OAAO,4BAA4B,EAAE,OAAO;cAF5C,OAAO,SAAS,CAAC;;;;eAQhB,SAAS;sBACT,gBAAgB;;;;;;iCAKJ,OAAO,EAAE,KAAK,OAAO,EAAE;;;;;;;;;;;;;;;;;;iBAbpC,OAAO,eAAe,CAAC;wBAEvB,OAAO,sBAAsB,CAAC;uBAQxB,SAAS,KAAK,QAAQ,MAAM,EAAE,CAAC;;QAUpC,MAAM;WACN,SAAS,EAAE;;;iBAGX,WAAW;;aAEX,QAAQ,UAAU,CAAC;mBACR,IAAI"}
|
37
dist/src/errors.d.ts
vendored
Normal file
37
dist/src/errors.d.ts
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
export namespace messages {
|
||||
const NOT_STARTED_YET: string;
|
||||
const DHT_DISABLED: string;
|
||||
const CONN_ENCRYPTION_REQUIRED: string;
|
||||
}
|
||||
export namespace codes {
|
||||
const DHT_DISABLED_1: string;
|
||||
export { DHT_DISABLED_1 as DHT_DISABLED };
|
||||
export const PUBSUB_NOT_STARTED: string;
|
||||
export const DHT_NOT_STARTED: string;
|
||||
const CONN_ENCRYPTION_REQUIRED_1: string;
|
||||
export { CONN_ENCRYPTION_REQUIRED_1 as CONN_ENCRYPTION_REQUIRED };
|
||||
export const ERR_INVALID_PROTOCOLS_FOR_STREAM: string;
|
||||
export const ERR_CONNECTION_ENDED: string;
|
||||
export const ERR_CONNECTION_FAILED: string;
|
||||
export const ERR_NODE_NOT_STARTED: string;
|
||||
export const ERR_ALREADY_ABORTED: string;
|
||||
export const ERR_NO_VALID_ADDRESSES: string;
|
||||
export const ERR_RELAYED_DIAL: string;
|
||||
export const ERR_DIALED_SELF: string;
|
||||
export const ERR_DISCOVERED_SELF: string;
|
||||
export const ERR_DUPLICATE_TRANSPORT: string;
|
||||
export const ERR_ENCRYPTION_FAILED: string;
|
||||
export const ERR_HOP_REQUEST_FAILED: string;
|
||||
export const ERR_INVALID_KEY: string;
|
||||
export const ERR_INVALID_MESSAGE: string;
|
||||
export const ERR_INVALID_PARAMETERS: string;
|
||||
export const ERR_INVALID_PEER: string;
|
||||
export const ERR_MUXER_UNAVAILABLE: string;
|
||||
export const ERR_TIMEOUT: string;
|
||||
export const ERR_TRANSPORT_UNAVAILABLE: string;
|
||||
export const ERR_TRANSPORT_DIAL_FAILED: string;
|
||||
export const ERR_UNSUPPORTED_PROTOCOL: string;
|
||||
export const ERR_INVALID_MULTIADDR: string;
|
||||
export const ERR_SIGNATURE_NOT_VALID: string;
|
||||
}
|
||||
//# sourceMappingURL=errors.d.ts.map
|
1
dist/src/errors.d.ts.map
vendored
Normal file
1
dist/src/errors.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.js"],"names":[],"mappings":""}
|
15
dist/src/get-peer.d.ts
vendored
Normal file
15
dist/src/get-peer.d.ts
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
export = getPeer;
|
||||
/**
|
||||
* Converts the given `peer` to a `Peer` object.
|
||||
* If a multiaddr is received, the addressBook is updated.
|
||||
*
|
||||
* @param {PeerId|Multiaddr|string} peer
|
||||
* @returns {{ id: PeerId, multiaddrs: Multiaddr[]|undefined }}
|
||||
*/
|
||||
declare function getPeer(peer: PeerId | Multiaddr | string): {
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[] | undefined;
|
||||
};
|
||||
import PeerId = require("peer-id");
|
||||
import { Multiaddr } from "multiaddr";
|
||||
//# sourceMappingURL=get-peer.d.ts.map
|
1
dist/src/get-peer.d.ts.map
vendored
Normal file
1
dist/src/get-peer.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"get-peer.d.ts","sourceRoot":"","sources":["../../src/get-peer.js"],"names":[],"mappings":";AAQA;;;;;;GAMG;AACH,+BAHW,MAAM,GAAC,SAAS,GAAC,MAAM,GACrB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,GAAC,SAAS,CAAA;CAAE,CAiC7D"}
|
5
dist/src/identify/consts.d.ts
vendored
Normal file
5
dist/src/identify/consts.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
export var PROTOCOL_VERSION: string;
|
||||
export var AGENT_VERSION: string;
|
||||
export var MULTICODEC_IDENTIFY: string;
|
||||
export var MULTICODEC_IDENTIFY_PUSH: string;
|
||||
//# sourceMappingURL=consts.d.ts.map
|
1
dist/src/identify/consts.d.ts.map
vendored
Normal file
1
dist/src/identify/consts.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/identify/consts.js"],"names":[],"mappings":""}
|
111
dist/src/identify/index.d.ts
vendored
Normal file
111
dist/src/identify/index.d.ts
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
export = IdentifyService;
|
||||
/**
|
||||
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
|
||||
* @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} HostProperties
|
||||
* @property {string} agentVersion
|
||||
*/
|
||||
declare class IdentifyService {
|
||||
/**
|
||||
* Takes the `addr` and converts it to a Multiaddr if possible
|
||||
*
|
||||
* @param {Uint8Array | string} addr
|
||||
* @returns {Multiaddr|null}
|
||||
*/
|
||||
static getCleanMultiaddr(addr: Uint8Array | string): Multiaddr | null;
|
||||
/**
|
||||
* @class
|
||||
* @param {Object} options
|
||||
* @param {import('../')} options.libp2p
|
||||
*/
|
||||
constructor({ libp2p }: {
|
||||
libp2p: import('../');
|
||||
});
|
||||
_libp2p: import("../");
|
||||
peerStore: import("../peer-store");
|
||||
addressManager: import("../address-manager");
|
||||
connectionManager: import("../connection-manager");
|
||||
peerId: PeerId;
|
||||
/**
|
||||
* A handler to register with Libp2p to process identify messages.
|
||||
*
|
||||
* @param {Object} options
|
||||
* @param {Connection} options.connection
|
||||
* @param {MuxedStream} options.stream
|
||||
* @param {string} options.protocol
|
||||
* @returns {Promise<void>|undefined}
|
||||
*/
|
||||
handleMessage({ connection, stream, protocol }: {
|
||||
connection: Connection;
|
||||
stream: MuxedStream;
|
||||
protocol: string;
|
||||
}): Promise<void> | undefined;
|
||||
_host: {
|
||||
agentVersion: string;
|
||||
protocolVersion: string;
|
||||
};
|
||||
/**
|
||||
* Send an Identify Push update to the list of connections
|
||||
*
|
||||
* @param {Connection[]} connections
|
||||
* @returns {Promise<void[]>}
|
||||
*/
|
||||
push(connections: Connection[]): Promise<void[]>;
|
||||
/**
|
||||
* Calls `push` for all peers in the `peerStore` that are connected
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
pushToPeerStore(): void;
|
||||
/**
|
||||
* Requests the `Identify` message from peer associated with the given `connection`.
|
||||
* If the identified peer does not match the `PeerId` associated with the connection,
|
||||
* an error will be thrown.
|
||||
*
|
||||
* @async
|
||||
* @param {Connection} connection
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
identify(connection: Connection): Promise<void>;
|
||||
/**
|
||||
* Sends the `Identify` response with the Signed Peer Record
|
||||
* to the requesting peer over the given `connection`
|
||||
*
|
||||
* @private
|
||||
* @param {Object} options
|
||||
* @param {MuxedStream} options.stream
|
||||
* @param {Connection} options.connection
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
private _handleIdentify;
|
||||
/**
|
||||
* Reads the Identify Push message from the given `connection`
|
||||
*
|
||||
* @private
|
||||
* @param {object} options
|
||||
* @param {MuxedStream} options.stream
|
||||
* @param {Connection} options.connection
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
private _handlePush;
|
||||
}
|
||||
declare namespace IdentifyService {
|
||||
export { multicodecs, Message as Messsage, Connection, MuxedStream, HostProperties };
|
||||
}
|
||||
import PeerId = require("peer-id");
|
||||
type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
|
||||
import { Multiaddr } from "multiaddr";
|
||||
declare namespace multicodecs {
|
||||
export { MULTICODEC_IDENTIFY as IDENTIFY };
|
||||
export { MULTICODEC_IDENTIFY_PUSH as IDENTIFY_PUSH };
|
||||
}
|
||||
import Message = require("./message");
|
||||
type HostProperties = {
|
||||
agentVersion: string;
|
||||
};
|
||||
import { MULTICODEC_IDENTIFY } from "./consts";
|
||||
import { MULTICODEC_IDENTIFY_PUSH } from "./consts";
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/identify/index.d.ts.map
vendored
Normal file
1
dist/src/identify/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identify/index.js"],"names":[],"mappings":";AA8BA;;;GAGG;AAEH;;;GAGG;AAEH;IA0RE;;;;;OAKG;IACH,+BAHW,UAAU,GAAG,MAAM,GACjB,SAAS,GAAC,IAAI,CAW1B;IAxSD;;;;OAIG;IACH;QAFkC,MAAM,EAA7B,OAAO,KAAK,CAAC;OAqCvB;IAlCC,uBAAqB;IACrB,mCAAiC;IACjC,6CAA2C;IAC3C,mDAAiD;IACjD,eAA2B;IAiK7B;;;;;;;;OAQG;IACH;oBALW,UAAU;gBACV,WAAW;kBACX,MAAM;QACJ,QAAQ,IAAI,CAAC,GAAC,SAAS,CAWnC;IA9KC;sBAnBU,MAAM;;MAsBf;IAwBH;;;;;OAKG;IACH,kBAHW,UAAU,EAAE,GACV,QAAQ,IAAI,EAAE,CAAC,CA4B3B;IAED;;;;OAIG;IACH,mBAFa,IAAI,CAiBhB;IAED;;;;;;;;OAQG;IACH,qBAHW,UAAU,GACR,QAAQ,IAAI,CAAC,CAgEzB;IAsBD;;;;;;;;;OASG;IACH,wBA6BC;IAED;;;;;;;;OAQG;IACH,oBAsCC;CAkBF;;;;;;mBAlTY,OAAO,0CAA0C,EAAE,WAAW;;;;;;;;kBAK7D,MAAM"}
|
95
dist/src/identify/message.d.ts
vendored
Normal file
95
dist/src/identify/message.d.ts
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
import * as $protobuf from "protobufjs";
|
||||
/** Properties of an Identify. */
|
||||
export interface IIdentify {
|
||||
|
||||
/** Identify protocolVersion */
|
||||
protocolVersion?: (string|null);
|
||||
|
||||
/** Identify agentVersion */
|
||||
agentVersion?: (string|null);
|
||||
|
||||
/** Identify publicKey */
|
||||
publicKey?: (Uint8Array|null);
|
||||
|
||||
/** Identify listenAddrs */
|
||||
listenAddrs?: (Uint8Array[]|null);
|
||||
|
||||
/** Identify observedAddr */
|
||||
observedAddr?: (Uint8Array|null);
|
||||
|
||||
/** Identify protocols */
|
||||
protocols?: (string[]|null);
|
||||
|
||||
/** Identify signedPeerRecord */
|
||||
signedPeerRecord?: (Uint8Array|null);
|
||||
}
|
||||
|
||||
/** Represents an Identify. */
|
||||
export class Identify implements IIdentify {
|
||||
|
||||
/**
|
||||
* Constructs a new Identify.
|
||||
* @param [p] Properties to set
|
||||
*/
|
||||
constructor(p?: IIdentify);
|
||||
|
||||
/** Identify protocolVersion. */
|
||||
public protocolVersion: string;
|
||||
|
||||
/** Identify agentVersion. */
|
||||
public agentVersion: string;
|
||||
|
||||
/** Identify publicKey. */
|
||||
public publicKey: Uint8Array;
|
||||
|
||||
/** Identify listenAddrs. */
|
||||
public listenAddrs: Uint8Array[];
|
||||
|
||||
/** Identify observedAddr. */
|
||||
public observedAddr: Uint8Array;
|
||||
|
||||
/** Identify protocols. */
|
||||
public protocols: string[];
|
||||
|
||||
/** Identify signedPeerRecord. */
|
||||
public signedPeerRecord: Uint8Array;
|
||||
|
||||
/**
|
||||
* Encodes the specified Identify message. Does not implicitly {@link Identify.verify|verify} messages.
|
||||
* @param m Identify message or plain object to encode
|
||||
* @param [w] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(m: IIdentify, w?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes an Identify message from the specified reader or buffer.
|
||||
* @param r Reader or buffer to decode from
|
||||
* @param [l] Message length if known beforehand
|
||||
* @returns Identify
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): Identify;
|
||||
|
||||
/**
|
||||
* Creates an Identify message from a plain object. Also converts values to their respective internal types.
|
||||
* @param d Plain object
|
||||
* @returns Identify
|
||||
*/
|
||||
public static fromObject(d: { [k: string]: any }): Identify;
|
||||
|
||||
/**
|
||||
* Creates a plain object from an Identify message. Also converts values to other types if specified.
|
||||
* @param m Identify
|
||||
* @param [o] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(m: Identify, o?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this Identify to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
533
dist/src/index.d.ts
vendored
Normal file
533
dist/src/index.d.ts
vendored
Normal file
@@ -0,0 +1,533 @@
|
||||
export = Libp2p;
|
||||
/**
|
||||
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
|
||||
* @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
|
||||
* @typedef {import('libp2p-interfaces/src/transport/types').TransportFactory<any, any>} TransportFactory
|
||||
* @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxerFactory} MuxerFactory
|
||||
* @typedef {import('libp2p-interfaces/src/content-routing/types').ContentRouting} ContentRoutingModule
|
||||
* @typedef {import('libp2p-interfaces/src/peer-discovery/types').PeerDiscoveryFactory} PeerDiscoveryFactory
|
||||
* @typedef {import('libp2p-interfaces/src/peer-routing/types').PeerRouting} PeerRoutingModule
|
||||
* @typedef {import('libp2p-interfaces/src/crypto/types').Crypto} Crypto
|
||||
* @typedef {import('libp2p-interfaces/src/pubsub')} Pubsub
|
||||
* @typedef {import('libp2p-interfaces/src/pubsub').PubsubOptions} PubsubOptions
|
||||
* @typedef {import('interface-datastore').Datastore} Datastore
|
||||
* @typedef {import('./pnet')} Protector
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} HandlerProps
|
||||
* @property {Connection} connection
|
||||
* @property {MuxedStream} stream
|
||||
* @property {string} protocol
|
||||
*
|
||||
* @typedef {Object} RandomWalkOptions
|
||||
* @property {boolean} [enabled = false]
|
||||
* @property {number} [queriesPerPeriod = 1]
|
||||
* @property {number} [interval = 300e3]
|
||||
* @property {number} [timeout = 10e3]
|
||||
*
|
||||
* @typedef {Object} DhtOptions
|
||||
* @property {boolean} [enabled = false]
|
||||
* @property {number} [kBucketSize = 20]
|
||||
* @property {RandomWalkOptions} [randomWalk]
|
||||
* @property {boolean} [clientMode]
|
||||
* @property {import('libp2p-interfaces/src/types').DhtSelectors} [selectors]
|
||||
* @property {import('libp2p-interfaces/src/types').DhtValidators} [validators]
|
||||
*
|
||||
* @typedef {Object} KeychainOptions
|
||||
* @property {Datastore} [datastore]
|
||||
*
|
||||
* @typedef {Object} PeerStoreOptions
|
||||
* @property {boolean} persistence
|
||||
*
|
||||
* @typedef {Object} PubsubLocalOptions
|
||||
* @property {boolean} enabled
|
||||
*
|
||||
* @typedef {Object} MetricsOptions
|
||||
* @property {boolean} enabled
|
||||
*
|
||||
* @typedef {Object} RelayOptions
|
||||
* @property {boolean} [enabled = true]
|
||||
* @property {import('./circuit').RelayAdvertiseOptions} [advertise]
|
||||
* @property {import('./circuit').HopOptions} [hop]
|
||||
* @property {import('./circuit').AutoRelayOptions} [autoRelay]
|
||||
*
|
||||
* @typedef {Object} Libp2pConfig
|
||||
* @property {DhtOptions} [dht] dht module options
|
||||
* @property {import('./nat-manager').NatManagerOptions} [nat]
|
||||
* @property {Record<string, Object|boolean>} [peerDiscovery]
|
||||
* @property {PubsubLocalOptions & PubsubOptions} [pubsub] pubsub module options
|
||||
* @property {RelayOptions} [relay]
|
||||
* @property {Record<string, Object>} [transport] transport options indexed by transport key
|
||||
*
|
||||
* @typedef {Object} Libp2pModules
|
||||
* @property {TransportFactory[]} transport
|
||||
* @property {MuxerFactory[]} streamMuxer
|
||||
* @property {Crypto[]} connEncryption
|
||||
* @property {PeerDiscoveryFactory[]} [peerDiscovery]
|
||||
* @property {PeerRoutingModule[]} [peerRouting]
|
||||
* @property {ContentRoutingModule[]} [contentRouting]
|
||||
* @property {Object} [dht]
|
||||
* @property {{new(...args: any[]): Pubsub}} [pubsub]
|
||||
* @property {Protector} [connProtector]
|
||||
*
|
||||
* @typedef {Object} Libp2pOptions
|
||||
* @property {Libp2pModules} modules libp2p modules to use
|
||||
* @property {import('./address-manager').AddressManagerOptions} [addresses]
|
||||
* @property {import('./connection-manager').ConnectionManagerOptions} [connectionManager]
|
||||
* @property {Datastore} [datastore]
|
||||
* @property {import('./dialer').DialerOptions} [dialer]
|
||||
* @property {import('./identify/index').HostProperties} [host] libp2p host
|
||||
* @property {KeychainOptions & import('./keychain/index').KeychainOptions} [keychain]
|
||||
* @property {MetricsOptions & import('./metrics').MetricsOptions} [metrics]
|
||||
* @property {import('./peer-routing').PeerRoutingOptions} [peerRouting]
|
||||
* @property {PeerStoreOptions & import('./peer-store/persistent').PersistentPeerStoreOptions} [peerStore]
|
||||
* @property {import('./transport-manager').TransportManagerOptions} [transportManager]
|
||||
* @property {Libp2pConfig} [config]
|
||||
*
|
||||
* @typedef {Object} constructorOptions
|
||||
* @property {PeerId} peerId
|
||||
*
|
||||
* @typedef {Object} CreateOptions
|
||||
* @property {PeerId} [peerId]
|
||||
*
|
||||
* @extends {EventEmitter}
|
||||
* @fires Libp2p#error Emitted when an error occurs
|
||||
* @fires Libp2p#peer:discovery Emitted when a peer is discovered
|
||||
*/
|
||||
declare class Libp2p extends EventEmitter {
|
||||
/**
|
||||
* Like `new Libp2p(options)` except it will create a `PeerId`
|
||||
* instance if one is not provided in options.
|
||||
*
|
||||
* @param {Libp2pOptions & CreateOptions} options - Libp2p configuration options
|
||||
* @returns {Promise<Libp2p>}
|
||||
*/
|
||||
static create(options: Libp2pOptions & CreateOptions): Promise<Libp2p>;
|
||||
/**
|
||||
* Libp2p node.
|
||||
*
|
||||
* @class
|
||||
* @param {Libp2pOptions & constructorOptions} _options
|
||||
*/
|
||||
constructor(_options: Libp2pOptions & constructorOptions);
|
||||
_options: {
|
||||
addresses: {
|
||||
listen: never[];
|
||||
announce: never[];
|
||||
noAnnounce: never[];
|
||||
announceFilter: (multiaddrs: Multiaddr[]) => Multiaddr[];
|
||||
};
|
||||
connectionManager: {
|
||||
minConnections: number;
|
||||
};
|
||||
transportManager: {
|
||||
faultTolerance: number;
|
||||
};
|
||||
dialer: {
|
||||
maxParallelDials: number;
|
||||
maxDialsPerPeer: number;
|
||||
dialTimeout: number;
|
||||
resolvers: {
|
||||
dnsaddr: any;
|
||||
};
|
||||
addressSorter: typeof import("libp2p-utils/src/address-sort").publicAddressesFirst;
|
||||
};
|
||||
host: {
|
||||
agentVersion: string;
|
||||
};
|
||||
metrics: {
|
||||
enabled: boolean;
|
||||
};
|
||||
peerStore: {
|
||||
persistence: boolean;
|
||||
threshold: number;
|
||||
};
|
||||
peerRouting: {
|
||||
refreshManager: {
|
||||
enabled: boolean;
|
||||
interval: number;
|
||||
bootDelay: number;
|
||||
};
|
||||
};
|
||||
config: {
|
||||
dht: {
|
||||
enabled: boolean;
|
||||
kBucketSize: number;
|
||||
randomWalk: {
|
||||
enabled: boolean;
|
||||
queriesPerPeriod: number;
|
||||
interval: number;
|
||||
timeout: number;
|
||||
};
|
||||
};
|
||||
nat: {
|
||||
enabled: boolean;
|
||||
ttl: number;
|
||||
keepAlive: boolean;
|
||||
gateway: null;
|
||||
externalIp: null;
|
||||
pmp: {
|
||||
enabled: boolean;
|
||||
};
|
||||
};
|
||||
peerDiscovery: {
|
||||
autoDial: boolean;
|
||||
};
|
||||
pubsub: {
|
||||
enabled: boolean;
|
||||
};
|
||||
relay: {
|
||||
enabled: boolean;
|
||||
advertise: {
|
||||
bootDelay: number;
|
||||
enabled: boolean;
|
||||
ttl: number;
|
||||
};
|
||||
hop: {
|
||||
enabled: boolean;
|
||||
active: boolean;
|
||||
};
|
||||
autoRelay: {
|
||||
enabled: boolean;
|
||||
maxListeners: number;
|
||||
};
|
||||
};
|
||||
transport: {};
|
||||
};
|
||||
} & Libp2pOptions & constructorOptions;
|
||||
/** @type {PeerId} */
|
||||
peerId: PeerId;
|
||||
datastore: import("interface-datastore/dist/src/types").Datastore | undefined;
|
||||
peerStore: PeerStore;
|
||||
addresses: {
|
||||
listen: never[];
|
||||
announce: never[];
|
||||
noAnnounce: never[];
|
||||
announceFilter: (multiaddrs: Multiaddr[]) => Multiaddr[];
|
||||
} & AddressManager.AddressManagerOptions;
|
||||
addressManager: AddressManager;
|
||||
_modules: Libp2pModules;
|
||||
_config: {
|
||||
dht: {
|
||||
enabled: boolean;
|
||||
kBucketSize: number;
|
||||
randomWalk: {
|
||||
enabled: boolean;
|
||||
queriesPerPeriod: number;
|
||||
interval: number;
|
||||
timeout: number;
|
||||
};
|
||||
};
|
||||
nat: {
|
||||
enabled: boolean;
|
||||
ttl: number;
|
||||
keepAlive: boolean;
|
||||
gateway: null;
|
||||
externalIp: null;
|
||||
pmp: {
|
||||
enabled: boolean;
|
||||
};
|
||||
};
|
||||
peerDiscovery: {
|
||||
autoDial: boolean;
|
||||
};
|
||||
pubsub: {
|
||||
enabled: boolean;
|
||||
};
|
||||
relay: {
|
||||
enabled: boolean;
|
||||
advertise: {
|
||||
bootDelay: number;
|
||||
enabled: boolean;
|
||||
ttl: number;
|
||||
};
|
||||
hop: {
|
||||
enabled: boolean;
|
||||
active: boolean;
|
||||
};
|
||||
autoRelay: {
|
||||
enabled: boolean;
|
||||
maxListeners: number;
|
||||
};
|
||||
};
|
||||
transport: {};
|
||||
} & Libp2pConfig;
|
||||
_transport: any[];
|
||||
_discovery: Map<any, any>;
|
||||
connectionManager: ConnectionManager;
|
||||
metrics: Metrics | undefined;
|
||||
keychain: Keychain | undefined;
|
||||
upgrader: Upgrader;
|
||||
transportManager: TransportManager;
|
||||
natManager: NatManager;
|
||||
registrar: Registrar;
|
||||
/**
|
||||
* Registers the `handler` for each protocol
|
||||
*
|
||||
* @param {string[]|string} protocols
|
||||
* @param {(props: HandlerProps) => void} handler
|
||||
*/
|
||||
handle(protocols: string[] | string, handler: (props: HandlerProps) => void): void;
|
||||
dialer: Dialer;
|
||||
relay: Relay | undefined;
|
||||
identifyService: IdentifyService | undefined;
|
||||
_dht: any;
|
||||
/** @type {Pubsub} */
|
||||
pubsub: import("libp2p-interfaces/src/pubsub");
|
||||
peerRouting: PeerRouting;
|
||||
contentRouting: ContentRouting;
|
||||
/**
|
||||
* Called whenever peer discovery services emit `peer` events.
|
||||
* Known peers may be emitted.
|
||||
*
|
||||
* @private
|
||||
* @param {{ id: PeerId, multiaddrs: Multiaddr[], protocols: string[] }} peer
|
||||
*/
|
||||
private _onDiscoveryPeer;
|
||||
/**
|
||||
* Starts the libp2p node and all its subsystems
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
start(): Promise<void>;
|
||||
/**
|
||||
* Stop the libp2p node by closing its listeners and open connections
|
||||
*
|
||||
* @async
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
stop(): Promise<void>;
|
||||
_isStarted: boolean | undefined;
|
||||
/**
|
||||
* Load keychain keys from the datastore.
|
||||
* Imports the private key as 'self', if needed.
|
||||
*
|
||||
* @async
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
loadKeychain(): Promise<void>;
|
||||
isStarted(): boolean | undefined;
|
||||
/**
|
||||
* Gets a Map of the current connections. The keys are the stringified
|
||||
* `PeerId` of the peer. The value is an array of Connections to that peer.
|
||||
*
|
||||
* @returns {Map<string, Connection[]>}
|
||||
*/
|
||||
get connections(): Map<string, import("libp2p-interfaces/src/connection/connection")[]>;
|
||||
/**
|
||||
* Dials to the provided peer. If successful, the known metadata of the
|
||||
* peer will be added to the nodes `peerStore`
|
||||
*
|
||||
* @param {PeerId|Multiaddr|string} peer - The peer to dial
|
||||
* @param {object} [options]
|
||||
* @param {AbortSignal} [options.signal]
|
||||
* @returns {Promise<Connection>}
|
||||
*/
|
||||
dial(peer: PeerId | Multiaddr | string, options?: {
|
||||
signal?: AbortSignal | undefined;
|
||||
} | undefined): Promise<Connection>;
|
||||
/**
|
||||
* Dials to the provided peer and tries to handshake with the given protocols in order.
|
||||
* If successful, the known metadata of the peer will be added to the nodes `peerStore`,
|
||||
* and the `MuxedStream` will be returned together with the successful negotiated protocol.
|
||||
*
|
||||
* @async
|
||||
* @param {PeerId|Multiaddr|string} peer - The peer to dial
|
||||
* @param {string[]|string} protocols
|
||||
* @param {object} [options]
|
||||
* @param {AbortSignal} [options.signal]
|
||||
*/
|
||||
dialProtocol(peer: PeerId | Multiaddr | string, protocols: string[] | string, options?: {
|
||||
signal?: AbortSignal | undefined;
|
||||
} | undefined): Promise<{
|
||||
stream: import("libp2p-interfaces/src/stream-muxer/types").MuxedStream;
|
||||
protocol: string;
|
||||
}>;
|
||||
/**
|
||||
* @async
|
||||
* @param {PeerId|Multiaddr|string} peer - The peer to dial
|
||||
* @param {object} [options]
|
||||
* @returns {Promise<Connection>}
|
||||
*/
|
||||
_dial(peer: PeerId | Multiaddr | string, options?: object | undefined): Promise<Connection>;
|
||||
/**
|
||||
* Get a deduplicated list of peer advertising multiaddrs by concatenating
|
||||
* the listen addresses used by transports with any configured
|
||||
* announce addresses as well as observed addresses reported by peers.
|
||||
*
|
||||
* If Announce addrs are specified, configured listen addresses will be
|
||||
* ignored though observed addresses will still be included.
|
||||
*
|
||||
* @returns {Multiaddr[]}
|
||||
*/
|
||||
get multiaddrs(): Multiaddr[];
|
||||
/**
|
||||
* Disconnects all connections to the given `peer`
|
||||
*
|
||||
* @param {PeerId|Multiaddr|string} peer - the peer to close connections to
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
hangUp(peer: PeerId | Multiaddr | string): Promise<void>;
|
||||
/**
|
||||
* Pings the given peer in order to obtain the operation latency.
|
||||
*
|
||||
* @param {PeerId|Multiaddr|string} peer - The peer to ping
|
||||
* @returns {Promise<number>}
|
||||
*/
|
||||
ping(peer: PeerId | Multiaddr | string): Promise<number>;
|
||||
/**
|
||||
* Removes the handler for each protocol. The protocol
|
||||
* will no longer be supported on streams.
|
||||
*
|
||||
* @param {string[]|string} protocols
|
||||
*/
|
||||
unhandle(protocols: string[] | string): void;
|
||||
_onStarting(): Promise<void>;
|
||||
/**
|
||||
* Called when libp2p has started and before it returns
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
private _onDidStart;
|
||||
/**
|
||||
* Will dial to the given `peerId` if the current number of
|
||||
* connected peers is less than the configured `ConnectionManager`
|
||||
* minConnections.
|
||||
*
|
||||
* @private
|
||||
* @param {PeerId} peerId
|
||||
*/
|
||||
private _maybeConnect;
|
||||
/**
|
||||
* Initializes and starts peer discovery services
|
||||
*
|
||||
* @async
|
||||
* @private
|
||||
*/
|
||||
private _setupPeerDiscovery;
|
||||
}
|
||||
declare namespace Libp2p {
|
||||
export { Connection, MuxedStream, TransportFactory, MuxerFactory, ContentRoutingModule, PeerDiscoveryFactory, PeerRoutingModule, Crypto, Pubsub, PubsubOptions, Datastore, Protector, HandlerProps, RandomWalkOptions, DhtOptions, KeychainOptions, PeerStoreOptions, PubsubLocalOptions, MetricsOptions, RelayOptions, Libp2pConfig, Libp2pModules, Libp2pOptions, constructorOptions, CreateOptions };
|
||||
}
|
||||
import { EventEmitter } from "events";
|
||||
import { Multiaddr } from "multiaddr";
|
||||
type Libp2pOptions = {
|
||||
/**
|
||||
* libp2p modules to use
|
||||
*/
|
||||
modules: Libp2pModules;
|
||||
addresses?: AddressManager.AddressManagerOptions | undefined;
|
||||
connectionManager?: ConnectionManager.ConnectionManagerOptions | undefined;
|
||||
datastore?: import("interface-datastore/dist/src/types").Datastore | undefined;
|
||||
dialer?: Dialer.DialerOptions | undefined;
|
||||
/**
|
||||
* libp2p host
|
||||
*/
|
||||
host?: IdentifyService.HostProperties | undefined;
|
||||
keychain?: (KeychainOptions & Keychain.KeychainOptions) | undefined;
|
||||
metrics?: (MetricsOptions & Metrics.MetricsOptions) | undefined;
|
||||
peerRouting?: PeerRouting.PeerRoutingOptions | undefined;
|
||||
peerStore?: (PeerStoreOptions & PersistentPeerStore.PersistentPeerStoreOptions) | undefined;
|
||||
transportManager?: TransportManager.TransportManagerOptions | undefined;
|
||||
config?: Libp2pConfig | undefined;
|
||||
};
|
||||
type constructorOptions = {
|
||||
peerId: PeerId;
|
||||
};
|
||||
import PeerId = require("peer-id");
|
||||
import PeerStore = require("./peer-store");
|
||||
import AddressManager = require("./address-manager");
|
||||
type Libp2pModules = {
|
||||
transport: import("libp2p-interfaces/src/transport/types").TransportFactory<any, any>[];
|
||||
streamMuxer: MuxerFactory[];
|
||||
connEncryption: Crypto[];
|
||||
peerDiscovery?: import("libp2p-interfaces/src/peer-discovery/types").PeerDiscoveryFactory[] | undefined;
|
||||
peerRouting?: import("libp2p-interfaces/src/peer-routing/types").PeerRouting[] | undefined;
|
||||
contentRouting?: import("libp2p-interfaces/src/content-routing/types").ContentRouting[] | undefined;
|
||||
dht?: Object | undefined;
|
||||
pubsub?: (new (...args: any[]) => Pubsub) | undefined;
|
||||
connProtector?: import("./pnet") | undefined;
|
||||
};
|
||||
type Libp2pConfig = {
|
||||
/**
|
||||
* dht module options
|
||||
*/
|
||||
dht?: DhtOptions | undefined;
|
||||
nat?: NatManager.NatManagerOptions | undefined;
|
||||
peerDiscovery?: Record<string, boolean | Object> | undefined;
|
||||
/**
|
||||
* pubsub module options
|
||||
*/
|
||||
pubsub?: (PubsubLocalOptions & import("libp2p-interfaces/src/pubsub").PubsubOptions) | undefined;
|
||||
relay?: RelayOptions | undefined;
|
||||
/**
|
||||
* transport options indexed by transport key
|
||||
*/
|
||||
transport?: Record<string, Object> | undefined;
|
||||
};
|
||||
import ConnectionManager = require("./connection-manager");
|
||||
import Metrics = require("./metrics");
|
||||
import Keychain = require("./keychain");
|
||||
import Upgrader = require("./upgrader");
|
||||
import TransportManager = require("./transport-manager");
|
||||
import NatManager = require("./nat-manager");
|
||||
import Registrar = require("./registrar");
|
||||
type HandlerProps = {
|
||||
connection: Connection;
|
||||
stream: MuxedStream;
|
||||
protocol: string;
|
||||
};
|
||||
import Dialer = require("./dialer");
|
||||
import Relay = require("./circuit");
|
||||
import IdentifyService = require("./identify");
|
||||
import PeerRouting = require("./peer-routing");
|
||||
import ContentRouting = require("./content-routing");
|
||||
type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
type CreateOptions = {
|
||||
peerId?: PeerId | undefined;
|
||||
};
|
||||
type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
|
||||
type TransportFactory = import('libp2p-interfaces/src/transport/types').TransportFactory<any, any>;
|
||||
type MuxerFactory = import('libp2p-interfaces/src/stream-muxer/types').MuxerFactory;
|
||||
type ContentRoutingModule = import('libp2p-interfaces/src/content-routing/types').ContentRouting;
|
||||
type PeerDiscoveryFactory = import('libp2p-interfaces/src/peer-discovery/types').PeerDiscoveryFactory;
|
||||
type PeerRoutingModule = import('libp2p-interfaces/src/peer-routing/types').PeerRouting;
|
||||
type Crypto = import('libp2p-interfaces/src/crypto/types').Crypto;
|
||||
type Pubsub = import('libp2p-interfaces/src/pubsub');
|
||||
type PubsubOptions = import('libp2p-interfaces/src/pubsub').PubsubOptions;
|
||||
type Datastore = import('interface-datastore').Datastore;
|
||||
type Protector = import('./pnet');
|
||||
type RandomWalkOptions = {
|
||||
enabled?: boolean | undefined;
|
||||
queriesPerPeriod?: number | undefined;
|
||||
interval?: number | undefined;
|
||||
timeout?: number | undefined;
|
||||
};
|
||||
type DhtOptions = {
|
||||
enabled?: boolean | undefined;
|
||||
kBucketSize?: number | undefined;
|
||||
randomWalk?: RandomWalkOptions | undefined;
|
||||
clientMode?: boolean | undefined;
|
||||
selectors?: import("libp2p-interfaces/src/types").DhtSelectors | undefined;
|
||||
validators?: import("libp2p-interfaces/src/types").DhtValidators | undefined;
|
||||
};
|
||||
type KeychainOptions = {
|
||||
datastore?: import("interface-datastore/dist/src/types").Datastore | undefined;
|
||||
};
|
||||
type PeerStoreOptions = {
|
||||
persistence: boolean;
|
||||
};
|
||||
type PubsubLocalOptions = {
|
||||
enabled: boolean;
|
||||
};
|
||||
type MetricsOptions = {
|
||||
enabled: boolean;
|
||||
};
|
||||
type RelayOptions = {
|
||||
enabled?: boolean | undefined;
|
||||
advertise?: Relay.RelayAdvertiseOptions | undefined;
|
||||
hop?: Relay.HopOptions | undefined;
|
||||
autoRelay?: Relay.AutoRelayOptions | undefined;
|
||||
};
|
||||
import PersistentPeerStore = require("./peer-store/persistent");
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/index.d.ts.map
vendored
Normal file
1
dist/src/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";AAqCA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH;IACE;;;;;;OAMG;IACH,uBAHW,aAAa,GAAG,aAAa,GAC3B,QAAQ,MAAM,CAAC,CAa3B;IAED;;;;;OAKG;IACH,sBAFW,aAAa,GAAG,kBAAkB,EA+K5C;IAzKC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAAwC;IAExC,qBAAqB;IACrB,QADW,MAAM,CACiB;IAClC,8EAAwC;IAExC,qBAM0C;IAG1C;;;;;6CAAwC;IACxC,+BAA8E;IAS9E,wBAAqC;IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAAmC;IACnC,kBAAoB;IACpB,0BAA2B;IAG3B,qCAGE;IAIA,6BAGE;IASF,+BAGE;IAMJ,mBAKE;IAGF,mCAIE;IAGF,uBAME;IAGF,qBAGE;IAwUJ;;;;;OAKG;IACH,kBAHW,MAAM,EAAE,GAAC,MAAM,mBACP,YAAY,KAAK,IAAI,QAUvC;IAxUC,eAIE;IAWA,yBAA4B;IAW5B,6CAA4D;IAe5D,UAQE;IAOF,qBAAqB;IACrB,+CAA8D;IAKhE,yBAAwC;IACxC,+BAA8C;IAqVhD;;;;;;OAMG;IACH,yBAQC;IAzUD;;;;OAIG;IACH,SAFa,QAAQ,IAAI,CAAC,CAezB;IAED;;;;;OAKG;IACH,QAFa,QAAQ,IAAI,CAAC,CAwCzB;IAlCG,gCAAuB;IAoC3B;;;;;;OAMG;IACH,gBAFa,QAAQ,IAAI,CAAC,CAYzB;IAED,iCAEC;IAED;;;;;OAKG;IACH,wFAEC;IAED;;;;;;;;OAQG;IACH,WALW,MAAM,GAAC,SAAS,GAAC,MAAM;;oBAGrB,QAAQ,UAAU,CAAC,CAI/B;IAED;;;;;;;;;;OAUG;IACH,mBALW,MAAM,GAAC,SAAS,GAAC,MAAM,aACvB,MAAM,EAAE,GAAC,MAAM;;;;;OAWzB;IAED;;;;;OAKG;IACH,YAJW,MAAM,GAAC,SAAS,GAAC,MAAM,iCAErB,QAAQ,UAAU,CAAC,CAkB/B;IAED;;;;;;;;;OASG;IACH,8BAiBC;IAED;;;;;OAKG;IACH,aAHW,MAAM,GAAC,SAAS,GAAC,MAAM,GACrB,QAAQ,IAAI,CAAC,CAgBzB;IAED;;;;;OAKG;IACH,WAHW,MAAM,GAAC,SAAS,GAAC,MAAM,GACrB,QAAQ,MAAM,CAAC,CAW3B;IAkBD;;;;;OAKG;IACH,oBAFW,MAAM,EAAE,GAAC,MAAM,QAUzB;IAED,6BA0BC;IAED;;;;OAIG;IACH,oBAuBC;IAmBD;;;;;;;OAOG;IACH,sBAaC;IAED;;;;;OAKG;IACH,4BAkDC;CACF;;;;;;;;;;aA/oBa,aAAa;;;;;;;;;;;;;;;;;YAcb,MAAM;;;;;;eAzBN,4EAAkB;iBAClB,YAAY,EAAE;oBACd,MAAM,EAAE;;;;;4BAKM,GAAG,EAAE,KAAG,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBApD5B,UAAU;YACV,WAAW;cACX,MAAM;;;;;;;;;;;mBAjBP,OAAO,0CAA0C,EAAE,WAAW;wBAC9D,OAAO,uCAAuC,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC;oBAC1E,OAAO,0CAA0C,EAAE,YAAY;4BAC/D,OAAO,6CAA6C,EAAE,cAAc;4BACpE,OAAO,4CAA4C,EAAE,oBAAoB;yBACzE,OAAO,0CAA0C,EAAE,WAAW;cAC9D,OAAO,oCAAoC,EAAE,MAAM;cACnD,OAAO,8BAA8B,CAAC;qBACtC,OAAO,8BAA8B,EAAE,aAAa;iBACpD,OAAO,qBAAqB,EAAE,SAAS;iBACvC,OAAO,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;iBA2Bf,OAAO;;;aAGP,OAAO;;;aAGP,OAAO"}
|
12
dist/src/insecure/plaintext.d.ts
vendored
Normal file
12
dist/src/insecure/plaintext.d.ts
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
export type Connection = import("libp2p-interfaces/src/connection/connection");
|
||||
export const protocol: "/plaintext/2.0.0";
|
||||
import PeerId = require("peer-id");
|
||||
export declare function secureInbound(localId: PeerId, conn: import("libp2p-interfaces/src/connection/connection"), remoteId: PeerId | undefined): Promise<{
|
||||
conn: any;
|
||||
remotePeer: PeerId;
|
||||
}>;
|
||||
export declare function secureOutbound(localId: PeerId, conn: import("libp2p-interfaces/src/connection/connection"), remoteId: PeerId | undefined): Promise<{
|
||||
conn: any;
|
||||
remotePeer: PeerId;
|
||||
}>;
|
||||
//# sourceMappingURL=plaintext.d.ts.map
|
1
dist/src/insecure/plaintext.d.ts.map
vendored
Normal file
1
dist/src/insecure/plaintext.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"plaintext.d.ts","sourceRoot":"","sources":["../../../src/insecure/plaintext.js"],"names":[],"mappings":";AAaA,0CAAmC;;AAsEjB;;;GAEd;AAMe;;;GAEf"}
|
128
dist/src/insecure/proto.d.ts
vendored
Normal file
128
dist/src/insecure/proto.d.ts
vendored
Normal file
@@ -0,0 +1,128 @@
|
||||
import * as $protobuf from "protobufjs";
|
||||
/** Properties of an Exchange. */
|
||||
export interface IExchange {
|
||||
|
||||
/** Exchange id */
|
||||
id?: (Uint8Array|null);
|
||||
|
||||
/** Exchange pubkey */
|
||||
pubkey?: (IPublicKey|null);
|
||||
}
|
||||
|
||||
/** Represents an Exchange. */
|
||||
export class Exchange implements IExchange {
|
||||
|
||||
/**
|
||||
* Constructs a new Exchange.
|
||||
* @param [p] Properties to set
|
||||
*/
|
||||
constructor(p?: IExchange);
|
||||
|
||||
/** Exchange id. */
|
||||
public id: Uint8Array;
|
||||
|
||||
/** Exchange pubkey. */
|
||||
public pubkey?: (IPublicKey|null);
|
||||
|
||||
/**
|
||||
* Encodes the specified Exchange message. Does not implicitly {@link Exchange.verify|verify} messages.
|
||||
* @param m Exchange message or plain object to encode
|
||||
* @param [w] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(m: IExchange, w?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes an Exchange message from the specified reader or buffer.
|
||||
* @param r Reader or buffer to decode from
|
||||
* @param [l] Message length if known beforehand
|
||||
* @returns Exchange
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): Exchange;
|
||||
|
||||
/**
|
||||
* Creates an Exchange message from a plain object. Also converts values to their respective internal types.
|
||||
* @param d Plain object
|
||||
* @returns Exchange
|
||||
*/
|
||||
public static fromObject(d: { [k: string]: any }): Exchange;
|
||||
|
||||
/**
|
||||
* Creates a plain object from an Exchange message. Also converts values to other types if specified.
|
||||
* @param m Exchange
|
||||
* @param [o] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(m: Exchange, o?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this Exchange to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
|
||||
/** KeyType enum. */
|
||||
export enum KeyType {
|
||||
RSA = 0,
|
||||
Ed25519 = 1,
|
||||
Secp256k1 = 2,
|
||||
ECDSA = 3
|
||||
}
|
||||
|
||||
/** Represents a PublicKey. */
|
||||
export class PublicKey implements IPublicKey {
|
||||
|
||||
/**
|
||||
* Constructs a new PublicKey.
|
||||
* @param [p] Properties to set
|
||||
*/
|
||||
constructor(p?: IPublicKey);
|
||||
|
||||
/** PublicKey Type. */
|
||||
public Type: KeyType;
|
||||
|
||||
/** PublicKey Data. */
|
||||
public Data: Uint8Array;
|
||||
|
||||
/**
|
||||
* Encodes the specified PublicKey message. Does not implicitly {@link PublicKey.verify|verify} messages.
|
||||
* @param m PublicKey message or plain object to encode
|
||||
* @param [w] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(m: IPublicKey, w?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes a PublicKey message from the specified reader or buffer.
|
||||
* @param r Reader or buffer to decode from
|
||||
* @param [l] Message length if known beforehand
|
||||
* @returns PublicKey
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): PublicKey;
|
||||
|
||||
/**
|
||||
* Creates a PublicKey message from a plain object. Also converts values to their respective internal types.
|
||||
* @param d Plain object
|
||||
* @returns PublicKey
|
||||
*/
|
||||
public static fromObject(d: { [k: string]: any }): PublicKey;
|
||||
|
||||
/**
|
||||
* Creates a plain object from a PublicKey message. Also converts values to other types if specified.
|
||||
* @param m PublicKey
|
||||
* @param [o] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(m: PublicKey, o?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this PublicKey to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
41
dist/src/keychain/cms.d.ts
vendored
Normal file
41
dist/src/keychain/cms.d.ts
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
export = CMS;
|
||||
/**
|
||||
* Cryptographic Message Syntax (aka PKCS #7)
|
||||
*
|
||||
* CMS describes an encapsulation syntax for data protection. It
|
||||
* is used to digitally sign, digest, authenticate, or encrypt
|
||||
* arbitrary message content.
|
||||
*
|
||||
* See RFC 5652 for all the details.
|
||||
*/
|
||||
declare class CMS {
|
||||
/**
|
||||
* Creates a new instance with a keychain
|
||||
*
|
||||
* @param {import('./index')} keychain - the available keys
|
||||
* @param {string} dek
|
||||
*/
|
||||
constructor(keychain: import('./index'), dek: string);
|
||||
keychain: import("./index");
|
||||
/**
|
||||
* Creates some protected data.
|
||||
*
|
||||
* The output Uint8Array contains the PKCS #7 message in DER.
|
||||
*
|
||||
* @param {string} name - The local key name.
|
||||
* @param {Uint8Array} plain - The data to encrypt.
|
||||
* @returns {Promise<Uint8Array>}
|
||||
*/
|
||||
encrypt(name: string, plain: Uint8Array): Promise<Uint8Array>;
|
||||
/**
|
||||
* Reads some protected data.
|
||||
*
|
||||
* The keychain must contain one of the keys used to encrypt the data. If none of the keys
|
||||
* exists, an Error is returned with the property 'missingKeys'. It is array of key ids.
|
||||
*
|
||||
* @param {Uint8Array} cmsData - The CMS encrypted data to decrypt.
|
||||
* @returns {Promise<Uint8Array>}
|
||||
*/
|
||||
decrypt(cmsData: Uint8Array): Promise<Uint8Array>;
|
||||
}
|
||||
//# sourceMappingURL=cms.d.ts.map
|
1
dist/src/keychain/cms.d.ts.map
vendored
Normal file
1
dist/src/keychain/cms.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"cms.d.ts","sourceRoot":"","sources":["../../../src/keychain/cms.js"],"names":[],"mappings":";AAeA;;;;;;;;GAQG;AACH;IACE;;;;;OAKG;IACH,sBAHW,OAAO,SAAS,CAAC,OACjB,MAAM,EAShB;IAFC,4BAAwB;IAI1B;;;;;;;;OAQG;IACH,cAJW,MAAM,SACN,UAAU,GACR,QAAQ,UAAU,CAAC,CAuB/B;IAED;;;;;;;;OAQG;IACH,iBAHW,UAAU,GACR,QAAQ,UAAU,CAAC,CA8D/B;CACF"}
|
151
dist/src/keychain/index.d.ts
vendored
Normal file
151
dist/src/keychain/index.d.ts
vendored
Normal file
@@ -0,0 +1,151 @@
|
||||
export = Keychain;
|
||||
/**
|
||||
* Manages the lifecycle of a key. Keys are encrypted at rest using PKCS #8.
|
||||
*
|
||||
* A key in the store has two entries
|
||||
* - '/info/*key-name*', contains the KeyInfo for the key
|
||||
* - '/pkcs8/*key-name*', contains the PKCS #8 for the key
|
||||
*
|
||||
*/
|
||||
declare class Keychain {
|
||||
/**
|
||||
* Generates the options for a keychain. A random salt is produced.
|
||||
*
|
||||
* @returns {Object}
|
||||
*/
|
||||
static generateOptions(): Object;
|
||||
/**
|
||||
* Gets an object that can encrypt/decrypt protected data.
|
||||
* The default options for a keychain.
|
||||
*
|
||||
* @returns {Object}
|
||||
*/
|
||||
static get options(): Object;
|
||||
/**
|
||||
* Creates a new instance of a key chain.
|
||||
*
|
||||
* @param {Datastore} store - where the key are.
|
||||
* @param {KeychainOptions} options
|
||||
* @class
|
||||
*/
|
||||
constructor(store: Datastore, options: KeychainOptions);
|
||||
store: import("interface-datastore/dist/src/types").Datastore;
|
||||
opts: any;
|
||||
/**
|
||||
* Gets an object that can encrypt/decrypt protected data
|
||||
* using the Cryptographic Message Syntax (CMS).
|
||||
*
|
||||
* CMS describes an encapsulation syntax for data protection. It
|
||||
* is used to digitally sign, digest, authenticate, or encrypt
|
||||
* arbitrary message content.
|
||||
*
|
||||
* @returns {CMS}
|
||||
*/
|
||||
get cms(): CMS;
|
||||
/**
|
||||
* Create a new key.
|
||||
*
|
||||
* @param {string} name - The local key name; cannot already exist.
|
||||
* @param {string} type - One of the key types; 'rsa'.
|
||||
* @param {number} [size = 2048] - The key size in bits. Used for rsa keys only.
|
||||
* @returns {Promise<KeyInfo>}
|
||||
*/
|
||||
createKey(name: string, type: string, size?: number | undefined): Promise<KeyInfo>;
|
||||
/**
|
||||
* List all the keys.
|
||||
*
|
||||
* @returns {Promise<KeyInfo[]>}
|
||||
*/
|
||||
listKeys(): Promise<KeyInfo[]>;
|
||||
/**
|
||||
* Find a key by it's id.
|
||||
*
|
||||
* @param {string} id - The universally unique key identifier.
|
||||
* @returns {Promise<KeyInfo|undefined>}
|
||||
*/
|
||||
findKeyById(id: string): Promise<KeyInfo | undefined>;
|
||||
/**
|
||||
* Find a key by it's name.
|
||||
*
|
||||
* @param {string} name - The local key name.
|
||||
* @returns {Promise<KeyInfo>}
|
||||
*/
|
||||
findKeyByName(name: string): Promise<KeyInfo>;
|
||||
/**
|
||||
* Remove an existing key.
|
||||
*
|
||||
* @param {string} name - The local key name; must already exist.
|
||||
* @returns {Promise<KeyInfo>}
|
||||
*/
|
||||
removeKey(name: string): Promise<KeyInfo>;
|
||||
/**
|
||||
* Rename a key
|
||||
*
|
||||
* @param {string} oldName - The old local key name; must already exist.
|
||||
* @param {string} newName - The new local key name; must not already exist.
|
||||
* @returns {Promise<KeyInfo>}
|
||||
*/
|
||||
renameKey(oldName: string, newName: string): Promise<KeyInfo>;
|
||||
/**
|
||||
* Export an existing key as a PEM encrypted PKCS #8 string
|
||||
*
|
||||
* @param {string} name - The local key name; must already exist.
|
||||
* @param {string} password - The password
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
exportKey(name: string, password: string): Promise<string>;
|
||||
/**
|
||||
* Import a new key from a PEM encoded PKCS #8 string
|
||||
*
|
||||
* @param {string} name - The local key name; must not already exist.
|
||||
* @param {string} pem - The PEM encoded PKCS #8 string
|
||||
* @param {string} password - The password.
|
||||
* @returns {Promise<KeyInfo>}
|
||||
*/
|
||||
importKey(name: string, pem: string, password: string): Promise<KeyInfo>;
|
||||
/**
|
||||
* Import a peer key
|
||||
*
|
||||
* @param {string} name - The local key name; must not already exist.
|
||||
* @param {PeerId} peer - The PEM encoded PKCS #8 string
|
||||
* @returns {Promise<KeyInfo>}
|
||||
*/
|
||||
importPeer(name: string, peer: PeerId): Promise<KeyInfo>;
|
||||
/**
|
||||
* Gets the private key as PEM encoded PKCS #8 string.
|
||||
*
|
||||
* @param {string} name
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
_getPrivateKey(name: string): Promise<string>;
|
||||
}
|
||||
declare namespace Keychain {
|
||||
export { PeerId, Datastore, DekOptions, KeychainOptions, KeyInfo };
|
||||
}
|
||||
import CMS = require("./cms");
|
||||
/**
|
||||
* Information about a key.
|
||||
*/
|
||||
type KeyInfo = {
|
||||
/**
|
||||
* - The universally unique key id.
|
||||
*/
|
||||
id: string;
|
||||
/**
|
||||
* - The local key name.
|
||||
*/
|
||||
name: string;
|
||||
};
|
||||
type PeerId = import('peer-id');
|
||||
type Datastore = import('interface-datastore').Datastore;
|
||||
type KeychainOptions = {
|
||||
pass?: string | undefined;
|
||||
dek?: DekOptions | undefined;
|
||||
};
|
||||
type DekOptions = {
|
||||
hash: string;
|
||||
salt: string;
|
||||
iterationCount: number;
|
||||
keyLength: number;
|
||||
};
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/keychain/index.d.ts.map
vendored
Normal file
1
dist/src/keychain/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/keychain/index.js"],"names":[],"mappings":";AA+GA;;;;;;;GAOG;AACH;IAwDE;;;;OAIG;IACH,0BAFa,MAAM,CAOlB;IAED;;;;;OAKG;IACH,6BAEC;IA3ED;;;;;;OAMG;IACH,mBAJW,SAAS,WACT,eAAe,EAmCzB;IA5BC,8DAAkB;IAElB,UAAiD;IA4BnD;;;;;;;;;OASG;IACH,eAEC;IAwBD;;;;;;;OAOG;IACH,gBALW,MAAM,QACN,MAAM,8BAEJ,QAAQ,OAAO,CAAC,CAiD5B;IAED;;;;OAIG;IACH,YAFa,QAAQ,OAAO,EAAE,CAAC,CAc9B;IAED;;;;;OAKG;IACH,gBAHW,MAAM,GACJ,QAAQ,OAAO,GAAC,SAAS,CAAC,CAStC;IAED;;;;;OAKG;IACH,oBAHW,MAAM,GACJ,QAAQ,OAAO,CAAC,CAc5B;IAED;;;;;OAKG;IACH,gBAHW,MAAM,GACJ,QAAQ,OAAO,CAAC,CAc5B;IAED;;;;;;OAMG;IACH,mBAJW,MAAM,WACN,MAAM,GACJ,QAAQ,OAAO,CAAC,CAkC5B;IAED;;;;;;OAMG;IACH,gBAJW,MAAM,YACN,MAAM,GACJ,QAAQ,MAAM,CAAC,CAqB3B;IAED;;;;;;;OAOG;IACH,gBALW,MAAM,OACN,MAAM,YACN,MAAM,GACJ,QAAQ,OAAO,CAAC,CAyC5B;IAED;;;;;;OAMG;IACH,iBAJW,MAAM,QACN,MAAM,GACJ,QAAQ,OAAO,CAAC,CAiC5B;IAED;;;;;OAKG;IACH,qBAHW,MAAM,GACJ,QAAQ,MAAM,CAAC,CAc3B;CACF;;;;;;;;;;;;QArda,MAAM;;;;UACN,MAAM;;cArBP,OAAO,SAAS,CAAC;iBACjB,OAAO,qBAAqB,EAAE,SAAS;;;;;;UAKtC,MAAM;UACN,MAAM;oBACN,MAAM;eACN,MAAM"}
|
24
dist/src/keychain/util.d.ts
vendored
Normal file
24
dist/src/keychain/util.d.ts
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* Gets a self-signed X.509 certificate for the key.
|
||||
*
|
||||
* The output Uint8Array contains the PKCS #7 message in DER.
|
||||
*
|
||||
* TODO: move to libp2p-crypto package
|
||||
*
|
||||
* @param {KeyInfo} key - The id and name of the key
|
||||
* @param {RsaPrivateKey} privateKey - The naked key
|
||||
* @returns {Uint8Array}
|
||||
*/
|
||||
export function certificateForKey(key: any, privateKey: any): Uint8Array;
|
||||
/**
|
||||
* Finds the first item in a collection that is matched in the
|
||||
* `asyncCompare` function.
|
||||
*
|
||||
* `asyncCompare` is an async function that must
|
||||
* resolve to either `true` or `false`.
|
||||
*
|
||||
* @param {Array} array
|
||||
* @param {function(*)} asyncCompare - An async function that returns a boolean
|
||||
*/
|
||||
export function findAsync(array: any[], asyncCompare: (arg0: any) => any): Promise<any>;
|
||||
//# sourceMappingURL=util.d.ts.map
|
1
dist/src/keychain/util.d.ts.map
vendored
Normal file
1
dist/src/keychain/util.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/keychain/util.js"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,8DAFa,UAAU,CAqDtB;AAED;;;;;;;;;GASG;AACH,wFAKC"}
|
147
dist/src/metrics/index.d.ts
vendored
Normal file
147
dist/src/metrics/index.d.ts
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
export = Metrics;
|
||||
/**
|
||||
* @typedef {import('peer-id')} PeerId
|
||||
* @typedef {import('libp2p-interfaces/src/transport/types').MultiaddrConnection} MultiaddrConnection
|
||||
*/
|
||||
/**
|
||||
* @typedef MetricsProperties
|
||||
* @property {import('../connection-manager')} connectionManager
|
||||
*
|
||||
* @typedef MetricsOptions
|
||||
* @property {number} [computeThrottleMaxQueueSize = defaultOptions.computeThrottleMaxQueueSize]
|
||||
* @property {number} [computeThrottleTimeout = defaultOptions.computeThrottleTimeout]
|
||||
* @property {number[]} [movingAverageIntervals = defaultOptions.movingAverageIntervals]
|
||||
* @property {number} [maxOldPeersRetention = defaultOptions.maxOldPeersRetention]
|
||||
*/
|
||||
declare class Metrics {
|
||||
/**
|
||||
* Merges `other` into `target`. `target` will be modified
|
||||
* and returned.
|
||||
*
|
||||
* @param {Stats} target
|
||||
* @param {Stats} other
|
||||
* @returns {Stats}
|
||||
*/
|
||||
static mergeStats(target: Stats, other: Stats): Stats;
|
||||
/**
|
||||
* @class
|
||||
* @param {MetricsProperties & MetricsOptions} options
|
||||
*/
|
||||
constructor(options: MetricsProperties & MetricsOptions);
|
||||
_options: any;
|
||||
_globalStats: Stats;
|
||||
_peerStats: Map<any, any>;
|
||||
_protocolStats: Map<any, any>;
|
||||
_oldPeers: any;
|
||||
_running: boolean;
|
||||
/**
|
||||
* Takes the metadata for a message and tracks it in the
|
||||
* appropriate categories. If the protocol is present, protocol
|
||||
* stats will also be tracked.
|
||||
*
|
||||
* @private
|
||||
* @param {object} params
|
||||
* @param {PeerId} params.remotePeer - Remote peer
|
||||
* @param {string} [params.protocol] - Protocol string the stream is running
|
||||
* @param {string} params.direction - One of ['in','out']
|
||||
* @param {number} params.dataLength - Size of the message
|
||||
* @returns {void}
|
||||
*/
|
||||
private _onMessage;
|
||||
_connectionManager: import("../connection-manager");
|
||||
/**
|
||||
* Must be called for stats to saved. Any data pushed for tracking
|
||||
* will be ignored.
|
||||
*/
|
||||
start(): void;
|
||||
/**
|
||||
* Stops all averages timers and prevents new data from being tracked.
|
||||
* Once `stop` is called, `start` must be called to resume stats tracking.
|
||||
*/
|
||||
stop(): void;
|
||||
/**
|
||||
* Gets the global `Stats` object
|
||||
*
|
||||
* @returns {Stats}
|
||||
*/
|
||||
get global(): Stats;
|
||||
/**
|
||||
* Returns a list of `PeerId` strings currently being tracked
|
||||
*
|
||||
* @returns {string[]}
|
||||
*/
|
||||
get peers(): string[];
|
||||
/**
|
||||
* Returns the `Stats` object for the given `PeerId` whether it
|
||||
* is a live peer, or in the disconnected peer LRU cache.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @returns {Stats}
|
||||
*/
|
||||
forPeer(peerId: PeerId): Stats;
|
||||
/**
|
||||
* Returns a list of all protocol strings currently being tracked.
|
||||
*
|
||||
* @returns {string[]}
|
||||
*/
|
||||
get protocols(): string[];
|
||||
/**
|
||||
* Returns the `Stats` object for the given `protocol`.
|
||||
*
|
||||
* @param {string} protocol
|
||||
* @returns {Stats}
|
||||
*/
|
||||
forProtocol(protocol: string): Stats;
|
||||
/**
|
||||
* Should be called when all connections to a given peer
|
||||
* have closed. The `Stats` collection for the peer will
|
||||
* be stopped and moved to an LRU for temporary retention.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
*/
|
||||
onPeerDisconnected(peerId: PeerId): void;
|
||||
/**
|
||||
* Replaces the `PeerId` string with the given `peerId`.
|
||||
* If stats are already being tracked for the given `peerId`, the
|
||||
* placeholder stats will be merged with the existing stats.
|
||||
*
|
||||
* @param {PeerId} placeholder - A peerId string
|
||||
* @param {PeerId} peerId
|
||||
* @returns {void}
|
||||
*/
|
||||
updatePlaceholder(placeholder: PeerId, peerId: PeerId): void;
|
||||
/**
|
||||
* Tracks data running through a given Duplex Iterable `stream`. If
|
||||
* the `peerId` is not provided, a placeholder string will be created and
|
||||
* returned. This allows lazy tracking of a peer when the peer is not yet known.
|
||||
* When the `PeerId` is known, `Metrics.updatePlaceholder` should be called
|
||||
* with the placeholder string returned from here, and the known `PeerId`.
|
||||
*
|
||||
* @param {Object} options
|
||||
* @param {MultiaddrConnection} options.stream - A duplex iterable stream
|
||||
* @param {PeerId} [options.remotePeer] - The id of the remote peer that's connected
|
||||
* @param {string} [options.protocol] - The protocol the stream is running
|
||||
* @returns {MultiaddrConnection} The peerId string or placeholder string
|
||||
*/
|
||||
trackStream({ stream, remotePeer, protocol }: {
|
||||
stream: MultiaddrConnection;
|
||||
remotePeer?: import("peer-id") | undefined;
|
||||
protocol?: string | undefined;
|
||||
}): MultiaddrConnection;
|
||||
}
|
||||
declare namespace Metrics {
|
||||
export { PeerId, MultiaddrConnection, MetricsProperties, MetricsOptions };
|
||||
}
|
||||
import Stats = require("./stats");
|
||||
type PeerId = import('peer-id');
|
||||
type MultiaddrConnection = import('libp2p-interfaces/src/transport/types').MultiaddrConnection;
|
||||
type MetricsProperties = {
|
||||
connectionManager: import('../connection-manager');
|
||||
};
|
||||
type MetricsOptions = {
|
||||
computeThrottleMaxQueueSize?: number | undefined;
|
||||
computeThrottleTimeout?: number | undefined;
|
||||
movingAverageIntervals?: number[] | undefined;
|
||||
maxOldPeersRetention?: number | undefined;
|
||||
};
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/metrics/index.d.ts.map
vendored
Normal file
1
dist/src/metrics/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metrics/index.js"],"names":[],"mappings":";AAoBA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH;IAwNE;;;;;;;OAOG;IACH,0BAJW,KAAK,SACL,KAAK,GACH,KAAK,CAWjB;IAxOD;;;OAGG;IACH,qBAFW,iBAAiB,GAAG,cAAc,EAc5C;IAXC,cAAqD;IACrD,oBAA6D;IAC7D,0BAA2B;IAC3B,8BAA+B;IAC/B,eAA+D;IAC/D,kBAAqB;IAiGvB;;;;;;;;;;;;OAYG;IACH,mBAwBC;IApIC,oDAAmD;IAMrD;;;OAGG;IACH,cAEC;IAED;;;OAGG;IACH,aASC;IAED;;;;OAIG;IACH,oBAEC;IAED;;;;OAIG;IACH,sBAEC;IAED;;;;;;OAMG;IACH,gBAHW,MAAM,GACJ,KAAK,CAKjB;IAED;;;;OAIG;IACH,0BAEC;IAED;;;;;OAKG;IACH,sBAHW,MAAM,GACJ,KAAK,CAIjB;IAED;;;;;;OAMG;IACH,2BAFW,MAAM,QAUhB;IAyCD;;;;;;;;OAQG;IACH,+BAJW,MAAM,UACN,MAAM,GACJ,IAAI,CAoBhB;IAED;;;;;;;;;;;;OAYG;IACH;QALwC,MAAM,EAAnC,mBAAmB;QACF,UAAU;QACV,QAAQ;QACvB,mBAAmB,CA2B/B;CAoBF;;;;;cAzPY,OAAO,SAAS,CAAC;2BACjB,OAAO,uCAAuC,EAAE,mBAAmB;;uBAKlE,OAAO,uBAAuB,CAAC"}
|
3
dist/src/metrics/old-peers.d.ts
vendored
Normal file
3
dist/src/metrics/old-peers.d.ts
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
declare function _exports(maxSize: number): any;
|
||||
export = _exports;
|
||||
//# sourceMappingURL=old-peers.d.ts.map
|
1
dist/src/metrics/old-peers.d.ts.map
vendored
Normal file
1
dist/src/metrics/old-peers.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"old-peers.d.ts","sourceRoot":"","sources":["../../../src/metrics/old-peers.js"],"names":[],"mappings":"AAUiB,mCAHN,MAAM,GACJ,GAAG,CAOf"}
|
132
dist/src/metrics/stats.d.ts
vendored
Normal file
132
dist/src/metrics/stats.d.ts
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
export = Stats;
|
||||
declare class Stats extends EventEmitter {
|
||||
/**
|
||||
* A queue based manager for stat processing
|
||||
*
|
||||
* @class
|
||||
* @param {string[]} initialCounters
|
||||
* @param {any} options
|
||||
*/
|
||||
constructor(initialCounters: string[], options: any);
|
||||
_options: any;
|
||||
_queue: any[];
|
||||
/** @type {{ dataReceived: Big, dataSent: Big }} */
|
||||
_stats: {
|
||||
dataReceived: Big;
|
||||
dataSent: Big;
|
||||
};
|
||||
_frequencyLastTime: number;
|
||||
_frequencyAccumulators: {};
|
||||
/** @type {{ dataReceived: MovingAverage[], dataSent: MovingAverage[] }} */
|
||||
_movingAverages: {
|
||||
dataReceived: (typeof MovingAverage)[];
|
||||
dataSent: (typeof MovingAverage)[];
|
||||
};
|
||||
/**
|
||||
* If there are items in the queue, they will will be processed and
|
||||
* the frequency for all items will be updated based on the Timestamp
|
||||
* of the last item in the queue. The `update` event will also be emitted
|
||||
* with the latest stats.
|
||||
*
|
||||
* If there are no items in the queue, no action is taken.
|
||||
*
|
||||
* @private
|
||||
* @returns {void}
|
||||
*/
|
||||
private _update;
|
||||
/**
|
||||
* Initializes the internal timer if there are items in the queue. This
|
||||
* should only need to be called if `Stats.stop` was previously called, as
|
||||
* `Stats.push` will also start the processing.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
start(): void;
|
||||
/**
|
||||
* Stops processing and computing of stats by clearing the internal
|
||||
* timer.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
stop(): void;
|
||||
_timeout: any;
|
||||
/**
|
||||
* Returns a clone of the current stats.
|
||||
*/
|
||||
get snapshot(): {
|
||||
dataReceived: Big;
|
||||
dataSent: Big;
|
||||
};
|
||||
/**
|
||||
* Returns a clone of the internal movingAverages
|
||||
*/
|
||||
get movingAverages(): {
|
||||
dataReceived: (typeof MovingAverage)[];
|
||||
dataSent: (typeof MovingAverage)[];
|
||||
};
|
||||
/**
|
||||
* Returns a plain JSON object of the stats
|
||||
*
|
||||
* @returns {*}
|
||||
*/
|
||||
toJSON(): any;
|
||||
/**
|
||||
* Pushes the given operation data to the queue, along with the
|
||||
* current Timestamp, then resets the update timer.
|
||||
*
|
||||
* @param {string} counter
|
||||
* @param {number} inc
|
||||
* @returns {void}
|
||||
*/
|
||||
push(counter: string, inc: number): void;
|
||||
/**
|
||||
* Resets the timeout for triggering updates.
|
||||
*
|
||||
* @private
|
||||
* @returns {void}
|
||||
*/
|
||||
private _resetComputeTimeout;
|
||||
/**
|
||||
* Calculates and returns the timeout for the next update based on
|
||||
* the urgency of the update.
|
||||
*
|
||||
* @private
|
||||
* @returns {number}
|
||||
*/
|
||||
private _nextTimeout;
|
||||
/**
|
||||
* For each key in the stats, the frequency and moving averages
|
||||
* will be updated via Stats._updateFrequencyFor based on the time
|
||||
* difference between calls to this method.
|
||||
*
|
||||
* @private
|
||||
* @param {Timestamp} latestTime
|
||||
* @returns {void}
|
||||
*/
|
||||
private _updateFrequency;
|
||||
/**
|
||||
* Updates the `movingAverages` for the given `key` and also
|
||||
* resets the `frequencyAccumulator` for the `key`.
|
||||
*
|
||||
* @private
|
||||
* @param {string} key
|
||||
* @param {number} timeDiffMS - Time in milliseconds
|
||||
* @param {Timestamp} latestTime - Time in ticks
|
||||
* @returns {void}
|
||||
*/
|
||||
private _updateFrequencyFor;
|
||||
/**
|
||||
* For the given operation, `op`, the stats and `frequencyAccumulator`
|
||||
* will be updated or initialized if they don't already exist.
|
||||
*
|
||||
* @private
|
||||
* @param {{string, number}[]} op
|
||||
* @throws {InvalidNumber}
|
||||
* @returns {void}
|
||||
*/
|
||||
private _applyOp;
|
||||
}
|
||||
import { EventEmitter } from "events";
|
||||
import { BigNumber as Big } from "bignumber.js";
|
||||
import MovingAverage = require("moving-average");
|
||||
//# sourceMappingURL=stats.d.ts.map
|
1
dist/src/metrics/stats.d.ts.map
vendored
Normal file
1
dist/src/metrics/stats.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/metrics/stats.js"],"names":[],"mappings":";AAQA;IACE;;;;;;OAMG;IACH,6BAHW,MAAM,EAAE,WACR,GAAG,EAkCb;IA7BC,cAAuB;IACvB,cAAgB;IAEhB,mDAAmD;IACnD;sBAD2B,GAAG;kBAAY,GAAG;MAI5C;IAED,2BAAoC;IACpC,2BAAgC;IAEhC,2EAA2E;IAC3E;sBAD2B,wBAAe;kBAAY,wBAAe;MAC5C;IAwH3B;;;;;;;;;;OAUG;IACH,gBAaC;IA9HD;;;;;;OAMG;IACH,SAFa,IAAI,CAMhB;IAED;;;;;OAKG;IACH,QAFa,IAAI,CAOhB;IAFG,cAAoB;IAIxB;;OAEG;IACH;sBAzD6B,GAAG;kBAAY,GAAG;MA2D9C;IAED;;OAEG;IACH;sBAvD6B,wBAAe;kBAAY,wBAAe;MAyDtE;IAED;;;;OAIG;IACH,cAkBC;IAED;;;;;;;OAOG;IACH,cAJW,MAAM,OACN,MAAM,GACJ,IAAI,CAKhB;IAED;;;;;OAKG;IACH,6BAEC;IAED;;;;;;OAMG;IACH,qBAKC;IA4BD;;;;;;;;OAQG;IACH,yBAQC;IAED;;;;;;;;;OASG;IACH,4BAsBC;IAED;;;;;;;;OAQG;IACH,iBAqBC;CACF"}
|
121
dist/src/nat-manager.d.ts
vendored
Normal file
121
dist/src/nat-manager.d.ts
vendored
Normal file
@@ -0,0 +1,121 @@
|
||||
export = NatManager;
|
||||
declare class NatManager {
|
||||
/**
|
||||
* @class
|
||||
* @param {NatManagerProperties & NatManagerOptions} options
|
||||
*/
|
||||
constructor({ peerId, addressManager, transportManager, ...options }: NatManagerProperties & NatManagerOptions);
|
||||
_peerId: import("peer-id");
|
||||
_addressManager: import("./address-manager");
|
||||
_transportManager: import("./transport-manager");
|
||||
_enabled: boolean;
|
||||
_externalIp: string | undefined;
|
||||
_options: {
|
||||
description: string;
|
||||
ttl: number;
|
||||
autoUpdate: true;
|
||||
gateway: string | undefined;
|
||||
enablePMP: boolean;
|
||||
};
|
||||
/**
|
||||
* Starts the NAT manager
|
||||
*/
|
||||
start(): void;
|
||||
_start(): Promise<void>;
|
||||
_getClient(): {
|
||||
/**
|
||||
* @param {...any} args
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
map: (...args: any[]) => Promise<void>;
|
||||
/**
|
||||
* @param {...any} args
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
destroy: (...args: any[]) => Promise<void>;
|
||||
/**
|
||||
* @param {...any} args
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
externalIp: (...args: any[]) => Promise<string>;
|
||||
};
|
||||
_client: {
|
||||
/**
|
||||
* @param {...any} args
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
map: (...args: any[]) => Promise<void>;
|
||||
/**
|
||||
* @param {...any} args
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
destroy: (...args: any[]) => Promise<void>;
|
||||
/**
|
||||
* @param {...any} args
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
externalIp: (...args: any[]) => Promise<string>;
|
||||
} | null | undefined;
|
||||
/**
|
||||
* Stops the NAT manager
|
||||
*
|
||||
* @async
|
||||
*/
|
||||
stop(): Promise<void>;
|
||||
}
|
||||
declare namespace NatManager {
|
||||
export { PeerId, TransportManager, AddressManager, NatManagerProperties, NatManagerOptions };
|
||||
}
|
||||
type NatManagerProperties = {
|
||||
/**
|
||||
* - The peer ID of the current node
|
||||
*/
|
||||
peerId: PeerId;
|
||||
/**
|
||||
* - A transport manager
|
||||
*/
|
||||
transportManager: TransportManager;
|
||||
/**
|
||||
* - An address manager
|
||||
*/
|
||||
addressManager: AddressManager;
|
||||
};
|
||||
type NatManagerOptions = {
|
||||
/**
|
||||
* - Whether to enable the NAT manager
|
||||
*/
|
||||
enabled: boolean;
|
||||
/**
|
||||
* - Pass a value to use instead of auto-detection
|
||||
*/
|
||||
externalIp?: string | undefined;
|
||||
/**
|
||||
* - A string value to use for the port mapping description on the gateway
|
||||
*/
|
||||
description?: string | undefined;
|
||||
/**
|
||||
* - How long UPnP port mappings should last for in seconds (minimum 1200)
|
||||
*/
|
||||
ttl?: number | undefined;
|
||||
/**
|
||||
* - Whether to automatically refresh UPnP port mappings when their TTL is reached
|
||||
*/
|
||||
keepAlive?: boolean | undefined;
|
||||
/**
|
||||
* - Pass a value to use instead of auto-detection
|
||||
*/
|
||||
gateway?: string | undefined;
|
||||
/**
|
||||
* - PMP options
|
||||
*/
|
||||
pmp?: {
|
||||
/**
|
||||
* - Whether to enable PMP as well as UPnP
|
||||
*/
|
||||
enabled?: boolean | undefined;
|
||||
} | undefined;
|
||||
};
|
||||
type PeerId = import('peer-id');
|
||||
type TransportManager = import('./transport-manager');
|
||||
type AddressManager = import('./address-manager');
|
||||
//# sourceMappingURL=nat-manager.d.ts.map
|
1
dist/src/nat-manager.d.ts.map
vendored
Normal file
1
dist/src/nat-manager.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"nat-manager.d.ts","sourceRoot":"","sources":["../../src/nat-manager.js"],"names":[],"mappings":";AAkDA;IACE;;;OAGG;IACH,sEAFW,oBAAoB,GAAG,iBAAiB,EAoBlD;IAjBC,2BAAqB;IACrB,6CAAqC;IACrC,iDAAyC;IAEzC,kBAA+B;IAC/B,gCAAqC;IACrC;;;;;;MAMC;IAOH;;OAEG;IACH,cAUC;IAED,wBA+CC;IAED;QAgBI;;;WAGG;uBAFY,GAAG,OACL,QAAQ,IAAI,CAAC;QAI1B;;;WAGG;2BAFY,GAAG,OACL,QAAQ,IAAI,CAAC;QAI1B;;;WAGG;8BAFY,GAAG,OACL,QAAQ,MAAM,CAAC;MAM/B;IArBC;QACE;;;WAGG;uBAFY,GAAG,OACL,QAAQ,IAAI,CAAC;QAI1B;;;WAGG;2BAFY,GAAG,OACL,QAAQ,IAAI,CAAC;QAI1B;;;WAGG;8BAFY,GAAG,OACL,QAAQ,MAAM,CAAC;yBAG7B;IAKH;;;;OAIG;IACH,sBAWC;CACF;;;;;;;;YAnKa,MAAM;;;;sBACN,gBAAgB;;;;oBAChB,cAAc;;;;;;aAGd,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAZR,OAAO,SAAS,CAAC;wBACjB,OAAO,qBAAqB,CAAC;sBAC7B,OAAO,mBAAmB,CAAC"}
|
96
dist/src/peer-routing.d.ts
vendored
Normal file
96
dist/src/peer-routing.d.ts
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
export = PeerRouting;
|
||||
/**
|
||||
* @typedef {import('peer-id')} PeerId
|
||||
* @typedef {import('multiaddr').Multiaddr} Multiaddr
|
||||
* @typedef {import('libp2p-interfaces/src/peer-routing/types').PeerRouting} PeerRoutingModule
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} RefreshManagerOptions
|
||||
* @property {boolean} [enabled = true] - Whether to enable the Refresh manager
|
||||
* @property {number} [bootDelay = 6e5] - Boot delay to start the Refresh Manager (in ms)
|
||||
* @property {number} [interval = 10e3] - Interval between each Refresh Manager run (in ms)
|
||||
*
|
||||
* @typedef {Object} PeerRoutingOptions
|
||||
* @property {RefreshManagerOptions} [refreshManager]
|
||||
*/
|
||||
declare class PeerRouting {
|
||||
/**
|
||||
* @class
|
||||
* @param {import('./')} libp2p
|
||||
*/
|
||||
constructor(libp2p: import('./'));
|
||||
_peerId: import("peer-id");
|
||||
_peerStore: import("./peer-store");
|
||||
/** @type {PeerRoutingModule[]} */
|
||||
_routers: PeerRoutingModule[];
|
||||
_refreshManagerOptions: {
|
||||
enabled: boolean;
|
||||
interval: number;
|
||||
bootDelay: number;
|
||||
} & RefreshManagerOptions;
|
||||
/**
|
||||
* Recurrent task to find closest peers and add their addresses to the Address Book.
|
||||
*/
|
||||
_findClosestPeersTask(): Promise<void>;
|
||||
/**
|
||||
* Start peer routing service.
|
||||
*/
|
||||
start(): void;
|
||||
_timeoutId: any;
|
||||
/**
|
||||
* Stop peer routing service.
|
||||
*/
|
||||
stop(): void;
|
||||
/**
|
||||
* Iterates over all peer routers in parallel to find the given peer.
|
||||
*
|
||||
* @param {PeerId} id - The id of the peer to find
|
||||
* @param {object} [options]
|
||||
* @param {number} [options.timeout] - How long the query should run
|
||||
* @returns {Promise<{ id: PeerId, multiaddrs: Multiaddr[] }>}
|
||||
*/
|
||||
findPeer(id: PeerId, options?: {
|
||||
timeout?: number | undefined;
|
||||
} | undefined): Promise<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}>;
|
||||
/**
|
||||
* Attempt to find the closest peers on the network to the given key.
|
||||
*
|
||||
* @param {Uint8Array} key - A CID like key
|
||||
* @param {Object} [options]
|
||||
* @param {number} [options.timeout=30e3] - How long the query can take.
|
||||
* @returns {AsyncIterable<{ id: PeerId, multiaddrs: Multiaddr[] }>}
|
||||
*/
|
||||
getClosestPeers(key: Uint8Array, options?: {
|
||||
timeout?: number | undefined;
|
||||
} | undefined): AsyncIterable<{
|
||||
id: PeerId;
|
||||
multiaddrs: Multiaddr[];
|
||||
}>;
|
||||
}
|
||||
declare namespace PeerRouting {
|
||||
export { PeerId, Multiaddr, PeerRoutingModule, RefreshManagerOptions, PeerRoutingOptions };
|
||||
}
|
||||
type PeerRoutingModule = import('libp2p-interfaces/src/peer-routing/types').PeerRouting;
|
||||
type RefreshManagerOptions = {
|
||||
/**
|
||||
* - Whether to enable the Refresh manager
|
||||
*/
|
||||
enabled?: boolean | undefined;
|
||||
/**
|
||||
* - Boot delay to start the Refresh Manager (in ms)
|
||||
*/
|
||||
bootDelay?: number | undefined;
|
||||
/**
|
||||
* - Interval between each Refresh Manager run (in ms)
|
||||
*/
|
||||
interval?: number | undefined;
|
||||
};
|
||||
type PeerId = import('peer-id');
|
||||
type Multiaddr = import('multiaddr').Multiaddr;
|
||||
type PeerRoutingOptions = {
|
||||
refreshManager?: RefreshManagerOptions | undefined;
|
||||
};
|
||||
//# sourceMappingURL=peer-routing.d.ts.map
|
1
dist/src/peer-routing.d.ts.map
vendored
Normal file
1
dist/src/peer-routing.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"peer-routing.d.ts","sourceRoot":"","sources":["../../src/peer-routing.js"],"names":[],"mappings":";AAwBA;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH;IACE;;;OAGG;IACH,oBAFW,OAAO,IAAI,CAAC,EAgBtB;IAbC,2BAA4B;IAC5B,mCAAkC;IAClC,kCAAkC;IAClC,UADW,iBAAiB,EAAE,CACmB;IAOjD;;;;8BAAwE;IAkB1E;;OAEG;IACH,uCAOC;IAvBD;;OAEG;IACH,cAQC;IAHC,gBAEC;IAeH;;OAEG;IACH,aAEC;IAED;;;;;;;OAOG;IACH,aALW,MAAM;;oBAGJ,QAAQ;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CAsB5D;IAED;;;;;;;OAOG;IACH,qBALW,UAAU;;oBAGR,cAAc;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CAelE;CACF;;;;yBAtHY,OAAO,0CAA0C,EAAE,WAAW;;;;;;;;;;;;;;;cAF9D,OAAO,SAAS,CAAC;iBACjB,OAAO,WAAW,EAAE,SAAS"}
|
121
dist/src/peer-store/address-book.d.ts
vendored
Normal file
121
dist/src/peer-store/address-book.d.ts
vendored
Normal file
@@ -0,0 +1,121 @@
|
||||
export = AddressBook;
|
||||
/**
|
||||
* @typedef {import('./')} PeerStore
|
||||
*/
|
||||
/**
|
||||
* @typedef {Object} Address
|
||||
* @property {Multiaddr} multiaddr peer multiaddr.
|
||||
* @property {boolean} isCertified obtained from a signed peer record.
|
||||
*
|
||||
* @typedef {Object} CertifiedRecord
|
||||
* @property {Uint8Array} raw raw envelope.
|
||||
* @property {number} seqNumber seq counter.
|
||||
*
|
||||
* @typedef {Object} Entry
|
||||
* @property {Address[]} addresses peer Addresses.
|
||||
* @property {CertifiedRecord} record certified peer record.
|
||||
*/
|
||||
/**
|
||||
* @extends {Book}
|
||||
*/
|
||||
declare class AddressBook extends Book {
|
||||
/**
|
||||
* The AddressBook is responsible for keeping the known multiaddrs of a peer.
|
||||
*
|
||||
* @class
|
||||
* @param {PeerStore} peerStore
|
||||
*/
|
||||
constructor(peerStore: PeerStore);
|
||||
/**
|
||||
* ConsumePeerRecord adds addresses from a signed peer record contained in a record envelope.
|
||||
* This will return a boolean that indicates if the record was successfully processed and added
|
||||
* into the AddressBook.
|
||||
*
|
||||
* @param {Envelope} envelope
|
||||
* @returns {boolean}
|
||||
*/
|
||||
consumePeerRecord(envelope: Envelope): boolean;
|
||||
/**
|
||||
* Get the raw Envelope for a peer. Returns
|
||||
* undefined if no Envelope is found.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @returns {Uint8Array|undefined}
|
||||
*/
|
||||
getRawEnvelope(peerId: PeerId): Uint8Array | undefined;
|
||||
/**
|
||||
* Get an Envelope containing a PeerRecord for the given peer.
|
||||
* Returns undefined if no record exists.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @returns {Promise<Envelope|void>|undefined}
|
||||
*/
|
||||
getPeerRecord(peerId: PeerId): Promise<Envelope | void> | undefined;
|
||||
/**
|
||||
* Add known addresses of a provided peer.
|
||||
* If the peer is not known, it is set with the given addresses.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @param {Multiaddr[]} multiaddrs
|
||||
* @returns {AddressBook}
|
||||
*/
|
||||
add(peerId: PeerId, multiaddrs: Multiaddr[]): AddressBook;
|
||||
/**
|
||||
* Transforms received multiaddrs into Address.
|
||||
*
|
||||
* @private
|
||||
* @param {Multiaddr[]} multiaddrs
|
||||
* @param {boolean} [isCertified]
|
||||
* @returns {Address[]}
|
||||
*/
|
||||
private _toAddresses;
|
||||
/**
|
||||
* Get the known multiaddrs for a given peer. All returned multiaddrs
|
||||
* will include the encapsulated `PeerId` of the peer.
|
||||
* Returns `undefined` if there are no known multiaddrs for the given peer.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @param {(addresses: Address[]) => Address[]} [addressSorter]
|
||||
* @returns {Multiaddr[]|undefined}
|
||||
*/
|
||||
getMultiaddrsForPeer(peerId: PeerId, addressSorter?: ((addresses: Address[]) => Address[]) | undefined): Multiaddr[] | undefined;
|
||||
}
|
||||
declare namespace AddressBook {
|
||||
export { PeerStore, Address, CertifiedRecord, Entry };
|
||||
}
|
||||
import Book = require("./book");
|
||||
import Envelope = require("../record/envelope");
|
||||
import PeerId = require("peer-id");
|
||||
import { Multiaddr } from "multiaddr";
|
||||
type Address = {
|
||||
/**
|
||||
* peer multiaddr.
|
||||
*/
|
||||
multiaddr: Multiaddr;
|
||||
/**
|
||||
* obtained from a signed peer record.
|
||||
*/
|
||||
isCertified: boolean;
|
||||
};
|
||||
type PeerStore = import('./');
|
||||
type CertifiedRecord = {
|
||||
/**
|
||||
* raw envelope.
|
||||
*/
|
||||
raw: Uint8Array;
|
||||
/**
|
||||
* seq counter.
|
||||
*/
|
||||
seqNumber: number;
|
||||
};
|
||||
type Entry = {
|
||||
/**
|
||||
* peer Addresses.
|
||||
*/
|
||||
addresses: Address[];
|
||||
/**
|
||||
* certified peer record.
|
||||
*/
|
||||
record: CertifiedRecord;
|
||||
};
|
||||
//# sourceMappingURL=address-book.d.ts.map
|
1
dist/src/peer-store/address-book.d.ts.map
vendored
Normal file
1
dist/src/peer-store/address-book.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"address-book.d.ts","sourceRoot":"","sources":["../../../src/peer-store/address-book.js"],"names":[],"mappings":";AAmBA;;GAEG;AAEH;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH;IACE;;;;;OAKG;IACH,uBAFW,SAAS,EA0BnB;IAED;;;;;;;OAOG;IACH,4BAHW,QAAQ,GACN,OAAO,CA8CnB;IAED;;;;;;OAMG;IACH,uBAHW,MAAM,GACJ,UAAU,GAAC,SAAS,CAUhC;IAED;;;;;;OAMG;IACH,sBAHW,MAAM,GACJ,QAAQ,QAAQ,GAAC,IAAI,CAAC,GAAC,SAAS,CAU5C;IAuDD;;;;;;;OAOG;IACH,YAJW,MAAM,cACN,SAAS,EAAE,GACT,WAAW,CA+CvB;IAmBD;;;;;;;OAOG;IACH,qBAyBC;IAED;;;;;;;;OAQG;IACH,6BAJW,MAAM,+BACM,OAAO,EAAE,KAAK,OAAO,EAAE,gBACjC,SAAS,EAAE,GAAC,SAAS,CAsBjC;CACF;;;;;;;;;;;;eAtUa,SAAS;;;;iBACT,OAAO;;iBANR,OAAO,IAAI,CAAC;;;;;SASX,UAAU;;;;eACV,MAAM;;;;;;eAGN,OAAO,EAAE;;;;YACT,eAAe"}
|
81
dist/src/peer-store/book.d.ts
vendored
Normal file
81
dist/src/peer-store/book.d.ts
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
export = Book;
|
||||
/**
|
||||
* @typedef {import('./')} PeerStore
|
||||
*/
|
||||
declare class Book {
|
||||
/**
|
||||
* The Book is the skeleton for the PeerStore books.
|
||||
*
|
||||
* @class
|
||||
* @param {Object} properties
|
||||
* @param {PeerStore} properties.peerStore - PeerStore instance.
|
||||
* @param {string} properties.eventName - Name of the event to emit by the PeerStore.
|
||||
* @param {string} properties.eventProperty - Name of the property to emit by the PeerStore.
|
||||
* @param {(data: any) => any[]} [properties.eventTransformer] - Transformer function of the provided data for being emitted.
|
||||
*/
|
||||
constructor({ peerStore, eventName, eventProperty, eventTransformer }: {
|
||||
peerStore: PeerStore;
|
||||
eventName: string;
|
||||
eventProperty: string;
|
||||
eventTransformer?: ((data: any) => any[]) | undefined;
|
||||
});
|
||||
_ps: import("./");
|
||||
eventName: string;
|
||||
eventProperty: string;
|
||||
eventTransformer: (data: any) => any[];
|
||||
/**
|
||||
* Map known peers to their data.
|
||||
*
|
||||
* @type {Map<string, any[]|any>}
|
||||
*/
|
||||
data: Map<string, any[] | any>;
|
||||
/**
|
||||
* Set known data of a provided peer.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @param {any[]|any} data
|
||||
*/
|
||||
set(peerId: PeerId, data: any[] | any): void;
|
||||
/**
|
||||
* Set data into the datastructure, persistence and emit it using the provided transformers.
|
||||
*
|
||||
* @protected
|
||||
* @param {PeerId} peerId - peerId of the data to store
|
||||
* @param {any} data - data to store.
|
||||
* @param {Object} [options] - storing options.
|
||||
* @param {boolean} [options.emit = true] - emit the provided data.
|
||||
* @returns {void}
|
||||
*/
|
||||
protected _setData(peerId: PeerId, data: any, { emit }?: {
|
||||
emit?: boolean | undefined;
|
||||
} | undefined): void;
|
||||
/**
|
||||
* Emit data.
|
||||
*
|
||||
* @protected
|
||||
* @param {PeerId} peerId
|
||||
* @param {any} [data]
|
||||
*/
|
||||
protected _emit(peerId: PeerId, data?: any): void;
|
||||
/**
|
||||
* Get the known data of a provided peer.
|
||||
* Returns `undefined` if there is no available data for the given peer.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @returns {any[]|any|undefined}
|
||||
*/
|
||||
get(peerId: PeerId): any[] | any | undefined;
|
||||
/**
|
||||
* Deletes the provided peer from the book.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @returns {boolean}
|
||||
*/
|
||||
delete(peerId: PeerId): boolean;
|
||||
}
|
||||
declare namespace Book {
|
||||
export { PeerStore };
|
||||
}
|
||||
import PeerId = require("peer-id");
|
||||
type PeerStore = import('./');
|
||||
//# sourceMappingURL=book.d.ts.map
|
1
dist/src/peer-store/book.d.ts.map
vendored
Normal file
1
dist/src/peer-store/book.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"book.d.ts","sourceRoot":"","sources":["../../../src/peer-store/book.js"],"names":[],"mappings":";AAcA;;GAEG;AAEH;IACE;;;;;;;;;OASG;IACH;QALiC,SAAS,EAA/B,SAAS;QACU,SAAS,EAA5B,MAAM;QACa,aAAa,EAAhC,MAAM;QAC4B,gBAAgB,WAA3C,GAAG,KAAK,GAAG,EAAE;OAc9B;IAXC,kBAAoB;IACpB,kBAA0B;IAC1B,sBAAkC;IAClC,yBANgB,GAAG,KAAK,GAAG,EAAE,CAMW;IAExC;;;;OAIG;IACH,MAFU,IAAI,MAAM,EAAE,GAAG,EAAE,GAAC,GAAG,CAAC,CAEX;IAGvB;;;;;OAKG;IACH,YAHW,MAAM,QACN,GAAG,EAAE,GAAC,GAAG,QAInB;IAED;;;;;;;;;OASG;IACH,2BANW,MAAM,QACN,GAAG;;oBAGD,IAAI,CAUhB;IAED;;;;;;OAMG;IACH,wBAHW,MAAM,SACN,GAAG,QAOb;IAED;;;;;;OAMG;IACH,YAHW,MAAM,GACJ,GAAG,EAAE,GAAC,GAAG,GAAC,SAAS,CAW/B;IAED;;;;;OAKG;IACH,eAHW,MAAM,GACJ,OAAO,CAcnB;CACF;;;;;iBA7GY,OAAO,IAAI,CAAC"}
|
111
dist/src/peer-store/index.d.ts
vendored
Normal file
111
dist/src/peer-store/index.d.ts
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
export = PeerStore;
|
||||
/**
|
||||
* @typedef {import('./address-book').Address} Address
|
||||
*/
|
||||
/**
|
||||
* @extends {EventEmitter}
|
||||
*
|
||||
* @fires PeerStore#peer Emitted when a new peer is added.
|
||||
* @fires PeerStore#change:protocols Emitted when a known peer supports a different set of protocols.
|
||||
* @fires PeerStore#change:multiaddrs Emitted when a known peer has a different set of multiaddrs.
|
||||
* @fires PeerStore#change:pubkey Emitted emitted when a peer's public key is known.
|
||||
* @fires PeerStore#change:metadata Emitted when the known metadata of a peer change.
|
||||
*/
|
||||
declare class PeerStore extends EventEmitter {
|
||||
/**
|
||||
* Peer object
|
||||
*
|
||||
* @typedef {Object} Peer
|
||||
* @property {PeerId} id peer's peer-id instance.
|
||||
* @property {Address[]} addresses peer's addresses containing its multiaddrs and metadata.
|
||||
* @property {string[]} protocols peer's supported protocols.
|
||||
* @property {Map<string, Uint8Array>|undefined} metadata peer's metadata map.
|
||||
*/
|
||||
/**
|
||||
* Responsible for managing known peers, as well as their addresses, protocols and metadata.
|
||||
*
|
||||
* @param {object} options
|
||||
* @param {PeerId} options.peerId
|
||||
* @class
|
||||
*/
|
||||
constructor({ peerId }: {
|
||||
peerId: PeerId;
|
||||
});
|
||||
_peerId: PeerId;
|
||||
/**
|
||||
* AddressBook containing a map of peerIdStr to Address.
|
||||
*/
|
||||
addressBook: AddressBook;
|
||||
/**
|
||||
* KeyBook containing a map of peerIdStr to their PeerId with public keys.
|
||||
*/
|
||||
keyBook: KeyBook;
|
||||
/**
|
||||
* MetadataBook containing a map of peerIdStr to their metadata Map.
|
||||
*/
|
||||
metadataBook: MetadataBook;
|
||||
/**
|
||||
* ProtoBook containing a map of peerIdStr to supported protocols.
|
||||
*/
|
||||
protoBook: ProtoBook;
|
||||
/**
|
||||
* Start the PeerStore.
|
||||
*/
|
||||
start(): void;
|
||||
/**
|
||||
* Stop the PeerStore.
|
||||
*/
|
||||
stop(): void;
|
||||
/**
|
||||
* Get all the stored information of every peer known.
|
||||
*
|
||||
* @returns {Map<string, Peer>}
|
||||
*/
|
||||
get peers(): Map<string, Peer>;
|
||||
/**
|
||||
* Delete the information of the given peer in every book.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @returns {boolean} true if found and removed
|
||||
*/
|
||||
delete(peerId: PeerId): boolean;
|
||||
/**
|
||||
* Get the stored information of a given peer.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @returns {Peer|undefined}
|
||||
*/
|
||||
get(peerId: PeerId): Peer | undefined;
|
||||
}
|
||||
declare namespace PeerStore {
|
||||
export { Peer, Address };
|
||||
}
|
||||
import { EventEmitter } from "events";
|
||||
import PeerId = require("peer-id");
|
||||
import AddressBook = require("./address-book");
|
||||
import KeyBook = require("./key-book");
|
||||
import MetadataBook = require("./metadata-book");
|
||||
import ProtoBook = require("./proto-book");
|
||||
/**
|
||||
* Peer object
|
||||
*/
|
||||
type Peer = {
|
||||
/**
|
||||
* peer's peer-id instance.
|
||||
*/
|
||||
id: PeerId;
|
||||
/**
|
||||
* peer's addresses containing its multiaddrs and metadata.
|
||||
*/
|
||||
addresses: Address[];
|
||||
/**
|
||||
* peer's supported protocols.
|
||||
*/
|
||||
protocols: string[];
|
||||
/**
|
||||
* peer's metadata map.
|
||||
*/
|
||||
metadata: Map<string, Uint8Array> | undefined;
|
||||
};
|
||||
type Address = import('./address-book').Address;
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
dist/src/peer-store/index.d.ts.map
vendored
Normal file
1
dist/src/peer-store/index.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/peer-store/index.js"],"names":[],"mappings":";AAgBA;;GAEG;AAEH;;;;;;;;GAQG;AACH;IACE;;;;;;;;OAQG;IAEH;;;;;;OAMG;IACH;QAH2B,MAAM,EAAtB,MAAM;OA2BhB;IArBC,gBAAqB;IAErB;;OAEG;IACH,yBAAwC;IAExC;;OAEG;IACH,iBAAgC;IAEhC;;OAEG;IACH,2BAA0C;IAE1C;;OAEG;IACH,qBAAoC;IAGtC;;OAEG;IACH,cAAW;IAEX;;OAEG;IACH,aAAU;IAEV;;;;OAIG;IACH,+BAiBC;IAED;;;;;OAKG;IACH,eAHW,MAAM,GACJ,OAAO,CASnB;IAED;;;;;OAKG;IACH,YAHW,MAAM,GACJ,IAAI,GAAC,SAAS,CAsB1B;CACF;;;;;;;;;;;;;;;;;QAnHe,MAAM;;;;eACN,OAAO,EAAE;;;;eACT,MAAM,EAAE;;;;cACR,IAAI,MAAM,EAAE,UAAU,CAAC,GAAC,SAAS;;eApBpC,OAAO,gBAAgB,EAAE,OAAO"}
|
24
dist/src/peer-store/key-book.d.ts
vendored
Normal file
24
dist/src/peer-store/key-book.d.ts
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
export = KeyBook;
|
||||
/**
|
||||
* @typedef {import('./')} PeerStore
|
||||
* @typedef {import('libp2p-crypto').PublicKey} PublicKey
|
||||
*/
|
||||
/**
|
||||
* @extends {Book}
|
||||
*/
|
||||
declare class KeyBook extends Book {
|
||||
/**
|
||||
* The KeyBook is responsible for keeping the known public keys of a peer.
|
||||
*
|
||||
* @class
|
||||
* @param {PeerStore} peerStore
|
||||
*/
|
||||
constructor(peerStore: PeerStore);
|
||||
}
|
||||
declare namespace KeyBook {
|
||||
export { PeerStore, PublicKey };
|
||||
}
|
||||
import Book = require("./book");
|
||||
type PeerStore = import('./');
|
||||
type PublicKey = import('libp2p-crypto').PublicKey;
|
||||
//# sourceMappingURL=key-book.d.ts.map
|
1
dist/src/peer-store/key-book.d.ts.map
vendored
Normal file
1
dist/src/peer-store/key-book.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"key-book.d.ts","sourceRoot":"","sources":["../../../src/peer-store/key-book.js"],"names":[],"mappings":";AAgBA;;;GAGG;AAEH;;GAEG;AACH;IACE;;;;;OAKG;IACH,uBAFW,SAAS,EAgBnB;CAgDF;;;;;iBA5EY,OAAO,IAAI,CAAC;iBACZ,OAAO,eAAe,EAAE,SAAS"}
|
53
dist/src/peer-store/metadata-book.d.ts
vendored
Normal file
53
dist/src/peer-store/metadata-book.d.ts
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
export = MetadataBook;
|
||||
/**
|
||||
* @typedef {import('./')} PeerStore
|
||||
*/
|
||||
/**
|
||||
* @extends {Book}
|
||||
*
|
||||
* @fires MetadataBook#change:metadata
|
||||
*/
|
||||
declare class MetadataBook extends Book {
|
||||
/**
|
||||
* The MetadataBook is responsible for keeping the known supported
|
||||
* protocols of a peer.
|
||||
*
|
||||
* @class
|
||||
* @param {PeerStore} peerStore
|
||||
*/
|
||||
constructor(peerStore: PeerStore);
|
||||
/**
|
||||
* Set data into the datastructure
|
||||
*
|
||||
* @override
|
||||
* @param {PeerId} peerId
|
||||
* @param {string} key
|
||||
* @param {Uint8Array} value
|
||||
*/
|
||||
_setValue(peerId: PeerId, key: string, value: Uint8Array, { emit }?: {
|
||||
emit?: boolean | undefined;
|
||||
}): void;
|
||||
/**
|
||||
* Get specific metadata value, if it exists
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @param {string} key
|
||||
* @returns {Uint8Array | undefined}
|
||||
*/
|
||||
getValue(peerId: PeerId, key: string): Uint8Array | undefined;
|
||||
/**
|
||||
* Deletes the provided peer metadata key from the book.
|
||||
*
|
||||
* @param {PeerId} peerId
|
||||
* @param {string} key
|
||||
* @returns {boolean}
|
||||
*/
|
||||
deleteValue(peerId: PeerId, key: string): boolean;
|
||||
}
|
||||
declare namespace MetadataBook {
|
||||
export { PeerStore };
|
||||
}
|
||||
import Book = require("./book");
|
||||
import PeerId = require("peer-id");
|
||||
type PeerStore = import('./');
|
||||
//# sourceMappingURL=metadata-book.d.ts.map
|
1
dist/src/peer-store/metadata-book.d.ts.map
vendored
Normal file
1
dist/src/peer-store/metadata-book.d.ts.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"metadata-book.d.ts","sourceRoot":"","sources":["../../../src/peer-store/metadata-book.js"],"names":[],"mappings":";AAiBA;;GAEG;AAEH;;;;GAIG;AACH;IACE;;;;;;OAMG;IACH,uBAFW,SAAS,EAmBnB;IA4BD;;;;;;;OAOG;IACH,kBAJW,MAAM,OACN,MAAM,SACN,UAAU;;aAiBpB;IAgBD;;;;;;OAMG;IACH,iBAJW,MAAM,OACN,MAAM,GACJ,UAAU,GAAG,SAAS,CASlC;IAsBD;;;;;;OAMG;IACH,oBAJW,MAAM,OACN,MAAM,GACJ,OAAO,CAgBnB;CACF;;;;;;iBA9JY,OAAO,IAAI,CAAC"}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user