@libp2p/interface-compliance-tests 1.1.4 → 1.1.8

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 (92) hide show
  1. package/dist/src/mocks/connection.d.ts +9 -2
  2. package/dist/src/mocks/connection.d.ts.map +1 -1
  3. package/dist/src/mocks/connection.js +45 -21
  4. package/dist/src/mocks/connection.js.map +1 -1
  5. package/dist/src/mocks/multiaddr-connection.d.ts +2 -1
  6. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -1
  7. package/dist/src/mocks/multiaddr-connection.js +2 -2
  8. package/dist/src/mocks/multiaddr-connection.js.map +1 -1
  9. package/dist/src/mocks/muxer.d.ts +2 -2
  10. package/dist/src/mocks/muxer.d.ts.map +1 -1
  11. package/dist/src/mocks/muxer.js +175 -26
  12. package/dist/src/mocks/muxer.js.map +1 -1
  13. package/dist/src/mocks/registrar.d.ts +7 -2
  14. package/dist/src/mocks/registrar.d.ts.map +1 -1
  15. package/dist/src/mocks/registrar.js +54 -5
  16. package/dist/src/mocks/registrar.js.map +1 -1
  17. package/dist/src/mocks/upgrader.d.ts.map +1 -1
  18. package/dist/src/mocks/upgrader.js +8 -4
  19. package/dist/src/mocks/upgrader.js.map +1 -1
  20. package/dist/src/pubsub/api.d.ts +2 -2
  21. package/dist/src/pubsub/api.d.ts.map +1 -1
  22. package/dist/src/pubsub/api.js +15 -7
  23. package/dist/src/pubsub/api.js.map +1 -1
  24. package/dist/src/pubsub/connection-handlers.d.ts +2 -2
  25. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -1
  26. package/dist/src/pubsub/connection-handlers.js +53 -51
  27. package/dist/src/pubsub/connection-handlers.js.map +1 -1
  28. package/dist/src/pubsub/emit-self.d.ts +2 -2
  29. package/dist/src/pubsub/emit-self.d.ts.map +1 -1
  30. package/dist/src/pubsub/emit-self.js +12 -2
  31. package/dist/src/pubsub/emit-self.js.map +1 -1
  32. package/dist/src/pubsub/index.d.ts +3 -3
  33. package/dist/src/pubsub/index.d.ts.map +1 -1
  34. package/dist/src/pubsub/index.js.map +1 -1
  35. package/dist/src/pubsub/messages.d.ts +2 -2
  36. package/dist/src/pubsub/messages.d.ts.map +1 -1
  37. package/dist/src/pubsub/messages.js +36 -32
  38. package/dist/src/pubsub/messages.js.map +1 -1
  39. package/dist/src/pubsub/multiple-nodes.d.ts +2 -2
  40. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -1
  41. package/dist/src/pubsub/multiple-nodes.js +105 -53
  42. package/dist/src/pubsub/multiple-nodes.js.map +1 -1
  43. package/dist/src/pubsub/two-nodes.d.ts +2 -2
  44. package/dist/src/pubsub/two-nodes.d.ts.map +1 -1
  45. package/dist/src/pubsub/two-nodes.js +31 -17
  46. package/dist/src/pubsub/two-nodes.js.map +1 -1
  47. package/dist/src/stream-muxer/base-test.js +1 -1
  48. package/dist/src/stream-muxer/base-test.js.map +1 -1
  49. package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
  50. package/dist/src/stream-muxer/close-test.js +12 -10
  51. package/dist/src/stream-muxer/close-test.js.map +1 -1
  52. package/dist/src/transport/dial-test.d.ts.map +1 -1
  53. package/dist/src/transport/dial-test.js +2 -1
  54. package/dist/src/transport/dial-test.js.map +1 -1
  55. package/dist/src/transport/filter-test.js +1 -1
  56. package/dist/src/transport/filter-test.js.map +1 -1
  57. package/dist/src/transport/listen-test.d.ts.map +1 -1
  58. package/dist/src/transport/listen-test.js +2 -1
  59. package/dist/src/transport/listen-test.js.map +1 -1
  60. package/dist/src/utils/is-valid-tick.d.ts +6 -0
  61. package/dist/src/utils/is-valid-tick.d.ts.map +1 -0
  62. package/dist/src/utils/is-valid-tick.js +15 -0
  63. package/dist/src/utils/is-valid-tick.js.map +1 -0
  64. package/package.json +7 -5
  65. package/src/mocks/connection.ts +63 -21
  66. package/src/mocks/multiaddr-connection.ts +3 -2
  67. package/src/mocks/muxer.ts +230 -28
  68. package/src/mocks/registrar.ts +69 -7
  69. package/src/mocks/upgrader.ts +8 -5
  70. package/src/pubsub/api.ts +19 -9
  71. package/src/pubsub/connection-handlers.ts +61 -55
  72. package/src/pubsub/emit-self.ts +14 -4
  73. package/src/pubsub/index.ts +3 -3
  74. package/src/pubsub/messages.ts +50 -36
  75. package/src/pubsub/multiple-nodes.ts +120 -55
  76. package/src/pubsub/two-nodes.ts +37 -22
  77. package/src/stream-muxer/base-test.ts +1 -1
  78. package/src/stream-muxer/close-test.ts +13 -12
  79. package/src/transport/dial-test.ts +2 -1
  80. package/src/transport/filter-test.ts +1 -1
  81. package/src/transport/listen-test.ts +2 -1
  82. package/src/utils/is-valid-tick.ts +18 -0
  83. package/dist/src/pubsub/utils.d.ts +0 -3
  84. package/dist/src/pubsub/utils.d.ts.map +0 -1
  85. package/dist/src/pubsub/utils.js +0 -11
  86. package/dist/src/pubsub/utils.js.map +0 -1
  87. package/dist/src/transport/utils/index.d.ts +0 -15
  88. package/dist/src/transport/utils/index.d.ts.map +0 -1
  89. package/dist/src/transport/utils/index.js +0 -137
  90. package/dist/src/transport/utils/index.js.map +0 -1
  91. package/src/pubsub/utils.ts +0 -13
  92. package/src/transport/utils/index.ts +0 -172
@@ -0,0 +1,18 @@
1
+
2
+ /**
3
+ * A tick is considered valid if it happened between now
4
+ * and `ms` milliseconds ago
5
+ */
6
+ export function isValidTick (date?: number, ms: number = 5000) {
7
+ if (date == null) {
8
+ throw new Error('date must be a number')
9
+ }
10
+
11
+ const now = Date.now()
12
+
13
+ if (date > now - ms && date <= now) {
14
+ return true
15
+ }
16
+
17
+ return false
18
+ }
@@ -1,3 +0,0 @@
1
- export declare function first<V>(map: Map<any, V>): V;
2
- export declare function expectSet<T>(set?: Set<T>, subs?: T[]): void;
3
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/pubsub/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,CAAE,CAAC,EAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAE9C;AAED,wBAAgB,SAAS,CAAE,CAAC,EAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,QAMtD"}
@@ -1,11 +0,0 @@
1
- import { expect } from 'aegir/utils/chai.js';
2
- export function first(map) {
3
- return map.values().next().value;
4
- }
5
- export function expectSet(set, subs) {
6
- if ((set == null) || (subs == null)) {
7
- throw new Error('No set or subs passed');
8
- }
9
- expect(Array.from(set.values())).to.eql(subs);
10
- }
11
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/pubsub/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,UAAU,KAAK,CAAM,GAAgB;IACzC,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,SAAS,CAAM,GAAY,EAAE,IAAU;IACrD,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;KACzC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC"}
@@ -1,15 +0,0 @@
1
- import type { Upgrader, MultiaddrConnection } from '@libp2p/interfaces/transport';
2
- import type { Muxer } from '@libp2p/interfaces/stream-muxer';
3
- import type { Duplex } from 'it-stream-types';
4
- /**
5
- * A tick is considered valid if it happened between now
6
- * and `ms` milliseconds ago
7
- */
8
- export declare function isValidTick(date?: number, ms?: number): boolean;
9
- export declare function mockMultiaddrConnection(source: Duplex<Uint8Array>): MultiaddrConnection;
10
- export declare function mockMuxer(): Muxer;
11
- export interface MockUpgraderOptions {
12
- muxer?: Muxer;
13
- }
14
- export declare function mockUpgrader(options?: MockUpgraderOptions): Upgrader;
15
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transport/utils/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAEjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C;;;GAGG;AACH,wBAAgB,WAAW,CAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAE,MAAa,WAY5D;AAED,wBAAgB,uBAAuB,CAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,mBAAmB,CAaxF;AAED,wBAAgB,SAAS,IAAK,KAAK,CAoClC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,wBAAgB,YAAY,CAAE,OAAO,GAAE,mBAAwB,YAuB9D"}
@@ -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,13 +0,0 @@
1
- import { expect } from 'aegir/utils/chai.js'
2
-
3
- export function first <V> (map: Map<any, V>): V {
4
- return map.values().next().value
5
- }
6
-
7
- export function expectSet <T> (set?: Set<T>, subs?: T[]) {
8
- if ((set == null) || (subs == null)) {
9
- throw new Error('No set or subs passed')
10
- }
11
-
12
- expect(Array.from(set.values())).to.eql(subs)
13
- }
@@ -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
- }