cojson 0.10.0 → 0.10.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.
Files changed (212) hide show
  1. package/.turbo/turbo-build.log +2 -10
  2. package/CHANGELOG.md +13 -0
  3. package/dist/CoValuesStore.js.map +1 -0
  4. package/dist/PeerKnownStates.js.map +1 -0
  5. package/dist/PeerState.js.map +1 -0
  6. package/dist/PriorityBasedMessageQueue.js.map +1 -0
  7. package/dist/SyncStateManager.js.map +1 -0
  8. package/dist/base64url.js.map +1 -0
  9. package/dist/base64url.test.js.map +1 -0
  10. package/dist/coValue.js.map +1 -0
  11. package/dist/coValueCore.js.map +1 -0
  12. package/dist/{native/coValueState.js → coValueState.js} +1 -0
  13. package/dist/coValueState.js.map +1 -0
  14. package/dist/coValues/account.js.map +1 -0
  15. package/dist/coValues/coList.js.map +1 -0
  16. package/dist/coValues/coMap.js.map +1 -0
  17. package/dist/coValues/coPlainText.js.map +1 -0
  18. package/dist/coValues/coStream.js.map +1 -0
  19. package/dist/coValues/group.js.map +1 -0
  20. package/dist/coreToCoValue.js.map +1 -0
  21. package/dist/crypto/PureJSCrypto.js.map +1 -0
  22. package/dist/crypto/WasmCrypto.js.map +1 -0
  23. package/dist/crypto/crypto.js.map +1 -0
  24. package/dist/exports.js.map +1 -0
  25. package/dist/ids.js.map +1 -0
  26. package/dist/index.js +2 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/jsonStringify.js.map +1 -0
  29. package/dist/{native/jsonValue.js.map → jsonValue.js.map} +1 -1
  30. package/dist/localNode.js.map +1 -0
  31. package/dist/logger.js.map +1 -0
  32. package/dist/media.js.map +1 -0
  33. package/dist/permissions.js.map +1 -0
  34. package/dist/priority.js.map +1 -0
  35. package/dist/storage/FileSystem.js.map +1 -0
  36. package/dist/storage/chunksAndKnownStates.js.map +1 -0
  37. package/dist/storage/index.js.map +1 -0
  38. package/dist/streamUtils.js.map +1 -0
  39. package/dist/{web/sync.js → sync.js} +5 -1
  40. package/dist/sync.js.map +1 -0
  41. package/dist/typeUtils/accountOrAgentIDfromSessionID.js.map +1 -0
  42. package/dist/typeUtils/expectGroup.js.map +1 -0
  43. package/dist/typeUtils/isAccountID.js.map +1 -0
  44. package/dist/typeUtils/isCoValue.js.map +1 -0
  45. package/package.json +19 -21
  46. package/src/coValueState.ts +1 -0
  47. package/src/exports.ts +1 -0
  48. package/src/index.ts +1 -0
  49. package/src/sync.ts +5 -1
  50. package/tsconfig.json +3 -1
  51. package/dist/native/CoValuesStore.js.map +0 -1
  52. package/dist/native/PeerKnownStates.js.map +0 -1
  53. package/dist/native/PeerState.js.map +0 -1
  54. package/dist/native/PriorityBasedMessageQueue.js.map +0 -1
  55. package/dist/native/SyncStateManager.js.map +0 -1
  56. package/dist/native/base64url.js.map +0 -1
  57. package/dist/native/base64url.test.js.map +0 -1
  58. package/dist/native/coValue.js.map +0 -1
  59. package/dist/native/coValueCore.js.map +0 -1
  60. package/dist/native/coValueState.js.map +0 -1
  61. package/dist/native/coValues/account.js.map +0 -1
  62. package/dist/native/coValues/coList.js.map +0 -1
  63. package/dist/native/coValues/coMap.js.map +0 -1
  64. package/dist/native/coValues/coPlainText.js.map +0 -1
  65. package/dist/native/coValues/coStream.js.map +0 -1
  66. package/dist/native/coValues/group.js.map +0 -1
  67. package/dist/native/coreToCoValue.js.map +0 -1
  68. package/dist/native/crypto/PureJSCrypto.js.map +0 -1
  69. package/dist/native/crypto/WasmCrypto.js.map +0 -1
  70. package/dist/native/crypto/crypto.js.map +0 -1
  71. package/dist/native/crypto/export.js +0 -3
  72. package/dist/native/crypto/export.js.map +0 -1
  73. package/dist/native/exports.js.map +0 -1
  74. package/dist/native/ids.js.map +0 -1
  75. package/dist/native/index.native.js +0 -3
  76. package/dist/native/index.native.js.map +0 -1
  77. package/dist/native/jsonStringify.js.map +0 -1
  78. package/dist/native/localNode.js.map +0 -1
  79. package/dist/native/logger.js.map +0 -1
  80. package/dist/native/media.js.map +0 -1
  81. package/dist/native/permissions.js.map +0 -1
  82. package/dist/native/priority.js.map +0 -1
  83. package/dist/native/storage/FileSystem.js.map +0 -1
  84. package/dist/native/storage/chunksAndKnownStates.js.map +0 -1
  85. package/dist/native/storage/index.js.map +0 -1
  86. package/dist/native/streamUtils.js.map +0 -1
  87. package/dist/native/sync.js +0 -555
  88. package/dist/native/sync.js.map +0 -1
  89. package/dist/native/typeUtils/accountOrAgentIDfromSessionID.js.map +0 -1
  90. package/dist/native/typeUtils/expectGroup.js.map +0 -1
  91. package/dist/native/typeUtils/isAccountID.js.map +0 -1
  92. package/dist/native/typeUtils/isCoValue.js.map +0 -1
  93. package/dist/web/CoValuesStore.js +0 -31
  94. package/dist/web/CoValuesStore.js.map +0 -1
  95. package/dist/web/PeerKnownStates.js +0 -68
  96. package/dist/web/PeerKnownStates.js.map +0 -1
  97. package/dist/web/PeerState.js +0 -103
  98. package/dist/web/PeerState.js.map +0 -1
  99. package/dist/web/PriorityBasedMessageQueue.js +0 -98
  100. package/dist/web/PriorityBasedMessageQueue.js.map +0 -1
  101. package/dist/web/SyncStateManager.js +0 -94
  102. package/dist/web/SyncStateManager.js.map +0 -1
  103. package/dist/web/base64url.js +0 -53
  104. package/dist/web/base64url.js.map +0 -1
  105. package/dist/web/base64url.test.js +0 -25
  106. package/dist/web/base64url.test.js.map +0 -1
  107. package/dist/web/coValue.js +0 -52
  108. package/dist/web/coValue.js.map +0 -1
  109. package/dist/web/coValueCore.js +0 -597
  110. package/dist/web/coValueCore.js.map +0 -1
  111. package/dist/web/coValueState.js +0 -267
  112. package/dist/web/coValueState.js.map +0 -1
  113. package/dist/web/coValues/account.js +0 -100
  114. package/dist/web/coValues/account.js.map +0 -1
  115. package/dist/web/coValues/coList.js +0 -381
  116. package/dist/web/coValues/coList.js.map +0 -1
  117. package/dist/web/coValues/coMap.js +0 -273
  118. package/dist/web/coValues/coMap.js.map +0 -1
  119. package/dist/web/coValues/coPlainText.js +0 -86
  120. package/dist/web/coValues/coPlainText.js.map +0 -1
  121. package/dist/web/coValues/coStream.js +0 -224
  122. package/dist/web/coValues/coStream.js.map +0 -1
  123. package/dist/web/coValues/group.js +0 -522
  124. package/dist/web/coValues/group.js.map +0 -1
  125. package/dist/web/coreToCoValue.js +0 -46
  126. package/dist/web/coreToCoValue.js.map +0 -1
  127. package/dist/web/crypto/PureJSCrypto.js +0 -94
  128. package/dist/web/crypto/PureJSCrypto.js.map +0 -1
  129. package/dist/web/crypto/WasmCrypto.js +0 -115
  130. package/dist/web/crypto/WasmCrypto.js.map +0 -1
  131. package/dist/web/crypto/crypto.js +0 -152
  132. package/dist/web/crypto/crypto.js.map +0 -1
  133. package/dist/web/crypto/export.js +0 -3
  134. package/dist/web/crypto/export.js.map +0 -1
  135. package/dist/web/exports.js +0 -48
  136. package/dist/web/exports.js.map +0 -1
  137. package/dist/web/ids.js +0 -50
  138. package/dist/web/ids.js.map +0 -1
  139. package/dist/web/index.web.js +0 -3
  140. package/dist/web/index.web.js.map +0 -1
  141. package/dist/web/jsonStringify.js +0 -57
  142. package/dist/web/jsonStringify.js.map +0 -1
  143. package/dist/web/jsonValue.js +0 -2
  144. package/dist/web/jsonValue.js.map +0 -1
  145. package/dist/web/localNode.js +0 -412
  146. package/dist/web/localNode.js.map +0 -1
  147. package/dist/web/logger.js +0 -58
  148. package/dist/web/logger.js.map +0 -1
  149. package/dist/web/media.js +0 -2
  150. package/dist/web/media.js.map +0 -1
  151. package/dist/web/permissions.js +0 -341
  152. package/dist/web/permissions.js.map +0 -1
  153. package/dist/web/priority.js +0 -31
  154. package/dist/web/priority.js.map +0 -1
  155. package/dist/web/storage/FileSystem.js +0 -48
  156. package/dist/web/storage/FileSystem.js.map +0 -1
  157. package/dist/web/storage/chunksAndKnownStates.js +0 -98
  158. package/dist/web/storage/chunksAndKnownStates.js.map +0 -1
  159. package/dist/web/storage/index.js +0 -336
  160. package/dist/web/storage/index.js.map +0 -1
  161. package/dist/web/streamUtils.js +0 -41
  162. package/dist/web/streamUtils.js.map +0 -1
  163. package/dist/web/sync.js.map +0 -1
  164. package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js +0 -5
  165. package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js.map +0 -1
  166. package/dist/web/typeUtils/expectGroup.js +0 -13
  167. package/dist/web/typeUtils/expectGroup.js.map +0 -1
  168. package/dist/web/typeUtils/isAccountID.js +0 -4
  169. package/dist/web/typeUtils/isAccountID.js.map +0 -1
  170. package/dist/web/typeUtils/isCoValue.js +0 -11
  171. package/dist/web/typeUtils/isCoValue.js.map +0 -1
  172. package/src/crypto/export.ts +0 -2
  173. package/src/index.native.ts +0 -2
  174. package/src/index.web.ts +0 -2
  175. package/tsconfig.native.json +0 -10
  176. package/tsconfig.web.json +0 -5
  177. /package/dist/{native/CoValuesStore.js → CoValuesStore.js} +0 -0
  178. /package/dist/{native/PeerKnownStates.js → PeerKnownStates.js} +0 -0
  179. /package/dist/{native/PeerState.js → PeerState.js} +0 -0
  180. /package/dist/{native/PriorityBasedMessageQueue.js → PriorityBasedMessageQueue.js} +0 -0
  181. /package/dist/{native/SyncStateManager.js → SyncStateManager.js} +0 -0
  182. /package/dist/{native/base64url.js → base64url.js} +0 -0
  183. /package/dist/{native/base64url.test.js → base64url.test.js} +0 -0
  184. /package/dist/{native/coValue.js → coValue.js} +0 -0
  185. /package/dist/{native/coValueCore.js → coValueCore.js} +0 -0
  186. /package/dist/{native/coValues → coValues}/account.js +0 -0
  187. /package/dist/{native/coValues → coValues}/coList.js +0 -0
  188. /package/dist/{native/coValues → coValues}/coMap.js +0 -0
  189. /package/dist/{native/coValues → coValues}/coPlainText.js +0 -0
  190. /package/dist/{native/coValues → coValues}/coStream.js +0 -0
  191. /package/dist/{native/coValues → coValues}/group.js +0 -0
  192. /package/dist/{native/coreToCoValue.js → coreToCoValue.js} +0 -0
  193. /package/dist/{native/crypto → crypto}/PureJSCrypto.js +0 -0
  194. /package/dist/{native/crypto → crypto}/WasmCrypto.js +0 -0
  195. /package/dist/{native/crypto → crypto}/crypto.js +0 -0
  196. /package/dist/{native/exports.js → exports.js} +0 -0
  197. /package/dist/{native/ids.js → ids.js} +0 -0
  198. /package/dist/{native/jsonStringify.js → jsonStringify.js} +0 -0
  199. /package/dist/{native/jsonValue.js → jsonValue.js} +0 -0
  200. /package/dist/{native/localNode.js → localNode.js} +0 -0
  201. /package/dist/{native/logger.js → logger.js} +0 -0
  202. /package/dist/{native/media.js → media.js} +0 -0
  203. /package/dist/{native/permissions.js → permissions.js} +0 -0
  204. /package/dist/{native/priority.js → priority.js} +0 -0
  205. /package/dist/{native/storage → storage}/FileSystem.js +0 -0
  206. /package/dist/{native/storage → storage}/chunksAndKnownStates.js +0 -0
  207. /package/dist/{native/storage → storage}/index.js +0 -0
  208. /package/dist/{native/streamUtils.js → streamUtils.js} +0 -0
  209. /package/dist/{native/typeUtils → typeUtils}/accountOrAgentIDfromSessionID.js +0 -0
  210. /package/dist/{native/typeUtils → typeUtils}/expectGroup.js +0 -0
  211. /package/dist/{native/typeUtils → typeUtils}/isAccountID.js +0 -0
  212. /package/dist/{native/typeUtils → typeUtils}/isCoValue.js +0 -0
@@ -1,267 +0,0 @@
1
- import { logger } from "./logger.js";
2
- export const CO_VALUE_LOADING_CONFIG = {
3
- MAX_RETRIES: 2,
4
- TIMEOUT: 30000,
5
- };
6
- export class CoValueUnknownState {
7
- constructor() {
8
- this.type = "unknown";
9
- }
10
- }
11
- export class CoValueLoadingState {
12
- constructor(peersIds) {
13
- this.type = "loading";
14
- this.peers = new Map();
15
- this.peers = new Map();
16
- for (const peerId of peersIds) {
17
- this.peers.set(peerId, createResolvablePromise());
18
- }
19
- const { resolve, promise } = createResolvablePromise();
20
- this.result = promise;
21
- this.resolveResult = resolve;
22
- }
23
- markAsUnavailable(peerId) {
24
- const entry = this.peers.get(peerId);
25
- if (entry) {
26
- entry.resolve();
27
- }
28
- this.peers.delete(peerId);
29
- // If none of the peers have the coValue, we resolve to unavailable
30
- if (this.peers.size === 0) {
31
- this.resolve("unavailable");
32
- }
33
- }
34
- resolve(value) {
35
- this.resolveResult(value);
36
- for (const entry of this.peers.values()) {
37
- entry.resolve();
38
- }
39
- this.peers.clear();
40
- }
41
- // Wait for a specific peer to have a known state
42
- waitForPeer(peerId) {
43
- const entry = this.peers.get(peerId);
44
- if (!entry) {
45
- return Promise.resolve();
46
- }
47
- return entry.promise;
48
- }
49
- }
50
- export class CoValueAvailableState {
51
- constructor(coValue) {
52
- this.coValue = coValue;
53
- this.type = "available";
54
- }
55
- }
56
- export class CoValueUnavailableState {
57
- constructor() {
58
- this.type = "unavailable";
59
- }
60
- }
61
- export class CoValueState {
62
- constructor(id, state) {
63
- this.id = id;
64
- this.state = state;
65
- }
66
- static Unknown(id) {
67
- return new CoValueState(id, new CoValueUnknownState());
68
- }
69
- static Loading(id, peersIds) {
70
- return new CoValueState(id, new CoValueLoadingState(peersIds));
71
- }
72
- static Available(coValue) {
73
- return new CoValueState(coValue.id, new CoValueAvailableState(coValue));
74
- }
75
- static Unavailable(id) {
76
- return new CoValueState(id, new CoValueUnavailableState());
77
- }
78
- async getCoValue() {
79
- if (this.state.type === "available") {
80
- return this.state.coValue;
81
- }
82
- if (this.state.type === "unavailable") {
83
- return "unavailable";
84
- }
85
- // If we don't have a resolved state we return a new promise
86
- // that will be resolved when the state will move to available or unavailable
87
- if (!this.promise) {
88
- const { promise, resolve } = createResolvablePromise();
89
- this.promise = promise;
90
- this.resolve = resolve;
91
- }
92
- return this.promise;
93
- }
94
- moveToState(value) {
95
- this.state = value;
96
- if (!this.resolve) {
97
- return;
98
- }
99
- // If the state is available we resolve the promise
100
- // and clear it to handle the possible transition from unavailable to available
101
- if (value.type === "available") {
102
- this.resolve(value.coValue);
103
- this.clearPromise();
104
- }
105
- else if (value.type === "unavailable") {
106
- this.resolve("unavailable");
107
- this.clearPromise();
108
- }
109
- }
110
- clearPromise() {
111
- this.promise = undefined;
112
- this.resolve = undefined;
113
- }
114
- async loadFromPeers(peers) {
115
- const state = this.state;
116
- if (state.type !== "unknown" && state.type !== "unavailable") {
117
- return;
118
- }
119
- if (peers.length === 0) {
120
- return;
121
- }
122
- const doLoad = async (peersToLoadFrom) => {
123
- const peersWithoutErrors = getPeersWithoutErrors(peersToLoadFrom, this.id);
124
- // If we are in the loading state we move to a new loading state
125
- // to reset all the loading promises
126
- if (this.state.type === "loading" || this.state.type === "unknown") {
127
- this.moveToState(new CoValueLoadingState(peersWithoutErrors.map((p) => p.id)));
128
- }
129
- // Assign the current state to a variable to not depend on the state changes
130
- // that may happen while we wait for loadCoValueFromPeers to complete
131
- const currentState = this.state;
132
- // If we entered successfully the loading state, we load the coValue from the peers
133
- //
134
- // We may not enter the loading state if the coValue has become available in between
135
- // of the retries
136
- if (currentState.type === "loading") {
137
- await loadCoValueFromPeers(this, peersWithoutErrors);
138
- const result = await currentState.result;
139
- return result !== "unavailable";
140
- }
141
- return currentState.type === "available";
142
- };
143
- await doLoad(peers);
144
- // Retry loading from peers that have the retry flag enabled
145
- const peersWithRetry = peers.filter((p) => p.shouldRetryUnavailableCoValues());
146
- if (peersWithRetry.length > 0) {
147
- // We want to exit early if the coValue becomes available in between the retries
148
- await Promise.race([
149
- this.getCoValue(),
150
- runWithRetry(() => doLoad(peersWithRetry), CO_VALUE_LOADING_CONFIG.MAX_RETRIES),
151
- ]);
152
- }
153
- // If after the retries the coValue is still loading, we consider the load failed
154
- if (this.state.type === "loading") {
155
- this.moveToState(new CoValueUnavailableState());
156
- }
157
- }
158
- dispatch(action) {
159
- const currentState = this.state;
160
- switch (action.type) {
161
- case "available":
162
- if (currentState.type === "loading") {
163
- currentState.resolve(action.coValue);
164
- }
165
- // It should be always possible to move to the available state
166
- this.moveToState(new CoValueAvailableState(action.coValue));
167
- break;
168
- case "not-found-in-peer":
169
- if (currentState.type === "loading") {
170
- currentState.markAsUnavailable(action.peerId);
171
- }
172
- break;
173
- }
174
- }
175
- }
176
- async function loadCoValueFromPeers(coValueEntry, peers) {
177
- for (const peer of peers) {
178
- if (peer.closed) {
179
- continue;
180
- }
181
- if (coValueEntry.state.type === "available") {
182
- /**
183
- * We don't need to wait for the message to be delivered here.
184
- *
185
- * This way when the coValue becomes available because it's cached we don't wait for the server
186
- * peer to consume the messages queue before moving forward.
187
- */
188
- peer
189
- .pushOutgoingMessage({
190
- action: "load",
191
- ...coValueEntry.state.coValue.knownState(),
192
- })
193
- .catch((err) => {
194
- logger.warn(`Failed to push load message to peer ${peer.id}`, err);
195
- });
196
- }
197
- else {
198
- /**
199
- * We only wait for the load state to be resolved.
200
- */
201
- peer
202
- .pushOutgoingMessage({
203
- action: "load",
204
- id: coValueEntry.id,
205
- header: false,
206
- sessions: {},
207
- })
208
- .catch((err) => {
209
- logger.warn(`Failed to push load message to peer ${peer.id}`, err);
210
- });
211
- }
212
- if (coValueEntry.state.type === "loading") {
213
- const timeout = setTimeout(() => {
214
- if (coValueEntry.state.type === "loading") {
215
- logger.warn("Failed to load coValue from peer", {
216
- peerId: peer.id,
217
- peerRole: peer.role,
218
- });
219
- coValueEntry.dispatch({
220
- type: "not-found-in-peer",
221
- peerId: peer.id,
222
- });
223
- }
224
- }, CO_VALUE_LOADING_CONFIG.TIMEOUT);
225
- await coValueEntry.state.waitForPeer(peer.id);
226
- clearTimeout(timeout);
227
- }
228
- }
229
- }
230
- async function runWithRetry(fn, maxRetries) {
231
- let retries = 1;
232
- while (retries < maxRetries) {
233
- /**
234
- * With maxRetries of 5 we should wait:
235
- * 300ms
236
- * 900ms
237
- * 2700ms
238
- * 8100ms
239
- */
240
- await sleep(3 ** retries * 100);
241
- const result = await fn();
242
- if (result === true) {
243
- return;
244
- }
245
- retries++;
246
- }
247
- }
248
- function createResolvablePromise() {
249
- let resolve;
250
- const promise = new Promise((res) => {
251
- resolve = res;
252
- });
253
- return { promise, resolve };
254
- }
255
- function sleep(ms) {
256
- return new Promise((resolve) => setTimeout(resolve, ms));
257
- }
258
- function getPeersWithoutErrors(peers, coValueId) {
259
- return peers.filter((p) => {
260
- if (p.erroredCoValues.has(coValueId)) {
261
- logger.warn(`Skipping load on errored coValue ${coValueId} from peer ${p.id}`);
262
- return false;
263
- }
264
- return true;
265
- });
266
- }
267
- //# sourceMappingURL=coValueState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coValueState.js","sourceRoot":"","sources":["../../src/coValueState.ts"],"names":[],"mappings":"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"}
@@ -1,100 +0,0 @@
1
- import { ok } from "neverthrow";
2
- import { logger } from "../logger.js";
3
- import { RawCoMap } from "./coMap.js";
4
- import { RawGroup } from "./group.js";
5
- export function accountHeaderForInitialAgentSecret(agentSecret, crypto) {
6
- const agent = crypto.getAgentID(agentSecret);
7
- return {
8
- type: "comap",
9
- ruleset: { type: "group", initialAdmin: agent },
10
- meta: {
11
- type: "account",
12
- },
13
- createdAt: null,
14
- uniqueness: null,
15
- };
16
- }
17
- export class RawAccount extends RawGroup {
18
- currentAgentID() {
19
- if (this._cachedCurrentAgentID) {
20
- return ok(this._cachedCurrentAgentID);
21
- }
22
- const agents = this.keys()
23
- .filter((k) => k.startsWith("sealer_"))
24
- .sort((a, b) => (this.lastEditAt(a)?.at.getTime() || 0) -
25
- (this.lastEditAt(b)?.at.getTime() || 0));
26
- if (agents.length !== 1) {
27
- logger.warn("Account has " + agents.length + " agents", { id: this.id });
28
- }
29
- this._cachedCurrentAgentID = agents[0];
30
- return ok(agents[0]);
31
- }
32
- createInvite(_) {
33
- throw new Error("Cannot create invite from an account");
34
- }
35
- }
36
- /** @hidden */
37
- export class RawControlledAccount extends RawAccount {
38
- constructor(core, agentSecret) {
39
- super(core);
40
- this.agentSecret = agentSecret;
41
- this.crypto = core.node.crypto;
42
- }
43
- /**
44
- * Creates a new group (with the current account as the group's first admin).
45
- * @category 1. High-level
46
- */
47
- createGroup(uniqueness = this.core.crypto.createdNowUnique()) {
48
- return this.core.node.createGroup(uniqueness);
49
- }
50
- async acceptInvite(groupOrOwnedValueID, inviteSecret) {
51
- return this.core.node.acceptInvite(groupOrOwnedValueID, inviteSecret);
52
- }
53
- currentAgentID() {
54
- if (this._cachedCurrentAgentID) {
55
- return ok(this._cachedCurrentAgentID);
56
- }
57
- const agentID = this.crypto.getAgentID(this.agentSecret);
58
- this._cachedCurrentAgentID = agentID;
59
- return ok(agentID);
60
- }
61
- currentSignerID() {
62
- return this.currentAgentID().map((id) => this.crypto.getAgentSignerID(id));
63
- }
64
- currentSignerSecret() {
65
- return this.crypto.getAgentSignerSecret(this.agentSecret);
66
- }
67
- currentSealerID() {
68
- return this.currentAgentID().map((id) => this.crypto.getAgentSealerID(id));
69
- }
70
- currentSealerSecret() {
71
- return this.crypto.getAgentSealerSecret(this.agentSecret);
72
- }
73
- }
74
- export class ControlledAgent {
75
- constructor(agentSecret, crypto) {
76
- this.agentSecret = agentSecret;
77
- this.crypto = crypto;
78
- }
79
- get id() {
80
- return this.crypto.getAgentID(this.agentSecret);
81
- }
82
- currentAgentID() {
83
- return ok(this.crypto.getAgentID(this.agentSecret));
84
- }
85
- currentSignerID() {
86
- return this.currentAgentID().map((id) => this.crypto.getAgentSignerID(id));
87
- }
88
- currentSignerSecret() {
89
- return this.crypto.getAgentSignerSecret(this.agentSecret);
90
- }
91
- currentSealerID() {
92
- return this.currentAgentID().map((id) => this.crypto.getAgentSealerID(id));
93
- }
94
- currentSealerSecret() {
95
- return this.crypto.getAgentSealerSecret(this.agentSecret);
96
- }
97
- }
98
- export class RawProfile extends RawCoMap {
99
- }
100
- //# sourceMappingURL=account.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/coValues/account.ts"],"names":[],"mappings":"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"}