cojson 0.2.2 → 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/.eslintrc.cjs +1 -0
- package/dist/account.d.ts +8 -8
- package/dist/account.js +2 -2
- package/dist/account.js.map +1 -1
- package/dist/coValue.d.ts +22 -27
- package/dist/coValue.js +21 -0
- package/dist/coValue.js.map +1 -1
- package/dist/coValueCore.d.ts +7 -7
- package/dist/coValueCore.js +11 -14
- package/dist/coValueCore.js.map +1 -1
- package/dist/coValues/coList.d.ts +107 -42
- package/dist/coValues/coList.js +163 -72
- package/dist/coValues/coList.js.map +1 -1
- package/dist/coValues/coMap.d.ts +109 -50
- package/dist/coValues/coMap.js +161 -109
- package/dist/coValues/coMap.js.map +1 -1
- package/dist/coValues/coStream.d.ts +78 -33
- package/dist/coValues/coStream.js +134 -53
- 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 +59 -23
- package/dist/group.js +83 -25
- package/dist/group.js.map +1 -1
- package/dist/index.d.ts +14 -11
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/{node.d.ts → localNode.d.ts} +23 -11
- package/dist/{node.js → localNode.js} +80 -42
- package/dist/localNode.js.map +1 -0
- package/dist/media.d.ts +1 -2
- 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 +31 -0
- package/dist/queries.js +77 -0
- package/dist/queries.js.map +1 -0
- package/dist/sync.d.ts +1 -1
- package/dist/sync.js +1 -1
- package/dist/sync.js.map +1 -1
- package/dist/{testUtils.d.ts → tests/testUtils.d.ts} +9 -9
- package/dist/{testUtils.js → tests/testUtils.js} +9 -7
- package/dist/tests/testUtils.js.map +1 -0
- package/package.json +2 -2
- package/src/account.ts +6 -6
- package/src/coValue.ts +65 -34
- package/src/coValueCore.ts +18 -22
- package/src/coValues/coList.ts +272 -122
- package/src/coValues/coMap.ts +349 -152
- package/src/coValues/coStream.ts +258 -94
- package/src/crypto.ts +37 -24
- package/src/group.ts +112 -46
- package/src/index.ts +42 -30
- package/src/{node.ts → localNode.ts} +117 -66
- package/src/media.ts +1 -2
- 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 +142 -0
- package/src/sync.ts +2 -2
- package/src/{account.test.ts → tests/account.test.ts} +6 -9
- package/src/{coValue.test.ts → tests/coValue.test.ts} +120 -114
- package/src/{coValueCore.test.ts → tests/coValueCore.test.ts} +7 -7
- package/src/{crypto.test.ts → tests/crypto.test.ts} +19 -21
- package/src/{group.test.ts → tests/group.test.ts} +2 -2
- package/src/{permissions.test.ts → tests/permissions.test.ts} +260 -247
- package/src/tests/queries.test.ts +318 -0
- package/src/{sync.test.ts → tests/sync.test.ts} +39 -39
- package/src/{testUtils.ts → tests/testUtils.ts} +10 -8
- 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/dist/testUtils.js.map +0 -1
- package/src/coValues/static.ts +0 -31
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { isCoValue } from "../coValue.js";
|
|
1
2
|
import { accountOrAgentIDfromSessionID } from "../coValueCore.js";
|
|
2
3
|
import { base64URLtoBytes, bytesToBase64url } from "../base64url.js";
|
|
3
|
-
import { isAccountID } from "../account.js";
|
|
4
4
|
import { parseJSON } from "../jsonStringify.js";
|
|
5
|
-
export class
|
|
5
|
+
export class CoStreamView {
|
|
6
6
|
constructor(core) {
|
|
7
7
|
this.type = "costream";
|
|
8
8
|
this.id = core.id;
|
|
@@ -16,6 +16,10 @@ export class CoStream {
|
|
|
16
16
|
get group() {
|
|
17
17
|
return this.core.getGroup();
|
|
18
18
|
}
|
|
19
|
+
/** Not yet implemented */
|
|
20
|
+
atTime(_time) {
|
|
21
|
+
throw new Error("Not yet implemented");
|
|
22
|
+
}
|
|
19
23
|
/** @internal */
|
|
20
24
|
fillFromCoValue() {
|
|
21
25
|
this.items = {};
|
|
@@ -27,7 +31,7 @@ export class CoStream {
|
|
|
27
31
|
entries = [];
|
|
28
32
|
this.items[txID.sessionID] = entries;
|
|
29
33
|
}
|
|
30
|
-
entries.push({
|
|
34
|
+
entries.push({ value: change, madeAt, tx: txID });
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
37
|
}
|
|
@@ -38,59 +42,116 @@ export class CoStream {
|
|
|
38
42
|
else if (Object.keys(this.items).length !== 1) {
|
|
39
43
|
throw new Error("CoStream.getSingleStream() can only be called when there is exactly one stream");
|
|
40
44
|
}
|
|
41
|
-
return Object.values(this.items)[0]?.map(item => item.
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
45
|
+
return Object.values(this.items)[0]?.map((item) => item.value);
|
|
46
|
+
}
|
|
47
|
+
sessions() {
|
|
48
|
+
return Object.keys(this.items);
|
|
49
|
+
}
|
|
50
|
+
accounts() {
|
|
51
|
+
return new Set(this.sessions().map(accountOrAgentIDfromSessionID));
|
|
52
|
+
}
|
|
53
|
+
nthItemIn(sessionID, n) {
|
|
54
|
+
const items = this.items[sessionID];
|
|
55
|
+
if (!items)
|
|
56
|
+
return;
|
|
57
|
+
const item = items[n];
|
|
58
|
+
if (!item)
|
|
59
|
+
return;
|
|
60
|
+
return {
|
|
61
|
+
by: accountOrAgentIDfromSessionID(sessionID),
|
|
62
|
+
tx: item.tx,
|
|
63
|
+
at: new Date(item.madeAt),
|
|
64
|
+
value: item.value,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
lastItemIn(sessionID) {
|
|
68
|
+
const items = this.items[sessionID];
|
|
69
|
+
if (!items)
|
|
70
|
+
return;
|
|
71
|
+
return this.nthItemIn(sessionID, items.length - 1);
|
|
72
|
+
}
|
|
73
|
+
*itemsIn(sessionID) {
|
|
74
|
+
const items = this.items[sessionID];
|
|
75
|
+
if (!items)
|
|
76
|
+
return;
|
|
77
|
+
for (const item of items) {
|
|
78
|
+
yield {
|
|
79
|
+
by: accountOrAgentIDfromSessionID(sessionID),
|
|
80
|
+
tx: item.tx,
|
|
81
|
+
at: new Date(item.madeAt),
|
|
82
|
+
value: item.value,
|
|
83
|
+
};
|
|
55
84
|
}
|
|
56
|
-
return Object.fromEntries(Object.entries(result).map(([account, item]) => [account, item?.item]));
|
|
57
85
|
}
|
|
58
|
-
|
|
59
|
-
let
|
|
60
|
-
for (const
|
|
86
|
+
lastItemBy(account) {
|
|
87
|
+
let latestItem;
|
|
88
|
+
for (const sessionID of Object.keys(this.items)) {
|
|
61
89
|
if (sessionID.startsWith(account)) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
90
|
+
const item = this.lastItemIn(sessionID);
|
|
91
|
+
if (!item)
|
|
92
|
+
continue;
|
|
93
|
+
if (!latestItem || item.at > latestItem.at) {
|
|
94
|
+
latestItem = {
|
|
95
|
+
by: item.by,
|
|
96
|
+
tx: item.tx,
|
|
97
|
+
at: item.at,
|
|
98
|
+
value: item.value,
|
|
99
|
+
};
|
|
67
100
|
}
|
|
68
101
|
}
|
|
69
102
|
}
|
|
70
|
-
return
|
|
103
|
+
return latestItem;
|
|
71
104
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
105
|
+
*itemsBy(account) {
|
|
106
|
+
// TODO: this can be made more lazy without a huge collect and sort
|
|
107
|
+
const items = [
|
|
108
|
+
...Object.keys(this.items).flatMap((sessionID) => sessionID.startsWith(account)
|
|
109
|
+
? [...this.itemsIn(sessionID)].map((item) => ({
|
|
110
|
+
in: sessionID,
|
|
111
|
+
...item,
|
|
112
|
+
}))
|
|
113
|
+
: []),
|
|
114
|
+
];
|
|
115
|
+
items.sort((a, b) => a.at.getTime() - b.at.getTime());
|
|
116
|
+
for (const item of items) {
|
|
117
|
+
yield item;
|
|
118
|
+
}
|
|
77
119
|
}
|
|
78
120
|
toJSON() {
|
|
79
|
-
return Object.fromEntries(Object.entries(this.items).map(([sessionID, items]) => [
|
|
121
|
+
return Object.fromEntries(Object.entries(this.items).map(([sessionID, items]) => [
|
|
122
|
+
sessionID,
|
|
123
|
+
items.map((item) => item.value),
|
|
124
|
+
]));
|
|
80
125
|
}
|
|
81
126
|
subscribe(listener) {
|
|
82
127
|
return this.core.subscribe((content) => {
|
|
83
128
|
listener(content);
|
|
84
129
|
});
|
|
85
130
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
131
|
+
}
|
|
132
|
+
export class CoStream extends CoStreamView {
|
|
133
|
+
push(item, privacy = "private") {
|
|
134
|
+
this.core.makeTransaction([isCoValue(item) ? item.id : item], privacy);
|
|
135
|
+
return new CoStream(this.core);
|
|
136
|
+
}
|
|
137
|
+
mutate(mutator) {
|
|
138
|
+
const mutable = new MutableCoStream(this.core);
|
|
139
|
+
mutator(mutable);
|
|
89
140
|
return new CoStream(this.core);
|
|
90
141
|
}
|
|
142
|
+
/** @deprecated Use `mutate` instead. */
|
|
143
|
+
edit(mutator) {
|
|
144
|
+
return this.mutate(mutator);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
export class MutableCoStream extends CoStreamView {
|
|
148
|
+
push(item, privacy = "private") {
|
|
149
|
+
this.core.makeTransaction([isCoValue(item) ? item.id : item], privacy);
|
|
150
|
+
this.fillFromCoValue();
|
|
151
|
+
}
|
|
91
152
|
}
|
|
92
153
|
const binary_U_prefixLength = 8; // "binary_U".length;
|
|
93
|
-
export class
|
|
154
|
+
export class BinaryCoStreamView extends CoStreamView {
|
|
94
155
|
getBinaryChunks(allowUnfinished) {
|
|
95
156
|
// const before = performance.now();
|
|
96
157
|
const items = this.getSingleStream();
|
|
@@ -133,30 +194,50 @@ export class BinaryCoStream extends CoStream {
|
|
|
133
194
|
finished,
|
|
134
195
|
};
|
|
135
196
|
}
|
|
136
|
-
edit(changer) {
|
|
137
|
-
const editable = new WriteableBinaryCoStream(this.core);
|
|
138
|
-
changer(editable);
|
|
139
|
-
return new BinaryCoStream(this.core);
|
|
140
|
-
}
|
|
141
197
|
}
|
|
142
|
-
export class
|
|
198
|
+
export class BinaryCoStream extends BinaryCoStreamView {
|
|
143
199
|
/** @internal */
|
|
144
|
-
edit(_changer) {
|
|
145
|
-
throw new Error("Already editing.");
|
|
146
|
-
}
|
|
147
200
|
push(item, privacy = "private") {
|
|
148
201
|
this.core.makeTransaction([item], privacy);
|
|
149
|
-
this.
|
|
202
|
+
return new BinaryCoStream(this.core);
|
|
150
203
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
204
|
+
startBinaryStream(settings, privacy = "private") {
|
|
205
|
+
return this.push({
|
|
206
|
+
type: "start",
|
|
207
|
+
...settings,
|
|
208
|
+
}, privacy);
|
|
156
209
|
}
|
|
210
|
+
pushBinaryStreamChunk(chunk, privacy = "private") {
|
|
211
|
+
// const before = performance.now();
|
|
212
|
+
return this.push({
|
|
213
|
+
type: "chunk",
|
|
214
|
+
chunk: `binary_U${bytesToBase64url(chunk)}`,
|
|
215
|
+
}, privacy);
|
|
216
|
+
// const after = performance.now();
|
|
217
|
+
// console.log(
|
|
218
|
+
// "pushBinaryStreamChunk bandwidth in MB/s",
|
|
219
|
+
// (1000 * chunk.length) / (after - before) / (1024 * 1024)
|
|
220
|
+
// );
|
|
221
|
+
}
|
|
222
|
+
endBinaryStream(privacy = "private") {
|
|
223
|
+
return this.push({
|
|
224
|
+
type: "end",
|
|
225
|
+
}, privacy);
|
|
226
|
+
}
|
|
227
|
+
mutate(mutator) {
|
|
228
|
+
const mutable = new MutableBinaryCoStream(this.core);
|
|
229
|
+
mutator(mutable);
|
|
230
|
+
return new BinaryCoStream(this.core);
|
|
231
|
+
}
|
|
232
|
+
/** @deprecated Use `mutate` instead. */
|
|
233
|
+
edit(mutator) {
|
|
234
|
+
return this.mutate(mutator);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
export class MutableBinaryCoStream extends BinaryCoStreamView {
|
|
157
238
|
/** @internal */
|
|
158
239
|
push(item, privacy = "private") {
|
|
159
|
-
|
|
240
|
+
MutableCoStream.prototype.push.call(this, item, privacy);
|
|
160
241
|
}
|
|
161
242
|
startBinaryStream(settings, privacy = "private") {
|
|
162
243
|
this.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coStream.js","sourceRoot":"","sources":["../../src/coValues/coStream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"coStream.js","sourceRoot":"","sources":["../../src/coValues/coStream.ts"],"names":[],"mappings":"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"}
|
package/dist/crypto.d.ts
CHANGED
|
@@ -29,9 +29,14 @@ export declare function getAgentSignerID(agentId: AgentID): SignerID;
|
|
|
29
29
|
export declare function getAgentSignerSecret(agentSecret: AgentSecret): SignerSecret;
|
|
30
30
|
export declare function getAgentSealerID(agentId: AgentID): SealerID;
|
|
31
31
|
export declare function getAgentSealerSecret(agentSecret: AgentSecret): SealerSecret;
|
|
32
|
-
export declare function seal<T extends JsonValue>(message
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
export declare function seal<T extends JsonValue>({ message, from, to, nOnceMaterial, }: {
|
|
33
|
+
message: T;
|
|
34
|
+
from: SealerSecret;
|
|
35
|
+
to: SealerID;
|
|
36
|
+
nOnceMaterial: {
|
|
37
|
+
in: RawCoID;
|
|
38
|
+
tx: TransactionID;
|
|
39
|
+
};
|
|
35
40
|
}): Sealed<T>;
|
|
36
41
|
export declare function unseal<T extends JsonValue>(sealed: Sealed<T>, sealer: SealerSecret, from: SealerID, nOnceMaterial: {
|
|
37
42
|
in: RawCoID;
|
package/dist/crypto.js
CHANGED
|
@@ -3,7 +3,7 @@ import { xsalsa20_poly1305, xsalsa20 } from "@noble/ciphers/salsa";
|
|
|
3
3
|
import { base58 } from "@scure/base";
|
|
4
4
|
import { randomBytes } from "@noble/ciphers/webcrypto/utils";
|
|
5
5
|
import { base64URLtoBytes, bytesToBase64url } from "./base64url.js";
|
|
6
|
-
import { createBLAKE3 } from
|
|
6
|
+
import { createBLAKE3 } from "hash-wasm";
|
|
7
7
|
import { parseJSON, stableStringify } from "./jsonStringify.js";
|
|
8
8
|
let blake3Instance;
|
|
9
9
|
let blake3HashOnce;
|
|
@@ -11,20 +11,20 @@ let blake3HashOnceWithContext;
|
|
|
11
11
|
let blake3incrementalUpdateSLOW_WITH_DEVTOOLS;
|
|
12
12
|
let blake3digestForState;
|
|
13
13
|
export const cryptoReady = new Promise((resolve) => {
|
|
14
|
-
createBLAKE3().then(bl3 => {
|
|
14
|
+
createBLAKE3().then((bl3) => {
|
|
15
15
|
blake3Instance = bl3;
|
|
16
16
|
blake3HashOnce = (data) => {
|
|
17
|
-
return bl3.init().update(data).digest(
|
|
17
|
+
return bl3.init().update(data).digest("binary");
|
|
18
18
|
};
|
|
19
19
|
blake3HashOnceWithContext = (data, { context }) => {
|
|
20
|
-
return bl3.init().update(context).update(data).digest(
|
|
20
|
+
return bl3.init().update(context).update(data).digest("binary");
|
|
21
21
|
};
|
|
22
22
|
blake3incrementalUpdateSLOW_WITH_DEVTOOLS = (state, data) => {
|
|
23
23
|
bl3.load(state).update(data);
|
|
24
24
|
return bl3.save();
|
|
25
25
|
};
|
|
26
26
|
blake3digestForState = (state) => {
|
|
27
|
-
return bl3.load(state).digest(
|
|
27
|
+
return bl3.load(state).digest("binary");
|
|
28
28
|
};
|
|
29
29
|
resolve();
|
|
30
30
|
});
|
|
@@ -93,7 +93,7 @@ export function getAgentSealerID(agentId) {
|
|
|
93
93
|
export function getAgentSealerSecret(agentSecret) {
|
|
94
94
|
return agentSecret.split("/")[0];
|
|
95
95
|
}
|
|
96
|
-
export function seal(message, from, to, nOnceMaterial) {
|
|
96
|
+
export function seal({ message, from, to, nOnceMaterial, }) {
|
|
97
97
|
const nOnce = blake3HashOnce(textEncoder.encode(stableStringify(nOnceMaterial))).slice(0, 24);
|
|
98
98
|
const sealerPub = base58.decode(to.substring("sealer_z".length));
|
|
99
99
|
const senderPriv = base58.decode(from.substring("sealerSecret_z".length));
|
package/dist/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAe,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE7E,IAAI,cAAwD,CAAC;AAC7D,IAAI,cAAgD,CAAC;AACrD,IAAI,
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/dist/group.d.ts
CHANGED
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import { CoID,
|
|
1
|
+
import { CoID, CoValue, AnyCoValue, AnyCoMap, AnyCoList } from "./coValue.js";
|
|
2
2
|
import { CoMap } from "./coValues/coMap.js";
|
|
3
3
|
import { JsonObject, JsonValue } from "./jsonValue.js";
|
|
4
4
|
import { Encrypted, KeyID, KeySecret, Sealed } from "./crypto.js";
|
|
5
|
-
import { LocalNode } from "./
|
|
5
|
+
import { LocalNode } from "./localNode.js";
|
|
6
6
|
import { AgentID, SessionID } from "./ids.js";
|
|
7
7
|
import { AccountID, GeneralizedControlledAccount, Profile } from "./account.js";
|
|
8
8
|
import { Role } from "./permissions.js";
|
|
9
|
-
import { CoList } from "./coValues/coList.js";
|
|
10
9
|
import { BinaryCoStream, BinaryCoStreamMeta, CoStream } from "./coValues/coStream.js";
|
|
11
10
|
export type GroupContent = {
|
|
12
|
-
profile
|
|
11
|
+
profile?: CoID<Profile> | null;
|
|
13
12
|
[key: AccountID | AgentID]: Role;
|
|
14
|
-
readKey
|
|
13
|
+
readKey?: KeyID;
|
|
15
14
|
[revelationFor: `${KeyID}_for_${AccountID | AgentID}`]: Sealed<KeySecret>;
|
|
16
15
|
[oldKeyForNewKey: `${KeyID}_for_${KeyID}`]: Encrypted<KeySecret, {
|
|
17
16
|
encryptedID: KeyID;
|
|
18
17
|
encryptingID: KeyID;
|
|
19
18
|
}>;
|
|
20
19
|
};
|
|
21
|
-
export declare function expectGroupContent(content:
|
|
20
|
+
export declare function expectGroupContent(content: CoValue): CoMap<GroupContent, JsonObject | null>;
|
|
22
21
|
/** A `Group` is a scope for permissions of its members (`"reader" | "writer" | "admin"`), applying to objects owned by that group.
|
|
23
22
|
*
|
|
24
23
|
* A `Group` object exposes methods for permission management and allows you to create new CoValues owned by that group.
|
|
@@ -41,43 +40,80 @@ export declare function expectGroupContent(content: CoValueImpl): CoMap<GroupCon
|
|
|
41
40
|
* ```
|
|
42
41
|
* */
|
|
43
42
|
export declare class Group {
|
|
43
|
+
/** @category 4. Underlying CoMap */
|
|
44
44
|
underlyingMap: CoMap<GroupContent, JsonObject | null>;
|
|
45
45
|
/** @internal */
|
|
46
46
|
node: LocalNode;
|
|
47
47
|
/** @internal */
|
|
48
48
|
constructor(underlyingMap: CoMap<GroupContent, JsonObject | null>, node: LocalNode);
|
|
49
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Returns the `CoID` of the `Group`.
|
|
51
|
+
*
|
|
52
|
+
* @category 4. Underlying CoMap
|
|
53
|
+
*/
|
|
50
54
|
get id(): CoID<CoMap<GroupContent, JsonObject | null>>;
|
|
51
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Returns the current role of a given account.
|
|
57
|
+
*
|
|
58
|
+
* @category 1. Role reading
|
|
59
|
+
*/
|
|
52
60
|
roleOf(accountID: AccountID): Role | undefined;
|
|
53
61
|
/** @internal */
|
|
54
62
|
roleOfInternal(accountID: AccountID | AgentID): Role | undefined;
|
|
55
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Returns the role of the current account in the group.
|
|
65
|
+
*
|
|
66
|
+
* @category 1. Role reading
|
|
67
|
+
*/
|
|
56
68
|
myRole(): Role | undefined;
|
|
57
|
-
/**
|
|
58
|
-
*
|
|
69
|
+
/**
|
|
70
|
+
* Directly grants a new member a role in the group. The current account must be an
|
|
71
|
+
* admin to be able to do so. Throws otherwise.
|
|
72
|
+
*
|
|
73
|
+
* @category 2. Role changing
|
|
74
|
+
*/
|
|
59
75
|
addMember(accountID: AccountID, role: Role): void;
|
|
60
76
|
/** @internal */
|
|
61
77
|
addMemberInternal(accountID: AccountID | AgentID, role: Role): void;
|
|
62
78
|
/** @internal */
|
|
63
79
|
rotateReadKey(): void;
|
|
64
|
-
/**
|
|
80
|
+
/**
|
|
81
|
+
* Strips the specified member of all roles (preventing future writes in
|
|
65
82
|
* the group and owned values) and rotates the read encryption key for that group
|
|
66
|
-
* (preventing reads of new content in the group and owned values)
|
|
83
|
+
* (preventing reads of new content in the group and owned values)
|
|
84
|
+
*
|
|
85
|
+
* @category 2. Role changing
|
|
86
|
+
*/
|
|
67
87
|
removeMember(accountID: AccountID): void;
|
|
68
88
|
/** @internal */
|
|
69
89
|
removeMemberInternal(accountID: AccountID | AgentID): void;
|
|
70
|
-
/**
|
|
90
|
+
/**
|
|
91
|
+
* Creates an invite for new members to indirectly join the group,
|
|
92
|
+
* allowing them to grant themselves the specified role with the InviteSecret
|
|
93
|
+
* (a string starting with "inviteSecret_") - use `LocalNode.acceptInvite()` for this purpose.
|
|
94
|
+
*
|
|
95
|
+
* @category 2. Role changing
|
|
96
|
+
*/
|
|
71
97
|
createInvite(role: "reader" | "writer" | "admin"): InviteSecret;
|
|
72
|
-
/**
|
|
73
|
-
*
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
98
|
+
/**
|
|
99
|
+
* Creates a new `CoMap` within this group, with the specified specialized
|
|
100
|
+
* `CoMap` type `M` and optional static metadata.
|
|
101
|
+
*
|
|
102
|
+
* @category 3. Value creation
|
|
103
|
+
*/
|
|
104
|
+
createMap<M extends AnyCoMap>(init?: {
|
|
105
|
+
[K in keyof M["_shape"]]: M["_shape"][K] extends AnyCoValue ? M["_shape"][K] | CoID<M["_shape"][K]> : M["_shape"][K];
|
|
106
|
+
}, meta?: M["meta"], initPrivacy?: "trusting" | "private"): M;
|
|
107
|
+
/**
|
|
108
|
+
* Creates a new `CoList` within this group, with the specified specialized
|
|
109
|
+
* `CoList` type `L` and optional static metadata.
|
|
110
|
+
*
|
|
111
|
+
* @category 3. Value creation
|
|
112
|
+
*/
|
|
113
|
+
createList<L extends AnyCoList>(init?: (L["_item"] extends CoValue ? CoID<L["_item"]> | L["_item"] : L["_item"])[], meta?: L["meta"], initPrivacy?: "trusting" | "private"): L;
|
|
114
|
+
/** @category 3. Value creation */
|
|
115
|
+
createStream<C extends CoStream<JsonValue | CoValue, JsonObject | null>>(meta?: C["meta"]): C;
|
|
116
|
+
/** @category 3. Value creation */
|
|
81
117
|
createBinaryStream<C extends BinaryCoStream<BinaryCoStreamMeta>>(meta?: C["meta"]): C;
|
|
82
118
|
/** @internal */
|
|
83
119
|
testWithDifferentAccount(account: GeneralizedControlledAccount, sessionId: SessionID): Group;
|