@libp2p/memory 1.1.14-6059227cb → 1.1.14-87bc8d4fb

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.
@@ -1,5 +1,48 @@
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/)
5
+ * that operates in-memory only.
6
+ *
7
+ * This is intended for testing and can only be used to connect two libp2p nodes
8
+ * that are running in the same process.
9
+ *
10
+ * @example
11
+ *
12
+ * ```TypeScript
13
+ * import { createLibp2p } from 'libp2p'
14
+ * import { memory } from '@libp2p/memory'
15
+ * import { multiaddr } from '@multiformats/multiaddr'
16
+ *
17
+ * const listener = await createLibp2p({
18
+ * addresses: {
19
+ * listen: [
20
+ * '/memory/node-a'
21
+ * ]
22
+ * },
23
+ * transports: [
24
+ * memory()
25
+ * ]
26
+ * })
27
+ *
28
+ * const dialer = await createLibp2p({
29
+ * transports: [
30
+ * memory()
31
+ * ]
32
+ * })
33
+ *
34
+ * const ma = multiaddr('/memory/node-a')
35
+ *
36
+ * // dial the listener, timing out after 10s
37
+ * const connection = await dialer.dial(ma, {
38
+ * signal: AbortSignal.timeout(10_000)
39
+ * })
40
+ *
41
+ * // use connection...
42
+ * ```
43
+ */
1
44
  import type { MemoryTransportComponents, MemoryTransportInit } from './index.js';
2
- import type { Logger, MultiaddrConnection, PeerId } from '@libp2p/interface';
45
+ import type { MultiaddrConnection, PeerId } from '@libp2p/interface';
3
46
  export declare const connections: Map<string, MemoryConnection>;
4
47
  interface MemoryConnectionHandler {
5
48
  (maConn: MultiaddrConnection): void;
@@ -9,13 +52,12 @@ interface MemoryConnectionInit extends MemoryTransportInit {
9
52
  address: string;
10
53
  }
11
54
  export declare class MemoryConnection {
12
- readonly latency: number;
13
55
  private readonly components;
14
56
  private readonly init;
15
57
  private readonly connections;
16
- private readonly log;
58
+ private readonly latency;
17
59
  constructor(components: MemoryTransportComponents, init: MemoryConnectionInit);
18
- dial(dialingPeerId: PeerId, dialingPeerLog: Logger, signal: AbortSignal): Promise<MultiaddrConnection>;
60
+ dial(dialingPeerId: PeerId, signal: AbortSignal): Promise<MultiaddrConnection>;
19
61
  close(): void;
20
62
  }
21
63
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/connections.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG5E,eAAO,MAAM,WAAW,+BAAsC,CAAA;AAE9D,UAAU,uBAAuB;IAC/B,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACpC;AAED,UAAU,oBAAqB,SAAQ,mBAAmB;IACxD,YAAY,EAAE,uBAAuB,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;CAChB;AAID,qBAAa,gBAAgB;IAC3B,SAAgB,OAAO,EAAE,MAAM,CAAA;IAE/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,oBAAoB;IAQxE,IAAI,CAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0D7G,KAAK,IAAK,IAAI;CAKf"}
1
+ {"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/connections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAQH,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAGpE,eAAO,MAAM,WAAW,+BAAsC,CAAA;AAE9D,UAAU,uBAAuB;IAC/B,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACpC;AAED,UAAU,oBAAqB,SAAQ,mBAAmB;IACxD,YAAY,EAAE,uBAAuB,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEnB,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,oBAAoB;IAOxE,IAAI,CAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+FrF,KAAK,IAAK,IAAI;CAKf"}
@@ -1,68 +1,142 @@
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/)
5
+ * that operates in-memory only.
6
+ *
7
+ * This is intended for testing and can only be used to connect two libp2p nodes
8
+ * that are running in the same process.
9
+ *
10
+ * @example
11
+ *
12
+ * ```TypeScript
13
+ * import { createLibp2p } from 'libp2p'
14
+ * import { memory } from '@libp2p/memory'
15
+ * import { multiaddr } from '@multiformats/multiaddr'
16
+ *
17
+ * const listener = await createLibp2p({
18
+ * addresses: {
19
+ * listen: [
20
+ * '/memory/node-a'
21
+ * ]
22
+ * },
23
+ * transports: [
24
+ * memory()
25
+ * ]
26
+ * })
27
+ *
28
+ * const dialer = await createLibp2p({
29
+ * transports: [
30
+ * memory()
31
+ * ]
32
+ * })
33
+ *
34
+ * const ma = multiaddr('/memory/node-a')
35
+ *
36
+ * // dial the listener, timing out after 10s
37
+ * const connection = await dialer.dial(ma, {
38
+ * signal: AbortSignal.timeout(10_000)
39
+ * })
40
+ *
41
+ * // use connection...
42
+ * ```
43
+ */
1
44
  import { ConnectionFailedError } from '@libp2p/interface';
2
45
  import { multiaddr } from '@multiformats/multiaddr';
3
46
  import delay from 'delay';
47
+ import map from 'it-map';
4
48
  import { pushable } from 'it-pushable';
5
49
  import { raceSignal } from 'race-signal';
6
- import { DEFAULT_MAX_MESSAGE_SIZE } from "./constants.js";
7
- import { pushableToMaConn } from "./pushable-to-conn.js";
8
50
  export const connections = new Map();
9
- let connectionId = 0;
10
51
  export class MemoryConnection {
11
- latency;
12
52
  components;
13
53
  init;
14
54
  connections;
15
- log;
55
+ latency;
16
56
  constructor(components, init) {
17
57
  this.components = components;
18
58
  this.init = init;
19
59
  this.connections = new Set();
20
60
  this.latency = init.latency ?? 0;
21
- this.log = components.logger.forComponent('libp2p:memory');
22
61
  }
23
- async dial(dialingPeerId, dialingPeerLog, signal) {
62
+ async dial(dialingPeerId, signal) {
63
+ const dialerPushable = pushable();
64
+ const listenerPushable = pushable();
24
65
  const self = this;
25
- let dialerEnded = false;
26
- let listenerEnded = false;
27
- const dialerPushable = pushable({
28
- onEnd(err) {
29
- dialerEnded = true;
30
- self.connections.delete(dialer);
31
- if (!listenerEnded) {
32
- listenerPushable.end(err);
33
- }
34
- }
35
- });
36
- const listenerPushable = pushable({
37
- onEnd(err) {
38
- listenerEnded = true;
39
- self.connections.delete(listener);
40
- if (!dialerEnded) {
41
- dialerPushable.end(err);
66
+ const dialer = {
67
+ source: (async function* () {
68
+ yield* map(listenerPushable, async (buf) => {
69
+ if (self.latency > 0) {
70
+ await delay(self.latency);
71
+ }
72
+ return buf;
73
+ });
74
+ })(),
75
+ sink: async (source) => {
76
+ for await (const buf of source) {
77
+ dialerPushable.push(buf);
42
78
  }
43
- }
44
- });
45
- const dialer = pushableToMaConn({
46
- connection: this,
79
+ },
80
+ close: async () => {
81
+ dialerPushable.end();
82
+ this.connections.delete(dialer);
83
+ dialer.timeline.close = Date.now();
84
+ listenerPushable.end();
85
+ this.connections.delete(listener);
86
+ listener.timeline.close = Date.now();
87
+ },
88
+ abort: (err) => {
89
+ dialerPushable.end(err);
90
+ this.connections.delete(dialer);
91
+ dialer.timeline.close = Date.now();
92
+ listenerPushable.end(err);
93
+ this.connections.delete(listener);
94
+ listener.timeline.close = Date.now();
95
+ },
96
+ timeline: {
97
+ open: Date.now()
98
+ },
47
99
  remoteAddr: multiaddr(`${this.init.address}/p2p/${this.components.peerId}`),
48
- direction: 'outbound',
49
- localPushable: dialerPushable,
50
- remotePushable: listenerPushable,
51
- log: dialingPeerLog.newScope(`connection:${connectionId}`),
52
- maxMessageSize: this.init.maxMessageSize ?? DEFAULT_MAX_MESSAGE_SIZE
53
- });
54
- const listener = pushableToMaConn({
55
- connection: this,
100
+ log: this.components.logger.forComponent('libp2p:memory')
101
+ };
102
+ const listener = {
103
+ source: (async function* () {
104
+ yield* map(dialerPushable, async (buf) => {
105
+ if (self.latency > 0) {
106
+ await delay(self.latency);
107
+ }
108
+ return buf;
109
+ });
110
+ })(),
111
+ sink: async (source) => {
112
+ for await (const buf of source) {
113
+ listenerPushable.push(buf);
114
+ }
115
+ },
116
+ close: async () => {
117
+ listenerPushable.end();
118
+ this.connections.delete(listener);
119
+ listener.timeline.close = Date.now();
120
+ dialerPushable.end();
121
+ this.connections.delete(dialer);
122
+ dialer.timeline.close = Date.now();
123
+ },
124
+ abort: (err) => {
125
+ listenerPushable.end(err);
126
+ this.connections.delete(listener);
127
+ listener.timeline.close = Date.now();
128
+ dialerPushable.end(err);
129
+ this.connections.delete(dialer);
130
+ dialer.timeline.close = Date.now();
131
+ },
132
+ timeline: {
133
+ open: Date.now()
134
+ },
56
135
  remoteAddr: multiaddr(`${this.init.address}-outgoing/p2p/${dialingPeerId}`),
57
- direction: 'inbound',
58
- localPushable: listenerPushable,
59
- remotePushable: dialerPushable,
60
- log: this.log.newScope(`connection:${connectionId}`),
61
- maxMessageSize: this.init.maxMessageSize ?? DEFAULT_MAX_MESSAGE_SIZE
62
- });
136
+ log: this.components.logger.forComponent('libp2p:memory')
137
+ };
63
138
  this.connections.add(dialer);
64
139
  this.connections.add(listener);
65
- connectionId++;
66
140
  await raceSignal(delay(this.latency), signal);
67
141
  this.init.onConnection(listener);
68
142
  return dialer;
@@ -1 +1 @@
1
- {"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/connections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/connections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAKxC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAA;AAW9D,MAAM,OAAO,gBAAgB;IACV,UAAU,CAA2B;IACrC,IAAI,CAAsB;IAC1B,WAAW,CAA0B;IACrC,OAAO,CAAQ;IAEhC,YAAa,UAAqC,EAAE,IAA0B;QAC5E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAE,aAAqB,EAAE,MAAmB;QACpD,MAAM,cAAc,GAAG,QAAQ,EAA+B,CAAA;QAC9D,MAAM,gBAAgB,GAAG,QAAQ,EAA+B,CAAA;QAChE,MAAM,IAAI,GAAG,IAAI,CAAA;QAEjB,MAAM,MAAM,GAAwB;YAClC,MAAM,EAAE,CAAC,KAAK,SAAU,CAAC;gBACvB,KAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;oBACxC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBAC3B,CAAC;oBAED,OAAO,GAAG,CAAA;gBACZ,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,EAAE;YACJ,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACrB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBAC/B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,cAAc,CAAC,GAAG,EAAE,CAAA;gBACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAElC,gBAAgB,CAAC,GAAG,EAAE,CAAA;gBACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACjC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtC,CAAC;YACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBACb,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACvB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAElC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACjC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtC,CAAC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;aACjB;YACD,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3E,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC;SAC1D,CAAA;QAED,MAAM,QAAQ,GAAwB;YACpC,MAAM,EAAE,CAAC,KAAK,SAAU,CAAC;gBACvB,KAAM,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;oBACtC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBAC3B,CAAC;oBAED,OAAO,GAAG,CAAA;gBACZ,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,EAAE;YACJ,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACrB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBAC/B,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,gBAAgB,CAAC,GAAG,EAAE,CAAA;gBACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACjC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAEpC,cAAc,CAAC,GAAG,EAAE,CAAA;gBACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACpC,CAAC;YACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBACb,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACjC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAEpC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACvB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACpC,CAAC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;aACjB;YACD,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,iBAAiB,aAAa,EAAE,CAAC;YAC3E,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC;SAC1D,CAAA;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE9B,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAA;QAE7C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAEhC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK;QACH,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrC,MAAM,CAAC,KAAK,CAAC,IAAI,qBAAqB,CAAC,0BAA0B,CAAC,CAAC,CAAA;QACrE,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -54,12 +54,6 @@ export interface MemoryTransportInit {
54
54
  * @default 0
55
55
  */
56
56
  latency?: number;
57
- /**
58
- * Data messages larger than this will be chunked before sending
59
- *
60
- * @default 65_536
61
- */
62
- maxMessageSize?: number;
63
57
  }
64
58
  export declare function memory(init?: MemoryTransportInit): (components: MemoryTransportComponents) => Transport;
65
59
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE5F,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,MAAM,CAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,CAAC,UAAU,EAAE,yBAAyB,KAAK,SAAS,CAIxG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE5F,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,MAAM,CAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,CAAC,UAAU,EAAE,yBAAyB,KAAK,SAAS,CAIxG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AA0B7C,MAAM,UAAU,MAAM,CAAE,IAA0B;IAChD,OAAO,CAAC,UAAU,EAAE,EAAE;QACpB,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAmB7C,MAAM,UAAU,MAAM,CAAE,IAA0B;IAChD,OAAO,CAAC,UAAU,EAAE,EAAE;QACpB,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAG/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC9H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB,EAAE,mBAAmB;IAC7F,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED,qBAAa,uBAAwB,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAChG,OAAO,CAAC,UAAU,CAAC,CAAW;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAkB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAEvC,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,2BAA2B;IAS/E,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3C,YAAY,CAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAUhD,QAAQ,IAAK,SAAS,EAAE;IAUxB,mBAAmB,IAAK,IAAI;IAItB,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAa9B"}
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAG/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC9H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB,EAAE,mBAAmB;IAC7F,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED,qBAAa,uBAAwB,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAChG,OAAO,CAAC,UAAU,CAAC,CAAW;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAkB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAEvC,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,2BAA2B;IAS/E,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3C,YAAY,CAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAUhD,QAAQ,IAAK,SAAS,EAAE;IAUxB,mBAAmB,IAAK,IAAI;IAItB,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAa9B"}
@@ -17,8 +17,7 @@ export class MemoryTransportListener extends TypedEventEmitter {
17
17
  setMaxListeners(Infinity, this.shutdownController.signal);
18
18
  }
19
19
  async listen(ma) {
20
- const components = ma.getComponents();
21
- const value = components[0]?.value;
20
+ const [[, value]] = ma.stringTuples();
22
21
  const address = `/memory/${value ?? nanoid()}`;
23
22
  if (value != null && connections.has(address)) {
24
23
  throw new ListenError(`Memory address ${address} already in use`);
@@ -1 +1 @@
1
- {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAK/F,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACrH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;gBAE7B,UAAU,EAAE,yBAAyB,EAAE,IAAI,GAAE,mBAAwB;IAKlF,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAmB;IAEhD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAEK,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB9E;;;;OAIG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAOzD,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAInD,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAGlD"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAI/F,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACrH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;gBAE7B,UAAU,EAAE,yBAAyB,EAAE,IAAI,GAAE,mBAAwB;IAKlF,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAmB;IAEhD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAEK,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwB9E;;;;OAIG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAOzD,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAInD,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAGlD"}
@@ -1,5 +1,4 @@
1
1
  import { ConnectionFailedError, serviceCapabilities, transportSymbol } from '@libp2p/interface';
2
- import { CODE_P2P } from '@multiformats/multiaddr';
3
2
  import { Memory } from '@multiformats/multiaddr-matcher';
4
3
  import { connections } from './connections.js';
5
4
  import { MemoryTransportListener } from './listener.js';
@@ -17,12 +16,11 @@ export class MemoryTransport {
17
16
  ];
18
17
  async dial(ma, options) {
19
18
  options.signal.throwIfAborted();
20
- const peerId = ma.getComponents().find(c => c.code === CODE_P2P)?.value;
21
- const memoryConnection = connections.get(`${peerId == null ? ma : ma.decapsulate('/p2p')}`);
19
+ const memoryConnection = connections.get(`${ma.getPeerId() == null ? ma : ma.decapsulate('/p2p')}`);
22
20
  if (memoryConnection == null) {
23
21
  throw new ConnectionFailedError(`No memory listener found at ${ma}`);
24
22
  }
25
- const maConn = await memoryConnection.dial(this.components.peerId, this.components.logger.forComponent('libp2p:memory'), options.signal);
23
+ const maConn = await memoryConnection.dial(this.components.peerId, options.signal);
26
24
  try {
27
25
  options.signal.throwIfAborted();
28
26
  return await options.upgrader.upgradeOutbound(maConn, {
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAKvD,MAAM,OAAO,eAAe;IACT,UAAU,CAA2B;IACrC,IAAI,CAAqB;IAE1C,YAAa,UAAqC,EAAE,OAA4B,EAAE;QAChF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAA;IAExB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAA;IAEvC,CAAC,mBAAmB,CAAC,GAAa;QACzC,mBAAmB;KACpB,CAAA;IAED,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAA6B;QACtD,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAE/B,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK,CAAA;QACvE,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAE3F,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,qBAAqB,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAExI,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;YAE/B,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;gBACpD,GAAG,OAAO;gBACV,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe;aAC7B,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAE,OAA8B;QAC5C,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE;YAClD,GAAG,OAAO;YACV,GAAG,IAAI,CAAC,IAAI;SACb,CAAC,CAAA;IACJ,CAAC;IAED,YAAY,CAAE,UAAuB;QACnC,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,UAAU,CAAE,UAAuB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;CACF"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAKvD,MAAM,OAAO,eAAe;IACT,UAAU,CAA2B;IACrC,IAAI,CAAqB;IAE1C,YAAa,UAAqC,EAAE,OAA4B,EAAE;QAChF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAA;IAExB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAA;IAEvC,CAAC,mBAAmB,CAAC,GAAa;QACzC,mBAAmB;KACpB,CAAA;IAED,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAA6B;QACtD,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAE/B,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAEnG,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,qBAAqB,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAElF,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;YAE/B,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;gBACpD,GAAG,OAAO;gBACV,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe;aAC7B,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAE,OAA8B;QAC5C,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE;YAClD,GAAG,OAAO;YACV,GAAG,IAAI,CAAC,IAAI;SACb,CAAC,CAAA;IACJ,CAAC;IAED,YAAY,CAAE,UAAuB;QACnC,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,UAAU,CAAE,UAAuB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/memory",
3
- "version": "1.1.14-6059227cb",
3
+ "version": "1.1.14-87bc8d4fb",
4
4
  "description": "A memory transport for libp2p",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-memory#readme",
@@ -44,24 +44,23 @@
44
44
  "test:electron-main": "aegir test -t electron-main"
45
45
  },
46
46
  "dependencies": {
47
- "@libp2p/interface": "2.11.0-6059227cb",
48
- "@libp2p/utils": "6.7.2-6059227cb",
49
- "@multiformats/multiaddr": "^13.0.1",
50
- "@multiformats/multiaddr-matcher": "^3.0.1",
47
+ "@libp2p/interface": "2.11.0-87bc8d4fb",
48
+ "@multiformats/multiaddr": "^12.4.4",
49
+ "@multiformats/multiaddr-matcher": "^2.0.0",
51
50
  "@types/sinon": "^17.0.4",
52
51
  "delay": "^6.0.0",
53
- "it-map": "^3.1.4",
52
+ "it-map": "^3.1.3",
54
53
  "it-pushable": "^3.2.3",
55
54
  "main-event": "^1.0.1",
56
55
  "nanoid": "^5.1.5",
57
- "race-signal": "^2.0.0",
56
+ "race-signal": "^1.1.3",
58
57
  "uint8arraylist": "^2.4.8"
59
58
  },
60
59
  "devDependencies": {
61
- "@libp2p/logger": "5.2.0-6059227cb",
62
- "@libp2p/peer-id": "5.1.9-6059227cb",
63
- "aegir": "^47.0.22",
64
- "sinon": "^21.0.0",
60
+ "@libp2p/logger": "5.2.0-87bc8d4fb",
61
+ "@libp2p/peer-id": "5.1.9-87bc8d4fb",
62
+ "aegir": "^47.0.14",
63
+ "sinon": "^20.0.0",
65
64
  "sinon-ts": "^2.0.0"
66
65
  },
67
66
  "browser": {
@@ -1,12 +1,55 @@
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/)
5
+ * that operates in-memory only.
6
+ *
7
+ * This is intended for testing and can only be used to connect two libp2p nodes
8
+ * that are running in the same process.
9
+ *
10
+ * @example
11
+ *
12
+ * ```TypeScript
13
+ * import { createLibp2p } from 'libp2p'
14
+ * import { memory } from '@libp2p/memory'
15
+ * import { multiaddr } from '@multiformats/multiaddr'
16
+ *
17
+ * const listener = await createLibp2p({
18
+ * addresses: {
19
+ * listen: [
20
+ * '/memory/node-a'
21
+ * ]
22
+ * },
23
+ * transports: [
24
+ * memory()
25
+ * ]
26
+ * })
27
+ *
28
+ * const dialer = await createLibp2p({
29
+ * transports: [
30
+ * memory()
31
+ * ]
32
+ * })
33
+ *
34
+ * const ma = multiaddr('/memory/node-a')
35
+ *
36
+ * // dial the listener, timing out after 10s
37
+ * const connection = await dialer.dial(ma, {
38
+ * signal: AbortSignal.timeout(10_000)
39
+ * })
40
+ *
41
+ * // use connection...
42
+ * ```
43
+ */
44
+
1
45
  import { ConnectionFailedError } from '@libp2p/interface'
2
46
  import { multiaddr } from '@multiformats/multiaddr'
3
47
  import delay from 'delay'
48
+ import map from 'it-map'
4
49
  import { pushable } from 'it-pushable'
5
50
  import { raceSignal } from 'race-signal'
6
- import { DEFAULT_MAX_MESSAGE_SIZE } from './constants.ts'
7
- import { pushableToMaConn } from './pushable-to-conn.ts'
8
51
  import type { MemoryTransportComponents, MemoryTransportInit } from './index.js'
9
- import type { Logger, MultiaddrConnection, PeerId } from '@libp2p/interface'
52
+ import type { MultiaddrConnection, PeerId } from '@libp2p/interface'
10
53
  import type { Uint8ArrayList } from 'uint8arraylist'
11
54
 
12
55
  export const connections = new Map<string, MemoryConnection>()
@@ -20,74 +63,106 @@ interface MemoryConnectionInit extends MemoryTransportInit {
20
63
  address: string
21
64
  }
22
65
 
23
- let connectionId = 0
24
-
25
66
  export class MemoryConnection {
26
- public readonly latency: number
27
-
28
67
  private readonly components: MemoryTransportComponents
29
68
  private readonly init: MemoryConnectionInit
30
69
  private readonly connections: Set<MultiaddrConnection>
31
- private readonly log: Logger
70
+ private readonly latency: number
32
71
 
33
72
  constructor (components: MemoryTransportComponents, init: MemoryConnectionInit) {
34
73
  this.components = components
35
74
  this.init = init
36
75
  this.connections = new Set()
37
76
  this.latency = init.latency ?? 0
38
- this.log = components.logger.forComponent('libp2p:memory')
39
77
  }
40
78
 
41
- async dial (dialingPeerId: PeerId, dialingPeerLog: Logger, signal: AbortSignal): Promise<MultiaddrConnection> {
79
+ async dial (dialingPeerId: PeerId, signal: AbortSignal): Promise<MultiaddrConnection> {
80
+ const dialerPushable = pushable<Uint8Array | Uint8ArrayList>()
81
+ const listenerPushable = pushable<Uint8Array | Uint8ArrayList>()
42
82
  const self = this
43
83
 
44
- let dialerEnded = false
45
- let listenerEnded = false
46
-
47
- const dialerPushable = pushable<Uint8Array | Uint8ArrayList>({
48
- onEnd (err) {
49
- dialerEnded = true
50
- self.connections.delete(dialer)
51
-
52
- if (!listenerEnded) {
53
- listenerPushable.end(err)
54
- }
55
- }
56
- })
57
- const listenerPushable = pushable<Uint8Array | Uint8ArrayList>({
58
- onEnd (err) {
59
- listenerEnded = true
60
- self.connections.delete(listener)
61
-
62
- if (!dialerEnded) {
63
- dialerPushable.end(err)
84
+ const dialer: MultiaddrConnection = {
85
+ source: (async function * () {
86
+ yield * map(listenerPushable, async buf => {
87
+ if (self.latency > 0) {
88
+ await delay(self.latency)
89
+ }
90
+
91
+ return buf
92
+ })
93
+ })(),
94
+ sink: async (source) => {
95
+ for await (const buf of source) {
96
+ dialerPushable.push(buf)
64
97
  }
65
- }
66
- })
67
-
68
- const dialer = pushableToMaConn({
69
- connection: this,
98
+ },
99
+ close: async () => {
100
+ dialerPushable.end()
101
+ this.connections.delete(dialer)
102
+ dialer.timeline.close = Date.now()
103
+
104
+ listenerPushable.end()
105
+ this.connections.delete(listener)
106
+ listener.timeline.close = Date.now()
107
+ },
108
+ abort: (err) => {
109
+ dialerPushable.end(err)
110
+ this.connections.delete(dialer)
111
+ dialer.timeline.close = Date.now()
112
+
113
+ listenerPushable.end(err)
114
+ this.connections.delete(listener)
115
+ listener.timeline.close = Date.now()
116
+ },
117
+ timeline: {
118
+ open: Date.now()
119
+ },
70
120
  remoteAddr: multiaddr(`${this.init.address}/p2p/${this.components.peerId}`),
71
- direction: 'outbound',
72
- localPushable: dialerPushable,
73
- remotePushable: listenerPushable,
74
- log: dialingPeerLog.newScope(`connection:${connectionId}`),
75
- maxMessageSize: this.init.maxMessageSize ?? DEFAULT_MAX_MESSAGE_SIZE
76
- })
77
-
78
- const listener = pushableToMaConn({
79
- connection: this,
121
+ log: this.components.logger.forComponent('libp2p:memory')
122
+ }
123
+
124
+ const listener: MultiaddrConnection = {
125
+ source: (async function * () {
126
+ yield * map(dialerPushable, async buf => {
127
+ if (self.latency > 0) {
128
+ await delay(self.latency)
129
+ }
130
+
131
+ return buf
132
+ })
133
+ })(),
134
+ sink: async (source) => {
135
+ for await (const buf of source) {
136
+ listenerPushable.push(buf)
137
+ }
138
+ },
139
+ close: async () => {
140
+ listenerPushable.end()
141
+ this.connections.delete(listener)
142
+ listener.timeline.close = Date.now()
143
+
144
+ dialerPushable.end()
145
+ this.connections.delete(dialer)
146
+ dialer.timeline.close = Date.now()
147
+ },
148
+ abort: (err) => {
149
+ listenerPushable.end(err)
150
+ this.connections.delete(listener)
151
+ listener.timeline.close = Date.now()
152
+
153
+ dialerPushable.end(err)
154
+ this.connections.delete(dialer)
155
+ dialer.timeline.close = Date.now()
156
+ },
157
+ timeline: {
158
+ open: Date.now()
159
+ },
80
160
  remoteAddr: multiaddr(`${this.init.address}-outgoing/p2p/${dialingPeerId}`),
81
- direction: 'inbound',
82
- localPushable: listenerPushable,
83
- remotePushable: dialerPushable,
84
- log: this.log.newScope(`connection:${connectionId}`),
85
- maxMessageSize: this.init.maxMessageSize ?? DEFAULT_MAX_MESSAGE_SIZE
86
- })
161
+ log: this.components.logger.forComponent('libp2p:memory')
162
+ }
87
163
 
88
164
  this.connections.add(dialer)
89
165
  this.connections.add(listener)
90
- connectionId++
91
166
 
92
167
  await raceSignal(delay(this.latency), signal)
93
168
 
package/src/index.ts CHANGED
@@ -59,13 +59,6 @@ export interface MemoryTransportInit {
59
59
  * @default 0
60
60
  */
61
61
  latency?: number
62
-
63
- /**
64
- * Data messages larger than this will be chunked before sending
65
- *
66
- * @default 65_536
67
- */
68
- maxMessageSize?: number
69
62
  }
70
63
 
71
64
  export function memory (init?: MemoryTransportInit): (components: MemoryTransportComponents) => Transport {