@automerge/automerge-repo-network-messagechannel 1.1.0-alpha.1 → 1.1.0-alpha.13

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,4 +1,4 @@
1
- import type { EventEmitter } from "eventemitter3";
1
+ import { EventEmitter } from "eventemitter3";
2
2
  export interface PortRefEvents {
3
3
  message: (event: MessageEvent) => void;
4
4
  close: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"MessagePortRef.d.ts","sourceRoot":"","sources":["../src/MessagePortRef.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACtC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC,aAAa,CAAC;IACjE,KAAK,IAAI,IAAI,CAAA;IACb,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;IAC9D,OAAO,IAAI,OAAO,CAAA;CACnB"}
1
+ {"version":3,"file":"MessagePortRef.d.ts","sourceRoot":"","sources":["../src/MessagePortRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACtC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC,aAAa,CAAC;IACjE,KAAK,IAAI,IAAI,CAAA;IACb,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;IAC9D,OAAO,IAAI,OAAO,CAAA;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"StrongMessagePortRef.d.ts","sourceRoot":"","sources":["../src/StrongMessagePortRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEnE,qBAAa,oBACX,SAAQ,YAAY,CAAC,aAAa,CAClC,YAAW,cAAc;IAEb,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,WAAW;IAQrC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAIzD,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,OAAO;CAGnB"}
1
+ {"version":3,"file":"StrongMessagePortRef.d.ts","sourceRoot":"","sources":["../src/StrongMessagePortRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEnE,qBAAa,oBACX,SAAQ,YAAY,CAAC,aAAa,CAClC,YAAW,cAAc;IAEb,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,WAAW;IAQrC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAIzD,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,OAAO;CAInB"}
@@ -15,6 +15,7 @@ export class StrongMessagePortRef extends EventEmitter {
15
15
  this.port.start();
16
16
  }
17
17
  isAlive() {
18
+ /* c8 ignore next */
18
19
  return true;
19
20
  }
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WeakMessagePortRef.d.ts","sourceRoot":"","sources":["../src/WeakMessagePortRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEnE,qBAAa,kBACX,SAAQ,YAAY,CAAC,aAAa,CAClC,YAAW,cAAc;IAEzB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,cAAc,CAAQ;gBAElB,IAAI,EAAE,WAAW;IAU7B,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAezD,KAAK,IAAI,IAAI;IAeb,OAAO,CAAC,WAAW;IAOnB,OAAO,IAAI,OAAO;CAYnB"}
1
+ {"version":3,"file":"WeakMessagePortRef.d.ts","sourceRoot":"","sources":["../src/WeakMessagePortRef.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEnE,qBAAa,kBACX,SAAQ,YAAY,CAAC,aAAa,CAClC,YAAW,cAAc;IAEzB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,cAAc,CAAQ;gBAElB,IAAI,EAAE,WAAW;IAU7B,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAezD,KAAK,IAAI,IAAI;IAeb,OAAO,CAAC,WAAW;IAOnB,OAAO,IAAI,OAAO;CAYnB"}
@@ -1,3 +1,4 @@
1
+ /* c8 ignore start */
1
2
  import { EventEmitter } from "eventemitter3";
2
3
  export class WeakMessagePortRef extends EventEmitter {
3
4
  weakRef;
@@ -52,3 +53,4 @@ export class WeakMessagePortRef extends EventEmitter {
52
53
  return true;
53
54
  }
54
55
  }
56
+ /* c8 ignore end */
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,EAEX,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,14 +22,13 @@ 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
- log("message port received", e.data);
31
+ log("message port received %o", e.data);
33
32
  const message = e.data;
34
33
  if ("targetId" in message && message.targetId !== this.peerId) {
35
34
  throw new Error("MessagePortNetwork should never receive messages for a different peer.");
@@ -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({
42
+ type: "welcome",
43
43
  senderId: this.peerId,
44
- storageId: this.storageId,
45
- isEphemeral: this.isEphemeral,
44
+ peerMetadata: this.peerMetadata,
46
45
  targetId: senderId,
47
- 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.13",
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,9 @@
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.13",
17
+ "debug": "^4.3.4",
18
+ "eventemitter3": "^5.0.1"
17
19
  },
18
20
  "watch": {
19
21
  "build": {
@@ -26,5 +28,5 @@
26
28
  "publishConfig": {
27
29
  "access": "public"
28
30
  },
29
- "gitHead": "11805d698f860bd6ffb3ca028d3b57e718690b5a"
31
+ "gitHead": "f4ce1376d900ad98f00a638626be9611077460b5"
30
32
  }
@@ -1,4 +1,4 @@
1
- import type { EventEmitter } from "eventemitter3"
1
+ import { EventEmitter } from "eventemitter3"
2
2
 
3
3
  export interface PortRefEvents {
4
4
  message: (event: MessageEvent) => void
@@ -22,6 +22,7 @@ export class StrongMessagePortRef
22
22
  }
23
23
 
24
24
  isAlive(): boolean {
25
+ /* c8 ignore next */
25
26
  return true
26
27
  }
27
28
  }
@@ -1,3 +1,4 @@
1
+ /* c8 ignore start */
1
2
  import { EventEmitter } from "eventemitter3"
2
3
  import { PortRefEvents, MessagePortRef } from "./MessagePortRef.js"
3
4
 
@@ -68,3 +69,5 @@ export class WeakMessagePortRef
68
69
  return true
69
70
  }
70
71
  }
72
+
73
+ /* c8 ignore end */
package/src/index.ts CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  NetworkAdapter,
11
11
  type PeerId,
12
12
  type Message,
13
- type StorageId,
13
+ PeerMetadata,
14
14
  } from "@automerge/automerge-repo"
15
15
  import { MessagePortRef } from "./MessagePortRef.js"
16
16
  import { StrongMessagePortRef } from "./StrongMessagePortRef.js"
@@ -38,20 +38,15 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
38
38
  : new StrongMessagePortRef(messagePort)
39
39
  }
40
40
 
41
- connect(
42
- peerId: PeerId,
43
- storageId: StorageId | undefined,
44
- isEphemeral: boolean
45
- ) {
41
+ connect(peerId: PeerId, peerMetadata: PeerMetadata) {
46
42
  log("messageport connecting")
47
43
  this.peerId = peerId
48
- this.storageId = storageId
49
- this.isEphemeral = isEphemeral
44
+ this.peerMetadata = peerMetadata
50
45
  this.messagePortRef.start()
51
46
  this.messagePortRef.addListener(
52
47
  "message",
53
48
  (e: { data: MessageChannelMessage }) => {
54
- log("message port received", e.data)
49
+ log("message port received %o", e.data)
55
50
 
56
51
  const message = e.data
57
52
  if ("targetId" in message && message.targetId !== this.peerId) {
@@ -65,21 +60,20 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
65
60
  switch (type) {
66
61
  case "arrive":
67
62
  {
68
- const { storageId, isEphemeral } = message
63
+ const { peerMetadata } = message as ArriveMessage
69
64
  this.messagePortRef.postMessage({
65
+ type: "welcome",
70
66
  senderId: this.peerId,
71
- storageId: this.storageId,
72
- isEphemeral: this.isEphemeral,
67
+ peerMetadata: this.peerMetadata,
73
68
  targetId: senderId,
74
- type: "welcome",
75
69
  })
76
- this.announceConnection(senderId, storageId, isEphemeral)
70
+ this.announceConnection(senderId, peerMetadata)
77
71
  }
78
72
  break
79
73
  case "welcome":
80
74
  {
81
- const { storageId, isEphemeral } = message
82
- this.announceConnection(senderId, storageId, isEphemeral)
75
+ const { peerMetadata } = message as WelcomeMessage
76
+ this.announceConnection(senderId, peerMetadata)
83
77
  }
84
78
  break
85
79
  default:
@@ -135,16 +129,12 @@ export class MessageChannelNetworkAdapter extends NetworkAdapter {
135
129
  }
136
130
  }
137
131
 
138
- announceConnection(
139
- peerId: PeerId,
140
- storageId: StorageId | undefined,
141
- isEphemeral: boolean
142
- ) {
132
+ announceConnection(peerId: PeerId, peerMetadata: PeerMetadata) {
143
133
  if (!this.#startupComplete) {
144
134
  this.#startupComplete = true
145
135
  this.emit("ready", { network: this })
146
136
  }
147
- this.emit("peer-candidate", { peerId, storageId, isEphemeral })
137
+ this.emit("peer-candidate", { peerId, peerMetadata })
148
138
  }
149
139
 
150
140
  disconnect() {
@@ -172,12 +162,8 @@ type ArriveMessage = {
172
162
  /** The peer ID of the sender of this message */
173
163
  senderId: PeerId
174
164
 
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
165
+ /** The peer metadata of the sender of this message */
166
+ peerMetadata: PeerMetadata
181
167
 
182
168
  /** Arrive messages don't have a targetId */
183
169
  targetId: never
@@ -190,12 +176,8 @@ type WelcomeMessage = {
190
176
  /** The peer ID of the recipient sender this message */
191
177
  senderId: PeerId
192
178
 
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
179
+ /** The peer metadata of the sender of this message */
180
+ peerMetadata: PeerMetadata
199
181
 
200
182
  /** The peer ID of the recipient of this message */
201
183
  targetId: PeerId