@libp2p/interface-compliance-tests 1.1.3 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/src/{utils/mock-connection-gater.d.ts → mocks/connection-gater.d.ts} +1 -1
  2. package/dist/src/mocks/connection-gater.d.ts.map +1 -0
  3. package/dist/src/{utils/mock-connection-gater.js → mocks/connection-gater.js} +1 -1
  4. package/dist/src/mocks/connection-gater.js.map +1 -0
  5. package/dist/src/{utils/mock-connection-manager.d.ts → mocks/connection-manager.d.ts} +1 -1
  6. package/dist/src/mocks/connection-manager.d.ts.map +1 -0
  7. package/dist/src/{utils/mock-connection-manager.js → mocks/connection-manager.js} +1 -1
  8. package/dist/src/mocks/connection-manager.js.map +1 -0
  9. package/dist/src/mocks/connection.d.ts +9 -0
  10. package/dist/src/mocks/connection.d.ts.map +1 -0
  11. package/dist/src/mocks/connection.js +91 -0
  12. package/dist/src/mocks/connection.js.map +1 -0
  13. package/dist/src/mocks/index.d.ts +9 -0
  14. package/dist/src/mocks/index.d.ts.map +1 -0
  15. package/dist/src/mocks/index.js +8 -0
  16. package/dist/src/mocks/index.js.map +1 -0
  17. package/dist/src/{utils/mock-multiaddr-connection.d.ts → mocks/multiaddr-connection.d.ts} +2 -2
  18. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -0
  19. package/dist/src/{utils/mock-multiaddr-connection.js → mocks/multiaddr-connection.js} +3 -3
  20. package/dist/src/mocks/multiaddr-connection.js.map +1 -0
  21. package/dist/src/mocks/muxer.d.ts +3 -0
  22. package/dist/src/mocks/muxer.d.ts.map +1 -0
  23. package/dist/src/mocks/muxer.js +186 -0
  24. package/dist/src/mocks/muxer.js.map +1 -0
  25. package/dist/src/mocks/registrar.d.ts +14 -0
  26. package/dist/src/mocks/registrar.d.ts.map +1 -0
  27. package/dist/src/mocks/registrar.js +59 -0
  28. package/dist/src/mocks/registrar.js.map +1 -0
  29. package/dist/src/{utils/mock-upgrader.d.ts → mocks/upgrader.d.ts} +1 -1
  30. package/dist/src/mocks/upgrader.d.ts.map +1 -0
  31. package/dist/src/{utils/mock-upgrader.js → mocks/upgrader.js} +4 -6
  32. package/dist/src/mocks/upgrader.js.map +1 -0
  33. package/dist/src/stream-muxer/base-test.js +1 -1
  34. package/dist/src/stream-muxer/base-test.js.map +1 -1
  35. package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
  36. package/dist/src/stream-muxer/close-test.js +7 -8
  37. package/dist/src/stream-muxer/close-test.js.map +1 -1
  38. package/dist/src/topology/topology.d.ts.map +1 -1
  39. package/dist/src/topology/topology.js +1 -10
  40. package/dist/src/topology/topology.js.map +1 -1
  41. package/dist/src/transport/dial-test.d.ts.map +1 -1
  42. package/dist/src/transport/dial-test.js +2 -1
  43. package/dist/src/transport/dial-test.js.map +1 -1
  44. package/dist/src/transport/filter-test.js +1 -1
  45. package/dist/src/transport/filter-test.js.map +1 -1
  46. package/dist/src/transport/listen-test.d.ts.map +1 -1
  47. package/dist/src/transport/listen-test.js +2 -1
  48. package/dist/src/transport/listen-test.js.map +1 -1
  49. package/dist/src/utils/is-valid-tick.d.ts +6 -0
  50. package/dist/src/utils/is-valid-tick.d.ts.map +1 -0
  51. package/dist/src/utils/is-valid-tick.js +15 -0
  52. package/dist/src/utils/is-valid-tick.js.map +1 -0
  53. package/package.json +5 -32
  54. package/src/{utils/mock-connection-gater.ts → mocks/connection-gater.ts} +0 -0
  55. package/src/{utils/mock-connection-manager.ts → mocks/connection-manager.ts} +0 -0
  56. package/src/mocks/connection.ts +108 -0
  57. package/src/mocks/index.ts +9 -0
  58. package/src/{utils/mock-multiaddr-connection.ts → mocks/multiaddr-connection.ts} +3 -3
  59. package/src/mocks/muxer.ts +245 -0
  60. package/src/mocks/registrar.ts +77 -0
  61. package/src/{utils/mock-upgrader.ts → mocks/upgrader.ts} +3 -6
  62. package/src/stream-muxer/base-test.ts +1 -1
  63. package/src/stream-muxer/close-test.ts +8 -10
  64. package/src/topology/topology.ts +1 -14
  65. package/src/transport/dial-test.ts +2 -1
  66. package/src/transport/filter-test.ts +1 -1
  67. package/src/transport/listen-test.ts +2 -1
  68. package/src/utils/is-valid-tick.ts +18 -0
  69. package/dist/src/topology/multicodec-topology.d.ts +0 -5
  70. package/dist/src/topology/multicodec-topology.d.ts.map +0 -1
  71. package/dist/src/topology/multicodec-topology.js +0 -109
  72. package/dist/src/topology/multicodec-topology.js.map +0 -1
  73. package/dist/src/transport/utils/index.d.ts +0 -15
  74. package/dist/src/transport/utils/index.d.ts.map +0 -1
  75. package/dist/src/transport/utils/index.js +0 -137
  76. package/dist/src/transport/utils/index.js.map +0 -1
  77. package/dist/src/utils/mock-connection-gater.d.ts.map +0 -1
  78. package/dist/src/utils/mock-connection-gater.js.map +0 -1
  79. package/dist/src/utils/mock-connection-manager.d.ts.map +0 -1
  80. package/dist/src/utils/mock-connection-manager.js.map +0 -1
  81. package/dist/src/utils/mock-connection.d.ts +0 -5
  82. package/dist/src/utils/mock-connection.d.ts.map +0 -1
  83. package/dist/src/utils/mock-connection.js +0 -52
  84. package/dist/src/utils/mock-connection.js.map +0 -1
  85. package/dist/src/utils/mock-multiaddr-connection.d.ts.map +0 -1
  86. package/dist/src/utils/mock-multiaddr-connection.js.map +0 -1
  87. package/dist/src/utils/mock-muxer.d.ts +0 -3
  88. package/dist/src/utils/mock-muxer.d.ts.map +0 -1
  89. package/dist/src/utils/mock-muxer.js +0 -37
  90. package/dist/src/utils/mock-muxer.js.map +0 -1
  91. package/dist/src/utils/mock-registrar.d.ts +0 -12
  92. package/dist/src/utils/mock-registrar.d.ts.map +0 -1
  93. package/dist/src/utils/mock-registrar.js +0 -27
  94. package/dist/src/utils/mock-registrar.js.map +0 -1
  95. package/dist/src/utils/mock-upgrader.d.ts.map +0 -1
  96. package/dist/src/utils/mock-upgrader.js.map +0 -1
  97. package/src/topology/multicodec-topology.ts +0 -136
  98. package/src/transport/utils/index.ts +0 -172
  99. package/src/utils/mock-connection.ts +0 -66
  100. package/src/utils/mock-muxer.ts +0 -43
  101. package/src/utils/mock-registrar.ts +0 -35
@@ -1,137 +0,0 @@
1
- import { expect } from 'aegir/utils/chai.js';
2
- import { pair } from 'it-pair';
3
- import { PeerId } from '@libp2p/peer-id';
4
- import * as PeerIdFactory from '@libp2p/peer-id-factory';
5
- import { pushable } from 'it-pushable';
6
- import drain from 'it-drain';
7
- import { Multiaddr } from '@multiformats/multiaddr';
8
- import { pipe } from 'it-pipe';
9
- /**
10
- * A tick is considered valid if it happened between now
11
- * and `ms` milliseconds ago
12
- */
13
- export function isValidTick(date, ms = 5000) {
14
- if (date == null) {
15
- throw new Error('date must be a number');
16
- }
17
- const now = Date.now();
18
- if (date > now - ms && date <= now) {
19
- return true;
20
- }
21
- return false;
22
- }
23
- export function mockMultiaddrConnection(source) {
24
- const maConn = {
25
- ...source,
26
- async close() {
27
- },
28
- timeline: {
29
- open: Date.now()
30
- },
31
- remoteAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4001')
32
- };
33
- return maConn;
34
- }
35
- export function mockMuxer() {
36
- let streamId = 0;
37
- let streams = [];
38
- const p = pushable();
39
- const muxer = {
40
- source: p,
41
- sink: async (source) => {
42
- await drain(source);
43
- },
44
- get streams() {
45
- return streams;
46
- },
47
- newStream: (name) => {
48
- const echo = pair();
49
- const id = `${streamId++}`;
50
- const stream = {
51
- id,
52
- sink: echo.sink,
53
- source: echo.source,
54
- close: () => {
55
- streams = streams.filter(s => s !== stream);
56
- },
57
- abort: () => { },
58
- reset: () => { },
59
- timeline: {
60
- open: 0
61
- }
62
- };
63
- return stream;
64
- }
65
- };
66
- return muxer;
67
- }
68
- export function mockUpgrader(options = {}) {
69
- const ensureProps = (multiaddrConnection) => {
70
- ['sink', 'source', 'remoteAddr', 'timeline', 'close'].forEach(prop => {
71
- expect(multiaddrConnection).to.have.property(prop);
72
- });
73
- expect(isValidTick(multiaddrConnection.timeline.open)).to.equal(true);
74
- return multiaddrConnection;
75
- };
76
- const muxer = options.muxer ?? mockMuxer();
77
- const upgrader = {
78
- async upgradeOutbound(multiaddrConnection) {
79
- ensureProps(multiaddrConnection);
80
- return await createConnection(multiaddrConnection, 'outbound', muxer);
81
- },
82
- async upgradeInbound(multiaddrConnection) {
83
- ensureProps(multiaddrConnection);
84
- return await createConnection(multiaddrConnection, 'inbound', muxer);
85
- }
86
- };
87
- return upgrader;
88
- }
89
- async function createConnection(maConn, direction, muxer) {
90
- const remoteAddr = maConn.remoteAddr;
91
- const remotePeerIdStr = remoteAddr.getPeerId();
92
- const remotePeer = remotePeerIdStr != null ? PeerId.fromString(remotePeerIdStr) : await PeerIdFactory.createEd25519PeerId();
93
- const streams = [];
94
- let streamId = 0;
95
- const registry = new Map();
96
- void pipe(maConn, muxer, maConn);
97
- return {
98
- id: 'mock-connection',
99
- remoteAddr,
100
- remotePeer,
101
- stat: {
102
- status: 'OPEN',
103
- direction,
104
- timeline: maConn.timeline,
105
- multiplexer: 'test-multiplexer',
106
- encryption: 'yes-yes-very-secure'
107
- },
108
- registry,
109
- tags: [],
110
- streams,
111
- newStream: async (protocols) => {
112
- if (!Array.isArray(protocols)) {
113
- protocols = [protocols];
114
- }
115
- if (protocols.length === 0) {
116
- throw new Error('protocols must have a length');
117
- }
118
- const id = `${streamId++}`;
119
- const stream = muxer.newStream(id);
120
- const streamData = {
121
- protocol: protocols[0],
122
- stream
123
- };
124
- registry.set(id, streamData);
125
- return streamData;
126
- },
127
- addStream: (stream, metadata) => {
128
- },
129
- removeStream: (id) => {
130
- registry.delete(id);
131
- },
132
- close: async () => {
133
- await maConn.close();
134
- }
135
- };
136
- }
137
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/transport/utils/index.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-connection-gater.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-connection-gater.ts"],"names":[],"mappings":"AACA,wBAAgB,mBAAmB;;;;;;;;;;EAYlC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-connection-gater.js","sourceRoot":"","sources":["../../../src/utils/mock-connection-gater.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACtD,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC3D,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/D,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACxE,+BAA+B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,6BAA6B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACvE,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACxE,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;KAChE,CAAA;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-connection-manager.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAElG,cAAM,qBAAsB,SAAQ,YAAY,CAAC,uBAAuB,CAAE,YAAW,iBAAiB;IACpG,aAAa,CAAE,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAItD,aAAa,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAIpC,gBAAgB,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG;QAAE,WAAW,EAAE,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,IAAI;IAIjO,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG;QAAE,WAAW,EAAE,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GAAG,IAAI;IAI/O,aAAa,CAAE,KAAK,EAAE,KAAK,GAAG,OAAO;CAGtC;AAED,wBAAgB,qBAAqB,0BAEpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-connection-manager.js","sourceRoot":"","sources":["../../../src/utils/mock-connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAKjD,MAAM,qBAAsB,SAAQ,YAAqC;IACvE,aAAa,CAAE,MAAc;QAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,aAAa,CAAE,IAAY;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,gBAAgB,CAA2B,IAAO,EAAE,QAAyH,EAAE,OAA2C;QACxN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,mBAAmB,CAA2B,IAAO,EAAE,QAAuI,EAAE,OAAwC;QACtO,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,aAAa,CAAE,KAAY;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,qBAAqB,EAAE,CAAA;AACpC,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { MultiaddrConnection } from '@libp2p/interfaces/transport';
2
- import type { Connection } from '@libp2p/interfaces/connection';
3
- import type { Muxer } from '@libp2p/interfaces/stream-muxer';
4
- export declare function mockConnection(maConn: MultiaddrConnection, direction: 'inbound' | 'outbound', muxer: Muxer): Promise<Connection>;
5
- //# sourceMappingURL=mock-connection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-connection.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-connection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAoC,MAAM,+BAA+B,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAE5D,wBAAsB,cAAc,CAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CA0DvI"}
@@ -1,52 +0,0 @@
1
- import { PeerId } from '@libp2p/peer-id';
2
- import { createEd25519PeerId } from '@libp2p/peer-id-factory';
3
- import { pipe } from 'it-pipe';
4
- export async function mockConnection(maConn, direction, muxer) {
5
- const remoteAddr = maConn.remoteAddr;
6
- const remotePeerIdStr = remoteAddr.getPeerId();
7
- const remotePeer = remotePeerIdStr != null ? PeerId.fromString(remotePeerIdStr) : await createEd25519PeerId();
8
- const streams = [];
9
- let streamId = 0;
10
- const registry = new Map();
11
- void pipe(maConn, muxer, maConn);
12
- return {
13
- id: 'mock-connection',
14
- remoteAddr,
15
- remotePeer,
16
- stat: {
17
- status: 'OPEN',
18
- direction,
19
- timeline: maConn.timeline,
20
- multiplexer: 'test-multiplexer',
21
- encryption: 'yes-yes-very-secure'
22
- },
23
- registry,
24
- tags: [],
25
- streams,
26
- newStream: async (protocols) => {
27
- if (!Array.isArray(protocols)) {
28
- protocols = [protocols];
29
- }
30
- if (protocols.length === 0) {
31
- throw new Error('protocols must have a length');
32
- }
33
- const id = `${streamId++}`;
34
- const stream = muxer.newStream(id);
35
- const streamData = {
36
- protocol: protocols[0],
37
- stream
38
- };
39
- registry.set(id, streamData);
40
- return streamData;
41
- },
42
- addStream: (stream, metadata) => {
43
- },
44
- removeStream: (id) => {
45
- registry.delete(id);
46
- },
47
- close: async () => {
48
- await maConn.close();
49
- }
50
- };
51
- }
52
- //# sourceMappingURL=mock-connection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-connection.js","sourceRoot":"","sources":["../../../src/utils/mock-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAK9B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAE,MAA2B,EAAE,SAAiC,EAAE,KAAY;IAChH,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;IACpC,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,EAAE,CAAA;IAC9C,MAAM,UAAU,GAAG,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,mBAAmB,EAAE,CAAA;IAE7G,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;IAE1B,KAAK,IAAI,CACP,MAAM,EAAE,KAAK,EAAE,MAAM,CACtB,CAAA;IAED,OAAO;QACL,EAAE,EAAE,iBAAiB;QACrB,UAAU;QACV,UAAU;QACV,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM;YACd,SAAS;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,kBAAkB;YAC/B,UAAU,EAAE,qBAAqB;SAClC;QACD,QAAQ;QACR,IAAI,EAAE,EAAE;QACR,OAAO;QACP,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAC7B,SAAS,GAAG,CAAC,SAAS,CAAC,CAAA;aACxB;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAChD;YAED,MAAM,EAAE,GAAG,GAAG,QAAQ,EAAE,EAAE,CAAA;YAC1B,MAAM,MAAM,GAAW,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAC1C,MAAM,UAAU,GAAmB;gBACjC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;gBACtB,MAAM;aACP,CAAA;YAED,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;YAE5B,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,SAAS,EAAE,CAAC,MAAc,EAAE,QAAkB,EAAE,EAAE;QAElD,CAAC;QACD,YAAY,EAAE,CAAC,EAAU,EAAE,EAAE;YAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACrB,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-multiaddr-connection.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-multiaddr-connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,wBAAgB,uBAAuB,CAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,mBAAmB,CAaxF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-multiaddr-connection.js","sourceRoot":"","sources":["../../../src/utils/mock-multiaddr-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAInD,MAAM,UAAU,uBAAuB,CAAE,MAA0B;IACjE,MAAM,MAAM,GAAwB;QAClC,GAAG,MAAM;QACT,KAAK,CAAC,KAAK;QAEX,CAAC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;SACjB;QACD,UAAU,EAAE,IAAI,SAAS,CAAC,yBAAyB,CAAC;KACrD,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Muxer } from '@libp2p/interfaces/stream-muxer';
2
- export declare function mockMuxer(): Muxer;
3
- //# sourceMappingURL=mock-muxer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-muxer.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-muxer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAE5D,wBAAgB,SAAS,IAAK,KAAK,CAoClC"}
@@ -1,37 +0,0 @@
1
- import { pair } from 'it-pair';
2
- import { pushable } from 'it-pushable';
3
- import drain from 'it-drain';
4
- export function mockMuxer() {
5
- let streamId = 0;
6
- let streams = [];
7
- const p = pushable();
8
- const muxer = {
9
- source: p,
10
- sink: async (source) => {
11
- await drain(source);
12
- },
13
- get streams() {
14
- return streams;
15
- },
16
- newStream: (name) => {
17
- const echo = pair();
18
- const id = `${streamId++}`;
19
- const stream = {
20
- id,
21
- sink: echo.sink,
22
- source: echo.source,
23
- close: () => {
24
- streams = streams.filter(s => s !== stream);
25
- },
26
- abort: () => { },
27
- reset: () => { },
28
- timeline: {
29
- open: 0
30
- }
31
- };
32
- return stream;
33
- }
34
- };
35
- return muxer;
36
- }
37
- //# sourceMappingURL=mock-muxer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-muxer.js","sourceRoot":"","sources":["../../../src/utils/mock-muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,MAAM,UAAU,CAAA;AAI5B,MAAM,UAAU,SAAS;IACvB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,OAAO,GAAa,EAAE,CAAA;IAC1B,MAAM,CAAC,GAAG,QAAQ,EAAc,CAAA;IAEhC,MAAM,KAAK,GAAU;QACnB,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;QACD,IAAI,OAAO;YACT,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAI,EAAc,CAAA;YAE/B,MAAM,EAAE,GAAG,GAAG,QAAQ,EAAE,EAAE,CAAA;YAC1B,MAAM,MAAM,GAAW;gBACrB,EAAE;gBACF,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,GAAG,EAAE;oBACV,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;gBAC7C,CAAC;gBACD,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;gBACf,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;gBACf,QAAQ,EAAE;oBACR,IAAI,EAAE,CAAC;iBACR;aACF,CAAA;YAED,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { Registrar, StreamHandler } from '@libp2p/interfaces/registrar';
2
- import type { MulticodecTopology } from '../../../libp2p-topology/src/multicodec-topology';
3
- export declare class MockRegistrar implements Registrar {
4
- readonly topologies: Map<string, MulticodecTopology>;
5
- readonly streamHandlers: Map<string, StreamHandler>;
6
- handle(multicodecs: string | string[], handler: StreamHandler): Promise<void>;
7
- unhandle(multicodec: string): Promise<void>;
8
- register(topology: MulticodecTopology): string;
9
- unregister(id: string): void;
10
- }
11
- export declare function mockRegistrar(): MockRegistrar;
12
- //# sourceMappingURL=mock-registrar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-registrar.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-registrar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAA;AAE1F,qBAAa,aAAc,YAAW,SAAS;IAC7C,SAAgB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAY;IACvE,SAAgB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAY;IAEhE,MAAM,CAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa;IAQ9D,QAAQ,CAAE,UAAU,EAAE,MAAM;IAIlC,QAAQ,CAAE,QAAQ,EAAE,kBAAkB;IAQtC,UAAU,CAAE,EAAE,EAAE,MAAM;CAGvB;AAED,wBAAgB,aAAa,kBAE5B"}
@@ -1,27 +0,0 @@
1
- export class MockRegistrar {
2
- constructor() {
3
- this.topologies = new Map();
4
- this.streamHandlers = new Map();
5
- }
6
- async handle(multicodecs, handler) {
7
- if (!Array.isArray(multicodecs)) {
8
- multicodecs = [multicodecs];
9
- }
10
- this.streamHandlers.set(multicodecs[0], handler);
11
- }
12
- async unhandle(multicodec) {
13
- this.streamHandlers.delete(multicodec);
14
- }
15
- register(topology) {
16
- const { multicodecs } = topology;
17
- this.topologies.set(multicodecs[0], topology);
18
- return multicodecs[0];
19
- }
20
- unregister(id) {
21
- this.topologies.delete(id);
22
- }
23
- }
24
- export function mockRegistrar() {
25
- return new MockRegistrar();
26
- }
27
- //# sourceMappingURL=mock-registrar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-registrar.js","sourceRoot":"","sources":["../../../src/utils/mock-registrar.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,aAAa;IAA1B;QACkB,eAAU,GAAoC,IAAI,GAAG,EAAE,CAAA;QACvD,mBAAc,GAA+B,IAAI,GAAG,EAAE,CAAA;IAyBxE,CAAC;IAvBC,KAAK,CAAC,MAAM,CAAE,WAA8B,EAAE,OAAsB;QAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC/B,WAAW,GAAG,CAAC,WAAW,CAAC,CAAA;SAC5B;QAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,UAAkB;QAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACxC,CAAC;IAED,QAAQ,CAAE,QAA4B;QACpC,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAA;QAEhC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;QAE7C,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,UAAU,CAAE,EAAU;QACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,aAAa,EAAE,CAAA;AAC5B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-upgrader.d.ts","sourceRoot":"","sources":["../../../src/utils/mock-upgrader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAuB,MAAM,8BAA8B,CAAA;AACjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAE5D,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,wBAAgB,YAAY,CAAE,OAAO,GAAE,mBAAwB,YAsB9D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-upgrader.js","sourceRoot":"","sources":["../../../src/utils/mock-upgrader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAQrD,MAAM,UAAU,YAAY,CAAE,UAA+B,EAAE;IAC7D,MAAM,WAAW,GAAG,CAAC,mBAAwC,EAAE,EAAE;QAC/D,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnE,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;QACF,OAAO,mBAAmB,CAAA;IAC5B,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,CAAA;IAE1C,MAAM,QAAQ,GAAa;QACzB,KAAK,CAAC,eAAe,CAAE,mBAAmB;YACxC,WAAW,CAAC,mBAAmB,CAAC,CAAA;YAChC,OAAO,MAAM,cAAc,CAAC,mBAAmB,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;QACrE,CAAC;QACD,KAAK,CAAC,cAAc,CAAE,mBAAmB;YACvC,WAAW,CAAC,mBAAmB,CAAC,CAAA;YAChC,OAAO,MAAM,cAAc,CAAC,mBAAmB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QACpE,CAAC;KACF,CAAA;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -1,136 +0,0 @@
1
- import { expect } from 'aegir/utils/chai.js'
2
- import sinon from 'sinon'
3
- import * as PeerIdFactory from '@libp2p/peer-id-factory'
4
- import peers from '../utils/peers.js'
5
- import type { TestSetup } from '../index.js'
6
- import type { MulticodecTopology } from '@libp2p/interfaces/topology'
7
- import type { PeerId } from '@libp2p/interfaces/peer-id'
8
-
9
- export default (test: TestSetup<MulticodecTopology>) => {
10
- describe('multicodec topology', () => {
11
- let topology: MulticodecTopology, id: PeerId
12
-
13
- beforeEach(async () => {
14
- topology = await test.setup()
15
-
16
- id = await PeerIdFactory.createFromJSON(peers[0])
17
- })
18
-
19
- afterEach(async () => {
20
- sinon.restore()
21
- await test.teardown()
22
- })
23
-
24
- it('should have properties set', () => {
25
- expect(topology.multicodecs).to.exist()
26
- expect(topology.peers).to.exist()
27
- })
28
-
29
- it('should trigger "onDisconnect" on peer disconnected', () => {
30
- // @ts-expect-error protected property
31
- sinon.spy(topology, '_onDisconnect')
32
- topology.disconnect(id)
33
-
34
- expect(topology).to.have.nested.property('_onDisconnect.callCount', 1)
35
- })
36
-
37
- it('should update peers on protocol change', async () => {
38
- // @ts-expect-error protected property
39
- sinon.spy(topology, '_updatePeers')
40
- expect(topology.peers.size).to.eql(0)
41
-
42
- // @ts-expect-error protected property
43
- const peerStore = topology._registrar.peerStore
44
-
45
- const id2 = await PeerIdFactory.createFromJSON(peers[1])
46
- peerStore.peers.set(id2.toString(), {
47
- id: id2,
48
- protocols: Array.from(topology.multicodecs)
49
- })
50
-
51
- peerStore.emit('change:protocols', {
52
- peerId: id2,
53
- protocols: Array.from(topology.multicodecs)
54
- })
55
-
56
- expect(topology).to.have.nested.property('_updatePeers.callCount', 1)
57
- expect(topology.peers.size).to.eql(1)
58
- })
59
-
60
- it('should disconnect if peer no longer supports a protocol', async () => {
61
- // @ts-expect-error protected property
62
- sinon.spy(topology, '_onDisconnect')
63
- expect(topology.peers.size).to.eql(0)
64
-
65
- // @ts-expect-error protected property
66
- const peerStore = topology._registrar.peerStore
67
-
68
- const id2 = await PeerIdFactory.createFromJSON(peers[1])
69
- peerStore.peers.set(id2.toString(), {
70
- id: id2,
71
- protocols: Array.from(topology.multicodecs)
72
- })
73
-
74
- peerStore.emit('change:protocols', {
75
- peerId: id2,
76
- protocols: Array.from(topology.multicodecs)
77
- })
78
-
79
- expect(topology.peers.size).to.eql(1)
80
-
81
- peerStore.peers.set(id2.toString(), {
82
- id: id2,
83
- protocols: []
84
- })
85
- // Peer does not support the protocol anymore
86
- peerStore.emit('change:protocols', {
87
- peerId: id2,
88
- protocols: []
89
- })
90
-
91
- expect(topology.peers.size).to.eql(1)
92
- expect(topology).to.have.nested.property('_onDisconnect.callCount', 1)
93
- // @ts-expect-error protected property
94
- expect(topology._onDisconnect.calledWith(id2)).to.equal(true)
95
- })
96
-
97
- it('should trigger "onConnect" when a peer connects and has one of the topology multicodecs in its known protocols', () => {
98
- // @ts-expect-error protected property
99
- sinon.spy(topology, '_onConnect')
100
- // @ts-expect-error protected property
101
- sinon.stub(topology._registrar.peerStore.protoBook, 'get').returns(topology.multicodecs)
102
- // @ts-expect-error protected property
103
- topology._registrar.connectionManager.emit('peer:connect', {
104
- remotePeer: id
105
- })
106
-
107
- expect(topology).to.have.nested.property('_onConnect.callCount', 1)
108
- })
109
-
110
- it('should not trigger "onConnect" when a peer connects and has none of the topology multicodecs in its known protocols', () => {
111
- // @ts-expect-error protected property
112
- sinon.spy(topology, '_onConnect')
113
- // @ts-expect-error protected property
114
- sinon.stub(topology._registrar.peerStore.protoBook, 'get').returns([])
115
- // @ts-expect-error protected property
116
- topology._registrar.connectionManager.emit('peer:connect', {
117
- remotePeer: id
118
- })
119
-
120
- expect(topology).to.have.nested.property('_onConnect.callCount', 0)
121
- })
122
-
123
- it('should not trigger "onConnect" when a peer connects and its protocols are not known', () => {
124
- // @ts-expect-error protected property
125
- sinon.spy(topology, '_onConnect')
126
- // @ts-expect-error protected property
127
- sinon.stub(topology._registrar.peerStore.protoBook, 'get').returns(undefined)
128
- // @ts-expect-error protected property
129
- topology._registrar.connectionManager.emit('peer:connect', {
130
- remotePeer: id
131
- })
132
-
133
- expect(topology).to.have.nested.property('_onConnect.callCount', 0)
134
- })
135
- })
136
- }
@@ -1,172 +0,0 @@
1
- import { expect } from 'aegir/utils/chai.js'
2
- import { pair } from 'it-pair'
3
- import { PeerId } from '@libp2p/peer-id'
4
- import * as PeerIdFactory from '@libp2p/peer-id-factory'
5
- import { pushable } from 'it-pushable'
6
- import drain from 'it-drain'
7
- import { Multiaddr } from '@multiformats/multiaddr'
8
- import { pipe } from 'it-pipe'
9
- import type { Upgrader, MultiaddrConnection } from '@libp2p/interfaces/transport'
10
- import type { Connection, Stream, Metadata, ProtocolStream } from '@libp2p/interfaces/connection'
11
- import type { Muxer } from '@libp2p/interfaces/stream-muxer'
12
- import type { Duplex } from 'it-stream-types'
13
-
14
- /**
15
- * A tick is considered valid if it happened between now
16
- * and `ms` milliseconds ago
17
- */
18
- export function isValidTick (date?: number, ms: number = 5000) {
19
- if (date == null) {
20
- throw new Error('date must be a number')
21
- }
22
-
23
- const now = Date.now()
24
-
25
- if (date > now - ms && date <= now) {
26
- return true
27
- }
28
-
29
- return false
30
- }
31
-
32
- export function mockMultiaddrConnection (source: Duplex<Uint8Array>): MultiaddrConnection {
33
- const maConn: MultiaddrConnection = {
34
- ...source,
35
- async close () {
36
-
37
- },
38
- timeline: {
39
- open: Date.now()
40
- },
41
- remoteAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4001')
42
- }
43
-
44
- return maConn
45
- }
46
-
47
- export function mockMuxer (): Muxer {
48
- let streamId = 0
49
- let streams: Stream[] = []
50
- const p = pushable<Uint8Array>()
51
-
52
- const muxer: Muxer = {
53
- source: p,
54
- sink: async (source) => {
55
- await drain(source)
56
- },
57
- get streams () {
58
- return streams
59
- },
60
- newStream: (name?: string) => {
61
- const echo = pair<Uint8Array>()
62
-
63
- const id = `${streamId++}`
64
- const stream: Stream = {
65
- id,
66
- sink: echo.sink,
67
- source: echo.source,
68
- close: () => {
69
- streams = streams.filter(s => s !== stream)
70
- },
71
- abort: () => {},
72
- reset: () => {},
73
- timeline: {
74
- open: 0
75
- }
76
- }
77
-
78
- return stream
79
- }
80
- }
81
-
82
- return muxer
83
- }
84
-
85
- export interface MockUpgraderOptions {
86
- muxer?: Muxer
87
- }
88
-
89
- export function mockUpgrader (options: MockUpgraderOptions = {}) {
90
- const ensureProps = (multiaddrConnection: MultiaddrConnection) => {
91
- ['sink', 'source', 'remoteAddr', 'timeline', 'close'].forEach(prop => {
92
- expect(multiaddrConnection).to.have.property(prop)
93
- })
94
- expect(isValidTick(multiaddrConnection.timeline.open)).to.equal(true)
95
- return multiaddrConnection
96
- }
97
-
98
- const muxer = options.muxer ?? mockMuxer()
99
-
100
- const upgrader: Upgrader = {
101
- async upgradeOutbound (multiaddrConnection) {
102
- ensureProps(multiaddrConnection)
103
- return await createConnection(multiaddrConnection, 'outbound', muxer)
104
- },
105
- async upgradeInbound (multiaddrConnection) {
106
- ensureProps(multiaddrConnection)
107
- return await createConnection(multiaddrConnection, 'inbound', muxer)
108
- }
109
- }
110
-
111
- return upgrader
112
- }
113
-
114
- async function createConnection (maConn: MultiaddrConnection, direction: 'inbound' | 'outbound', muxer: Muxer): Promise<Connection> {
115
- const remoteAddr = maConn.remoteAddr
116
- const remotePeerIdStr = remoteAddr.getPeerId()
117
- const remotePeer = remotePeerIdStr != null ? PeerId.fromString(remotePeerIdStr) : await PeerIdFactory.createEd25519PeerId()
118
-
119
- const streams: Stream[] = []
120
- let streamId = 0
121
-
122
- const registry = new Map()
123
-
124
- void pipe(
125
- maConn, muxer, maConn
126
- )
127
-
128
- return {
129
- id: 'mock-connection',
130
- remoteAddr,
131
- remotePeer,
132
- stat: {
133
- status: 'OPEN',
134
- direction,
135
- timeline: maConn.timeline,
136
- multiplexer: 'test-multiplexer',
137
- encryption: 'yes-yes-very-secure'
138
- },
139
- registry,
140
- tags: [],
141
- streams,
142
- newStream: async (protocols) => {
143
- if (!Array.isArray(protocols)) {
144
- protocols = [protocols]
145
- }
146
-
147
- if (protocols.length === 0) {
148
- throw new Error('protocols must have a length')
149
- }
150
-
151
- const id = `${streamId++}`
152
- const stream: Stream = muxer.newStream(id)
153
- const streamData: ProtocolStream = {
154
- protocol: protocols[0],
155
- stream
156
- }
157
-
158
- registry.set(id, streamData)
159
-
160
- return streamData
161
- },
162
- addStream: (stream: Stream, metadata: Metadata) => {
163
-
164
- },
165
- removeStream: (id: string) => {
166
- registry.delete(id)
167
- },
168
- close: async () => {
169
- await maConn.close()
170
- }
171
- }
172
- }