cojson 0.13.17 → 0.13.18

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 (166) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +9 -0
  3. package/dist/PeerState.d.ts +3 -0
  4. package/dist/PeerState.d.ts.map +1 -1
  5. package/dist/PeerState.js +9 -0
  6. package/dist/PeerState.js.map +1 -1
  7. package/dist/SyncStateManager.d.ts.map +1 -1
  8. package/dist/SyncStateManager.js +2 -3
  9. package/dist/SyncStateManager.js.map +1 -1
  10. package/dist/coValue.d.ts +4 -4
  11. package/dist/coValue.d.ts.map +1 -1
  12. package/dist/coValue.js +4 -4
  13. package/dist/coValue.js.map +1 -1
  14. package/dist/coValueCore/coValueCore.d.ts +143 -0
  15. package/dist/coValueCore/coValueCore.d.ts.map +1 -0
  16. package/dist/{coValueCore.js → coValueCore/coValueCore.js} +314 -246
  17. package/dist/coValueCore/coValueCore.js.map +1 -0
  18. package/dist/coValueCore/verifiedState.d.ts +65 -0
  19. package/dist/coValueCore/verifiedState.d.ts.map +1 -0
  20. package/dist/coValueCore/verifiedState.js +210 -0
  21. package/dist/coValueCore/verifiedState.js.map +1 -0
  22. package/dist/coValues/account.d.ts +8 -10
  23. package/dist/coValues/account.d.ts.map +1 -1
  24. package/dist/coValues/account.js +12 -13
  25. package/dist/coValues/account.js.map +1 -1
  26. package/dist/coValues/coList.d.ts +3 -3
  27. package/dist/coValues/coList.d.ts.map +1 -1
  28. package/dist/coValues/coList.js +6 -3
  29. package/dist/coValues/coList.js.map +1 -1
  30. package/dist/coValues/coMap.d.ts +3 -3
  31. package/dist/coValues/coMap.d.ts.map +1 -1
  32. package/dist/coValues/coMap.js +3 -3
  33. package/dist/coValues/coMap.js.map +1 -1
  34. package/dist/coValues/coPlainText.d.ts +2 -2
  35. package/dist/coValues/coPlainText.d.ts.map +1 -1
  36. package/dist/coValues/coPlainText.js +4 -4
  37. package/dist/coValues/coPlainText.js.map +1 -1
  38. package/dist/coValues/coStream.d.ts +3 -3
  39. package/dist/coValues/coStream.d.ts.map +1 -1
  40. package/dist/coValues/coStream.js +3 -3
  41. package/dist/coValues/coStream.js.map +1 -1
  42. package/dist/coValues/group.d.ts +7 -2
  43. package/dist/coValues/group.d.ts.map +1 -1
  44. package/dist/coValues/group.js +29 -26
  45. package/dist/coValues/group.js.map +1 -1
  46. package/dist/coreToCoValue.d.ts +2 -2
  47. package/dist/coreToCoValue.d.ts.map +1 -1
  48. package/dist/coreToCoValue.js +10 -14
  49. package/dist/coreToCoValue.js.map +1 -1
  50. package/dist/exports.d.ts +6 -5
  51. package/dist/exports.d.ts.map +1 -1
  52. package/dist/exports.js +3 -4
  53. package/dist/exports.js.map +1 -1
  54. package/dist/localNode.d.ts +30 -24
  55. package/dist/localNode.d.ts.map +1 -1
  56. package/dist/localNode.js +139 -170
  57. package/dist/localNode.js.map +1 -1
  58. package/dist/permissions.d.ts +2 -1
  59. package/dist/permissions.d.ts.map +1 -1
  60. package/dist/permissions.js +15 -11
  61. package/dist/permissions.js.map +1 -1
  62. package/dist/priority.d.ts +1 -1
  63. package/dist/priority.d.ts.map +1 -1
  64. package/dist/sync.d.ts +2 -2
  65. package/dist/sync.d.ts.map +1 -1
  66. package/dist/sync.js +86 -55
  67. package/dist/sync.js.map +1 -1
  68. package/dist/tests/coList.test.js +19 -16
  69. package/dist/tests/coList.test.js.map +1 -1
  70. package/dist/tests/coMap.test.js +12 -13
  71. package/dist/tests/coMap.test.js.map +1 -1
  72. package/dist/tests/coPlainText.test.js +9 -10
  73. package/dist/tests/coPlainText.test.js.map +1 -1
  74. package/dist/tests/coStream.test.js +22 -17
  75. package/dist/tests/coStream.test.js.map +1 -1
  76. package/dist/tests/coValueCore.test.js +22 -28
  77. package/dist/tests/coValueCore.test.js.map +1 -1
  78. package/dist/tests/coValueCoreLoadingState.test.d.ts +2 -0
  79. package/dist/tests/coValueCoreLoadingState.test.d.ts.map +1 -0
  80. package/dist/tests/{coValueState.test.js → coValueCoreLoadingState.test.js} +62 -46
  81. package/dist/tests/coValueCoreLoadingState.test.js.map +1 -0
  82. package/dist/tests/group.test.js +42 -43
  83. package/dist/tests/group.test.js.map +1 -1
  84. package/dist/tests/messagesTestUtils.d.ts +2 -2
  85. package/dist/tests/messagesTestUtils.d.ts.map +1 -1
  86. package/dist/tests/messagesTestUtils.js +1 -1
  87. package/dist/tests/messagesTestUtils.js.map +1 -1
  88. package/dist/tests/permissions.test.js +224 -292
  89. package/dist/tests/permissions.test.js.map +1 -1
  90. package/dist/tests/priority.test.js +13 -14
  91. package/dist/tests/priority.test.js.map +1 -1
  92. package/dist/tests/sync.auth.test.d.ts +2 -0
  93. package/dist/tests/sync.auth.test.d.ts.map +1 -0
  94. package/dist/tests/sync.auth.test.js +141 -0
  95. package/dist/tests/sync.auth.test.js.map +1 -0
  96. package/dist/tests/sync.load.test.js +4 -4
  97. package/dist/tests/sync.load.test.js.map +1 -1
  98. package/dist/tests/sync.mesh.test.js +25 -12
  99. package/dist/tests/sync.mesh.test.js.map +1 -1
  100. package/dist/tests/sync.peerReconciliation.test.js +19 -19
  101. package/dist/tests/sync.peerReconciliation.test.js.map +1 -1
  102. package/dist/tests/sync.storage.test.js +20 -13
  103. package/dist/tests/sync.storage.test.js.map +1 -1
  104. package/dist/tests/sync.test.js +32 -39
  105. package/dist/tests/sync.test.js.map +1 -1
  106. package/dist/tests/sync.upload.test.js +126 -37
  107. package/dist/tests/sync.upload.test.js.map +1 -1
  108. package/dist/tests/testUtils.d.ts +24 -15
  109. package/dist/tests/testUtils.d.ts.map +1 -1
  110. package/dist/tests/testUtils.js +88 -61
  111. package/dist/tests/testUtils.js.map +1 -1
  112. package/dist/typeUtils/expectGroup.js +1 -1
  113. package/dist/typeUtils/expectGroup.js.map +1 -1
  114. package/package.json +1 -1
  115. package/src/PeerState.ts +11 -0
  116. package/src/SyncStateManager.ts +2 -3
  117. package/src/coValue.ts +11 -8
  118. package/src/{coValueCore.ts → coValueCore/coValueCore.ts} +469 -413
  119. package/src/coValueCore/verifiedState.ts +376 -0
  120. package/src/coValues/account.ts +20 -25
  121. package/src/coValues/coList.ts +12 -6
  122. package/src/coValues/coMap.ts +9 -6
  123. package/src/coValues/coPlainText.ts +9 -6
  124. package/src/coValues/coStream.ts +9 -6
  125. package/src/coValues/group.ts +50 -28
  126. package/src/coreToCoValue.ts +14 -15
  127. package/src/exports.ts +9 -7
  128. package/src/localNode.ts +227 -273
  129. package/src/permissions.ts +18 -12
  130. package/src/priority.ts +1 -1
  131. package/src/sync.ts +96 -63
  132. package/src/tests/coList.test.ts +21 -15
  133. package/src/tests/coMap.test.ts +12 -13
  134. package/src/tests/coPlainText.test.ts +12 -9
  135. package/src/tests/coStream.test.ts +25 -16
  136. package/src/tests/coValueCore.test.ts +30 -27
  137. package/src/tests/{coValueState.test.ts → coValueCoreLoadingState.test.ts} +67 -57
  138. package/src/tests/group.test.ts +44 -68
  139. package/src/tests/messagesTestUtils.ts +3 -8
  140. package/src/tests/permissions.test.ts +283 -449
  141. package/src/tests/priority.test.ts +17 -13
  142. package/src/tests/sync.auth.test.ts +188 -0
  143. package/src/tests/sync.load.test.ts +4 -4
  144. package/src/tests/sync.mesh.test.ts +25 -12
  145. package/src/tests/sync.peerReconciliation.test.ts +25 -25
  146. package/src/tests/sync.storage.test.ts +20 -13
  147. package/src/tests/sync.test.ts +43 -43
  148. package/src/tests/sync.upload.test.ts +157 -37
  149. package/src/tests/testUtils.ts +120 -74
  150. package/src/typeUtils/expectGroup.ts +1 -1
  151. package/dist/CoValuesStore.d.ts +0 -14
  152. package/dist/CoValuesStore.d.ts.map +0 -1
  153. package/dist/CoValuesStore.js +0 -32
  154. package/dist/CoValuesStore.js.map +0 -1
  155. package/dist/coValueCore.d.ts +0 -142
  156. package/dist/coValueCore.d.ts.map +0 -1
  157. package/dist/coValueCore.js.map +0 -1
  158. package/dist/coValueState.d.ts +0 -34
  159. package/dist/coValueState.d.ts.map +0 -1
  160. package/dist/coValueState.js +0 -190
  161. package/dist/coValueState.js.map +0 -1
  162. package/dist/tests/coValueState.test.d.ts +0 -2
  163. package/dist/tests/coValueState.test.d.ts.map +0 -1
  164. package/dist/tests/coValueState.test.js.map +0 -1
  165. package/src/CoValuesStore.ts +0 -41
  166. package/src/coValueState.ts +0 -245
package/dist/localNode.js CHANGED
@@ -1,11 +1,12 @@
1
- import { ResultAsync, err, ok, okAsync } from "neverthrow";
2
- import { CoValuesStore } from "./CoValuesStore.js";
3
- import { CoValueCore, } from "./coValueCore.js";
4
- import { ControlledAgent, RawControlledAccount, accountHeaderForInitialAgentSecret, } from "./coValues/account.js";
1
+ import { err, ok } from "neverthrow";
2
+ import { CoValueCore, idforHeader, } from "./coValueCore/coValueCore.js";
3
+ import { VerifiedState, } from "./coValueCore/verifiedState.js";
4
+ import { ControlledAccount, ControlledAgent, accountHeaderForInitialAgentSecret, expectAccount, } from "./coValues/account.js";
5
5
  import { secretSeedFromInviteSecret, } from "./coValues/group.js";
6
6
  import { isAgentID } from "./ids.js";
7
7
  import { logger } from "./logger.js";
8
8
  import { SyncManager } from "./sync.js";
9
+ import { accountOrAgentIDfromSessionID } from "./typeUtils/accountOrAgentIDfromSessionID.js";
9
10
  import { expectGroup } from "./typeUtils/expectGroup.js";
10
11
  /** A `LocalNode` represents a local view of a set of loaded `CoValue`s, from the perspective of a particular account (or primitive cryptographic agent).
11
12
 
@@ -20,83 +21,118 @@ const { localNode } = useJazz();
20
21
  */
21
22
  export class LocalNode {
22
23
  /** @category 3. Low-level */
23
- constructor(account, currentSessionID, crypto) {
24
+ constructor(agentSecret, currentSessionID, crypto) {
24
25
  /** @internal */
25
- this.coValuesStore = new CoValuesStore();
26
+ this.coValues = new Map();
26
27
  /** @category 3. Low-level */
27
28
  this.syncManager = new SyncManager(this);
28
29
  this.crashed = undefined;
29
- this.account = account;
30
+ this.agentSecret = agentSecret;
30
31
  this.currentSessionID = currentSessionID;
31
32
  this.crypto = crypto;
32
33
  }
34
+ getCoValue(id) {
35
+ let entry = this.coValues.get(id);
36
+ if (!entry) {
37
+ entry = CoValueCore.fromID(id, this);
38
+ this.coValues.set(id, entry);
39
+ }
40
+ return entry;
41
+ }
42
+ allCoValues() {
43
+ return this.coValues.values();
44
+ }
45
+ putCoValue(id, verified, { forceOverwrite = false } = {}) {
46
+ const entry = this.getCoValue(id);
47
+ entry.internalMarkMagicallyAvailable(verified, { forceOverwrite });
48
+ return entry;
49
+ }
50
+ internalDeleteCoValue(id) {
51
+ this.coValues.delete(id);
52
+ }
53
+ getCurrentAgent() {
54
+ const accountOrAgent = accountOrAgentIDfromSessionID(this.currentSessionID);
55
+ if (isAgentID(accountOrAgent)) {
56
+ return new ControlledAgent(this.agentSecret, this.crypto);
57
+ }
58
+ return new ControlledAccount(expectAccount(this.expectCoValueLoaded(accountOrAgent).getCurrentContent()), this.agentSecret);
59
+ }
60
+ expectCurrentAccountID(reason) {
61
+ const accountOrAgent = accountOrAgentIDfromSessionID(this.currentSessionID);
62
+ if (isAgentID(accountOrAgent)) {
63
+ throw new Error("Current account is an agent, but expected an account: " + reason);
64
+ }
65
+ return accountOrAgent;
66
+ }
67
+ expectCurrentAccount(reason) {
68
+ const accountID = this.expectCurrentAccountID(reason);
69
+ return expectAccount(this.expectCoValueLoaded(accountID).getCurrentContent());
70
+ }
71
+ static internalCreateAccount(opts) {
72
+ const { crypto, initialAgentSecret = crypto.newRandomAgentSecret(), peersToLoadFrom = [], } = opts;
73
+ const accountHeader = accountHeaderForInitialAgentSecret(initialAgentSecret, crypto);
74
+ const accountID = idforHeader(accountHeader, crypto);
75
+ const node = new LocalNode(initialAgentSecret, crypto.newRandomSessionID(accountID), crypto);
76
+ for (const peer of peersToLoadFrom) {
77
+ node.syncManager.addPeer(peer);
78
+ }
79
+ const accountAgentID = crypto.getAgentID(initialAgentSecret);
80
+ const rawAccount = expectGroup(node.createCoValue(accountHeader).getCurrentContent());
81
+ rawAccount.set(accountAgentID, "admin", "trusting");
82
+ const readKey = crypto.newRandomKeySecret();
83
+ const sealed = crypto.seal({
84
+ message: readKey.secret,
85
+ from: crypto.getAgentSealerSecret(initialAgentSecret),
86
+ to: crypto.getAgentSealerID(accountAgentID),
87
+ nOnceMaterial: {
88
+ in: rawAccount.id,
89
+ tx: rawAccount.core.nextTransactionID(),
90
+ },
91
+ });
92
+ rawAccount.set(`${readKey.id}_for_${accountAgentID}`, sealed, "trusting");
93
+ rawAccount.set("readKey", readKey.id, "trusting");
94
+ return node.expectCurrentAccount("after creation");
95
+ }
33
96
  /** @category 2. Node Creation */
34
97
  static async withNewlyCreatedAccount({ creationProps, peersToLoadFrom, migration, crypto, initialAgentSecret = crypto.newRandomAgentSecret(), }) {
35
- const throwawayAgent = crypto.newRandomAgentSecret();
36
- const setupNode = new LocalNode(new ControlledAgent(throwawayAgent, crypto), crypto.newRandomSessionID(crypto.getAgentID(throwawayAgent)), crypto);
37
- const account = setupNode.createAccount(initialAgentSecret);
38
- const nodeWithAccount = account.core.node.testWithDifferentAccount(account, crypto.newRandomSessionID(account.id));
39
- const accountOnNodeWithAccount = nodeWithAccount.account;
40
- if (peersToLoadFrom) {
41
- for (const peer of peersToLoadFrom) {
42
- nodeWithAccount.syncManager.addPeer(peer);
43
- }
44
- }
98
+ const account = LocalNode.internalCreateAccount({
99
+ crypto,
100
+ initialAgentSecret,
101
+ peersToLoadFrom,
102
+ });
103
+ const node = account.core.node;
45
104
  if (migration) {
46
- await migration(accountOnNodeWithAccount, nodeWithAccount, creationProps);
105
+ await migration(account, node, creationProps);
47
106
  }
48
107
  else {
49
- const profileGroup = accountOnNodeWithAccount.createGroup();
108
+ const profileGroup = node.createGroup();
50
109
  profileGroup.addMember("everyone", "reader");
51
110
  const profile = profileGroup.createMap({
52
111
  name: creationProps.name,
53
112
  });
54
- accountOnNodeWithAccount.set("profile", profile.id, "trusting");
113
+ account.set("profile", profile.id, "trusting");
55
114
  }
56
- const controlledAccount = new RawControlledAccount(accountOnNodeWithAccount.core, accountOnNodeWithAccount.agentSecret);
57
- nodeWithAccount.account = controlledAccount;
58
- nodeWithAccount.coValuesStore.internalMarkMagicallyAvailable(controlledAccount.id, controlledAccount.core);
59
- controlledAccount.core._cachedContent = undefined;
60
- if (!controlledAccount.get("profile")) {
115
+ if (!account.get("profile")) {
61
116
  throw new Error("Must set account profile in initial migration");
62
117
  }
63
- // we shouldn't need this, but it fixes account data not syncing for new accounts
64
- function syncAllCoValuesAfterCreateAccount() {
65
- for (const coValueEntry of nodeWithAccount.coValuesStore.getValues()) {
66
- if (coValueEntry.isAvailable()) {
67
- void nodeWithAccount.syncManager.requestCoValueSync(coValueEntry.core);
68
- }
69
- }
70
- }
71
- syncAllCoValuesAfterCreateAccount();
72
- setTimeout(syncAllCoValuesAfterCreateAccount, 500);
73
118
  return {
74
- node: nodeWithAccount,
75
- accountID: accountOnNodeWithAccount.id,
76
- accountSecret: accountOnNodeWithAccount.agentSecret,
77
- sessionID: nodeWithAccount.currentSessionID,
119
+ node,
120
+ accountID: account.id,
121
+ accountSecret: initialAgentSecret,
122
+ sessionID: node.currentSessionID,
78
123
  };
79
124
  }
80
125
  /** @category 2. Node Creation */
81
126
  static async withLoadedAccount({ accountID, accountSecret, sessionID, peersToLoadFrom, crypto, migration, }) {
82
127
  try {
83
- const loadingNode = new LocalNode(new ControlledAgent(accountSecret, crypto), crypto.newRandomSessionID(accountID), crypto);
128
+ const node = new LocalNode(accountSecret, sessionID || crypto.newRandomSessionID(accountID), crypto);
84
129
  for (const peer of peersToLoadFrom) {
85
- loadingNode.syncManager.addPeer(peer);
130
+ node.syncManager.addPeer(peer);
86
131
  }
87
- const accountPromise = loadingNode.load(accountID);
88
- const account = await accountPromise;
132
+ const account = await node.load(accountID);
89
133
  if (account === "unavailable") {
90
134
  throw new Error("Account unavailable from all peers");
91
135
  }
92
- const controlledAccount = new RawControlledAccount(account.core, accountSecret);
93
- // since this is all synchronous, we can just swap out nodes for the SyncManager
94
- const node = loadingNode.testWithDifferentAccount(controlledAccount, sessionID || crypto.newRandomSessionID(accountID));
95
- node.syncManager = loadingNode.syncManager;
96
- node.syncManager.local = node;
97
- controlledAccount.core.node = node;
98
- node.coValuesStore.internalMarkMagicallyAvailable(accountID, controlledAccount.core);
99
- controlledAccount.core._cachedContent = undefined;
100
136
  const profileID = account.get("profile");
101
137
  if (!profileID) {
102
138
  throw new Error("Account has no profile");
@@ -106,8 +142,7 @@ export class LocalNode {
106
142
  throw new Error("Profile unavailable from all peers");
107
143
  }
108
144
  if (migration) {
109
- await migration(controlledAccount, node);
110
- node.account = new RawControlledAccount(controlledAccount.core, controlledAccount.agentSecret);
145
+ await migration(account, node);
111
146
  }
112
147
  return node;
113
148
  }
@@ -123,8 +158,8 @@ export class LocalNode {
123
158
  cause: this.crashed,
124
159
  });
125
160
  }
126
- const coValue = new CoValueCore(header, this);
127
- this.coValuesStore.internalMarkMagicallyAvailable(coValue.id, coValue);
161
+ const id = idforHeader(header, this.crypto);
162
+ const coValue = this.putCoValue(id, new VerifiedState(id, this.crypto, header, new Map()));
128
163
  void this.syncManager.requestCoValueSync(coValue);
129
164
  return coValue;
130
165
  }
@@ -137,22 +172,22 @@ export class LocalNode {
137
172
  }
138
173
  let retries = 0;
139
174
  while (true) {
140
- const entry = this.coValuesStore.get(id);
141
- if (entry.highLevelState === "unknown" ||
142
- entry.highLevelState === "unavailable") {
175
+ const coValue = this.getCoValue(id);
176
+ if (coValue.loadingState === "unknown" ||
177
+ coValue.loadingState === "unavailable") {
143
178
  const peers = this.syncManager.getServerAndStoragePeers(skipLoadingFromPeer);
144
179
  if (peers.length === 0) {
145
- return "unavailable";
180
+ return coValue;
146
181
  }
147
- entry.loadFromPeers(peers).catch((e) => {
182
+ coValue.loadFromPeers(peers).catch((e) => {
148
183
  logger.error("Error loading from peers", {
149
184
  id,
150
185
  err: e,
151
186
  });
152
187
  });
153
188
  }
154
- const result = await entry.getCoValue();
155
- if (result !== "unavailable" || retries >= 1) {
189
+ const result = await coValue.waitForAvailableOrUnavailable();
190
+ if (result.isAvailable() || retries >= 1) {
156
191
  return result;
157
192
  }
158
193
  await new Promise((resolve) => setTimeout(resolve, 300));
@@ -174,15 +209,15 @@ export class LocalNode {
174
209
  throw new Error(`Trying to load CoValue with invalid id ${id}`);
175
210
  }
176
211
  const core = await this.loadCoValueCore(id);
177
- if (core === "unavailable") {
212
+ if (!core.isAvailable()) {
178
213
  return "unavailable";
179
214
  }
180
215
  return core.getCurrentContent();
181
216
  }
182
217
  getLoaded(id) {
183
- const entry = this.coValuesStore.get(id);
184
- if (entry.isAvailable()) {
185
- return entry.core.getCurrentContent();
218
+ const coValue = this.getCoValue(id);
219
+ if (coValue.isAvailable()) {
220
+ return coValue.getCurrentContent();
186
221
  }
187
222
  return undefined;
188
223
  }
@@ -212,16 +247,15 @@ export class LocalNode {
212
247
  unsubscribe?.();
213
248
  };
214
249
  }
215
- /** @deprecated Use Account.acceptInvite instead */
216
250
  async acceptInvite(groupOrOwnedValueID, inviteSecret) {
217
251
  const groupOrOwnedValue = await this.load(groupOrOwnedValueID);
218
252
  if (groupOrOwnedValue === "unavailable") {
219
253
  throw new Error("Trying to accept invite: Group/owned value unavailable from all peers");
220
254
  }
221
- if (groupOrOwnedValue.core.header.ruleset.type === "ownedByGroup") {
222
- return this.acceptInvite(groupOrOwnedValue.core.header.ruleset.group, inviteSecret);
255
+ if (groupOrOwnedValue.core.verified.header.ruleset.type === "ownedByGroup") {
256
+ return this.acceptInvite(groupOrOwnedValue.core.verified.header.ruleset.group, inviteSecret);
223
257
  }
224
- else if (groupOrOwnedValue.core.header.ruleset.type !== "group") {
258
+ else if (groupOrOwnedValue.core.verified.header.ruleset.type !== "group") {
225
259
  throw new Error("Can only accept invites to groups");
226
260
  }
227
261
  const group = expectGroup(groupOrOwnedValue);
@@ -239,7 +273,8 @@ export class LocalNode {
239
273
  if (!inviteRole) {
240
274
  throw new Error("No invite found");
241
275
  }
242
- const existingRole = group.get(this.account.id);
276
+ const account = this.getCurrentAgent();
277
+ const existingRole = group.get(account.id);
243
278
  if (existingRole === "admin" ||
244
279
  (existingRole === "writer" && inviteRole === "writerInvite") ||
245
280
  (existingRole === "writer" && inviteRole === "reader") ||
@@ -248,29 +283,25 @@ export class LocalNode {
248
283
  logger.debug("Not accepting invite that would replace or downgrade role");
249
284
  return;
250
285
  }
251
- const groupAsInvite = expectGroup(group.core
252
- .testWithDifferentAccount(new ControlledAgent(inviteAgentSecret, this.crypto), this.crypto.newRandomSessionID(inviteAgentID))
253
- .getCurrentContent());
254
- groupAsInvite.addMemberInternal(this.account, inviteRole === "adminInvite"
286
+ const groupAsInvite = expectGroup(group.core.contentInClonedNodeWithDifferentAccount(new ControlledAgent(inviteAgentSecret, this.crypto)));
287
+ groupAsInvite.addMemberInternal(account, inviteRole === "adminInvite"
255
288
  ? "admin"
256
289
  : inviteRole === "writerInvite"
257
290
  ? "writer"
258
291
  : inviteRole === "writeOnlyInvite"
259
292
  ? "writeOnly"
260
293
  : "reader");
261
- group.core._sessionLogs = groupAsInvite.core.sessionLogs;
262
- group.core._cachedContent = undefined;
263
- for (const groupListener of group.core.listeners) {
264
- groupListener(group.core.getCurrentContent());
265
- }
294
+ group.core.internalShamefullyCloneVerifiedStateFrom(groupAsInvite.core.verified, { forceOverwrite: true });
295
+ group.core.internalShamefullyResetCachedContent();
296
+ group.core.notifyUpdate("immediate");
266
297
  }
267
298
  /** @internal */
268
299
  expectCoValueLoaded(id, expectation) {
269
- const entry = this.coValuesStore.get(id);
270
- if (!entry.isAvailable()) {
271
- throw new Error(`${expectation ? expectation + ": " : ""}CoValue ${id} not yet loaded. Current state: ${JSON.stringify(entry)}`);
300
+ const coValue = this.getCoValue(id);
301
+ if (!coValue.isAvailable()) {
302
+ throw new Error(`${expectation ? expectation + ": " : ""}CoValue ${id} not yet loaded. Current state: ${JSON.stringify(coValue)}`);
272
303
  }
273
- return entry.core;
304
+ return coValue;
274
305
  }
275
306
  /** @internal */
276
307
  expectProfileLoaded(id, expectation) {
@@ -282,30 +313,6 @@ export class LocalNode {
282
313
  return this.expectCoValueLoaded(profileID, expectation).getCurrentContent();
283
314
  }
284
315
  /** @internal */
285
- createAccount(agentSecret = this.crypto.newRandomAgentSecret()) {
286
- const accountAgentID = this.crypto.getAgentID(agentSecret);
287
- const account = expectGroup(this.createCoValue(accountHeaderForInitialAgentSecret(agentSecret, this.crypto))
288
- .testWithDifferentAccount(new ControlledAgent(agentSecret, this.crypto), this.crypto.newRandomSessionID(accountAgentID))
289
- .getCurrentContent());
290
- account.set(accountAgentID, "admin", "trusting");
291
- const readKey = this.crypto.newRandomKeySecret();
292
- const sealed = this.crypto.seal({
293
- message: readKey.secret,
294
- from: this.crypto.getAgentSealerSecret(agentSecret),
295
- to: this.crypto.getAgentSealerID(accountAgentID),
296
- nOnceMaterial: {
297
- in: account.id,
298
- tx: account.core.nextTransactionID(),
299
- },
300
- });
301
- account.set(`${readKey.id}_for_${accountAgentID}`, sealed, "trusting");
302
- account.set("readKey", readKey.id, "trusting");
303
- const accountOnThisNode = this.expectCoValueLoaded(account.id);
304
- accountOnThisNode._sessionLogs = new Map(account.core.sessionLogs);
305
- accountOnThisNode._cachedContent = undefined;
306
- return new RawControlledAccount(accountOnThisNode, agentSecret);
307
- }
308
- /** @internal */
309
316
  resolveAccountAgent(id, expectation) {
310
317
  if (isAgentID(id)) {
311
318
  return ok(id);
@@ -322,11 +329,11 @@ export class LocalNode {
322
329
  error: e,
323
330
  });
324
331
  }
325
- if (coValue.header.type !== "comap" ||
326
- coValue.header.ruleset.type !== "group" ||
327
- !coValue.header.meta ||
328
- !("type" in coValue.header.meta) ||
329
- coValue.header.meta.type !== "account") {
332
+ if (coValue.verified.header.type !== "comap" ||
333
+ coValue.verified.header.ruleset.type !== "group" ||
334
+ !coValue.verified.header.meta ||
335
+ !("type" in coValue.verified.header.meta) ||
336
+ coValue.verified.header.meta.type !== "account") {
330
337
  return err({
331
338
  type: "UnexpectedlyNotAccount",
332
339
  expectation,
@@ -335,54 +342,21 @@ export class LocalNode {
335
342
  }
336
343
  return ok(coValue.getCurrentContent().currentAgentID());
337
344
  }
338
- resolveAccountAgentAsync(id, expectation) {
339
- if (isAgentID(id)) {
340
- return okAsync(id);
341
- }
342
- return ResultAsync.fromPromise(this.loadCoValueCore(id), (e) => ({
343
- type: "ErrorLoadingCoValueCore",
344
- expectation,
345
- id,
346
- error: e,
347
- })).andThen((coValue) => {
348
- if (coValue === "unavailable") {
349
- return err({
350
- type: "AccountUnavailableFromAllPeers",
351
- expectation,
352
- id,
353
- });
354
- }
355
- if (coValue.header.type !== "comap" ||
356
- coValue.header.ruleset.type !== "group" ||
357
- !coValue.header.meta ||
358
- !("type" in coValue.header.meta) ||
359
- coValue.header.meta.type !== "account") {
360
- return err({
361
- type: "UnexpectedlyNotAccount",
362
- expectation,
363
- id,
364
- });
365
- }
366
- return ok(coValue.getCurrentContent().currentAgentID());
367
- });
368
- }
369
- /**
370
- * @deprecated use Account.createGroup() instead
371
- */
372
345
  createGroup(uniqueness = this.crypto.createdNowUnique()) {
346
+ const account = this.getCurrentAgent();
373
347
  const groupCoValue = this.createCoValue({
374
348
  type: "comap",
375
- ruleset: { type: "group", initialAdmin: this.account.id },
349
+ ruleset: { type: "group", initialAdmin: account.id },
376
350
  meta: null,
377
351
  ...uniqueness,
378
352
  });
379
353
  const group = expectGroup(groupCoValue.getCurrentContent());
380
- group.set(this.account.id, "admin", "trusting");
354
+ group.set(account.id, "admin", "trusting");
381
355
  const readKey = this.crypto.newRandomKeySecret();
382
- group.set(`${readKey.id}_for_${this.account.id}`, this.crypto.seal({
356
+ group.set(`${readKey.id}_for_${account.id}`, this.crypto.seal({
383
357
  message: readKey.secret,
384
- from: this.account.currentSealerSecret(),
385
- to: this.account.currentSealerID(),
358
+ from: account.currentSealerSecret(),
359
+ to: account.currentSealerID(),
386
360
  nOnceMaterial: {
387
361
  in: groupCoValue.id,
388
362
  tx: groupCoValue.nextTransactionID(),
@@ -392,38 +366,33 @@ export class LocalNode {
392
366
  return group;
393
367
  }
394
368
  /** @internal */
395
- testWithDifferentAccount(account, currentSessionID) {
396
- const newNode = new LocalNode(account, currentSessionID, this.crypto);
397
- const coValuesToCopy = Array.from(this.coValuesStore.getEntries());
369
+ cloneWithDifferentAccount(controlledAccountOrAgent) {
370
+ const newNode = new LocalNode(controlledAccountOrAgent.agentSecret, this.crypto.newRandomSessionID(controlledAccountOrAgent.id), this.crypto);
371
+ newNode.cloneVerifiedStateFrom(this);
372
+ return newNode;
373
+ }
374
+ /** @internal */
375
+ cloneVerifiedStateFrom(otherNode) {
376
+ const coValuesToCopy = Array.from(otherNode.coValues.entries());
398
377
  while (coValuesToCopy.length > 0) {
399
- const [coValueID, entry] = coValuesToCopy[coValuesToCopy.length - 1];
400
- if (!entry.isAvailable()) {
378
+ const [coValueID, coValue] = coValuesToCopy[coValuesToCopy.length - 1];
379
+ if (!coValue.isAvailable()) {
401
380
  coValuesToCopy.pop();
402
381
  continue;
403
382
  }
404
383
  else {
405
- const allDepsCopied = entry.core
384
+ const allDepsCopied = coValue
406
385
  .getDependedOnCoValues()
407
- .every((dep) => newNode.coValuesStore.get(dep).isAvailable());
386
+ .every((dep) => this.coValues.get(dep)?.isAvailable());
408
387
  if (!allDepsCopied) {
409
388
  // move to end of queue
410
389
  coValuesToCopy.unshift(coValuesToCopy.pop());
411
390
  continue;
412
391
  }
413
- const newCoValue = new CoValueCore(entry.core.header, newNode, new Map(entry.core.sessionLogs));
414
- newNode.coValuesStore.internalMarkMagicallyAvailable(coValueID, newCoValue);
392
+ this.putCoValue(coValueID, coValue.verified);
415
393
  coValuesToCopy.pop();
416
394
  }
417
395
  }
418
- if (account instanceof RawControlledAccount) {
419
- // To make sure that when we edit the account, we're modifying the correct sessions
420
- const accountInNode = new RawControlledAccount(newNode.expectCoValueLoaded(account.id), account.agentSecret);
421
- if (accountInNode.core.node !== newNode) {
422
- throw new Error("Account's node is not the new node");
423
- }
424
- newNode.account = accountInNode;
425
- }
426
- return newNode;
427
396
  }
428
397
  gracefulShutdown() {
429
398
  this.syncManager.gracefulShutdown();
@@ -1 +1 @@
1
- {"version":3,"file":"localNode.js","sourceRoot":"","sources":["../src/localNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localNode.js","sourceRoot":"","sources":["../src/localNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,GAAG,EAAE,EAAE,EAAW,MAAM,YAAY,CAAC;AAGnE,OAAO,EAEL,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAGL,aAAa,GACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,iBAAiB,EAEjB,eAAe,EAOf,kCAAkC,EAClC,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAA+B,SAAS,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAgB,WAAW,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD;;;;;;;;;;EAUE;AACF,MAAM,OAAO,SAAS;IAepB,6BAA6B;IAC7B,YACE,WAAwB,EACxB,gBAA2B,EAC3B,MAAsB;QAhBxB,gBAAgB;QACC,aAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;QAM5D,6BAA6B;QAC7B,gBAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAEpC,YAAO,GAAsB,SAAS,CAAC;QAQrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,EAAW;QACpB,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAEO,UAAU,CAChB,EAAW,EACX,QAAuB,EACvB,EAAE,cAAc,GAAG,KAAK,KAAmC,EAAE;QAE7D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClC,KAAK,CAAC,8BAA8B,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QACnE,OAAO,KAA6B,CAAC;IACvC,CAAC;IAED,qBAAqB,CAAC,EAAW;QAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,eAAe;QACb,MAAM,cAAc,GAAG,6BAA6B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5E,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,iBAAiB,CAC1B,aAAa,CACX,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,iBAAiB,EAAE,CAC7D,EACD,IAAI,CAAC,WAAW,CACjB,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,MAAc;QACnC,MAAM,cAAc,GAAG,6BAA6B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5E,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,wDAAwD,GAAG,MAAM,CAClE,CAAC;QACJ,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,oBAAoB,CAAC,MAAc;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACtD,OAAO,aAAa,CAClB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,iBAAiB,EAAE,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,IAI5B;QACC,MAAM,EACJ,MAAM,EACN,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAClD,eAAe,GAAG,EAAE,GACrB,GAAG,IAAI,CAAC;QACT,MAAM,aAAa,GAAG,kCAAkC,CACtD,kBAAkB,EAClB,MAAM,CACP,CAAC;QACF,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAErD,MAAM,IAAI,GAAG,IAAI,SAAS,CACxB,kBAAkB,EAClB,MAAM,CAAC,kBAAkB,CAAC,SAAyB,CAAC,EACpD,MAAM,CACP,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAG,WAAW,CAC5B,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,iBAAiB,EAAE,CACtD,CAAC;QAEF,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YACzB,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,IAAI,EAAE,MAAM,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;YACrD,EAAE,EAAE,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC;YAC3C,aAAa,EAAE;gBACb,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE;aACxC;SACF,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAE1E,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,EACnC,aAAa,EACb,eAAe,EACf,SAAS,EACT,MAAM,EACN,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAOnD;QAMC,MAAM,OAAO,GAAG,SAAS,CAAC,qBAAqB,CAAC;YAC9C,MAAM;YACN,kBAAkB;YAClB,eAAe;SAChB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAE/B,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAU;gBAC9C,IAAI,EAAE,aAAa,CAAC,IAAI;aACzB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,OAAO;YACL,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,aAAa,EAAE,kBAAkB;YACjC,SAAS,EAAE,IAAI,CAAC,gBAAgB;SACjC,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAC7B,SAAS,EACT,aAAa,EACb,SAAS,EACT,eAAe,EACf,MAAM,EACN,SAAS,GAQV;QACC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,SAAS,CACxB,aAAa,EACb,SAAS,IAAI,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,EACjD,MAAM,CACP,CAAC;YAEF,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE3C,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE3C,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,aAAa,CAAC,MAAqB;QACjC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,iDAAiD,EAAE;gBACjE,KAAK,EAAE,IAAI,CAAC,OAAO;aACpB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAC7B,EAAE,EACF,IAAI,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CACtD,CAAC;QAEF,KAAK,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAElD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,eAAe,CACnB,EAAW,EACX,mBAA4B;QAE5B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+CAA+C,EAAE;gBAC/D,KAAK,EAAE,IAAI,CAAC,OAAO;aACpB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAEpC,IACE,OAAO,CAAC,YAAY,KAAK,SAAS;gBAClC,OAAO,CAAC,YAAY,KAAK,aAAa,EACtC,CAAC;gBACD,MAAM,KAAK,GACT,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;gBAEjE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAED,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACvC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;wBACvC,EAAE;wBACF,GAAG,EAAE,CAAC;qBACP,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,6BAA6B,EAAE,CAAC;YAC7D,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACzC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEzD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAuB,EAAW;QAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,EAAO,CAAC;IACvC,CAAC;IAED,SAAS,CAAuB,EAAW;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEpC,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,iBAAiB,EAAO,CAAC;QAC1C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6BAA6B;IAC7B,SAAS,CACP,EAAW,EACX,QAA6C;QAE7C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,WAAwB,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aACV,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YACD,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;gBAC9B,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;gBACjC,EAAE;gBACF,GAAG,EAAE,CAAC;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,OAAO,GAAG,IAAI,CAAC;YACf,WAAW,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,mBAA4B,EAC5B,YAA0B;QAE1B,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE/D,IAAI,iBAAiB,KAAK,aAAa,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;QACJ,CAAC;QAED,IACE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,cAAc,EACtE,CAAC;YACD,OAAO,IAAI,CAAC,YAAY,CACtB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAuB,EACtE,YAAY,CACb,CAAC;QACJ,CAAC;aAAM,IACL,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAC/D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAC7D,0BAA0B,CAAC,YAAY,CAAC,CACzC,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAEhE,MAAM,UAAU,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC5C,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,UAAU,CACR,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,EAC9D,IAAI,CACL,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE3C,IACE,YAAY,KAAK,OAAO;YACxB,CAAC,YAAY,KAAK,QAAQ,IAAI,UAAU,KAAK,cAAc,CAAC;YAC5D,CAAC,YAAY,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,CAAC;YACtD,CAAC,YAAY,KAAK,QAAQ,IAAI,UAAU,KAAK,cAAc,CAAC;YAC5D,CAAC,YAAY,IAAI,UAAU,KAAK,iBAAiB,CAAC,EAClD,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAChD,IAAI,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CACpD,CACF,CAAC;QAEF,aAAa,CAAC,iBAAiB,CAC7B,OAAO,EACP,UAAU,KAAK,aAAa;YAC1B,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,UAAU,KAAK,cAAc;gBAC7B,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,UAAU,KAAK,iBAAiB;oBAChC,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,QAAQ,CACjB,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,wCAAwC,CACjD,aAAa,CAAC,IAAI,CAAC,QAAQ,EAC3B,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC;QAElD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,gBAAgB;IAChB,mBAAmB,CAAC,EAAW,EAAE,WAAoB;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,mCAAmC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAClH,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gBAAgB;IAChB,mBAAmB,CAAC,EAAgB,EAAE,WAAoB;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,mBAAmB,CAC7B,SAAS,EACT,WAAW,CACZ,CAAC,iBAAiB,EAAgB,CAAC;IACtC,CAAC;IAED,gBAAgB;IAChB,mBAAmB,CACjB,EAA0B,EAC1B,WAAoB;QAEpB,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;QAED,IAAI,OAA6B,CAAC;QAElC,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,yBAAyB;gBAC/B,WAAW;gBACX,EAAE;gBACF,KAAK,EAAE,CAAC;aACsB,CAAC,CAAC;QACpC,CAAC;QAED,IACE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;YACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;YAChD,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;YAC7B,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAC/C,CAAC;YACD,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,wBAAwB;gBAC9B,WAAW;gBACX,EAAE;aACmC,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,EAAE,CAAE,OAAO,CAAC,iBAAiB,EAAiB,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CACT,aAAgC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;QAE9D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,EAAE;YACpD,IAAI,EAAE,IAAI;YACV,GAAG,UAAU;SACd,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAE5D,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAEjD,KAAK,CAAC,GAAG,CACP,GAAG,OAAO,CAAC,EAAE,QAAQ,OAAO,CAAC,EAAE,EAAE,EACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,IAAI,EAAE,OAAO,CAAC,mBAAmB,EAAE;YACnC,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE;YAC7B,aAAa,EAAE;gBACb,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,EAAE,EAAE,YAAY,CAAC,iBAAiB,EAAE;aACrC;SACF,CAAC,EACF,UAAU,CACX,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAE7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,yBAAyB,CACvB,wBAAkD;QAElD,MAAM,OAAO,GAAG,IAAI,SAAS,CAC3B,wBAAwB,CAAC,WAAW,EACpC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,EAAE,CAAC,EAC3D,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAErC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gBAAgB;IAChB,sBAAsB,CAAC,SAAoB;QACzC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhE,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YAExE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC3B,cAAc,CAAC,GAAG,EAAE,CAAC;gBACrB,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,aAAa,GAAG,OAAO;qBAC1B,qBAAqB,EAAE;qBACvB,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;gBAEzD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,uBAAuB;oBACvB,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,EAAG,CAAC,CAAC;oBAC9C,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAE7C,cAAc,CAAC,GAAG,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;IACtC,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
- import { CoValueCore, Transaction } from "./coValueCore.js";
1
+ import { CoValueCore } from "./coValueCore/coValueCore.js";
2
+ import { Transaction } from "./coValueCore/verifiedState.js";
2
3
  import { RawAccountID } from "./coValues/account.js";
3
4
  import { KeyID } from "./crypto/crypto.js";
4
5
  import { AgentID, RawCoID, TransactionID } from "./ids.js";
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAc,YAAY,EAAc,MAAM,uBAAuB,CAAC;AAS7E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,OAAO,EAEP,OAAO,EAEP,aAAa,EAEd,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAI9C,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAEtE,MAAM,MAAM,IAAI,GACZ,WAAW,GACX,SAAS,GACT,aAAa,GACb,cAAc,GACd,cAAc,GACd,iBAAiB,CAAC;AAOtB,wBAAgB,uBAAuB,SAEtC;AAaD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAChD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,WAAW,CAAA;CAAE,EAAE,CAiF5C;AAqWD,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,GACT,EAAE,IAAI,eAAe,YAAY,GAAG,OAAO,EAAE,CAE/C;AAED,wBAAgB,sCAAsC,CACpD,EAAE,EAAE,eAAe,YAAY,GAAG,OAAO,EAAE,GAC1C,YAAY,GAAG,OAAO,CAExB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,GAAG,KAAK,QAAQ,KAAK,EAAE,CAE1E;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,GACT,EAAE,IAAI,GAAG,KAAK,QAAQ,YAAY,GAAG,OAAO,EAAE,CAMhD"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAc,YAAY,EAAc,MAAM,uBAAuB,CAAC;AAS7E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,OAAO,EAEP,OAAO,EAEP,aAAa,EAEd,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAI9C,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAEtE,MAAM,MAAM,IAAI,GACZ,WAAW,GACX,SAAS,GACT,aAAa,GACb,cAAc,GACd,cAAc,GACd,iBAAiB,CAAC;AAOtB,wBAAgB,uBAAuB,SAEtC;AAaD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAChD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,WAAW,CAAA;CAAE,EAAE,CAqF5C;AAsWD,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,GACT,EAAE,IAAI,eAAe,YAAY,GAAG,OAAO,EAAE,CAE/C;AAED,wBAAgB,sCAAsC,CACpD,EAAE,EAAE,eAAe,YAAY,GAAG,OAAO,EAAE,GAC1C,YAAY,GAAG,OAAO,CAExB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,GAAG,KAAK,QAAQ,KAAK,EAAE,CAE1E;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,GACT,EAAE,IAAI,GAAG,KAAK,QAAQ,YAAY,GAAG,OAAO,EAAE,CAMhD"}
@@ -16,23 +16,26 @@ function logPermissionError(message, attributes) {
16
16
  logger.debug("Permission error: " + message, attributes);
17
17
  }
18
18
  export function determineValidTransactions(coValue, knownTransactions) {
19
- if (coValue.header.ruleset.type === "group") {
20
- const initialAdmin = coValue.header.ruleset.initialAdmin;
19
+ if (!coValue.isAvailable()) {
20
+ throw new Error("determineValidTransactions CoValue is not available");
21
+ }
22
+ if (coValue.verified.header.ruleset.type === "group") {
23
+ const initialAdmin = coValue.verified.header.ruleset.initialAdmin;
21
24
  if (!initialAdmin) {
22
25
  throw new Error("Group must have initialAdmin");
23
26
  }
24
27
  return determineValidTransactionsForGroup(coValue, initialAdmin)
25
28
  .validTransactions;
26
29
  }
27
- else if (coValue.header.ruleset.type === "ownedByGroup") {
30
+ else if (coValue.verified.header.ruleset.type === "ownedByGroup") {
28
31
  const groupContent = expectGroup(coValue.node
29
- .expectCoValueLoaded(coValue.header.ruleset.group, "Determining valid transaction in owned object but its group wasn't loaded")
32
+ .expectCoValueLoaded(coValue.verified.header.ruleset.group, "Determining valid transaction in owned object but its group wasn't loaded")
30
33
  .getCurrentContent());
31
34
  if (groupContent.type !== "comap") {
32
35
  throw new Error("Group must be a map");
33
36
  }
34
37
  const validTransactions = [];
35
- for (const [sessionID, sessionLog] of coValue.sessionLogs.entries()) {
38
+ for (const [sessionID, sessionLog] of coValue.verified.sessions.entries()) {
36
39
  const transactor = accountOrAgentIDfromSessionID(sessionID);
37
40
  const knownTransactionsForSession = knownTransactions?.[sessionID] ?? -1;
38
41
  sessionLog.transactions.forEach((tx, txIndex) => {
@@ -55,9 +58,9 @@ export function determineValidTransactions(coValue, knownTransactions) {
55
58
  }
56
59
  return validTransactions;
57
60
  }
58
- else if (coValue.header.ruleset.type === "unsafeAllowAll") {
61
+ else if (coValue.verified.header.ruleset.type === "unsafeAllowAll") {
59
62
  const validTransactions = [];
60
- for (const [sessionID, sessionLog] of coValue.sessionLogs.entries()) {
63
+ for (const [sessionID, sessionLog] of coValue.verified.sessions.entries()) {
61
64
  const knownTransactionsForSession = knownTransactions?.[sessionID] ?? -1;
62
65
  sessionLog.transactions.forEach((tx, txIndex) => {
63
66
  if (knownTransactionsForSession >= txIndex) {
@@ -70,7 +73,7 @@ export function determineValidTransactions(coValue, knownTransactions) {
70
73
  }
71
74
  else {
72
75
  throw new Error("Unknown ruleset type " +
73
- coValue.header.ruleset.type);
76
+ coValue.verified.header.ruleset.type);
74
77
  }
75
78
  }
76
79
  function isHigherRole(a, b) {
@@ -86,14 +89,14 @@ function isHigherRole(a, b) {
86
89
  }
87
90
  function resolveMemberStateFromParentReference(coValue, memberState, parentReference, roleMapping, extendChain) {
88
91
  const parentGroup = coValue.node.expectCoValueLoaded(getParentGroupId(parentReference), "Expected parent group to be loaded");
89
- if (parentGroup.header.ruleset.type !== "group") {
92
+ if (parentGroup.verified.header.ruleset.type !== "group") {
90
93
  return;
91
94
  }
92
95
  // Skip circular references
93
96
  if (extendChain.has(parentGroup.id)) {
94
97
  return;
95
98
  }
96
- const initialAdmin = parentGroup.header.ruleset.initialAdmin;
99
+ const initialAdmin = parentGroup.verified.header.ruleset.initialAdmin;
97
100
  if (!initialAdmin) {
98
101
  throw new Error("Group must have initialAdmin");
99
102
  }
@@ -114,7 +117,8 @@ function resolveMemberStateFromParentReference(coValue, memberState, parentRefer
114
117
  }
115
118
  function determineValidTransactionsForGroup(coValue, initialAdmin, extendChain) {
116
119
  const allTransactionsSorted = [];
117
- for (const [sessionID, sessionLog] of coValue.sessionLogs.entries()) {
120
+ for (const [sessionID, sessionLog] of coValue.verified?.sessions.entries() ??
121
+ []) {
118
122
  sessionLog.transactions.forEach((tx, txIndex) => {
119
123
  allTransactionsSorted.push({ sessionID, txIndex, tx });
120
124
  });