cojson 0.18.6 → 0.18.7

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 (84) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +11 -0
  3. package/dist/coValueContentMessage.d.ts +2 -0
  4. package/dist/coValueContentMessage.d.ts.map +1 -1
  5. package/dist/coValueContentMessage.js +7 -0
  6. package/dist/coValueContentMessage.js.map +1 -1
  7. package/dist/coValueCore/SessionMap.d.ts +2 -2
  8. package/dist/coValueCore/SessionMap.d.ts.map +1 -1
  9. package/dist/coValueCore/SessionMap.js +2 -4
  10. package/dist/coValueCore/SessionMap.js.map +1 -1
  11. package/dist/coValueCore/branching.d.ts +31 -9
  12. package/dist/coValueCore/branching.d.ts.map +1 -1
  13. package/dist/coValueCore/branching.js +50 -100
  14. package/dist/coValueCore/branching.js.map +1 -1
  15. package/dist/coValueCore/coValueCore.d.ts +12 -8
  16. package/dist/coValueCore/coValueCore.d.ts.map +1 -1
  17. package/dist/coValueCore/coValueCore.js +93 -23
  18. package/dist/coValueCore/coValueCore.js.map +1 -1
  19. package/dist/coValueCore/verifiedState.d.ts +4 -2
  20. package/dist/coValueCore/verifiedState.d.ts.map +1 -1
  21. package/dist/coValueCore/verifiedState.js +6 -4
  22. package/dist/coValueCore/verifiedState.js.map +1 -1
  23. package/dist/coValues/coList.d.ts.map +1 -1
  24. package/dist/coValues/coList.js +10 -1
  25. package/dist/coValues/coList.js.map +1 -1
  26. package/dist/coValues/coMap.d.ts +2 -2
  27. package/dist/coValues/coMap.d.ts.map +1 -1
  28. package/dist/coValues/coMap.js +8 -8
  29. package/dist/coValues/coMap.js.map +1 -1
  30. package/dist/coValues/group.d.ts.map +1 -1
  31. package/dist/coValues/group.js +14 -1
  32. package/dist/coValues/group.js.map +1 -1
  33. package/dist/config.d.ts +6 -0
  34. package/dist/config.d.ts.map +1 -1
  35. package/dist/config.js +8 -0
  36. package/dist/config.js.map +1 -1
  37. package/dist/crypto/PureJSCrypto.d.ts.map +1 -1
  38. package/dist/crypto/PureJSCrypto.js +14 -6
  39. package/dist/crypto/PureJSCrypto.js.map +1 -1
  40. package/dist/exports.d.ts +3 -2
  41. package/dist/exports.d.ts.map +1 -1
  42. package/dist/exports.js +2 -2
  43. package/dist/exports.js.map +1 -1
  44. package/dist/localNode.d.ts.map +1 -1
  45. package/dist/localNode.js +7 -2
  46. package/dist/localNode.js.map +1 -1
  47. package/dist/storage/storageAsync.d.ts.map +1 -1
  48. package/dist/storage/storageAsync.js.map +1 -1
  49. package/dist/sync.d.ts +1 -3
  50. package/dist/sync.d.ts.map +1 -1
  51. package/dist/sync.js +8 -18
  52. package/dist/sync.js.map +1 -1
  53. package/dist/tests/branching.test.js +107 -9
  54. package/dist/tests/branching.test.js.map +1 -1
  55. package/dist/tests/coValueCore.test.js +45 -1
  56. package/dist/tests/coValueCore.test.js.map +1 -1
  57. package/dist/tests/sync.content.test.d.ts +2 -0
  58. package/dist/tests/sync.content.test.d.ts.map +1 -0
  59. package/dist/tests/sync.content.test.js +120 -0
  60. package/dist/tests/sync.content.test.js.map +1 -0
  61. package/dist/tests/sync.load.test.js +2 -2
  62. package/dist/tests/sync.storage.test.js +1 -1
  63. package/dist/tests/sync.upload.test.js +2 -2
  64. package/package.json +2 -2
  65. package/src/coValueContentMessage.ts +13 -0
  66. package/src/coValueCore/SessionMap.ts +2 -2
  67. package/src/coValueCore/branching.ts +94 -149
  68. package/src/coValueCore/coValueCore.ts +121 -27
  69. package/src/coValueCore/verifiedState.ts +8 -0
  70. package/src/coValues/coList.ts +12 -1
  71. package/src/coValues/coMap.ts +10 -12
  72. package/src/coValues/group.ts +14 -1
  73. package/src/config.ts +9 -0
  74. package/src/crypto/PureJSCrypto.ts +25 -13
  75. package/src/exports.ts +7 -1
  76. package/src/localNode.ts +8 -2
  77. package/src/storage/storageAsync.ts +0 -1
  78. package/src/sync.ts +8 -32
  79. package/src/tests/branching.test.ts +158 -9
  80. package/src/tests/coValueCore.test.ts +62 -2
  81. package/src/tests/sync.content.test.ts +153 -0
  82. package/src/tests/sync.load.test.ts +2 -2
  83. package/src/tests/sync.storage.test.ts +1 -1
  84. package/src/tests/sync.upload.test.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"coValueCore.test.js","sourceRoot":"","sources":["../../src/tests/coValueCore.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coValueCore.test.js","sourceRoot":"","sources":["../../src/tests/coValueCore.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync.content.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.content.test.d.ts","sourceRoot":"","sources":["../../src/tests/sync.content.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
1
+ import { beforeEach, describe, expect, test } from "vitest";
2
+ import { SyncMessagesLog, TEST_NODE_CONFIG, setupTestNode } from "./testUtils";
3
+ // We want to simulate a real world communication that happens asynchronously
4
+ TEST_NODE_CONFIG.withAsyncPeers = true;
5
+ describe("handling content messages", () => {
6
+ beforeEach(async () => {
7
+ SyncMessagesLog.clear();
8
+ });
9
+ test("dependencies are included when syncing new content to clients", async () => {
10
+ /*
11
+ * Initial Setup:
12
+ * core <-- edge <-- client1
13
+ */
14
+ const core = setupTestNode();
15
+ const edge = setupTestNode();
16
+ edge.connectToSyncServer({
17
+ ourName: "edge",
18
+ syncServerName: "core",
19
+ syncServer: core.node,
20
+ });
21
+ const client1 = setupTestNode();
22
+ client1.connectToSyncServer({
23
+ ourName: "client1",
24
+ syncServerName: "edge",
25
+ syncServer: edge.node,
26
+ });
27
+ // Create a map with a dependency on the client.
28
+ // Everythig will sync all the way back to core.
29
+ const group = client1.node.createGroup();
30
+ const map = group.createMap();
31
+ map.set("hello", "world", "trusting");
32
+ await map.core.waitForSync();
33
+ /*
34
+ * Add another client:
35
+ *
36
+ * |-- client1
37
+ * core <-- edge <--|
38
+ * |-- client2
39
+ *
40
+ */
41
+ const client2 = setupTestNode();
42
+ const { peerStateOnServer: client2PeerStateOnEdge } = client2.connectToSyncServer({
43
+ ourName: "client2",
44
+ syncServerName: "edge",
45
+ syncServer: edge.node,
46
+ });
47
+ client2PeerStateOnEdge.setOptimisticKnownState(map.core.id, {
48
+ id: map.core.id,
49
+ header: false,
50
+ sessions: {},
51
+ });
52
+ // Update the map on client1.
53
+ // This should sync the map AND its dependencies to the new client.
54
+ map.set("hello2", "world2", "trusting");
55
+ await map.core.waitForSync();
56
+ const syncMessages = SyncMessagesLog.getMessages({
57
+ Group: group.core,
58
+ Map: map.core,
59
+ });
60
+ expect(syncMessages.some((msg) => msg.startsWith("edge -> client2 | CONTENT Map"))).toBe(true);
61
+ expect(syncMessages.some((msg) => msg.startsWith("edge -> client2 | CONTENT Group"))).toBe(true);
62
+ });
63
+ test("dependencies are excluded when syncing new content to servers", async () => {
64
+ /*
65
+ * Initial Setup:
66
+ * core1 <-- edge <-- client
67
+ */
68
+ const core1 = setupTestNode();
69
+ const edge = setupTestNode();
70
+ edge.connectToSyncServer({
71
+ ourName: "edge",
72
+ syncServerName: "core1",
73
+ syncServer: core1.node,
74
+ });
75
+ const client = setupTestNode();
76
+ client.connectToSyncServer({
77
+ ourName: "client",
78
+ syncServerName: "edge",
79
+ syncServer: edge.node,
80
+ });
81
+ // Create a map with a dependency on the client.
82
+ // Everythig will sync all the way back to core1.
83
+ const group = client.node.createGroup();
84
+ const map = group.createMap();
85
+ map.set("hello", "world", "trusting");
86
+ await map.core.waitForSync();
87
+ /*
88
+ * Add another core:
89
+ *
90
+ * core1 <--
91
+ * |
92
+ * |-- edge <-- client
93
+ * |
94
+ * core2 <--
95
+ */
96
+ const core2 = setupTestNode();
97
+ const { peerState: core2PeerStateOnEdge } = edge.connectToSyncServer({
98
+ ourName: "edge",
99
+ syncServerName: "core2",
100
+ syncServer: core2.node,
101
+ skipReconciliation: true,
102
+ });
103
+ core2PeerStateOnEdge.setOptimisticKnownState(map.core.id, {
104
+ id: map.core.id,
105
+ header: false,
106
+ sessions: {},
107
+ });
108
+ // Update the map on the client.
109
+ // This should sync ONLY the map back to both cores.
110
+ map.set("hello2", "world2", "trusting");
111
+ await map.core.waitForSync();
112
+ const syncMessages = SyncMessagesLog.getMessages({
113
+ Group: group.core,
114
+ Map: map.core,
115
+ });
116
+ expect(syncMessages.some((msg) => msg.startsWith("edge -> core2 | CONTENT Map"))).toBe(true);
117
+ expect(syncMessages.some((msg) => msg.startsWith("edge -> core2 | CONTENT Group"))).toBe(false);
118
+ });
119
+ });
120
+ //# sourceMappingURL=sync.content.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.content.test.js","sourceRoot":"","sources":["../../src/tests/sync.content.test.ts"],"names":[],"mappings":"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"}
@@ -105,10 +105,10 @@ describe("loading coValues from server", () => {
105
105
  [
106
106
  "client -> server | LOAD Branch sessions: empty",
107
107
  "server -> client | CONTENT Group header: true new: After: 0 New: 5",
108
- "server -> client | CONTENT Map header: true new: After: 0 New: 2",
108
+ "server -> client | CONTENT Map header: true new: After: 0 New: 3",
109
109
  "server -> client | CONTENT Branch header: true new: After: 0 New: 2",
110
110
  "client -> server | KNOWN Group sessions: header/5",
111
- "client -> server | KNOWN Map sessions: header/2",
111
+ "client -> server | KNOWN Map sessions: header/3",
112
112
  "client -> server | KNOWN Branch sessions: header/2",
113
113
  ]
114
114
  `);
@@ -164,7 +164,7 @@ describe("client with storage syncs with server", () => {
164
164
  [
165
165
  "client -> storage | LOAD Branch sessions: empty",
166
166
  "storage -> client | CONTENT Group header: true new: After: 0 New: 3",
167
- "storage -> client | CONTENT Map header: true new: After: 0 New: 2",
167
+ "storage -> client | CONTENT Map header: true new: After: 0 New: 3",
168
168
  "storage -> client | CONTENT Branch header: true new: After: 0 New: 2",
169
169
  ]
170
170
  `);
@@ -62,11 +62,11 @@ describe("client to server upload", () => {
62
62
  "server -> client | CONTENT Map header: true new: After: 0 New: 2",
63
63
  "client -> server | KNOWN Group sessions: header/5",
64
64
  "client -> server | KNOWN Map sessions: header/2",
65
- "client -> server | LOAD Branch sessions: empty",
66
- "server -> client | KNOWN Branch sessions: empty",
67
65
  "client -> server | CONTENT Branch header: true new: After: 0 New: 1",
66
+ "client -> server | CONTENT Map header: false new: After: 0 New: 1",
68
67
  "client -> server | CONTENT Branch header: false new: After: 1 New: 1",
69
68
  "server -> client | KNOWN Branch sessions: header/1",
69
+ "server -> client | KNOWN Map sessions: header/3",
70
70
  "server -> client | KNOWN Branch sessions: header/2",
71
71
  ]
72
72
  `);
package/package.json CHANGED
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "type": "module",
27
27
  "license": "MIT",
28
- "version": "0.18.6",
28
+ "version": "0.18.7",
29
29
  "devDependencies": {
30
30
  "@opentelemetry/sdk-metrics": "^2.0.0",
31
31
  "libsql": "^0.5.13",
@@ -39,7 +39,7 @@
39
39
  "@scure/base": "1.2.1",
40
40
  "neverthrow": "^7.0.1",
41
41
  "unicode-segmenter": "^0.12.0",
42
- "cojson-core-wasm": "0.18.6"
42
+ "cojson-core-wasm": "0.18.7"
43
43
  },
44
44
  "gitHead": "33c27053293b4801b968c61d5c4c989f93a67d13",
45
45
  "scripts": {
@@ -2,6 +2,7 @@ import { CoValueHeader, Transaction } from "./coValueCore/verifiedState.js";
2
2
  import { TRANSACTION_CONFIG } from "./config.js";
3
3
  import { Signature } from "./crypto/crypto.js";
4
4
  import { RawCoID, SessionID } from "./ids.js";
5
+ import { JsonValue } from "./jsonValue.js";
5
6
  import { getPriorityFromHeader } from "./priority.js";
6
7
  import { NewContentMessage, emptyKnownState } from "./sync.js";
7
8
 
@@ -59,6 +60,18 @@ export function exceedsRecommendedSize(
59
60
  );
60
61
  }
61
62
 
63
+ export function validateTxSizeLimitInBytes(changes: JsonValue[]): void {
64
+ const serializedSize = new TextEncoder().encode(
65
+ JSON.stringify(changes),
66
+ ).length;
67
+ if (serializedSize > TRANSACTION_CONFIG.MAX_TX_SIZE_BYTES) {
68
+ throw new Error(
69
+ `Transaction is too large to be synced: ${serializedSize} > ${TRANSACTION_CONFIG.MAX_TX_SIZE_BYTES} bytes. ` +
70
+ `Consider breaking your transaction into smaller chunks.`,
71
+ );
72
+ }
73
+ }
74
+
62
75
  export function knownStateFromContent(content: NewContentMessage) {
63
76
  const knownState = emptyKnownState(content.id);
64
77
  knownState.header = Boolean(content.header);
@@ -92,12 +92,12 @@ export class SessionMap {
92
92
  keyID: KeyID,
93
93
  keySecret: KeySecret,
94
94
  meta: JsonObject | undefined,
95
+ madeAt: number,
95
96
  ): { signature: Signature; transaction: Transaction } {
96
97
  const sessionLog = this.getOrCreateSessionLog(
97
98
  sessionID,
98
99
  signerAgent.currentSignerID(),
99
100
  );
100
- const madeAt = Date.now();
101
101
 
102
102
  const result = sessionLog.impl.addNewPrivateTransaction(
103
103
  signerAgent,
@@ -122,12 +122,12 @@ export class SessionMap {
122
122
  signerAgent: ControlledAccountOrAgent,
123
123
  changes: JsonValue[],
124
124
  meta: JsonObject | undefined,
125
+ madeAt: number,
125
126
  ): { signature: Signature; transaction: Transaction } {
126
127
  const sessionLog = this.getOrCreateSessionLog(
127
128
  sessionID,
128
129
  signerAgent.currentSignerID(),
129
130
  );
130
- const madeAt = Date.now();
131
131
 
132
132
  const result = sessionLog.impl.addNewTrustingTransaction(
133
133
  signerAgent,
@@ -1,9 +1,41 @@
1
- import type { CoValueCore, JsonValue } from "../exports.js";
2
- import type { RawCoID, SessionID, TransactionID } from "../ids.js";
1
+ import type { CoValueCore } from "../exports.js";
2
+ import type { RawCoID, SessionID } from "../ids.js";
3
3
  import { type AvailableCoValueCore, idforHeader } from "./coValueCore.js";
4
4
  import type { CoValueHeader } from "./verifiedState.js";
5
5
  import type { CoValueKnownState } from "../sync.js";
6
- import type { ListOpPayload, OpID } from "../coValues/coList.js";
6
+
7
+ /**
8
+ * Commit to identify the starting point of the branch
9
+ *
10
+ * In case of clonflicts, the first commit of this kind is considered the source of truth
11
+ */
12
+ export type BranchStartCommit = {
13
+ from: CoValueKnownState["sessions"];
14
+ };
15
+
16
+ /**
17
+ * Commit that tracks a branch creation
18
+ */
19
+ export type BranchPointerCommit = {
20
+ branch: string;
21
+ ownerId?: RawCoID;
22
+ };
23
+
24
+ /**
25
+ * Meta information attached to each merged transaction to retrieve the original transaction ID
26
+ */
27
+ export type MergedTransactionMetadata = {
28
+ mi: number; // Transaction index and marker of a merge commit
29
+ s?: SessionID;
30
+ b?: RawCoID;
31
+ };
32
+
33
+ /**
34
+ * Merge commit located in a branch to track how many transactions have already been merged
35
+ */
36
+ export type MergeCommit = {
37
+ merged: CoValueKnownState["sessions"];
38
+ };
7
39
 
8
40
  export function getBranchHeader({
9
41
  type,
@@ -49,30 +81,37 @@ export function getBranchId(
49
81
  );
50
82
  }
51
83
 
52
- if (!ownerId) {
53
- const header = coValue.verified.header;
54
-
55
- // Group and account coValues can't have branches, so we return the source id
56
- if (header.ruleset.type !== "ownedByGroup") {
57
- return coValue.id;
58
- }
84
+ const currentOwnerId = ownerId ?? getBranchOwnerId(coValue);
59
85
 
60
- ownerId = header.ruleset.group;
86
+ if (!currentOwnerId) {
87
+ return coValue.id;
61
88
  }
62
89
 
63
90
  const header = getBranchHeader({
64
91
  type: coValue.verified.header.type,
65
92
  branchName: name,
66
- ownerId,
93
+ ownerId: currentOwnerId,
67
94
  sourceId: coValue.id,
68
95
  });
69
96
 
70
97
  return idforHeader(header, coValue.node.crypto);
71
98
  }
72
99
 
73
- export type BranchCommit = {
74
- branch: CoValueKnownState["sessions"];
75
- };
100
+ export function getBranchOwnerId(coValue: CoValueCore) {
101
+ if (!coValue.verified) {
102
+ throw new Error(
103
+ "CoValueCore: getBranchOwnerId called on coValue without verified state",
104
+ );
105
+ }
106
+
107
+ const header = coValue.verified.header;
108
+
109
+ if (header.ruleset.type !== "ownedByGroup") {
110
+ return undefined;
111
+ }
112
+
113
+ return header.ruleset.group;
114
+ }
76
115
 
77
116
  /**
78
117
  * Given a coValue, a branch name and an owner id, creates a new branch CoValue
@@ -88,32 +127,34 @@ export function createBranch(
88
127
  );
89
128
  }
90
129
 
91
- if (!ownerId) {
92
- const header = coValue.verified.header;
93
-
94
- // Group and account coValues can't have branches, so we return the source coValue
95
- if (header.ruleset.type !== "ownedByGroup") {
96
- return coValue;
97
- }
130
+ const branchOwnerId = ownerId ?? getBranchOwnerId(coValue);
98
131
 
99
- ownerId = header.ruleset.group;
132
+ if (!branchOwnerId) {
133
+ return coValue;
100
134
  }
101
135
 
102
136
  const header = getBranchHeader({
103
137
  type: coValue.verified.header.type,
104
138
  branchName: name,
105
- ownerId,
139
+ ownerId: branchOwnerId,
106
140
  sourceId: coValue.id,
107
141
  });
108
142
 
109
- const value = coValue.node.createCoValue(header);
143
+ const branch = coValue.node.createCoValue(header);
144
+ const sessions = { ...coValue.knownState().sessions };
110
145
 
111
146
  // Create a branch commit to identify the starting point of the branch
112
- value.makeTransaction([], "private", {
113
- branch: coValue.knownState().sessions,
114
- } satisfies BranchCommit);
147
+ branch.makeTransaction([], "private", {
148
+ from: sessions,
149
+ } satisfies BranchStartCommit);
150
+
151
+ // Create a branch pointer, to identify that we created a branch
152
+ coValue.makeTransaction([], "private", {
153
+ branch: name,
154
+ ownerId,
155
+ } satisfies BranchPointerCommit);
115
156
 
116
- return value;
157
+ return branch;
117
158
  }
118
159
 
119
160
  /**
@@ -141,15 +182,6 @@ export function getBranchSource(
141
182
  return source;
142
183
  }
143
184
 
144
- export type MergeCommit = {
145
- // The point where the branch was merged
146
- merge: CoValueKnownState["sessions"];
147
- // The id of the branch that was merged
148
- id: RawCoID;
149
- // The number of transactions that were merged, will be used in the future to handle the edits history properly
150
- count: number;
151
- };
152
-
153
185
  /**
154
186
  * Given a branch coValue, merges the branch into the source coValue
155
187
  */
@@ -164,12 +196,6 @@ export function mergeBranch(branch: CoValueCore): CoValueCore {
164
196
  return branch;
165
197
  }
166
198
 
167
- const sourceId = branch.getCurrentBranchSourceId();
168
-
169
- if (!sourceId) {
170
- throw new Error("CoValueCore: mergeBranch called on a non-branch coValue");
171
- }
172
-
173
199
  const target = getBranchSource(branch);
174
200
 
175
201
  if (!target) {
@@ -178,13 +204,9 @@ export function mergeBranch(branch: CoValueCore): CoValueCore {
178
204
 
179
205
  // Look for previous merge commits, to see which transactions needs to be merged
180
206
  // Done mostly for performance reasons, as we could merge all the transactions every time and nothing would change
181
- const mergedTransactions = target.mergeCommits.reduce(
182
- (acc, { commit }) => {
183
- if (commit.id !== branch.id) {
184
- return acc;
185
- }
186
-
187
- for (const [sessionID, count] of Object.entries(commit.merge) as [
207
+ const mergedTransactions = branch.getMergeCommits().reduce(
208
+ (acc, { merged }) => {
209
+ for (const [sessionID, count] of Object.entries(merged) as [
188
210
  SessionID,
189
211
  number,
190
212
  ][]) {
@@ -210,111 +232,34 @@ export function mergeBranch(branch: CoValueCore): CoValueCore {
210
232
  return target;
211
233
  }
212
234
 
213
- // Create a merge commit to identify the merge point
214
- target.makeTransaction([], "private", {
215
- merge: { ...branch.knownState().sessions },
216
- id: branch.id,
217
- count: branchValidTransactions.length,
218
- } satisfies MergeCommit);
219
-
220
- const currentSessionID = target.node.currentSessionID;
235
+ // We do track in the meta information the original txID to make sure that
236
+ // the CoList opid still point to the correct transaction
237
+ // To reduce the cost of the meta we skip the repeated information
238
+ let lastSessionId: string | undefined = undefined;
239
+ let lastBranchId: string | undefined = undefined;
221
240
 
222
- if (
223
- target.verified.header.type === "colist" ||
224
- target.verified.header.type === "coplaintext"
225
- ) {
226
- const mapping: Record<`${SessionID}:${number}`, number> = {};
241
+ for (const tx of branchValidTransactions) {
242
+ const mergeMeta: MergedTransactionMetadata = {
243
+ mi: tx.txID.txIndex,
244
+ };
227
245
 
228
- const session = target.verified.sessions.get(currentSessionID);
229
- let txIdx = session ? session.transactions.length : 0;
230
-
231
- // Create a mapping from the branch transactions to the target transactions
232
- for (const { txID } of branchValidTransactions) {
233
- mapping[`${txID.sessionID}:${txID.txIndex}`] = txIdx;
234
- txIdx++;
246
+ if (lastSessionId !== tx.txID.sessionID) {
247
+ mergeMeta.s = tx.txID.sessionID;
235
248
  }
236
249
 
237
- for (const { tx, changes } of branchValidTransactions) {
238
- target.makeTransaction(
239
- mapCoListChangesToTarget(
240
- changes as ListOpPayload<JsonValue>[],
241
- currentSessionID,
242
- mapping,
243
- ),
244
- tx.privacy,
245
- );
246
- }
247
- } else {
248
- for (const { tx, changes } of branchValidTransactions) {
249
- target.makeTransaction(changes, tx.privacy);
250
+ if (lastBranchId !== tx.txID.branch) {
251
+ mergeMeta.b = tx.txID.branch;
250
252
  }
251
- }
252
253
 
253
- return target;
254
- }
255
-
256
- /**
257
- * Given a list of changes, maps the opIDs to the target transactions
258
- */
259
- function mapCoListChangesToTarget(
260
- changes: ListOpPayload<JsonValue>[],
261
- currentSessionID: SessionID,
262
- mapping: Record<`${SessionID}:${number}`, number>,
263
- ) {
264
- return changes.map((change) => {
265
- if (change.op === "app") {
266
- if (change.after === "start") {
267
- return change;
268
- }
269
-
270
- return {
271
- ...change,
272
- after: convertOpID(change.after, currentSessionID, mapping),
273
- };
274
- }
275
-
276
- if (change.op === "del") {
277
- return {
278
- ...change,
279
- insertion: convertOpID(change.insertion, currentSessionID, mapping),
280
- };
281
- }
282
-
283
- if (change.op === "pre") {
284
- if (change.before === "end") {
285
- return change;
286
- }
287
-
288
- return {
289
- ...change,
290
- before: convertOpID(change.before, currentSessionID, mapping),
291
- };
292
- }
293
-
294
- return change;
295
- });
296
- }
297
-
298
- function convertOpID(
299
- opID: OpID,
300
- sessionID: SessionID,
301
- mapping: Record<`${SessionID}:${number}`, number>,
302
- ) {
303
- // If the opID comes from the source branch, we don't need to map it
304
- if (!opID.branch) {
305
- return opID;
254
+ target.makeTransaction(tx.changes, tx.tx.privacy, mergeMeta, tx.madeAt);
255
+ lastSessionId = tx.txID.sessionID;
256
+ lastBranchId = tx.txID.branch;
306
257
  }
307
258
 
308
- const mappedIndex = mapping[`${opID.sessionID}:${opID.txIndex}`];
309
-
310
- // If the opID doesn't exist in the mapping, we don't need to map it
311
- if (mappedIndex === undefined) {
312
- return opID;
313
- }
259
+ // Track the merged transactions for the branch, so future merges will know which transactions have already been merged
260
+ branch.makeTransaction([], "private", {
261
+ merged: branch.knownState().sessions,
262
+ } satisfies MergeCommit);
314
263
 
315
- return {
316
- sessionID: sessionID,
317
- txIndex: mappedIndex,
318
- changeIdx: opID.changeIdx,
319
- };
264
+ return target;
320
265
  }