cojson 0.2.3 → 0.3.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account.d.ts +1 -1
- package/dist/coValue.d.ts +5 -13
- package/dist/coValue.js +14 -7
- package/dist/coValue.js.map +1 -1
- package/dist/coValueCore.d.ts +6 -6
- package/dist/coValueCore.js +11 -14
- package/dist/coValueCore.js.map +1 -1
- package/dist/coValues/coList.d.ts +99 -34
- package/dist/coValues/coList.js +162 -72
- package/dist/coValues/coList.js.map +1 -1
- package/dist/coValues/coMap.d.ts +96 -31
- package/dist/coValues/coMap.js +157 -114
- package/dist/coValues/coMap.js.map +1 -1
- package/dist/coValues/coStream.d.ts +67 -23
- package/dist/coValues/coStream.js +131 -59
- package/dist/coValues/coStream.js.map +1 -1
- package/dist/crypto.d.ts +8 -3
- package/dist/crypto.js +6 -6
- package/dist/crypto.js.map +1 -1
- package/dist/group.d.ts +57 -23
- package/dist/group.js +75 -33
- package/dist/group.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/{node.d.ts → localNode.d.ts} +16 -8
- package/dist/{node.js → localNode.js} +48 -40
- package/dist/localNode.js.map +1 -0
- package/dist/permissions.js +6 -3
- package/dist/permissions.js.map +1 -1
- package/dist/queriedCoValues/queriedCoList.d.ts +66 -0
- package/dist/queriedCoValues/queriedCoList.js +120 -0
- package/dist/queriedCoValues/queriedCoList.js.map +1 -0
- package/dist/queriedCoValues/queriedCoMap.d.ts +47 -0
- package/dist/queriedCoValues/queriedCoMap.js +83 -0
- package/dist/queriedCoValues/queriedCoMap.js.map +1 -0
- package/dist/queriedCoValues/queriedCoStream.d.ts +40 -0
- package/dist/queriedCoValues/queriedCoStream.js +72 -0
- package/dist/queriedCoValues/queriedCoStream.js.map +1 -0
- package/dist/queries.d.ts +29 -112
- package/dist/queries.js +44 -227
- package/dist/queries.js.map +1 -1
- package/dist/sync.d.ts +1 -1
- package/dist/sync.js +1 -1
- package/dist/sync.js.map +1 -1
- package/dist/tests/testUtils.d.ts +1 -1
- package/dist/tests/testUtils.js +3 -3
- package/dist/tests/testUtils.js.map +1 -1
- package/package.json +2 -2
- package/src/account.ts +1 -1
- package/src/coValue.ts +25 -20
- package/src/coValueCore.ts +17 -21
- package/src/coValues/coList.ts +242 -128
- package/src/coValues/coMap.ts +293 -162
- package/src/coValues/coStream.ts +227 -94
- package/src/crypto.ts +37 -24
- package/src/group.ts +90 -63
- package/src/index.ts +35 -25
- package/src/{node.ts → localNode.ts} +64 -64
- package/src/permissions.ts +15 -18
- package/src/queriedCoValues/queriedCoList.ts +248 -0
- package/src/queriedCoValues/queriedCoMap.ts +180 -0
- package/src/queriedCoValues/queriedCoStream.ts +125 -0
- package/src/queries.ts +83 -460
- package/src/sync.ts +2 -2
- package/src/tests/account.test.ts +3 -6
- package/src/tests/coValue.test.ts +116 -110
- package/src/tests/coValueCore.test.ts +1 -1
- package/src/tests/crypto.test.ts +19 -21
- package/src/tests/permissions.test.ts +255 -242
- package/src/tests/queries.test.ts +57 -40
- package/src/tests/sync.test.ts +30 -30
- package/src/tests/testUtils.ts +3 -3
- package/dist/coValues/static.d.ts +0 -14
- package/dist/coValues/static.js +0 -20
- package/dist/coValues/static.js.map +0 -1
- package/dist/node.js.map +0 -1
- package/src/coValues/static.ts +0 -31
package/dist/group.js
CHANGED
|
@@ -34,11 +34,19 @@ export class Group {
|
|
|
34
34
|
this.underlyingMap = underlyingMap;
|
|
35
35
|
this.node = node;
|
|
36
36
|
}
|
|
37
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Returns the `CoID` of the `Group`.
|
|
39
|
+
*
|
|
40
|
+
* @category 4. Underlying CoMap
|
|
41
|
+
*/
|
|
38
42
|
get id() {
|
|
39
43
|
return this.underlyingMap.id;
|
|
40
44
|
}
|
|
41
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Returns the current role of a given account.
|
|
47
|
+
*
|
|
48
|
+
* @category 1. Role reading
|
|
49
|
+
*/
|
|
42
50
|
roleOf(accountID) {
|
|
43
51
|
return this.roleOfInternal(accountID);
|
|
44
52
|
}
|
|
@@ -46,18 +54,26 @@ export class Group {
|
|
|
46
54
|
roleOfInternal(accountID) {
|
|
47
55
|
return this.underlyingMap.get(accountID);
|
|
48
56
|
}
|
|
49
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Returns the role of the current account in the group.
|
|
59
|
+
*
|
|
60
|
+
* @category 1. Role reading
|
|
61
|
+
*/
|
|
50
62
|
myRole() {
|
|
51
63
|
return this.roleOfInternal(this.node.account.id);
|
|
52
64
|
}
|
|
53
|
-
/**
|
|
54
|
-
*
|
|
65
|
+
/**
|
|
66
|
+
* Directly grants a new member a role in the group. The current account must be an
|
|
67
|
+
* admin to be able to do so. Throws otherwise.
|
|
68
|
+
*
|
|
69
|
+
* @category 2. Role changing
|
|
70
|
+
*/
|
|
55
71
|
addMember(accountID, role) {
|
|
56
72
|
this.addMemberInternal(accountID, role);
|
|
57
73
|
}
|
|
58
74
|
/** @internal */
|
|
59
75
|
addMemberInternal(accountID, role) {
|
|
60
|
-
this.underlyingMap = this.underlyingMap.
|
|
76
|
+
this.underlyingMap = this.underlyingMap.mutate((map) => {
|
|
61
77
|
const currentReadKey = this.underlyingMap.core.getCurrentReadKey();
|
|
62
78
|
if (!currentReadKey.secret) {
|
|
63
79
|
throw new Error("Can't add member without read key secret");
|
|
@@ -67,9 +83,14 @@ export class Group {
|
|
|
67
83
|
if (map.get(accountID) !== role) {
|
|
68
84
|
throw new Error("Failed to set role");
|
|
69
85
|
}
|
|
70
|
-
map.set(`${currentReadKey.id}_for_${accountID}`, seal(
|
|
71
|
-
|
|
72
|
-
|
|
86
|
+
map.set(`${currentReadKey.id}_for_${accountID}`, seal({
|
|
87
|
+
message: currentReadKey.secret,
|
|
88
|
+
from: this.underlyingMap.core.node.account.currentSealerSecret(),
|
|
89
|
+
to: getAgentSealerID(agent),
|
|
90
|
+
nOnceMaterial: {
|
|
91
|
+
in: this.underlyingMap.core.id,
|
|
92
|
+
tx: this.underlyingMap.core.nextTransactionID(),
|
|
93
|
+
},
|
|
73
94
|
}), "trusting");
|
|
74
95
|
});
|
|
75
96
|
}
|
|
@@ -97,12 +118,17 @@ export class Group {
|
|
|
97
118
|
secret: maybeCurrentReadKey.secret,
|
|
98
119
|
};
|
|
99
120
|
const newReadKey = newRandomKeySecret();
|
|
100
|
-
this.underlyingMap = this.underlyingMap.
|
|
121
|
+
this.underlyingMap = this.underlyingMap.mutate((map) => {
|
|
101
122
|
for (const readerID of currentlyPermittedReaders) {
|
|
102
123
|
const reader = this.node.resolveAccountAgent(readerID, "Expected to know currently permitted reader");
|
|
103
|
-
map.set(`${newReadKey.id}_for_${readerID}`, seal(
|
|
104
|
-
|
|
105
|
-
|
|
124
|
+
map.set(`${newReadKey.id}_for_${readerID}`, seal({
|
|
125
|
+
message: newReadKey.secret,
|
|
126
|
+
from: this.underlyingMap.core.node.account.currentSealerSecret(),
|
|
127
|
+
to: getAgentSealerID(reader),
|
|
128
|
+
nOnceMaterial: {
|
|
129
|
+
in: this.underlyingMap.core.id,
|
|
130
|
+
tx: this.underlyingMap.core.nextTransactionID(),
|
|
131
|
+
},
|
|
106
132
|
}), "trusting");
|
|
107
133
|
}
|
|
108
134
|
map.set(`${currentReadKey.id}_for_${newReadKey.id}`, encryptKeySecret({
|
|
@@ -112,20 +138,30 @@ export class Group {
|
|
|
112
138
|
map.set("readKey", newReadKey.id, "trusting");
|
|
113
139
|
});
|
|
114
140
|
}
|
|
115
|
-
/**
|
|
141
|
+
/**
|
|
142
|
+
* Strips the specified member of all roles (preventing future writes in
|
|
116
143
|
* the group and owned values) and rotates the read encryption key for that group
|
|
117
|
-
* (preventing reads of new content in the group and owned values)
|
|
144
|
+
* (preventing reads of new content in the group and owned values)
|
|
145
|
+
*
|
|
146
|
+
* @category 2. Role changing
|
|
147
|
+
*/
|
|
118
148
|
removeMember(accountID) {
|
|
119
149
|
this.removeMemberInternal(accountID);
|
|
120
150
|
}
|
|
121
151
|
/** @internal */
|
|
122
152
|
removeMemberInternal(accountID) {
|
|
123
|
-
this.underlyingMap = this.underlyingMap.
|
|
153
|
+
this.underlyingMap = this.underlyingMap.mutate((map) => {
|
|
124
154
|
map.set(accountID, "revoked", "trusting");
|
|
125
155
|
});
|
|
126
156
|
this.rotateReadKey();
|
|
127
157
|
}
|
|
128
|
-
/**
|
|
158
|
+
/**
|
|
159
|
+
* Creates an invite for new members to indirectly join the group,
|
|
160
|
+
* allowing them to grant themselves the specified role with the InviteSecret
|
|
161
|
+
* (a string starting with "inviteSecret_") - use `LocalNode.acceptInvite()` for this purpose.
|
|
162
|
+
*
|
|
163
|
+
* @category 2. Role changing
|
|
164
|
+
*/
|
|
129
165
|
createInvite(role) {
|
|
130
166
|
const secretSeed = newRandomSecretSeed();
|
|
131
167
|
const inviteSecret = agentSecretFromSecretSeed(secretSeed);
|
|
@@ -133,9 +169,13 @@ export class Group {
|
|
|
133
169
|
this.addMemberInternal(inviteID, `${role}Invite`);
|
|
134
170
|
return inviteSecretFromSecretSeed(secretSeed);
|
|
135
171
|
}
|
|
136
|
-
/**
|
|
137
|
-
*
|
|
138
|
-
|
|
172
|
+
/**
|
|
173
|
+
* Creates a new `CoMap` within this group, with the specified specialized
|
|
174
|
+
* `CoMap` type `M` and optional static metadata.
|
|
175
|
+
*
|
|
176
|
+
* @category 3. Value creation
|
|
177
|
+
*/
|
|
178
|
+
createMap(init, meta, initPrivacy = "trusting") {
|
|
139
179
|
let map = this.node
|
|
140
180
|
.createCoValue({
|
|
141
181
|
type: "comap",
|
|
@@ -148,17 +188,19 @@ export class Group {
|
|
|
148
188
|
})
|
|
149
189
|
.getCurrentContent();
|
|
150
190
|
if (init) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
});
|
|
191
|
+
for (const [key, value] of Object.entries(init)) {
|
|
192
|
+
map = map.set(key, value, initPrivacy);
|
|
193
|
+
}
|
|
156
194
|
}
|
|
157
195
|
return map;
|
|
158
196
|
}
|
|
159
|
-
/**
|
|
160
|
-
* `CoList`
|
|
161
|
-
|
|
197
|
+
/**
|
|
198
|
+
* Creates a new `CoList` within this group, with the specified specialized
|
|
199
|
+
* `CoList` type `L` and optional static metadata.
|
|
200
|
+
*
|
|
201
|
+
* @category 3. Value creation
|
|
202
|
+
*/
|
|
203
|
+
createList(init, meta, initPrivacy = "trusting") {
|
|
162
204
|
let list = this.node
|
|
163
205
|
.createCoValue({
|
|
164
206
|
type: "colist",
|
|
@@ -171,14 +213,13 @@ export class Group {
|
|
|
171
213
|
})
|
|
172
214
|
.getCurrentContent();
|
|
173
215
|
if (init) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
});
|
|
216
|
+
for (const item of init) {
|
|
217
|
+
list = list.append(item, undefined, initPrivacy);
|
|
218
|
+
}
|
|
179
219
|
}
|
|
180
220
|
return list;
|
|
181
221
|
}
|
|
222
|
+
/** @category 3. Value creation */
|
|
182
223
|
createStream(meta) {
|
|
183
224
|
return this.node
|
|
184
225
|
.createCoValue({
|
|
@@ -192,6 +233,7 @@ export class Group {
|
|
|
192
233
|
})
|
|
193
234
|
.getCurrentContent();
|
|
194
235
|
}
|
|
236
|
+
/** @category 3. Value creation */
|
|
195
237
|
createBinaryStream(meta = { type: "binary" }) {
|
|
196
238
|
return this.node
|
|
197
239
|
.createCoValue({
|
package/dist/group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAGA,OAAO,EAIH,gBAAgB,EAChB,kBAAkB,EAClB,IAAI,EACJ,gBAAgB,EAChB,gBAAgB,EAEhB,mBAAmB,EACnB,yBAAyB,EACzB,UAAU,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAsB,SAAS,EAAE,MAAM,UAAU,CAAC;AAGzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { CoValueCore, newRandomSessionID, MAX_RECOMMENDED_TX_SIZE } from "./coValueCore.js";
|
|
2
|
-
import { LocalNode } from "./
|
|
2
|
+
import { LocalNode } from "./localNode.js";
|
|
3
3
|
import type { CoValue } from "./coValue.js";
|
|
4
|
-
import { CoMap,
|
|
5
|
-
import { CoList,
|
|
6
|
-
import { CoStream,
|
|
4
|
+
import { CoMap, MutableCoMap } from "./coValues/coMap.js";
|
|
5
|
+
import { CoList, MutableCoList } from "./coValues/coList.js";
|
|
6
|
+
import { CoStream, MutableCoStream, BinaryCoStream, MutableBinaryCoStream } from "./coValues/coStream.js";
|
|
7
7
|
import { agentSecretFromBytes, agentSecretToBytes, getAgentID, newRandomAgentSecret, newRandomSecretSeed, agentSecretFromSecretSeed, cryptoReady } from "./crypto.js";
|
|
8
8
|
import { connectedPeers } from "./streamUtils.js";
|
|
9
9
|
import { AnonymousControlledAccount, ControlledAccount } from "./account.js";
|
|
@@ -14,6 +14,9 @@ import { parseJSON } from "./jsonStringify.js";
|
|
|
14
14
|
import type { SessionID, AgentID } from "./ids.js";
|
|
15
15
|
import type { CoID, AnyCoValue } from "./coValue.js";
|
|
16
16
|
import type { Queried } from "./queries.js";
|
|
17
|
+
import type { QueriedCoStream } from "./queriedCoValues/queriedCoStream.js";
|
|
18
|
+
import type { QueriedCoList } from "./queriedCoValues/queriedCoList.js";
|
|
19
|
+
import type { QueriedCoMap } from "./queriedCoValues/queriedCoMap.js";
|
|
17
20
|
import type { BinaryStreamInfo, BinaryCoStreamMeta } from "./coValues/coStream.js";
|
|
18
21
|
import type { JsonValue } from "./jsonValue.js";
|
|
19
22
|
import type { SyncMessage, Peer } from "./sync.js";
|
|
@@ -41,8 +44,7 @@ export declare const cojsonInternals: {
|
|
|
41
44
|
bytesToBase64url: typeof bytesToBase64url;
|
|
42
45
|
parseJSON: typeof parseJSON;
|
|
43
46
|
};
|
|
44
|
-
export { LocalNode, Group, CoMap,
|
|
45
|
-
export type { Value, JsonValue, CoValue, AnyCoValue, CoID, Queried, AccountID, Account, Profile, SessionID, Peer, BinaryStreamInfo, BinaryCoStreamMeta, AgentID, AgentSecret, InviteSecret, SyncMessage, Media };
|
|
47
|
+
export { LocalNode, Group, CoMap, MutableCoMap, CoList, MutableCoList, CoStream, MutableCoStream, BinaryCoStream, MutableBinaryCoStream, CoValue, CoID, AnyCoValue, Queried, QueriedCoMap, QueriedCoList, QueriedCoStream, AccountID, Account, Profile, SessionID, Media, CoValueCore, AnonymousControlledAccount, ControlledAccount, cryptoReady as cojsonReady, MAX_RECOMMENDED_TX_SIZE, Value, JsonValue, Peer, BinaryStreamInfo, BinaryCoStreamMeta, AgentID, AgentSecret, InviteSecret, SyncMessage, };
|
|
46
48
|
export declare namespace CojsonInternalTypes {
|
|
47
49
|
type CoValueKnownState = import("./sync.js").CoValueKnownState;
|
|
48
50
|
type DoneMessage = import("./sync.js").DoneMessage;
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { CoValueCore, newRandomSessionID, MAX_RECOMMENDED_TX_SIZE } from "./coValueCore.js";
|
|
2
|
-
import { LocalNode } from "./
|
|
3
|
-
import { CoMap,
|
|
4
|
-
import { CoList,
|
|
5
|
-
import { CoStream,
|
|
6
|
-
import { agentSecretFromBytes, agentSecretToBytes, getAgentID, newRandomAgentSecret, newRandomSecretSeed, agentSecretFromSecretSeed, secretSeedLength, shortHashLength, cryptoReady } from "./crypto.js";
|
|
1
|
+
import { CoValueCore, newRandomSessionID, MAX_RECOMMENDED_TX_SIZE, } from "./coValueCore.js";
|
|
2
|
+
import { LocalNode } from "./localNode.js";
|
|
3
|
+
import { CoMap, MutableCoMap } from "./coValues/coMap.js";
|
|
4
|
+
import { CoList, MutableCoList } from "./coValues/coList.js";
|
|
5
|
+
import { CoStream, MutableCoStream, BinaryCoStream, MutableBinaryCoStream, } from "./coValues/coStream.js";
|
|
6
|
+
import { agentSecretFromBytes, agentSecretToBytes, getAgentID, newRandomAgentSecret, newRandomSecretSeed, agentSecretFromSecretSeed, secretSeedLength, shortHashLength, cryptoReady, } from "./crypto.js";
|
|
7
7
|
import { connectedPeers } from "./streamUtils.js";
|
|
8
8
|
import { AnonymousControlledAccount, ControlledAccount } from "./account.js";
|
|
9
9
|
import { rawCoIDtoBytes, rawCoIDfromBytes } from "./ids.js";
|
|
@@ -27,7 +27,7 @@ export const cojsonInternals = {
|
|
|
27
27
|
expectGroupContent,
|
|
28
28
|
base64URLtoBytes,
|
|
29
29
|
bytesToBase64url,
|
|
30
|
-
parseJSON
|
|
30
|
+
parseJSON,
|
|
31
31
|
};
|
|
32
|
-
export { LocalNode, Group, CoMap,
|
|
32
|
+
export { LocalNode, Group, CoMap, MutableCoMap, CoList, MutableCoList, CoStream, MutableCoStream, BinaryCoStream, MutableBinaryCoStream, CoValueCore, AnonymousControlledAccount, ControlledAccount, cryptoReady as cojsonReady, MAX_RECOMMENDED_TX_SIZE, };
|
|
33
33
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,kBAAkB,EAClB,uBAAuB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACH,QAAQ,EACR,eAAe,EACf,cAAc,EACd,qBAAqB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACH,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,WAAW,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAqB/C,cAAc;AACd,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,oBAAoB;IACpB,cAAc;IACd,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,mBAAmB;IACnB,yBAAyB;IACzB,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,SAAS;CACZ,CAAC;AAEF,OAAO,EACH,SAAS,EACT,KAAK,EACL,KAAK,EACL,YAAY,EACZ,MAAM,EACN,aAAa,EACb,QAAQ,EACR,eAAe,EACf,cAAc,EACd,qBAAqB,EAarB,WAAW,EACX,0BAA0B,EAC1B,iBAAiB,EACjB,WAAW,IAAI,WAAW,EAC1B,uBAAuB,GAU1B,CAAC"}
|
|
@@ -23,17 +23,22 @@ export declare class LocalNode {
|
|
|
23
23
|
coValues: {
|
|
24
24
|
[key: RawCoID]: CoValueState;
|
|
25
25
|
};
|
|
26
|
-
/** @
|
|
26
|
+
/** @category 3. Low-level */
|
|
27
27
|
account: GeneralizedControlledAccount;
|
|
28
|
+
/** @category 3. Low-level */
|
|
28
29
|
currentSessionID: SessionID;
|
|
29
|
-
|
|
30
|
+
/** @category 3. Low-level */
|
|
31
|
+
syncManager: SyncManager;
|
|
32
|
+
/** @category 3. Low-level */
|
|
30
33
|
constructor(account: GeneralizedControlledAccount, currentSessionID: SessionID);
|
|
34
|
+
/** @category 2. Node Creation */
|
|
31
35
|
static withNewlyCreatedAccount(name: string, initialAgentSecret?: `sealerSecret_z${string}/signerSecret_z${string}`): {
|
|
32
36
|
node: LocalNode;
|
|
33
37
|
accountID: AccountID;
|
|
34
38
|
accountSecret: AgentSecret;
|
|
35
39
|
sessionID: SessionID;
|
|
36
40
|
};
|
|
41
|
+
/** @category 2. Node Creation */
|
|
37
42
|
static withLoadedAccount(accountID: AccountID, accountSecret: AgentSecret, sessionID: SessionID, peersToLoadFrom: Peer[]): Promise<LocalNode>;
|
|
38
43
|
/** @internal */
|
|
39
44
|
createCoValue(header: CoValueHeader): CoValueCore;
|
|
@@ -43,15 +48,15 @@ export declare class LocalNode {
|
|
|
43
48
|
* Loads a CoValue's content, syncing from peers as necessary and resolving the returned
|
|
44
49
|
* promise once a first version has been loaded. See `coValue.subscribe()` and `node.useTelepathicData()`
|
|
45
50
|
* for listening to subsequent updates to the CoValue.
|
|
51
|
+
*
|
|
52
|
+
* @category 3. Low-level
|
|
46
53
|
*/
|
|
47
54
|
load<T extends CoValue>(id: CoID<T>): Promise<T>;
|
|
55
|
+
/** @category 3. Low-level */
|
|
48
56
|
subscribe<T extends CoValue>(id: CoID<T>, callback: (update: T) => void): () => void;
|
|
57
|
+
/** @category 1. High-level */
|
|
49
58
|
query<T extends CoValue>(id: CoID<T>, callback: (update: Queried<T> | undefined) => void): () => void;
|
|
50
|
-
/**
|
|
51
|
-
* Loads a profile associated with an account. `Profile` is at least a `CoMap<{string: name}>`,
|
|
52
|
-
* but might contain other, app-specific properties.
|
|
53
|
-
*/
|
|
54
|
-
loadProfile(id: AccountID): Promise<Profile>;
|
|
59
|
+
/** @category 1. High-level */
|
|
55
60
|
acceptInvite<T extends CoValue>(groupOrOwnedValueID: CoID<T>, inviteSecret: InviteSecret): Promise<void>;
|
|
56
61
|
/** @internal */
|
|
57
62
|
expectCoValueLoaded(id: RawCoID, expectation?: string): CoValueCore;
|
|
@@ -61,7 +66,10 @@ export declare class LocalNode {
|
|
|
61
66
|
createAccount(name: string, agentSecret?: `sealerSecret_z${string}/signerSecret_z${string}`): ControlledAccount;
|
|
62
67
|
/** @internal */
|
|
63
68
|
resolveAccountAgent(id: AccountID | AgentID, expectation?: string): AgentID;
|
|
64
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Creates a new group (with the current account as the group's first admin).
|
|
71
|
+
* @category 1. High-level
|
|
72
|
+
*/
|
|
65
73
|
createGroup(): Group;
|
|
66
74
|
/** @internal */
|
|
67
75
|
testWithDifferentAccount(account: GeneralizedControlledAccount, currentSessionID: SessionID): LocalNode;
|
|
@@ -17,13 +17,16 @@ const { localNode } = useJazz();
|
|
|
17
17
|
```
|
|
18
18
|
*/
|
|
19
19
|
export class LocalNode {
|
|
20
|
+
/** @category 3. Low-level */
|
|
20
21
|
constructor(account, currentSessionID) {
|
|
21
22
|
/** @internal */
|
|
22
23
|
this.coValues = {};
|
|
23
|
-
|
|
24
|
+
/** @category 3. Low-level */
|
|
25
|
+
this.syncManager = new SyncManager(this);
|
|
24
26
|
this.account = account;
|
|
25
27
|
this.currentSessionID = currentSessionID;
|
|
26
28
|
}
|
|
29
|
+
/** @category 2. Node Creation */
|
|
27
30
|
static withNewlyCreatedAccount(name, initialAgentSecret = newRandomAgentSecret()) {
|
|
28
31
|
const throwawayAgent = newRandomAgentSecret();
|
|
29
32
|
const setupNode = new LocalNode(new AnonymousControlledAccount(throwawayAgent), newRandomSessionID(getAgentID(throwawayAgent)));
|
|
@@ -36,24 +39,25 @@ export class LocalNode {
|
|
|
36
39
|
sessionID: nodeWithAccount.currentSessionID,
|
|
37
40
|
};
|
|
38
41
|
}
|
|
42
|
+
/** @category 2. Node Creation */
|
|
39
43
|
static async withLoadedAccount(accountID, accountSecret, sessionID, peersToLoadFrom) {
|
|
40
44
|
const loadingNode = new LocalNode(new AnonymousControlledAccount(accountSecret), newRandomSessionID(accountID));
|
|
41
45
|
const accountPromise = loadingNode.load(accountID);
|
|
42
46
|
for (const peer of peersToLoadFrom) {
|
|
43
|
-
loadingNode.
|
|
47
|
+
loadingNode.syncManager.addPeer(peer);
|
|
44
48
|
}
|
|
45
49
|
const account = await accountPromise;
|
|
46
50
|
// since this is all synchronous, we can just swap out nodes for the SyncManager
|
|
47
51
|
const node = loadingNode.testWithDifferentAccount(new ControlledAccount(accountSecret, account, loadingNode), sessionID);
|
|
48
|
-
node.
|
|
49
|
-
node.
|
|
52
|
+
node.syncManager = loadingNode.syncManager;
|
|
53
|
+
node.syncManager.local = node;
|
|
50
54
|
return node;
|
|
51
55
|
}
|
|
52
56
|
/** @internal */
|
|
53
57
|
createCoValue(header) {
|
|
54
58
|
const coValue = new CoValueCore(header, this);
|
|
55
59
|
this.coValues[coValue.id] = { state: "loaded", coValue: coValue };
|
|
56
|
-
void this.
|
|
60
|
+
void this.syncManager.syncCoValue(coValue);
|
|
57
61
|
return coValue;
|
|
58
62
|
}
|
|
59
63
|
/** @internal */
|
|
@@ -62,7 +66,7 @@ export class LocalNode {
|
|
|
62
66
|
if (!entry) {
|
|
63
67
|
entry = newLoadingState();
|
|
64
68
|
this.coValues[id] = entry;
|
|
65
|
-
this.
|
|
69
|
+
this.syncManager.loadFromPeers(id);
|
|
66
70
|
}
|
|
67
71
|
if (entry.state === "loaded") {
|
|
68
72
|
return Promise.resolve(entry.coValue);
|
|
@@ -73,20 +77,25 @@ export class LocalNode {
|
|
|
73
77
|
* Loads a CoValue's content, syncing from peers as necessary and resolving the returned
|
|
74
78
|
* promise once a first version has been loaded. See `coValue.subscribe()` and `node.useTelepathicData()`
|
|
75
79
|
* for listening to subsequent updates to the CoValue.
|
|
80
|
+
*
|
|
81
|
+
* @category 3. Low-level
|
|
76
82
|
*/
|
|
77
83
|
async load(id) {
|
|
78
84
|
return (await this.loadCoValue(id)).getCurrentContent();
|
|
79
85
|
}
|
|
86
|
+
/** @category 3. Low-level */
|
|
80
87
|
subscribe(id, callback) {
|
|
81
88
|
let stopped = false;
|
|
82
89
|
let unsubscribe;
|
|
83
90
|
console.log("Subscribing to " + id);
|
|
84
|
-
this.load(id)
|
|
91
|
+
this.load(id)
|
|
92
|
+
.then((coValue) => {
|
|
85
93
|
if (stopped) {
|
|
86
94
|
return;
|
|
87
95
|
}
|
|
88
96
|
unsubscribe = coValue.subscribe(callback);
|
|
89
|
-
})
|
|
97
|
+
})
|
|
98
|
+
.catch((e) => {
|
|
90
99
|
console.error("Error subscribing to ", id, e);
|
|
91
100
|
});
|
|
92
101
|
return () => {
|
|
@@ -95,21 +104,11 @@ export class LocalNode {
|
|
|
95
104
|
unsubscribe?.();
|
|
96
105
|
};
|
|
97
106
|
}
|
|
107
|
+
/** @category 1. High-level */
|
|
98
108
|
query(id, callback) {
|
|
99
109
|
return query(id, this, callback);
|
|
100
110
|
}
|
|
101
|
-
/**
|
|
102
|
-
* Loads a profile associated with an account. `Profile` is at least a `CoMap<{string: name}>`,
|
|
103
|
-
* but might contain other, app-specific properties.
|
|
104
|
-
*/
|
|
105
|
-
async loadProfile(id) {
|
|
106
|
-
const account = await this.load(id);
|
|
107
|
-
const profileID = account.get("profile");
|
|
108
|
-
if (!profileID) {
|
|
109
|
-
throw new Error(`Account ${id} has no profile`);
|
|
110
|
-
}
|
|
111
|
-
return (await this.loadCoValue(profileID)).getCurrentContent();
|
|
112
|
-
}
|
|
111
|
+
/** @category 1. High-level */
|
|
113
112
|
async acceptInvite(groupOrOwnedValueID, inviteSecret) {
|
|
114
113
|
const groupOrOwnedValue = await this.load(groupOrOwnedValueID);
|
|
115
114
|
if (groupOrOwnedValue.core.header.ruleset.type === "ownedByGroup") {
|
|
@@ -176,27 +175,28 @@ export class LocalNode {
|
|
|
176
175
|
}
|
|
177
176
|
/** @internal */
|
|
178
177
|
createAccount(name, agentSecret = newRandomAgentSecret()) {
|
|
179
|
-
const
|
|
178
|
+
const accountAgentID = getAgentID(agentSecret);
|
|
179
|
+
const account = this.createCoValue(accountHeaderForInitialAgentSecret(agentSecret)).testWithDifferentAccount(new AnonymousControlledAccount(agentSecret), newRandomSessionID(accountAgentID));
|
|
180
180
|
const accountAsGroup = new Group(expectGroupContent(account.getCurrentContent()), account.node);
|
|
181
|
-
accountAsGroup.underlyingMap.
|
|
182
|
-
editable.set(
|
|
181
|
+
accountAsGroup.underlyingMap.mutate((editable) => {
|
|
182
|
+
editable.set(accountAgentID, "admin", "trusting");
|
|
183
183
|
const readKey = newRandomKeySecret();
|
|
184
|
-
editable.set(`${readKey.id}_for_${
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
editable.set(`${readKey.id}_for_${accountAgentID}`, seal({
|
|
185
|
+
message: readKey.secret,
|
|
186
|
+
from: getAgentSealerSecret(agentSecret),
|
|
187
|
+
to: getAgentSealerID(accountAgentID),
|
|
188
|
+
nOnceMaterial: {
|
|
189
|
+
in: account.id,
|
|
190
|
+
tx: account.nextTransactionID(),
|
|
191
|
+
},
|
|
187
192
|
}), "trusting");
|
|
188
193
|
editable.set("readKey", readKey.id, "trusting");
|
|
189
194
|
});
|
|
190
195
|
const controlledAccount = new ControlledAccount(agentSecret, account.getCurrentContent(), account.node);
|
|
191
|
-
|
|
196
|
+
const profile = accountAsGroup.createMap({ name }, {
|
|
192
197
|
type: "profile",
|
|
193
|
-
});
|
|
194
|
-
profile
|
|
195
|
-
editable.set("name", name, "trusting");
|
|
196
|
-
});
|
|
197
|
-
accountAsGroup.underlyingMap.edit((editable) => {
|
|
198
|
-
editable.set("profile", profile.id, "trusting");
|
|
199
|
-
});
|
|
198
|
+
}, "trusting");
|
|
199
|
+
accountAsGroup.underlyingMap.set("profile", profile.id, "trusting");
|
|
200
200
|
const accountOnThisNode = this.expectCoValueLoaded(account.id);
|
|
201
201
|
accountOnThisNode._sessions = {
|
|
202
202
|
...accountAsGroup.underlyingMap.core.sessions,
|
|
@@ -224,7 +224,10 @@ export class LocalNode {
|
|
|
224
224
|
}
|
|
225
225
|
return new AccountGroup(coValue.getCurrentContent(), this).getCurrentAgentID();
|
|
226
226
|
}
|
|
227
|
-
/**
|
|
227
|
+
/**
|
|
228
|
+
* Creates a new group (with the current account as the group's first admin).
|
|
229
|
+
* @category 1. High-level
|
|
230
|
+
*/
|
|
228
231
|
createGroup() {
|
|
229
232
|
const groupCoValue = this.createCoValue({
|
|
230
233
|
type: "comap",
|
|
@@ -233,12 +236,17 @@ export class LocalNode {
|
|
|
233
236
|
...createdNowUnique(),
|
|
234
237
|
});
|
|
235
238
|
let groupContent = expectGroupContent(groupCoValue.getCurrentContent());
|
|
236
|
-
groupContent = groupContent.
|
|
239
|
+
groupContent = groupContent.mutate((editable) => {
|
|
237
240
|
editable.set(this.account.id, "admin", "trusting");
|
|
238
241
|
const readKey = newRandomKeySecret();
|
|
239
|
-
editable.set(`${readKey.id}_for_${this.account.id}`, seal(
|
|
240
|
-
|
|
241
|
-
|
|
242
|
+
editable.set(`${readKey.id}_for_${this.account.id}`, seal({
|
|
243
|
+
message: readKey.secret,
|
|
244
|
+
from: this.account.currentSealerSecret(),
|
|
245
|
+
to: this.account.currentSealerID(),
|
|
246
|
+
nOnceMaterial: {
|
|
247
|
+
in: groupCoValue.id,
|
|
248
|
+
tx: groupCoValue.nextTransactionID(),
|
|
249
|
+
},
|
|
242
250
|
}), "trusting");
|
|
243
251
|
editable.set("readKey", readKey.id, "trusting");
|
|
244
252
|
});
|
|
@@ -286,4 +294,4 @@ export function newLoadingState() {
|
|
|
286
294
|
resolve: resolve,
|
|
287
295
|
};
|
|
288
296
|
}
|
|
289
|
-
//# sourceMappingURL=
|
|
297
|
+
//# sourceMappingURL=localNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localNode.js","sourceRoot":"","sources":["../src/localNode.ts"],"names":[],"mappings":"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"}
|
package/dist/permissions.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { accountOrAgentIDfromSessionID, } from "./coValueCore.js";
|
|
2
2
|
import { parseJSON } from "./jsonStringify.js";
|
|
3
|
+
import { expectGroupContent } from "./group.js";
|
|
3
4
|
export function determineValidTransactions(coValue) {
|
|
4
5
|
if (coValue.header.ruleset.type === "group") {
|
|
5
6
|
const allTrustingTransactionsSorted = Object.entries(coValue.sessions).flatMap(([sessionID, sessionLog]) => {
|
|
@@ -122,9 +123,9 @@ export function determineValidTransactions(coValue) {
|
|
|
122
123
|
return validTransactions;
|
|
123
124
|
}
|
|
124
125
|
else if (coValue.header.ruleset.type === "ownedByGroup") {
|
|
125
|
-
const groupContent = coValue.node
|
|
126
|
+
const groupContent = expectGroupContent(coValue.node
|
|
126
127
|
.expectCoValueLoaded(coValue.header.ruleset.group, "Determining valid transaction in owned object but its group wasn't loaded")
|
|
127
|
-
.getCurrentContent();
|
|
128
|
+
.getCurrentContent());
|
|
128
129
|
if (groupContent.type !== "comap") {
|
|
129
130
|
throw new Error("Group must be a map");
|
|
130
131
|
}
|
|
@@ -132,7 +133,9 @@ export function determineValidTransactions(coValue) {
|
|
|
132
133
|
const transactor = accountOrAgentIDfromSessionID(sessionID);
|
|
133
134
|
return sessionLog.transactions
|
|
134
135
|
.filter((tx) => {
|
|
135
|
-
const transactorRoleAtTxTime = groupContent
|
|
136
|
+
const transactorRoleAtTxTime = groupContent
|
|
137
|
+
.atTime(tx.madeAt)
|
|
138
|
+
.get(transactor);
|
|
136
139
|
return (transactorRoleAtTxTime === "admin" ||
|
|
137
140
|
transactorRoleAtTxTime === "writer");
|
|
138
141
|
})
|
package/dist/permissions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
|