@automerge/automerge-repo-network-messagechannel 1.0.19 → 1.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * @module
7
7
  */
8
- import { type RepoMessage, NetworkAdapter, type PeerId } from "@automerge/automerge-repo";
8
+ import { type RepoMessage, NetworkAdapter, type PeerId, PeerMetadata } from "@automerge/automerge-repo";
9
9
  import { MessagePortRef } from "./MessagePortRef.js";
10
10
  export declare class MessageChannelNetworkAdapter extends NetworkAdapter {
11
11
  #private;
@@ -13,9 +13,9 @@ export declare class MessageChannelNetworkAdapter extends NetworkAdapter {
13
13
  /** @hidden */
14
14
  messagePortRef: MessagePortRef;
15
15
  constructor(messagePort: MessagePort, config?: MessageChannelNetworkAdapterConfig);
16
- connect(peerId: PeerId): void;
16
+ connect(peerId: PeerId, peerMetadata: PeerMetadata): void;
17
17
  send(message: RepoMessage): void;
18
- announceConnection(peerId: PeerId): void;
18
+ announceConnection(peerId: PeerId, peerMetadata: PeerMetadata): void;
19
19
  disconnect(): void;
20
20
  }
21
21
  export interface MessageChannelNetworkAdapterConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,KAAK,WAAW,EAChB,cAAc,EACd,KAAK,MAAM,EAEZ,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAOpD,qBAAa,4BAA6B,SAAQ,cAAc;;IAC9D,QAAQ,KAAK;IACb,cAAc;IACd,cAAc,EAAE,cAAc,CAAA;gBAI5B,WAAW,EAAE,WAAW,EACxB,MAAM,GAAE,kCAAuC;IAWjD,OAAO,CAAC,MAAM,EAAE,MAAM;IAgEtB,IAAI,CAAC,OAAO,EAAE,WAAW;IAmBzB,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAQjC,UAAU;CAIX;AAED,MAAM,WAAW,kCAAkC;IACjD;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,KAAK,WAAW,EAChB,cAAc,EACd,KAAK,MAAM,EAGX,YAAY,EACb,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAOpD,qBAAa,4BAA6B,SAAQ,cAAc;;IAC9D,QAAQ,KAAK;IACb,cAAc;IACd,cAAc,EAAE,cAAc,CAAA;gBAI5B,WAAW,EAAE,WAAW,EACxB,MAAM,GAAE,kCAAuC;IAWjD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY;IAwElD,IAAI,CAAC,OAAO,EAAE,WAAW;IAmBzB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY;IAQ7D,UAAU;CAIX;AAED,MAAM,WAAW,kCAAkC;IACjD;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB"}
package/dist/index.js CHANGED
@@ -22,9 +22,10 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
22
22
  ? new WeakMessagePortRef(messagePort)
23
23
  : new StrongMessagePortRef(messagePort);
24
24
  }
25
- connect(peerId) {
25
+ connect(peerId, peerMetadata) {
26
26
  log("messageport connecting");
27
27
  this.peerId = peerId;
28
+ this.peerMetadata = peerMetadata;
28
29
  this.messagePortRef.start();
29
30
  this.messagePortRef.addListener("message", (e) => {
30
31
  log("message port received", e.data);
@@ -35,15 +36,22 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
35
36
  const { senderId, type } = message;
36
37
  switch (type) {
37
38
  case "arrive":
38
- this.messagePortRef.postMessage({
39
- senderId: this.peerId,
40
- targetId: senderId,
41
- type: "welcome",
42
- });
43
- this.announceConnection(senderId);
39
+ {
40
+ const { peerMetadata } = message;
41
+ this.messagePortRef.postMessage({
42
+ senderId: this.peerId,
43
+ peerMetadata: this.peerMetadata,
44
+ targetId: senderId,
45
+ type: "welcome",
46
+ });
47
+ this.announceConnection(senderId, peerMetadata);
48
+ }
44
49
  break;
45
50
  case "welcome":
46
- this.announceConnection(senderId);
51
+ {
52
+ const { peerMetadata } = message;
53
+ this.announceConnection(senderId, peerMetadata);
54
+ }
47
55
  break;
48
56
  default:
49
57
  if (!("data" in message)) {
@@ -87,12 +95,12 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
87
95
  this.messagePortRef.postMessage(message);
88
96
  }
89
97
  }
90
- announceConnection(peerId) {
98
+ announceConnection(peerId, peerMetadata) {
91
99
  if (!this.#startupComplete) {
92
100
  this.#startupComplete = true;
93
101
  this.emit("ready", { network: this });
94
102
  }
95
- this.emit("peer-candidate", { peerId });
103
+ this.emit("peer-candidate", { peerId, peerMetadata });
96
104
  }
97
105
  disconnect() {
98
106
  // TODO
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automerge/automerge-repo-network-messagechannel",
3
- "version": "1.0.19",
3
+ "version": "1.1.0-alpha.2",
4
4
  "description": "MessageChannel network adapter for Automerge Repo",
5
5
  "repository": "https://github.com/automerge/automerge-repo/tree/master/packages/automerge-repo-network-messagechannel",
6
6
  "author": "Peter van Hardenberg <pvh@pvh.ca>",
@@ -13,7 +13,7 @@
13
13
  "test": "vitest"
14
14
  },
15
15
  "dependencies": {
16
- "@automerge/automerge-repo": "^1.0.19"
16
+ "@automerge/automerge-repo": "^1.1.0-alpha.2"
17
17
  },
18
18
  "watch": {
19
19
  "build": {
@@ -26,5 +26,5 @@
26
26
  "publishConfig": {
27
27
  "access": "public"
28
28
  },
29
- "gitHead": "7d28ca50dfa437ac6f7b1722b89b3f6844b90de7"
29
+ "gitHead": "d73e71588c3835a172fdf4d19e56a1f946c041ed"
30
30
  }
package/src/index.ts CHANGED
@@ -10,6 +10,8 @@ import {
10
10
  NetworkAdapter,
11
11
  type PeerId,
12
12
  type Message,
13
+ type StorageId,
14
+ PeerMetadata,
13
15
  } from "@automerge/automerge-repo"
14
16
  import { MessagePortRef } from "./MessagePortRef.js"
15
17
  import { StrongMessagePortRef } from "./StrongMessagePortRef.js"
@@ -37,9 +39,10 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
37
39
  : new StrongMessagePortRef(messagePort)
38
40
  }
39
41
 
40
- connect(peerId: PeerId) {
42
+ connect(peerId: PeerId, peerMetadata: PeerMetadata) {
41
43
  log("messageport connecting")
42
44
  this.peerId = peerId
45
+ this.peerMetadata = peerMetadata
43
46
  this.messagePortRef.start()
44
47
  this.messagePortRef.addListener(
45
48
  "message",
@@ -57,15 +60,22 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
57
60
 
58
61
  switch (type) {
59
62
  case "arrive":
60
- this.messagePortRef.postMessage({
61
- senderId: this.peerId,
62
- targetId: senderId,
63
- type: "welcome",
64
- })
65
- this.announceConnection(senderId)
63
+ {
64
+ const { peerMetadata } = message
65
+ this.messagePortRef.postMessage({
66
+ senderId: this.peerId,
67
+ peerMetadata: this.peerMetadata,
68
+ targetId: senderId,
69
+ type: "welcome",
70
+ })
71
+ this.announceConnection(senderId, peerMetadata)
72
+ }
66
73
  break
67
74
  case "welcome":
68
- this.announceConnection(senderId)
75
+ {
76
+ const { peerMetadata } = message
77
+ this.announceConnection(senderId, peerMetadata)
78
+ }
69
79
  break
70
80
  default:
71
81
  if (!("data" in message)) {
@@ -120,12 +130,12 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
120
130
  }
121
131
  }
122
132
 
123
- announceConnection(peerId: PeerId) {
133
+ announceConnection(peerId: PeerId, peerMetadata: PeerMetadata) {
124
134
  if (!this.#startupComplete) {
125
135
  this.#startupComplete = true
126
136
  this.emit("ready", { network: this })
127
137
  }
128
- this.emit("peer-candidate", { peerId })
138
+ this.emit("peer-candidate", { peerId, peerMetadata })
129
139
  }
130
140
 
131
141
  disconnect() {
@@ -153,6 +163,9 @@ type ArriveMessage = {
153
163
  /** The peer ID of the sender of this message */
154
164
  senderId: PeerId
155
165
 
166
+ /** The peer metadata of the sender of this message */
167
+ peerMetadata: PeerMetadata
168
+
156
169
  /** Arrive messages don't have a targetId */
157
170
  targetId: never
158
171
  }
@@ -164,6 +177,9 @@ type WelcomeMessage = {
164
177
  /** The peer ID of the recipient sender this message */
165
178
  senderId: PeerId
166
179
 
180
+ /** The peer metadata of the sender of this message */
181
+ peerMetadata: PeerMetadata
182
+
167
183
  /** The peer ID of the recipient of this message */
168
184
  targetId: PeerId
169
185
  }