cojson 0.2.1 → 0.2.3
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 +7 -7
- package/dist/account.js +2 -2
- package/dist/account.js.map +1 -1
- package/dist/coValue.d.ts +26 -23
- package/dist/coValue.js +14 -0
- package/dist/coValue.js.map +1 -1
- package/dist/coValueCore.d.ts +6 -6
- package/dist/coValueCore.js.map +1 -1
- package/dist/coValues/coList.d.ts +22 -22
- package/dist/coValues/coList.js +3 -2
- package/dist/coValues/coList.js.map +1 -1
- package/dist/coValues/coMap.d.ts +29 -35
- package/dist/coValues/coMap.js +17 -8
- package/dist/coValues/coMap.js.map +1 -1
- package/dist/coValues/coStream.d.ts +28 -27
- package/dist/coValues/coStream.js +15 -6
- package/dist/coValues/coStream.js.map +1 -1
- package/dist/coValues/static.d.ts +4 -4
- package/dist/coValues/static.js.map +1 -1
- package/dist/group.d.ts +8 -6
- package/dist/group.js +20 -4
- package/dist/group.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.js.map +1 -1
- package/dist/media.d.ts +1 -2
- package/dist/node.d.ts +7 -3
- package/dist/node.js +37 -7
- package/dist/node.js.map +1 -1
- package/dist/queries.d.ts +114 -0
- package/dist/queries.js +260 -0
- package/dist/queries.js.map +1 -0
- package/dist/sync.js +3 -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} +7 -5
- package/dist/tests/testUtils.js.map +1 -0
- package/package.json +2 -2
- package/src/account.ts +5 -5
- package/src/coValue.ts +54 -28
- package/src/coValueCore.ts +6 -6
- package/src/coValues/coList.ts +73 -37
- package/src/coValues/coMap.ts +134 -68
- package/src/coValues/coStream.ts +86 -55
- package/src/coValues/static.ts +5 -5
- package/src/group.ts +50 -11
- package/src/index.ts +10 -8
- package/src/media.ts +1 -2
- package/src/node.ts +70 -19
- package/src/queries.ts +519 -0
- package/src/sync.ts +10 -2
- package/src/{account.test.ts → tests/account.test.ts} +4 -4
- package/src/{coValue.test.ts → tests/coValue.test.ts} +5 -5
- package/src/{coValueCore.test.ts → tests/coValueCore.test.ts} +7 -7
- package/src/{crypto.test.ts → tests/crypto.test.ts} +3 -3
- package/src/{group.test.ts → tests/group.test.ts} +2 -2
- package/src/{permissions.test.ts → tests/permissions.test.ts} +5 -5
- package/src/tests/queries.test.ts +301 -0
- package/src/{sync.test.ts → tests/sync.test.ts} +10 -10
- package/src/{testUtils.ts → tests/testUtils.ts} +8 -6
- package/dist/testUtils.js.map +0 -1
package/dist/coValues/coMap.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { isCoValue } from "../coValue.js";
|
|
2
|
+
import { accountOrAgentIDfromSessionID } from "../coValueCore.js";
|
|
3
|
+
import { isAccountID } from "../account.js";
|
|
4
|
+
import { parseJSON } from "../jsonStringify.js";
|
|
4
5
|
/** A collaborative map with precise shape `M` and optional static metadata `Meta` */
|
|
5
6
|
export class CoMap {
|
|
6
7
|
/** @internal */
|
|
@@ -20,8 +21,8 @@ export class CoMap {
|
|
|
20
21
|
/** @internal */
|
|
21
22
|
fillOpsFromCoValue() {
|
|
22
23
|
this.ops = {};
|
|
23
|
-
for (const { txID, changes, madeAt } of this.core.getValidSortedTransactions()) {
|
|
24
|
-
for (const [changeIdx, changeUntyped] of
|
|
24
|
+
for (const { txID, changes, madeAt, } of this.core.getValidSortedTransactions()) {
|
|
25
|
+
for (const [changeIdx, changeUntyped] of parseJSON(changes).entries()) {
|
|
25
26
|
const change = changeUntyped;
|
|
26
27
|
let entries = this.ops[change.key];
|
|
27
28
|
if (!entries) {
|
|
@@ -102,7 +103,11 @@ export class CoMap {
|
|
|
102
103
|
return undefined;
|
|
103
104
|
}
|
|
104
105
|
else {
|
|
105
|
-
return {
|
|
106
|
+
return {
|
|
107
|
+
at: lastEntry.madeAt,
|
|
108
|
+
txID: lastEntry.txID,
|
|
109
|
+
value: lastEntry.value,
|
|
110
|
+
};
|
|
106
111
|
}
|
|
107
112
|
}
|
|
108
113
|
getHistory(key) {
|
|
@@ -113,7 +118,11 @@ export class CoMap {
|
|
|
113
118
|
const history = [];
|
|
114
119
|
for (const op of ops) {
|
|
115
120
|
if (op.op === "del") {
|
|
116
|
-
history.push({
|
|
121
|
+
history.push({
|
|
122
|
+
at: op.madeAt,
|
|
123
|
+
txID: op.txID,
|
|
124
|
+
value: undefined,
|
|
125
|
+
});
|
|
117
126
|
}
|
|
118
127
|
else {
|
|
119
128
|
history.push({ at: op.madeAt, txID: op.txID, value: op.value });
|
|
@@ -157,7 +166,7 @@ export class WriteableCoMap extends CoMap {
|
|
|
157
166
|
{
|
|
158
167
|
op: "set",
|
|
159
168
|
key,
|
|
160
|
-
value,
|
|
169
|
+
value: isCoValue(value) ? value.id : value,
|
|
161
170
|
},
|
|
162
171
|
], privacy);
|
|
163
172
|
this.fillOpsFromCoValue();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../src/coValues/coMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../src/coValues/coMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { JsonObject, JsonValue } from "../jsonValue.js";
|
|
2
|
-
import {
|
|
2
|
+
import { CoValue, CoID } from "../coValue.js";
|
|
3
3
|
import { CoValueCore } from "../coValueCore.js";
|
|
4
4
|
import { Group } from "../group.js";
|
|
5
5
|
import { SessionID } from "../ids.js";
|
|
6
|
-
import { AccountID } from "../
|
|
7
|
-
export type
|
|
6
|
+
import { AccountID } from "../account.js";
|
|
7
|
+
export type BinaryStreamInfo = {
|
|
8
8
|
mimeType: string;
|
|
9
9
|
fileName?: string;
|
|
10
10
|
totalSizeBytes?: number;
|
|
11
11
|
};
|
|
12
12
|
export type BinaryStreamStart = {
|
|
13
13
|
type: "start";
|
|
14
|
-
} &
|
|
14
|
+
} & BinaryStreamInfo;
|
|
15
15
|
export type BinaryStreamChunk = {
|
|
16
16
|
type: "chunk";
|
|
17
17
|
chunk: `binary_U${string}`;
|
|
@@ -23,56 +23,57 @@ export type BinaryCoStreamMeta = JsonObject & {
|
|
|
23
23
|
type: "binary";
|
|
24
24
|
};
|
|
25
25
|
export type BinaryStreamItem = BinaryStreamStart | BinaryStreamChunk | BinaryStreamEnd;
|
|
26
|
-
export
|
|
27
|
-
|
|
26
|
+
export type CoStreamItem<T extends JsonValue | CoValue> = {
|
|
27
|
+
item: T extends CoValue ? CoID<T> : Exclude<T, CoValue>;
|
|
28
|
+
madeAt: number;
|
|
29
|
+
};
|
|
30
|
+
export declare class CoStream<T extends JsonValue | CoValue, Meta extends JsonObject | null = null> implements CoValue {
|
|
31
|
+
id: CoID<this>;
|
|
28
32
|
type: "costream";
|
|
29
33
|
core: CoValueCore;
|
|
30
34
|
items: {
|
|
31
|
-
[key: SessionID]:
|
|
32
|
-
item: T;
|
|
33
|
-
madeAt: number;
|
|
34
|
-
}[];
|
|
35
|
+
[key: SessionID]: CoStreamItem<T>[];
|
|
35
36
|
};
|
|
36
37
|
constructor(core: CoValueCore);
|
|
37
38
|
get meta(): Meta;
|
|
38
39
|
get group(): Group;
|
|
39
40
|
/** @internal */
|
|
40
41
|
protected fillFromCoValue(): void;
|
|
41
|
-
getSingleStream(): T[] | undefined;
|
|
42
|
+
getSingleStream(): (T extends CoValue ? CoID<T> : Exclude<T, CoValue>)[] | undefined;
|
|
42
43
|
getLastItemsPerAccount(): {
|
|
43
|
-
[account: AccountID]: T | undefined;
|
|
44
|
+
[account: AccountID]: (T extends CoValue ? CoID<T> : Exclude<T, CoValue>) | undefined;
|
|
44
45
|
};
|
|
45
|
-
getLastItemFrom(account: AccountID): T | undefined;
|
|
46
|
-
getLastItemFromMe(): T | undefined;
|
|
46
|
+
getLastItemFrom(account: AccountID): (T extends CoValue ? CoID<T> : Exclude<T, CoValue>) | undefined;
|
|
47
|
+
getLastItemFromMe(): (T extends CoValue ? CoID<T> : Exclude<T, CoValue>) | undefined;
|
|
47
48
|
toJSON(): {
|
|
48
|
-
[key: SessionID]: T[];
|
|
49
|
+
[key: SessionID]: (T extends CoValue ? CoID<T> : Exclude<T, CoValue>)[];
|
|
49
50
|
};
|
|
50
|
-
subscribe(listener: (
|
|
51
|
-
edit(changer: (editable: WriteableCoStream<T, Meta>) => void):
|
|
51
|
+
subscribe(listener: (coStream: this) => void): () => void;
|
|
52
|
+
edit(changer: (editable: WriteableCoStream<T, Meta>) => void): this;
|
|
52
53
|
}
|
|
53
54
|
export declare class BinaryCoStream<Meta extends BinaryCoStreamMeta = {
|
|
54
55
|
type: "binary";
|
|
55
|
-
}> extends CoStream<BinaryStreamItem, Meta> implements
|
|
56
|
-
id: CoID<
|
|
57
|
-
getBinaryChunks(allowUnfinished?: boolean): (
|
|
56
|
+
}> extends CoStream<BinaryStreamItem, Meta> implements CoValue {
|
|
57
|
+
id: CoID<this>;
|
|
58
|
+
getBinaryChunks(allowUnfinished?: boolean): (BinaryStreamInfo & {
|
|
58
59
|
chunks: Uint8Array[];
|
|
59
60
|
finished: boolean;
|
|
60
61
|
}) | undefined;
|
|
61
|
-
edit(changer: (editable: WriteableBinaryCoStream<Meta>) => void):
|
|
62
|
+
edit(changer: (editable: WriteableBinaryCoStream<Meta>) => void): this;
|
|
62
63
|
}
|
|
63
|
-
export declare class WriteableCoStream<T extends JsonValue, Meta extends JsonObject | null = null> extends CoStream<T, Meta> implements
|
|
64
|
+
export declare class WriteableCoStream<T extends JsonValue | CoValue, Meta extends JsonObject | null = null> extends CoStream<T, Meta> implements CoValue {
|
|
64
65
|
/** @internal */
|
|
65
|
-
edit(_changer: (editable: WriteableCoStream<T, Meta>) => void):
|
|
66
|
-
push(item: T, privacy?: "private" | "trusting"): void;
|
|
66
|
+
edit(_changer: (editable: WriteableCoStream<T, Meta>) => void): this;
|
|
67
|
+
push(item: T extends CoValue ? T | CoID<T> : T, privacy?: "private" | "trusting"): void;
|
|
67
68
|
}
|
|
68
69
|
export declare class WriteableBinaryCoStream<Meta extends BinaryCoStreamMeta = {
|
|
69
70
|
type: "binary";
|
|
70
|
-
}> extends BinaryCoStream<Meta> implements
|
|
71
|
+
}> extends BinaryCoStream<Meta> implements CoValue {
|
|
71
72
|
/** @internal */
|
|
72
|
-
edit(_changer: (editable: WriteableBinaryCoStream<Meta>) => void):
|
|
73
|
+
edit(_changer: (editable: WriteableBinaryCoStream<Meta>) => void): this;
|
|
73
74
|
/** @internal */
|
|
74
75
|
push(item: BinaryStreamItem, privacy?: "private" | "trusting"): void;
|
|
75
|
-
startBinaryStream(settings:
|
|
76
|
+
startBinaryStream(settings: BinaryStreamInfo, privacy?: "private" | "trusting"): void;
|
|
76
77
|
pushBinaryStreamChunk(chunk: Uint8Array, privacy?: "private" | "trusting"): void;
|
|
77
78
|
endBinaryStream(privacy?: "private" | "trusting"): void;
|
|
78
79
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isCoValue } from "../coValue.js";
|
|
1
2
|
import { accountOrAgentIDfromSessionID } from "../coValueCore.js";
|
|
2
3
|
import { base64URLtoBytes, bytesToBase64url } from "../base64url.js";
|
|
3
4
|
import { isAccountID } from "../account.js";
|
|
@@ -38,7 +39,7 @@ export class CoStream {
|
|
|
38
39
|
else if (Object.keys(this.items).length !== 1) {
|
|
39
40
|
throw new Error("CoStream.getSingleStream() can only be called when there is exactly one stream");
|
|
40
41
|
}
|
|
41
|
-
return Object.values(this.items)[0]?.map(item => item.item);
|
|
42
|
+
return Object.values(this.items)[0]?.map((item) => item.item);
|
|
42
43
|
}
|
|
43
44
|
getLastItemsPerAccount() {
|
|
44
45
|
const result = {};
|
|
@@ -48,12 +49,16 @@ export class CoStream {
|
|
|
48
49
|
continue;
|
|
49
50
|
if (items.length > 0) {
|
|
50
51
|
const lastItemOfSession = items[items.length - 1];
|
|
51
|
-
if (!result[account] ||
|
|
52
|
+
if (!result[account] ||
|
|
53
|
+
lastItemOfSession.madeAt > result[account].madeAt) {
|
|
52
54
|
result[account] = lastItemOfSession;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
|
-
return Object.fromEntries(Object.entries(result).map(([account, item]) => [
|
|
58
|
+
return Object.fromEntries(Object.entries(result).map(([account, item]) => [
|
|
59
|
+
account,
|
|
60
|
+
item?.item,
|
|
61
|
+
]));
|
|
57
62
|
}
|
|
58
63
|
getLastItemFrom(account) {
|
|
59
64
|
let lastItem;
|
|
@@ -61,7 +66,8 @@ export class CoStream {
|
|
|
61
66
|
if (sessionID.startsWith(account)) {
|
|
62
67
|
if (items.length > 0) {
|
|
63
68
|
const lastItemOfSession = items[items.length - 1];
|
|
64
|
-
if (!lastItem ||
|
|
69
|
+
if (!lastItem ||
|
|
70
|
+
lastItemOfSession.madeAt > lastItem.madeAt) {
|
|
65
71
|
lastItem = lastItemOfSession;
|
|
66
72
|
}
|
|
67
73
|
}
|
|
@@ -76,7 +82,10 @@ export class CoStream {
|
|
|
76
82
|
return this.getLastItemFrom(myAccountID);
|
|
77
83
|
}
|
|
78
84
|
toJSON() {
|
|
79
|
-
return Object.fromEntries(Object.entries(this.items).map(([sessionID, items]) => [
|
|
85
|
+
return Object.fromEntries(Object.entries(this.items).map(([sessionID, items]) => [
|
|
86
|
+
sessionID,
|
|
87
|
+
items.map((item) => item.item),
|
|
88
|
+
]));
|
|
80
89
|
}
|
|
81
90
|
subscribe(listener) {
|
|
82
91
|
return this.core.subscribe((content) => {
|
|
@@ -145,7 +154,7 @@ export class WriteableCoStream extends CoStream {
|
|
|
145
154
|
throw new Error("Already editing.");
|
|
146
155
|
}
|
|
147
156
|
push(item, privacy = "private") {
|
|
148
|
-
this.core.makeTransaction([item], privacy);
|
|
157
|
+
this.core.makeTransaction([isCoValue(item) ? item.id : item], privacy);
|
|
149
158
|
this.fillFromCoValue();
|
|
150
159
|
}
|
|
151
160
|
}
|
|
@@ -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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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { JsonObject } from '../jsonValue.js';
|
|
2
|
-
import { CoID,
|
|
2
|
+
import { CoID, CoValue } from '../coValue.js';
|
|
3
3
|
import { CoValueCore } from '../coValueCore.js';
|
|
4
4
|
import { Group } from '../index.js';
|
|
5
|
-
export declare class Static<T extends JsonObject> implements
|
|
6
|
-
id: CoID<
|
|
5
|
+
export declare class Static<T extends JsonObject> implements CoValue {
|
|
6
|
+
id: CoID<this>;
|
|
7
7
|
type: "static";
|
|
8
8
|
core: CoValueCore;
|
|
9
9
|
constructor(core: CoValueCore);
|
|
10
10
|
get meta(): T;
|
|
11
11
|
get group(): Group;
|
|
12
12
|
toJSON(): JsonObject;
|
|
13
|
-
subscribe(_listener: (
|
|
13
|
+
subscribe(_listener: (st: this) => void): () => void;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/coValues/static.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,MAAM;IAKf,YAAY,IAAiB;QAH7B,SAAI,GAAG,QAAiB,CAAC;QAIrB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/coValues/static.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,MAAM;IAKf,YAAY,IAAiB;QAH7B,SAAI,GAAG,QAAiB,CAAC;QAIrB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAgB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAS,CAAC;IACtC,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,MAAM;QACF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,SAA6B;QACnC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"}
|
package/dist/group.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CoID,
|
|
1
|
+
import { CoID, CoValue, AnyCoValue } 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";
|
|
@@ -18,7 +18,7 @@ export type GroupContent = {
|
|
|
18
18
|
encryptingID: KeyID;
|
|
19
19
|
}>;
|
|
20
20
|
};
|
|
21
|
-
export declare function expectGroupContent(content:
|
|
21
|
+
export declare function expectGroupContent(content: CoValue): CoMap<GroupContent, JsonObject | null>;
|
|
22
22
|
/** A `Group` is a scope for permissions of its members (`"reader" | "writer" | "admin"`), applying to objects owned by that group.
|
|
23
23
|
*
|
|
24
24
|
* A `Group` object exposes methods for permission management and allows you to create new CoValues owned by that group.
|
|
@@ -72,12 +72,14 @@ export declare class Group {
|
|
|
72
72
|
/** Creates a new `CoMap` within this group, with the specified specialized
|
|
73
73
|
* `CoMap` type `M` and optional static metadata. */
|
|
74
74
|
createMap<M extends CoMap<{
|
|
75
|
-
[key: string]: JsonValue | undefined;
|
|
76
|
-
}, JsonObject | null>>(
|
|
75
|
+
[key: string]: JsonValue | AnyCoValue | undefined;
|
|
76
|
+
}, JsonObject | null>>(init?: M extends CoMap<infer M, infer _Meta> ? {
|
|
77
|
+
[K in keyof M]: M[K] extends AnyCoValue ? M[K] | CoID<M[K]> : M[K];
|
|
78
|
+
} : never, meta?: M["meta"]): M;
|
|
77
79
|
/** Creates a new `CoList` within this group, with the specified specialized
|
|
78
80
|
* `CoList` type `L` and optional static metadata. */
|
|
79
|
-
createList<L extends CoList<JsonValue, JsonObject | null>>(meta?: L["meta"]): L;
|
|
80
|
-
createStream<C extends CoStream<JsonValue, JsonObject | null>>(meta?: C["meta"]): C;
|
|
81
|
+
createList<L extends CoList<JsonValue | CoValue, JsonObject | null>>(init?: L extends CoList<infer I, infer _Meta> ? (I extends CoValue ? CoID<I> | I : I)[] : never, meta?: L["meta"]): L;
|
|
82
|
+
createStream<C extends CoStream<JsonValue | CoValue, JsonObject | null>>(meta?: C["meta"]): C;
|
|
81
83
|
createBinaryStream<C extends BinaryCoStream<BinaryCoStreamMeta>>(meta?: C["meta"]): C;
|
|
82
84
|
/** @internal */
|
|
83
85
|
testWithDifferentAccount(account: GeneralizedControlledAccount, sessionId: SessionID): Group;
|
package/dist/group.js
CHANGED
|
@@ -135,8 +135,8 @@ export class Group {
|
|
|
135
135
|
}
|
|
136
136
|
/** Creates a new `CoMap` within this group, with the specified specialized
|
|
137
137
|
* `CoMap` type `M` and optional static metadata. */
|
|
138
|
-
createMap(meta) {
|
|
139
|
-
|
|
138
|
+
createMap(init, meta) {
|
|
139
|
+
let map = this.node
|
|
140
140
|
.createCoValue({
|
|
141
141
|
type: "comap",
|
|
142
142
|
ruleset: {
|
|
@@ -147,11 +147,19 @@ export class Group {
|
|
|
147
147
|
...createdNowUnique(),
|
|
148
148
|
})
|
|
149
149
|
.getCurrentContent();
|
|
150
|
+
if (init) {
|
|
151
|
+
map = map.edit((editable) => {
|
|
152
|
+
for (const [key, value] of Object.entries(init)) {
|
|
153
|
+
editable.set(key, value);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
return map;
|
|
150
158
|
}
|
|
151
159
|
/** Creates a new `CoList` within this group, with the specified specialized
|
|
152
160
|
* `CoList` type `L` and optional static metadata. */
|
|
153
|
-
createList(meta) {
|
|
154
|
-
|
|
161
|
+
createList(init, meta) {
|
|
162
|
+
let list = this.node
|
|
155
163
|
.createCoValue({
|
|
156
164
|
type: "colist",
|
|
157
165
|
ruleset: {
|
|
@@ -162,6 +170,14 @@ export class Group {
|
|
|
162
170
|
...createdNowUnique(),
|
|
163
171
|
})
|
|
164
172
|
.getCurrentContent();
|
|
173
|
+
if (init) {
|
|
174
|
+
list = list.edit((editable) => {
|
|
175
|
+
for (const item of init) {
|
|
176
|
+
editable.push(item);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return list;
|
|
165
181
|
}
|
|
166
182
|
createStream(meta) {
|
|
167
183
|
return this.node
|
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":"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;AAmBrC,MAAM,UAAU,kBAAkB,CAC9B,OAAgB;IAEhB,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;KACnC;IAED,OAAO,OAAiD,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;KAoBK;AACL,MAAM,OAAO,KAAK;IAKd,gBAAgB;IAChB,YACI,aAAqD,EACrD,IAAe;QAEf,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,yCAAyC;IACzC,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACjC,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,SAAoB;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,gBAAgB;IAChB,cAAc,CAAC,SAA8B;QACzC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,4DAA4D;IAC5D,MAAM;QACF,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;sDACkD;IAClD,SAAS,CAAC,SAAoB,EAAE,IAAU;QACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,gBAAgB;IAChB,iBAAiB,CAAC,SAA8B,EAAE,IAAU;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACjD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEnE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;aAC/D;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CACvC,SAAS,EACT,6CAA6C,CAChD,CAAC;YAEF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YAErC,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;gBAC7B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;aACzC;YAED,GAAG,CAAC,GAAG,CACH,GAAG,cAAc,CAAC,EAAE,QAAQ,SAAS,EAAE,EACvC,IAAI,CACA,cAAc,CAAC,MAAM,EACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAC1D,gBAAgB,CAAC,KAAK,CAAC,EACvB;gBACI,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;gBAC9B,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE;aAClD,CACJ,EACD,UAAU,CACb,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gBAAgB;IAChB,aAAa;QACT,MAAM,yBAAyB,GAAG,IAAI,CAAC,aAAa;aAC/C,IAAI,EAAE;aACN,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;gBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzC,OAAO,CACH,IAAI,KAAK,OAAO;oBAChB,IAAI,KAAK,QAAQ;oBACjB,IAAI,KAAK,QAAQ,CACpB,CAAC;aACL;iBAAM;gBACH,OAAO,KAAK,CAAC;aAChB;QACL,CAAC,CAA4B,CAAC;QAElC,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAExE,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE;YAC7B,MAAM,IAAI,KAAK,CACX,sDAAsD,CACzD,CAAC;SACL;QAED,MAAM,cAAc,GAAG;YACnB,EAAE,EAAE,mBAAmB,CAAC,EAAE;YAC1B,MAAM,EAAE,mBAAmB,CAAC,MAAM;SACrC,CAAC;QAEF,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QAExC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACjD,KAAK,MAAM,QAAQ,IAAI,yBAAyB,EAAE;gBAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CACxC,QAAQ,EACR,6CAA6C,CAChD,CAAC;gBAEF,GAAG,CAAC,GAAG,CACH,GAAG,UAAU,CAAC,EAAE,QAAQ,QAAQ,EAAE,EAClC,IAAI,CACA,UAAU,CAAC,MAAM,EACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAC1D,gBAAgB,CAAC,MAAM,CAAC,EACxB;oBACI,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBAC9B,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE;iBAClD,CACJ,EACD,UAAU,CACb,CAAC;aACL;YAED,GAAG,CAAC,GAAG,CACH,GAAG,cAAc,CAAC,EAAE,QAAQ,UAAU,CAAC,EAAE,EAAE,EAC3C,gBAAgB,CAAC;gBACb,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,cAAc;aAC5B,CAAC,CAAC,SAAS,EACZ,UAAU,CACb,CAAC;YAEF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;yEAEqE;IACrE,YAAY,CAAC,SAAoB;QAC7B,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IAChB,oBAAoB,CAAC,SAA8B;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACjD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,6OAA6O;IAC7O,YAAY,CAAC,IAAmC;QAC5C,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;QAEzC,MAAM,YAAY,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QAE1C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,IAAI,QAAgB,CAAC,CAAC;QAE1D,OAAO,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED;yDACqD;IACrD,SAAS,CAML,IAMW,EACX,IAAgB;QAEhB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI;aACd,aAAa,CAAC;YACX,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;aAC/B;YACD,IAAI,EAAE,IAAI,IAAI,IAAI;YAClB,GAAG,gBAAgB,EAAE;SACxB,CAAC;aACD,iBAAiB,EAAO,CAAC;QAE9B,IAAI,IAAI,EAAE;YACN,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC7C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAC5B;YACL,CAAC,CAAC,CAAC;SACN;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED;yDACqD;IACrD,UAAU,CACN,IAEW,EACX,IAAgB;QAEhB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;aACf,aAAa,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;aAC/B;YACD,IAAI,EAAE,IAAI,IAAI,IAAI;YAClB,GAAG,gBAAgB,EAAE;SACxB,CAAC;aACD,iBAAiB,EAAO,CAAC;QAE9B,IAAI,IAAI,EAAE;YACN,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;oBACrB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB;YACL,CAAC,CAAC,CAAC;SACN;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY,CACR,IAAgB;QAEhB,OAAO,IAAI,CAAC,IAAI;aACX,aAAa,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;aAC/B;YACD,IAAI,EAAE,IAAI,IAAI,IAAI;YAClB,GAAG,gBAAgB,EAAE;SACxB,CAAC;aACD,iBAAiB,EAAO,CAAC;IAClC,CAAC;IAED,kBAAkB,CACd,OAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE;QAEpC,OAAO,IAAI,CAAC,IAAI;aACX,aAAa,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;aAC/B;YACD,IAAI,EAAE,IAAI;YACV,GAAG,gBAAgB,EAAE;SACxB,CAAC;aACD,iBAAiB,EAAO,CAAC;IAClC,CAAC;IAED,gBAAgB;IAChB,wBAAwB,CACpB,OAAqC,EACrC,SAAoB;QAEpB,OAAO,IAAI,KAAK,CACZ,kBAAkB,CACd,IAAI,CAAC,aAAa,CAAC,IAAI;aAClB,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC;aAC5C,iBAAiB,EAAE,CAC3B,EACD,IAAI,CAAC,IAAI,CACZ,CAAC;IACN,CAAC;CACJ;AAID,SAAS,0BAA0B,CAAC,UAAsB;IACtD,OAAO,iBAAiB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,YAA0B;IACjE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QAC5C,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAC5C;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CoValueCore, newRandomSessionID, MAX_RECOMMENDED_TX_SIZE } from "./coValueCore.js";
|
|
2
2
|
import { LocalNode } from "./node.js";
|
|
3
|
-
import type { CoValue
|
|
3
|
+
import type { CoValue } from "./coValue.js";
|
|
4
4
|
import { CoMap, WriteableCoMap } from "./coValues/coMap.js";
|
|
5
5
|
import { CoList, WriteableCoList } from "./coValues/coList.js";
|
|
6
6
|
import { CoStream, WriteableCoStream, BinaryCoStream, WriteableBinaryCoStream } from "./coValues/coStream.js";
|
|
@@ -12,15 +12,16 @@ import { Group, expectGroupContent } from "./group.js";
|
|
|
12
12
|
import { base64URLtoBytes, bytesToBase64url } from "./base64url.js";
|
|
13
13
|
import { parseJSON } from "./jsonStringify.js";
|
|
14
14
|
import type { SessionID, AgentID } from "./ids.js";
|
|
15
|
-
import type { CoID,
|
|
16
|
-
import type {
|
|
15
|
+
import type { CoID, AnyCoValue } from "./coValue.js";
|
|
16
|
+
import type { Queried } from "./queries.js";
|
|
17
|
+
import type { BinaryStreamInfo, BinaryCoStreamMeta } from "./coValues/coStream.js";
|
|
17
18
|
import type { JsonValue } from "./jsonValue.js";
|
|
18
19
|
import type { SyncMessage, Peer } from "./sync.js";
|
|
19
20
|
import type { AgentSecret } from "./crypto.js";
|
|
20
|
-
import type { AccountID, Profile } from "./account.js";
|
|
21
|
+
import type { AccountID, Account, Profile } from "./account.js";
|
|
21
22
|
import type { InviteSecret } from "./group.js";
|
|
22
23
|
import type * as Media from "./media.js";
|
|
23
|
-
type Value = JsonValue |
|
|
24
|
+
type Value = JsonValue | AnyCoValue;
|
|
24
25
|
/** @hidden */
|
|
25
26
|
export declare const cojsonInternals: {
|
|
26
27
|
agentSecretFromBytes: typeof agentSecretFromBytes;
|
|
@@ -41,7 +42,7 @@ export declare const cojsonInternals: {
|
|
|
41
42
|
parseJSON: typeof parseJSON;
|
|
42
43
|
};
|
|
43
44
|
export { LocalNode, Group, CoMap, WriteableCoMap, CoList, WriteableCoList, CoStream, WriteableCoStream, BinaryCoStream, WriteableBinaryCoStream, CoValueCore, AnonymousControlledAccount, ControlledAccount, cryptoReady as cojsonReady, MAX_RECOMMENDED_TX_SIZE };
|
|
44
|
-
export type { Value, JsonValue, CoValue,
|
|
45
|
+
export type { Value, JsonValue, CoValue, AnyCoValue, CoID, Queried, AccountID, Account, Profile, SessionID, Peer, BinaryStreamInfo, BinaryCoStreamMeta, AgentID, AgentSecret, InviteSecret, SyncMessage, Media };
|
|
45
46
|
export declare namespace CojsonInternalTypes {
|
|
46
47
|
type CoValueKnownState = import("./sync.js").CoValueKnownState;
|
|
47
48
|
type DoneMessage = import("./sync.js").DoneMessage;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACH,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,uBAAuB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACH,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACd,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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACH,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,uBAAuB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACH,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACd,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;AAe/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,cAAc,EACd,MAAM,EACN,eAAe,EACf,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,WAAW,EACX,0BAA0B,EAC1B,iBAAiB,EACjB,WAAW,IAAI,WAAW,EAC1B,uBAAuB,EAC1B,CAAC"}
|
package/dist/media.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { CoMap } from './coValues/coMap.js';
|
|
2
|
-
import { CoID } from './coValue.js';
|
|
3
2
|
import { BinaryCoStream } from './coValues/coStream.js';
|
|
4
3
|
export type ImageDefinition = CoMap<{
|
|
5
4
|
originalSize: [number, number];
|
|
6
5
|
placeholderDataURL?: string;
|
|
7
|
-
[res: `${number}x${number}`]:
|
|
6
|
+
[res: `${number}x${number}`]: BinaryCoStream;
|
|
8
7
|
}>;
|
package/dist/node.d.ts
CHANGED
|
@@ -3,8 +3,10 @@ import { CoValueCore, CoValueHeader } from "./coValueCore.js";
|
|
|
3
3
|
import { InviteSecret, Group } from "./group.js";
|
|
4
4
|
import { Peer, SyncManager } from "./sync.js";
|
|
5
5
|
import { AgentID, RawCoID, SessionID } from "./ids.js";
|
|
6
|
-
import { CoID
|
|
6
|
+
import { CoID } from "./coValue.js";
|
|
7
|
+
import { Queried } from "./queries.js";
|
|
7
8
|
import { GeneralizedControlledAccount, ControlledAccount, AccountID, Profile } from "./account.js";
|
|
9
|
+
import { CoValue } from "./index.js";
|
|
8
10
|
/** A `LocalNode` represents a local view of a set of loaded `CoValue`s, from the perspective of a particular account (or primitive cryptographic agent).
|
|
9
11
|
|
|
10
12
|
A `LocalNode` can have peers that it syncs to, for example some form of local persistence, or a sync server, such as `sync.jazz.tools` (Jazz Global Mesh).
|
|
@@ -42,13 +44,15 @@ export declare class LocalNode {
|
|
|
42
44
|
* promise once a first version has been loaded. See `coValue.subscribe()` and `node.useTelepathicData()`
|
|
43
45
|
* for listening to subsequent updates to the CoValue.
|
|
44
46
|
*/
|
|
45
|
-
load<T extends
|
|
47
|
+
load<T extends CoValue>(id: CoID<T>): Promise<T>;
|
|
48
|
+
subscribe<T extends CoValue>(id: CoID<T>, callback: (update: T) => void): () => void;
|
|
49
|
+
query<T extends CoValue>(id: CoID<T>, callback: (update: Queried<T> | undefined) => void): () => void;
|
|
46
50
|
/**
|
|
47
51
|
* Loads a profile associated with an account. `Profile` is at least a `CoMap<{string: name}>`,
|
|
48
52
|
* but might contain other, app-specific properties.
|
|
49
53
|
*/
|
|
50
54
|
loadProfile(id: AccountID): Promise<Profile>;
|
|
51
|
-
acceptInvite<T extends
|
|
55
|
+
acceptInvite<T extends CoValue>(groupOrOwnedValueID: CoID<T>, inviteSecret: InviteSecret): Promise<void>;
|
|
52
56
|
/** @internal */
|
|
53
57
|
expectCoValueLoaded(id: RawCoID, expectation?: string): CoValueCore;
|
|
54
58
|
/** @internal */
|
package/dist/node.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { agentSecretFromSecretSeed, createdNowUnique, getAgentID, getAgentSealerID, getAgentSealerSecret, newRandomAgentSecret, newRandomKeySecret, seal, } from "./crypto.js";
|
|
2
|
-
import { CoValueCore, newRandomSessionID } from "./coValueCore.js";
|
|
2
|
+
import { CoValueCore, newRandomSessionID, } from "./coValueCore.js";
|
|
3
3
|
import { Group, expectGroupContent, secretSeedFromInviteSecret, } from "./group.js";
|
|
4
4
|
import { SyncManager } from "./sync.js";
|
|
5
5
|
import { isAgentID } from "./ids.js";
|
|
6
|
-
import {
|
|
6
|
+
import { query } from "./queries.js";
|
|
7
|
+
import { AccountGroup, accountHeaderForInitialAgentSecret, ControlledAccount, AnonymousControlledAccount, } from "./account.js";
|
|
7
8
|
/** A `LocalNode` represents a local view of a set of loaded `CoValue`s, from the perspective of a particular account (or primitive cryptographic agent).
|
|
8
9
|
|
|
9
10
|
A `LocalNode` can have peers that it syncs to, for example some form of local persistence, or a sync server, such as `sync.jazz.tools` (Jazz Global Mesh).
|
|
@@ -76,6 +77,27 @@ export class LocalNode {
|
|
|
76
77
|
async load(id) {
|
|
77
78
|
return (await this.loadCoValue(id)).getCurrentContent();
|
|
78
79
|
}
|
|
80
|
+
subscribe(id, callback) {
|
|
81
|
+
let stopped = false;
|
|
82
|
+
let unsubscribe;
|
|
83
|
+
console.log("Subscribing to " + id);
|
|
84
|
+
this.load(id).then((coValue) => {
|
|
85
|
+
if (stopped) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
unsubscribe = coValue.subscribe(callback);
|
|
89
|
+
}).catch((e) => {
|
|
90
|
+
console.error("Error subscribing to ", id, e);
|
|
91
|
+
});
|
|
92
|
+
return () => {
|
|
93
|
+
console.log("Unsubscribing from " + id);
|
|
94
|
+
stopped = true;
|
|
95
|
+
unsubscribe?.();
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
query(id, callback) {
|
|
99
|
+
return query(id, this, callback);
|
|
100
|
+
}
|
|
79
101
|
/**
|
|
80
102
|
* Loads a profile associated with an account. `Profile` is at least a `CoMap<{string: name}>`,
|
|
81
103
|
* but might contain other, app-specific properties.
|
|
@@ -125,7 +147,8 @@ export class LocalNode {
|
|
|
125
147
|
: inviteRole === "writerInvite"
|
|
126
148
|
? "writer"
|
|
127
149
|
: "reader");
|
|
128
|
-
group.underlyingMap.core._sessions =
|
|
150
|
+
group.underlyingMap.core._sessions =
|
|
151
|
+
groupAsInvite.underlyingMap.core.sessions;
|
|
129
152
|
group.underlyingMap.core._cachedContent = undefined;
|
|
130
153
|
for (const groupListener of group.underlyingMap.core.listeners) {
|
|
131
154
|
groupListener(group.underlyingMap.core.getCurrentContent());
|
|
@@ -165,18 +188,25 @@ export class LocalNode {
|
|
|
165
188
|
editable.set("readKey", readKey.id, "trusting");
|
|
166
189
|
});
|
|
167
190
|
const controlledAccount = new ControlledAccount(agentSecret, account.getCurrentContent(), account.node);
|
|
168
|
-
|
|
191
|
+
let profile = accountAsGroup.createMap(undefined, {
|
|
169
192
|
type: "profile",
|
|
170
193
|
});
|
|
171
|
-
profile.edit((editable) => {
|
|
194
|
+
profile = profile.edit((editable) => {
|
|
172
195
|
editable.set("name", name, "trusting");
|
|
173
196
|
});
|
|
174
197
|
accountAsGroup.underlyingMap.edit((editable) => {
|
|
175
198
|
editable.set("profile", profile.id, "trusting");
|
|
176
199
|
});
|
|
177
200
|
const accountOnThisNode = this.expectCoValueLoaded(account.id);
|
|
178
|
-
accountOnThisNode._sessions = {
|
|
201
|
+
accountOnThisNode._sessions = {
|
|
202
|
+
...accountAsGroup.underlyingMap.core.sessions,
|
|
203
|
+
};
|
|
179
204
|
accountOnThisNode._cachedContent = undefined;
|
|
205
|
+
const profileOnThisNode = this.createCoValue(profile.core.header);
|
|
206
|
+
profileOnThisNode._sessions = {
|
|
207
|
+
...profile.core.sessions,
|
|
208
|
+
};
|
|
209
|
+
profileOnThisNode._cachedContent = undefined;
|
|
180
210
|
return controlledAccount;
|
|
181
211
|
}
|
|
182
212
|
/** @internal */
|
|
@@ -192,7 +222,7 @@ export class LocalNode {
|
|
|
192
222
|
coValue.header.meta.type !== "account") {
|
|
193
223
|
throw new Error(`${expectation ? expectation + ": " : ""}CoValue ${id} is not an account`);
|
|
194
224
|
}
|
|
195
|
-
return new
|
|
225
|
+
return new AccountGroup(coValue.getCurrentContent(), this).getCurrentAgentID();
|
|
196
226
|
}
|
|
197
227
|
/** Creates a new group (with the current account as the group's first admin). */
|
|
198
228
|
createGroup() {
|