@automerge/automerge-repo-network-messagechannel 1.1.0-alpha.1 → 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, type StorageId } 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, storageId: StorageId | undefined, isEphemeral: boolean): void;
16
+ connect(peerId: PeerId, peerMetadata: PeerMetadata): void;
17
17
  send(message: RepoMessage): void;
18
- announceConnection(peerId: PeerId, storageId: StorageId | undefined, isEphemeral: boolean): 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,EAEX,KAAK,SAAS,EACf,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,CACL,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,WAAW,EAAE,OAAO;IA2EtB,IAAI,CAAC,OAAO,EAAE,WAAW;IAmBzB,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,WAAW,EAAE,OAAO;IAStB,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,11 +22,10 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
22
22
  ? new WeakMessagePortRef(messagePort)
23
23
  : new StrongMessagePortRef(messagePort);
24
24
  }
25
- connect(peerId, storageId, isEphemeral) {
25
+ connect(peerId, peerMetadata) {
26
26
  log("messageport connecting");
27
27
  this.peerId = peerId;
28
- this.storageId = storageId;
29
- this.isEphemeral = isEphemeral;
28
+ this.peerMetadata = peerMetadata;
30
29
  this.messagePortRef.start();
31
30
  this.messagePortRef.addListener("message", (e) => {
32
31
  log("message port received", e.data);
@@ -38,21 +37,20 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
38
37
  switch (type) {
39
38
  case "arrive":
40
39
  {
41
- const { storageId, isEphemeral } = message;
40
+ const { peerMetadata } = message;
42
41
  this.messagePortRef.postMessage({
43
42
  senderId: this.peerId,
44
- storageId: this.storageId,
45
- isEphemeral: this.isEphemeral,
43
+ peerMetadata: this.peerMetadata,
46
44
  targetId: senderId,
47
45
  type: "welcome",
48
46
  });
49
- this.announceConnection(senderId, storageId, isEphemeral);
47
+ this.announceConnection(senderId, peerMetadata);
50
48
  }
51
49
  break;
52
50
  case "welcome":
53
51
  {
54
- const { storageId, isEphemeral } = message;
55
- this.announceConnection(senderId, storageId, isEphemeral);
52
+ const { peerMetadata } = message;
53
+ this.announceConnection(senderId, peerMetadata);
56
54
  }
57
55
  break;
58
56
  default:
@@ -97,12 +95,12 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
97
95
  this.messagePortRef.postMessage(message);
98
96
  }
99
97
  }
100
- announceConnection(peerId, storageId, isEphemeral) {
98
+ announceConnection(peerId, peerMetadata) {
101
99
  if (!this.#startupComplete) {
102
100
  this.#startupComplete = true;
103
101
  this.emit("ready", { network: this });
104
102
  }
105
- this.emit("peer-candidate", { peerId, storageId, isEphemeral });
103
+ this.emit("peer-candidate", { peerId, peerMetadata });
106
104
  }
107
105
  disconnect() {
108
106
  // TODO
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automerge/automerge-repo-network-messagechannel",
3
- "version": "1.1.0-alpha.1",
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.1.0-alpha.1"
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": "11805d698f860bd6ffb3ca028d3b57e718690b5a"
29
+ "gitHead": "d73e71588c3835a172fdf4d19e56a1f946c041ed"
30
30
  }
package/src/index.ts CHANGED
@@ -11,6 +11,7 @@ import {
11
11
  type PeerId,
12
12
  type Message,
13
13
  type StorageId,
14
+ PeerMetadata,
14
15
  } from "@automerge/automerge-repo"
15
16
  import { MessagePortRef } from "./MessagePortRef.js"
16
17
  import { StrongMessagePortRef } from "./StrongMessagePortRef.js"
@@ -38,15 +39,10 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
38
39
  : new StrongMessagePortRef(messagePort)
39
40
  }
40
41
 
41
- connect(
42
- peerId: PeerId,
43
- storageId: StorageId | undefined,
44
- isEphemeral: boolean
45
- ) {
42
+ connect(peerId: PeerId, peerMetadata: PeerMetadata) {
46
43
  log("messageport connecting")
47
44
  this.peerId = peerId
48
- this.storageId = storageId
49
- this.isEphemeral = isEphemeral
45
+ this.peerMetadata = peerMetadata
50
46
  this.messagePortRef.start()
51
47
  this.messagePortRef.addListener(
52
48
  "message",
@@ -65,21 +61,20 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
65
61
  switch (type) {
66
62
  case "arrive":
67
63
  {
68
- const { storageId, isEphemeral } = message
64
+ const { peerMetadata } = message
69
65
  this.messagePortRef.postMessage({
70
66
  senderId: this.peerId,
71
- storageId: this.storageId,
72
- isEphemeral: this.isEphemeral,
67
+ peerMetadata: this.peerMetadata,
73
68
  targetId: senderId,
74
69
  type: "welcome",
75
70
  })
76
- this.announceConnection(senderId, storageId, isEphemeral)
71
+ this.announceConnection(senderId, peerMetadata)
77
72
  }
78
73
  break
79
74
  case "welcome":
80
75
  {
81
- const { storageId, isEphemeral } = message
82
- this.announceConnection(senderId, storageId, isEphemeral)
76
+ const { peerMetadata } = message
77
+ this.announceConnection(senderId, peerMetadata)
83
78
  }
84
79
  break
85
80
  default:
@@ -135,16 +130,12 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
135
130
  }
136
131
  }
137
132
 
138
- announceConnection(
139
- peerId: PeerId,
140
- storageId: StorageId | undefined,
141
- isEphemeral: boolean
142
- ) {
133
+ announceConnection(peerId: PeerId, peerMetadata: PeerMetadata) {
143
134
  if (!this.#startupComplete) {
144
135
  this.#startupComplete = true
145
136
  this.emit("ready", { network: this })
146
137
  }
147
- this.emit("peer-candidate", { peerId, storageId, isEphemeral })
138
+ this.emit("peer-candidate", { peerId, peerMetadata })
148
139
  }
149
140
 
150
141
  disconnect() {
@@ -172,12 +163,8 @@ type ArriveMessage = {
172
163
  /** The peer ID of the sender of this message */
173
164
  senderId: PeerId
174
165
 
175
- /** Unique ID of the storage that the sender peer is using, is persistent across sessions */
176
- storageId?: StorageId
177
-
178
- /** Indicates whether other peers should persist the sync state of the sender peer.
179
- * Sync state is only persisted for non-ephemeral peers */
180
- isEphemeral: boolean
166
+ /** The peer metadata of the sender of this message */
167
+ peerMetadata: PeerMetadata
181
168
 
182
169
  /** Arrive messages don't have a targetId */
183
170
  targetId: never
@@ -190,12 +177,8 @@ type WelcomeMessage = {
190
177
  /** The peer ID of the recipient sender this message */
191
178
  senderId: PeerId
192
179
 
193
- /** Unique ID of the storage that the sender peer is using, is persistent across sessions */
194
- storageId?: StorageId
195
-
196
- /** Indicates whether other peers should persist the sync state of the sender peer.
197
- * Sync state is only persisted for non-ephemeral peers */
198
- isEphemeral: boolean
180
+ /** The peer metadata of the sender of this message */
181
+ peerMetadata: PeerMetadata
199
182
 
200
183
  /** The peer ID of the recipient of this message */
201
184
  targetId: PeerId