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
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { MutableCoList } from "../coValues/coList.js";
|
|
2
|
+
import { CoValueCore } from "../coValueCore.js";
|
|
3
|
+
import { Group } from "../group.js";
|
|
4
|
+
import { AnyCoList, CoID, CoValue } from "../coValue.js";
|
|
5
|
+
import { TransactionID } from "../ids.js";
|
|
6
|
+
import { QueriedAccountAndProfile } from "./queriedCoMap.js";
|
|
7
|
+
import { ValueOrSubQueried, QueryContext } from "../queries.js";
|
|
8
|
+
export declare class QueriedCoList<L extends AnyCoList> extends Array<ValueOrSubQueried<L["_item"]>> {
|
|
9
|
+
coList: L;
|
|
10
|
+
id: CoID<L>;
|
|
11
|
+
type: "colist";
|
|
12
|
+
/** @internal */
|
|
13
|
+
constructor(coList: L, queryContext: QueryContext);
|
|
14
|
+
get meta(): L["meta"];
|
|
15
|
+
get group(): Group;
|
|
16
|
+
get core(): CoValueCore;
|
|
17
|
+
append(item: L["_item"] extends CoValue ? L["_item"] | CoID<L["_item"]> : L["_item"], after?: number, privacy?: "private" | "trusting"): L;
|
|
18
|
+
prepend(item: L["_item"] extends CoValue ? L["_item"] | CoID<L["_item"]> : L["_item"], before?: number, privacy?: "private" | "trusting"): L;
|
|
19
|
+
delete(at: number, privacy: "private" | "trusting"): L;
|
|
20
|
+
mutate(mutator: (mutable: MutableCoList<L["_item"], L["meta"]>) => void): L;
|
|
21
|
+
edits: {
|
|
22
|
+
by?: QueriedAccountAndProfile;
|
|
23
|
+
tx: TransactionID;
|
|
24
|
+
at: Date;
|
|
25
|
+
value: L["_item"] extends CoValue ? CoID<L["_item"]> : Exclude<L["_item"], CoValue>;
|
|
26
|
+
}[];
|
|
27
|
+
deletions: {
|
|
28
|
+
by?: QueriedAccountAndProfile;
|
|
29
|
+
tx: TransactionID;
|
|
30
|
+
at: Date;
|
|
31
|
+
}[];
|
|
32
|
+
/** @internal */
|
|
33
|
+
static isArray(arg: any): arg is any[];
|
|
34
|
+
/** @internal */
|
|
35
|
+
static from<T>(arrayLike: ArrayLike<T>): T[];
|
|
36
|
+
/** @internal */
|
|
37
|
+
static from<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];
|
|
38
|
+
/** @internal */
|
|
39
|
+
static from<T>(iterable: Iterable<T> | ArrayLike<T>): T[];
|
|
40
|
+
/** @internal */
|
|
41
|
+
static from<T, U>(iterable: Iterable<T> | ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];
|
|
42
|
+
/** @internal */
|
|
43
|
+
static of<T>(..._items: T[]): T[];
|
|
44
|
+
/** @internal */
|
|
45
|
+
pop(): ValueOrSubQueried<L["_item"]> | undefined;
|
|
46
|
+
/** @internal */
|
|
47
|
+
push(..._items: ValueOrSubQueried<L["_item"]>[]): number;
|
|
48
|
+
/** @internal */
|
|
49
|
+
concat(..._items: ConcatArray<ValueOrSubQueried<L["_item"]>>[]): ValueOrSubQueried<L["_item"]>[];
|
|
50
|
+
/** @internal */
|
|
51
|
+
concat(..._items: (ValueOrSubQueried<L["_item"]> | ConcatArray<ValueOrSubQueried<L["_item"]>>)[]): ValueOrSubQueried<L["_item"]>[];
|
|
52
|
+
/** @internal */
|
|
53
|
+
reverse(): ValueOrSubQueried<L["_item"]>[];
|
|
54
|
+
/** @internal */
|
|
55
|
+
shift(): ValueOrSubQueried<L["_item"]> | undefined;
|
|
56
|
+
/** @internal */
|
|
57
|
+
sort(_compareFn?: ((a: ValueOrSubQueried<L["_item"]>, b: ValueOrSubQueried<L["_item"]>) => number) | undefined): this;
|
|
58
|
+
/** @internal */
|
|
59
|
+
splice(_start: number, _deleteCount?: number | undefined): ValueOrSubQueried<L["_item"]>[];
|
|
60
|
+
/** @internal */
|
|
61
|
+
unshift(..._items: ValueOrSubQueried<L["_item"]>[]): number;
|
|
62
|
+
/** @internal */
|
|
63
|
+
fill(_value: ValueOrSubQueried<L["_item"]>, _start?: number | undefined, _end?: number | undefined): this;
|
|
64
|
+
/** @internal */
|
|
65
|
+
copyWithin(_target: number, _start: number, _end?: number | undefined): this;
|
|
66
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { CoList } from "../coValues/coList.js";
|
|
2
|
+
import { isAccountID } from "../account.js";
|
|
3
|
+
export class QueriedCoList extends Array {
|
|
4
|
+
/** @internal */
|
|
5
|
+
constructor(coList, queryContext) {
|
|
6
|
+
if (!(coList instanceof CoList)) {
|
|
7
|
+
// this might be called from an intrinsic, like map, trying to create an empty array
|
|
8
|
+
// passing `0` as the only parameter
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
|
+
return new Array(coList);
|
|
11
|
+
}
|
|
12
|
+
super(...coList
|
|
13
|
+
.asArray()
|
|
14
|
+
.map((item) => queryContext.resolveValue(item)));
|
|
15
|
+
Object.defineProperties(this, {
|
|
16
|
+
coList: { value: coList },
|
|
17
|
+
id: { value: coList.id },
|
|
18
|
+
type: { value: "colist" },
|
|
19
|
+
edits: {
|
|
20
|
+
value: [...this.keys()].map((i) => {
|
|
21
|
+
const edit = coList.editAt(i);
|
|
22
|
+
return {
|
|
23
|
+
by: edit.by && isAccountID(edit.by)
|
|
24
|
+
? queryContext.resolveAccount(edit.by)
|
|
25
|
+
: undefined,
|
|
26
|
+
tx: edit.tx,
|
|
27
|
+
at: new Date(edit.at),
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
value: queryContext.resolveValue(edit.value),
|
|
30
|
+
};
|
|
31
|
+
}),
|
|
32
|
+
},
|
|
33
|
+
deletions: {
|
|
34
|
+
value: coList.deletionEdits().map((deletion) => ({
|
|
35
|
+
by: deletion.by && isAccountID(deletion.by)
|
|
36
|
+
? queryContext.resolveAccount(deletion.by)
|
|
37
|
+
: undefined,
|
|
38
|
+
tx: deletion.tx,
|
|
39
|
+
at: new Date(deletion.at),
|
|
40
|
+
})),
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
get meta() {
|
|
45
|
+
return this.coList.meta;
|
|
46
|
+
}
|
|
47
|
+
get group() {
|
|
48
|
+
return this.coList.group;
|
|
49
|
+
}
|
|
50
|
+
get core() {
|
|
51
|
+
return this.coList.core;
|
|
52
|
+
}
|
|
53
|
+
append(item, after, privacy) {
|
|
54
|
+
return this.coList.append(item, after, privacy);
|
|
55
|
+
}
|
|
56
|
+
prepend(item, before, privacy) {
|
|
57
|
+
return this.coList.prepend(item, before, privacy);
|
|
58
|
+
}
|
|
59
|
+
delete(at, privacy) {
|
|
60
|
+
return this.coList.delete(at, privacy);
|
|
61
|
+
}
|
|
62
|
+
mutate(mutator) {
|
|
63
|
+
return this.coList.mutate(mutator);
|
|
64
|
+
}
|
|
65
|
+
/** @internal */
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
|
+
static isArray(arg) {
|
|
68
|
+
return Array.isArray(arg);
|
|
69
|
+
}
|
|
70
|
+
/** @internal */
|
|
71
|
+
static from(_iterable, _mapfn, _thisArg) {
|
|
72
|
+
throw new Error("Array method 'from' not supported on QueriedCoList");
|
|
73
|
+
}
|
|
74
|
+
/** @internal */
|
|
75
|
+
static of(..._items) {
|
|
76
|
+
throw new Error("Array method 'of' not supported on QueriedCoList");
|
|
77
|
+
}
|
|
78
|
+
/** @internal */
|
|
79
|
+
pop() {
|
|
80
|
+
throw new Error("Array method 'pop' not supported on QueriedCoList");
|
|
81
|
+
}
|
|
82
|
+
/** @internal */
|
|
83
|
+
push(..._items) {
|
|
84
|
+
throw new Error("Array method 'push' not supported on QueriedCoList");
|
|
85
|
+
}
|
|
86
|
+
/** @internal */
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
88
|
+
concat(..._items) {
|
|
89
|
+
throw new Error("Array method 'concat' not supported on QueriedCoList");
|
|
90
|
+
}
|
|
91
|
+
/** @internal */
|
|
92
|
+
reverse() {
|
|
93
|
+
throw new Error("Array method 'reverse' not supported on QueriedCoList");
|
|
94
|
+
}
|
|
95
|
+
/** @internal */
|
|
96
|
+
shift() {
|
|
97
|
+
throw new Error("Array method 'shift' not supported on QueriedCoList");
|
|
98
|
+
}
|
|
99
|
+
/** @internal */
|
|
100
|
+
sort(_compareFn) {
|
|
101
|
+
throw new Error("Array method 'sort' not supported on QueriedCoList");
|
|
102
|
+
}
|
|
103
|
+
/** @internal */
|
|
104
|
+
splice(_start, _deleteCount) {
|
|
105
|
+
throw new Error("Array method 'splice' not supported on QueriedCoList");
|
|
106
|
+
}
|
|
107
|
+
/** @internal */
|
|
108
|
+
unshift(..._items) {
|
|
109
|
+
throw new Error("Array method 'unshift' not supported on QueriedCoList");
|
|
110
|
+
}
|
|
111
|
+
/** @internal */
|
|
112
|
+
fill(_value, _start, _end) {
|
|
113
|
+
throw new Error("Array method 'fill' not supported on QueriedCoList");
|
|
114
|
+
}
|
|
115
|
+
/** @internal */
|
|
116
|
+
copyWithin(_target, _start, _end) {
|
|
117
|
+
throw new Error("Array method 'copyWithin' not supported on QueriedCoList");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=queriedCoList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queriedCoList.js","sourceRoot":"","sources":["../../src/queriedCoValues/queriedCoList.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { MutableCoMap } from "../coValues/coMap.js";
|
|
2
|
+
import { CoValueCore } from "../coValueCore.js";
|
|
3
|
+
import { Group } from "../group.js";
|
|
4
|
+
import { AccountID, Profile } from "../account.js";
|
|
5
|
+
import { AnyCoMap, CoID, CoValue } from "../coValue.js";
|
|
6
|
+
import { TransactionID } from "../ids.js";
|
|
7
|
+
import { ValueOrSubQueried, QueryContext } from "../queries.js";
|
|
8
|
+
export type QueriedCoMap<M extends AnyCoMap> = {
|
|
9
|
+
[K in keyof M["_shape"] & string]: ValueOrSubQueried<M["_shape"][K]>;
|
|
10
|
+
} & QueriedCoMapBase<M>;
|
|
11
|
+
export type QueriedCoMapEdit<M extends AnyCoMap, K extends keyof M["_shape"]> = {
|
|
12
|
+
by?: QueriedAccountAndProfile;
|
|
13
|
+
tx: TransactionID;
|
|
14
|
+
at: Date;
|
|
15
|
+
value: M["_shape"][K] extends CoValue ? CoID<M["_shape"][K]> : Exclude<M["_shape"][K], CoValue>;
|
|
16
|
+
};
|
|
17
|
+
export declare class QueriedCoMapBase<M extends AnyCoMap> {
|
|
18
|
+
coMap: M;
|
|
19
|
+
id: CoID<M>;
|
|
20
|
+
type: "comap";
|
|
21
|
+
/** @internal */
|
|
22
|
+
static newWithKVPairs<M extends AnyCoMap>(coMap: M, queryContext: QueryContext): QueriedCoMap<M>;
|
|
23
|
+
/** @internal */
|
|
24
|
+
constructor(coMap: M, queryContext: QueryContext);
|
|
25
|
+
edits: {
|
|
26
|
+
[K in keyof M["_shape"] & string]: (QueriedCoMapEdit<M, K> & {
|
|
27
|
+
all: QueriedCoMapEdit<M, K>[];
|
|
28
|
+
}) | undefined;
|
|
29
|
+
};
|
|
30
|
+
get meta(): M["meta"];
|
|
31
|
+
get group(): Group;
|
|
32
|
+
get core(): CoValueCore;
|
|
33
|
+
set<K extends keyof M["_shape"] & string>(key: K, value: M["_shape"][K] extends CoValue ? M["_shape"][K] | CoID<M["_shape"][K]> : M["_shape"][K], privacy?: "private" | "trusting"): M;
|
|
34
|
+
set(kv: {
|
|
35
|
+
[K in keyof M["_shape"] & string]?: M["_shape"][K] extends CoValue ? M["_shape"][K] | CoID<M["_shape"][K]> : M["_shape"][K];
|
|
36
|
+
}, privacy?: "private" | "trusting"): M;
|
|
37
|
+
delete(key: keyof M["_shape"] & string, privacy?: "private" | "trusting"): M;
|
|
38
|
+
mutate(mutator: (mutable: MutableCoMap<M["_shape"], M["meta"]>) => void): M;
|
|
39
|
+
}
|
|
40
|
+
export type QueriedAccountAndProfile = {
|
|
41
|
+
profile?: {
|
|
42
|
+
name?: string;
|
|
43
|
+
id: CoID<Profile>;
|
|
44
|
+
};
|
|
45
|
+
isMe?: boolean;
|
|
46
|
+
id: AccountID;
|
|
47
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { isAccountID } from "../account.js";
|
|
2
|
+
export class QueriedCoMapBase {
|
|
3
|
+
/** @internal */
|
|
4
|
+
static newWithKVPairs(coMap, queryContext) {
|
|
5
|
+
const kv = {};
|
|
6
|
+
if (coMap.meta?.type === "account") {
|
|
7
|
+
const profileID = coMap.get("profile");
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
+
kv.profile =
|
|
10
|
+
profileID && queryContext.resolveValue(profileID);
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
kv.isMe =
|
|
13
|
+
coMap.id ===
|
|
14
|
+
queryContext.node.account.id;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
for (const key of coMap.keys()) {
|
|
18
|
+
const value = coMap.get(key);
|
|
19
|
+
if (value === undefined)
|
|
20
|
+
continue;
|
|
21
|
+
kv[key] = queryContext.resolveValue(value
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return Object.assign(new QueriedCoMapBase(coMap, queryContext), kv);
|
|
27
|
+
}
|
|
28
|
+
/** @internal */
|
|
29
|
+
constructor(coMap, queryContext) {
|
|
30
|
+
Object.defineProperties(this, {
|
|
31
|
+
coMap: { value: coMap, enumerable: false },
|
|
32
|
+
id: { value: coMap.id, enumerable: false },
|
|
33
|
+
type: { value: "comap", enumerable: false },
|
|
34
|
+
edits: {
|
|
35
|
+
value: Object.fromEntries(coMap.keys().flatMap((key) => {
|
|
36
|
+
const edits = [...coMap.editsAt(key)].map((edit) => ({
|
|
37
|
+
by: edit.by && isAccountID(edit.by)
|
|
38
|
+
? queryContext.resolveAccount(edit.by)
|
|
39
|
+
: undefined,
|
|
40
|
+
tx: edit.tx,
|
|
41
|
+
at: new Date(edit.at),
|
|
42
|
+
value: edit.value &&
|
|
43
|
+
queryContext.resolveValue(edit.value),
|
|
44
|
+
}));
|
|
45
|
+
const lastEdit = edits[edits.length - 1];
|
|
46
|
+
if (!lastEdit)
|
|
47
|
+
return [];
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
|
+
const editsAtKey = {
|
|
50
|
+
by: lastEdit.by,
|
|
51
|
+
tx: lastEdit.tx,
|
|
52
|
+
at: lastEdit.at,
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
|
+
value: lastEdit.value,
|
|
55
|
+
all: edits,
|
|
56
|
+
};
|
|
57
|
+
return [[key, editsAtKey]];
|
|
58
|
+
})),
|
|
59
|
+
enumerable: false,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
get meta() {
|
|
64
|
+
return this.coMap.meta;
|
|
65
|
+
}
|
|
66
|
+
get group() {
|
|
67
|
+
return this.coMap.group;
|
|
68
|
+
}
|
|
69
|
+
get core() {
|
|
70
|
+
return this.coMap.core;
|
|
71
|
+
}
|
|
72
|
+
set(...args) {
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
74
|
+
return this.coMap.set(...args);
|
|
75
|
+
}
|
|
76
|
+
delete(key, privacy) {
|
|
77
|
+
return this.coMap.delete(key, privacy);
|
|
78
|
+
}
|
|
79
|
+
mutate(mutator) {
|
|
80
|
+
return this.coMap.mutate(mutator);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=queriedCoMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queriedCoMap.js","sourceRoot":"","sources":["../../src/queriedCoValues/queriedCoMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { JsonValue } from "../jsonValue.js";
|
|
2
|
+
import { MutableCoStream } from "../coValues/coStream.js";
|
|
3
|
+
import { CoValueCore } from "../coValueCore.js";
|
|
4
|
+
import { Group } from "../group.js";
|
|
5
|
+
import { AccountID } from "../account.js";
|
|
6
|
+
import { AnyCoStream, CoID, CoValue } from "../coValue.js";
|
|
7
|
+
import { SessionID, TransactionID } from "../ids.js";
|
|
8
|
+
import { QueriedAccountAndProfile } from "./queriedCoMap.js";
|
|
9
|
+
import { ValueOrSubQueried, QueryContext } from "../queries.js";
|
|
10
|
+
export type QueriedCoStreamItems<Item extends JsonValue | CoValue> = {
|
|
11
|
+
last?: ValueOrSubQueried<Item>;
|
|
12
|
+
by?: QueriedAccountAndProfile;
|
|
13
|
+
tx?: TransactionID;
|
|
14
|
+
at?: Date;
|
|
15
|
+
all: {
|
|
16
|
+
value: ValueOrSubQueried<Item>;
|
|
17
|
+
by?: QueriedAccountAndProfile;
|
|
18
|
+
tx: TransactionID;
|
|
19
|
+
at: Date;
|
|
20
|
+
}[];
|
|
21
|
+
};
|
|
22
|
+
export declare class QueriedCoStream<S extends AnyCoStream> {
|
|
23
|
+
coStream: S;
|
|
24
|
+
id: CoID<S>;
|
|
25
|
+
type: "costream";
|
|
26
|
+
/** @internal */
|
|
27
|
+
constructor(coStream: S, queryContext: QueryContext);
|
|
28
|
+
get meta(): S["meta"];
|
|
29
|
+
get group(): Group;
|
|
30
|
+
get core(): CoValueCore;
|
|
31
|
+
me?: QueriedCoStreamItems<S["_item"]>;
|
|
32
|
+
perAccount: {
|
|
33
|
+
[account: AccountID]: QueriedCoStreamItems<S["_item"]>;
|
|
34
|
+
};
|
|
35
|
+
perSession: {
|
|
36
|
+
[session: SessionID]: QueriedCoStreamItems<S["_item"]>;
|
|
37
|
+
};
|
|
38
|
+
push(item: S["_item"] extends CoValue ? S["_item"] | CoID<S["_item"]> : S["_item"], privacy?: "private" | "trusting"): S;
|
|
39
|
+
mutate(mutator: (mutable: MutableCoStream<S["_item"], S["meta"]>) => void): S;
|
|
40
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { isAccountID } from "../account.js";
|
|
2
|
+
export class QueriedCoStream {
|
|
3
|
+
/** @internal */
|
|
4
|
+
constructor(coStream, queryContext) {
|
|
5
|
+
this.type = "costream";
|
|
6
|
+
this.coStream = coStream;
|
|
7
|
+
this.id = coStream.id;
|
|
8
|
+
this.perSession = Object.fromEntries(coStream.sessions().map((sessionID) => {
|
|
9
|
+
const items = [...coStream.itemsIn(sessionID)].map((item) => ({
|
|
10
|
+
by: item.by && isAccountID(item.by)
|
|
11
|
+
? queryContext.resolveAccount(item.by)
|
|
12
|
+
: undefined,
|
|
13
|
+
tx: item.tx,
|
|
14
|
+
at: new Date(item.at),
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
value: queryContext.resolveValue(item.value),
|
|
17
|
+
}));
|
|
18
|
+
const lastItem = items[items.length - 1];
|
|
19
|
+
return [
|
|
20
|
+
sessionID,
|
|
21
|
+
{
|
|
22
|
+
last: lastItem?.value,
|
|
23
|
+
by: lastItem?.by,
|
|
24
|
+
tx: lastItem?.tx,
|
|
25
|
+
at: lastItem?.at,
|
|
26
|
+
all: items,
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
}));
|
|
30
|
+
this.perAccount = Object.fromEntries([...coStream.accounts()].map((accountID) => {
|
|
31
|
+
const items = [...coStream.itemsBy(accountID)].map((item) => ({
|
|
32
|
+
by: item.by && isAccountID(item.by)
|
|
33
|
+
? queryContext.resolveAccount(item.by)
|
|
34
|
+
: undefined,
|
|
35
|
+
tx: item.tx,
|
|
36
|
+
at: new Date(item.at),
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
value: queryContext.resolveValue(item.value),
|
|
39
|
+
}));
|
|
40
|
+
const lastItem = items[items.length - 1];
|
|
41
|
+
return [
|
|
42
|
+
accountID,
|
|
43
|
+
{
|
|
44
|
+
last: lastItem?.value,
|
|
45
|
+
by: lastItem?.by,
|
|
46
|
+
tx: lastItem?.tx,
|
|
47
|
+
at: lastItem?.at,
|
|
48
|
+
all: items,
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
}));
|
|
52
|
+
this.me = isAccountID(queryContext.node.account.id)
|
|
53
|
+
? this.perAccount[queryContext.node.account.id]
|
|
54
|
+
: undefined;
|
|
55
|
+
}
|
|
56
|
+
get meta() {
|
|
57
|
+
return this.coStream.meta;
|
|
58
|
+
}
|
|
59
|
+
get group() {
|
|
60
|
+
return this.coStream.group;
|
|
61
|
+
}
|
|
62
|
+
get core() {
|
|
63
|
+
return this.coStream.core;
|
|
64
|
+
}
|
|
65
|
+
push(item, privacy) {
|
|
66
|
+
return this.coStream.push(item, privacy);
|
|
67
|
+
}
|
|
68
|
+
mutate(mutator) {
|
|
69
|
+
return this.coStream.mutate(mutator);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=queriedCoStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queriedCoStream.js","sourceRoot":"","sources":["../../src/queriedCoValues/queriedCoStream.ts"],"names":[],"mappings":"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"}
|
package/dist/queries.d.ts
CHANGED
|
@@ -1,114 +1,31 @@
|
|
|
1
1
|
import { JsonValue } from "./jsonValue.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import { LocalNode } from "./node.js";
|
|
12
|
-
export declare const AllReservedQueryProps: readonly ["id", "type", "meta", "core", "group", "shadowed", "edit", "edits"];
|
|
13
|
-
export type ReservedQueryProps = (typeof AllReservedQueryProps)[number];
|
|
14
|
-
export type QueriedCoMap<T extends AnyCoMap> = T extends CoMap<infer M, infer Meta> ? Readonly<{
|
|
15
|
-
[K in keyof M as Exclude<K, ReservedQueryProps>]: ValueOrSubQueried<M[K]>;
|
|
16
|
-
}> & (keyof M & ReservedQueryProps extends never ? {} : Readonly<{
|
|
17
|
-
shadowed: Readonly<{
|
|
18
|
-
[K in keyof M as Extract<K, ReservedQueryProps>]: ValueOrSubQueried<M[K]>;
|
|
19
|
-
}>;
|
|
20
|
-
}>) & Readonly<{
|
|
21
|
-
id: CoID<T>;
|
|
22
|
-
type: "comap";
|
|
23
|
-
edits: Readonly<{
|
|
24
|
-
[K in keyof M & string]: Readonly<{
|
|
25
|
-
by?: QueriedAccountAndProfile;
|
|
26
|
-
at: Date;
|
|
27
|
-
}>;
|
|
28
|
-
}>;
|
|
29
|
-
meta: Meta;
|
|
30
|
-
group: Group;
|
|
31
|
-
core: CoValueCore;
|
|
32
|
-
edit: (changer: (editable: WriteableCoMap<M, Meta>) => void) => T;
|
|
33
|
-
}> : never;
|
|
34
|
-
export type QueriedAccountAndProfile = Readonly<{
|
|
35
|
-
id: AccountID;
|
|
36
|
-
profile?: Readonly<{
|
|
37
|
-
name?: string;
|
|
38
|
-
id: CoID<Profile>;
|
|
39
|
-
}>;
|
|
40
|
-
isMe?: boolean;
|
|
41
|
-
}>;
|
|
42
|
-
export type QueriedCoList<T extends AnyCoList> = T extends CoList<infer I, infer Meta> ? readonly ValueOrSubQueried<I>[] & Readonly<{
|
|
43
|
-
id: CoID<T>;
|
|
44
|
-
type: "colist";
|
|
45
|
-
meta: Meta;
|
|
46
|
-
group: Group;
|
|
47
|
-
core: CoValueCore;
|
|
48
|
-
edit: (changer: (editable: WriteableCoList<I, Meta>) => void) => T;
|
|
49
|
-
edits: readonly Readonly<{
|
|
50
|
-
by?: QueriedAccountAndProfile;
|
|
51
|
-
at: Date;
|
|
52
|
-
}>[] & {};
|
|
53
|
-
}> : never;
|
|
54
|
-
export type QueriedCoStreamItems<I extends JsonValue | CoValue> = Readonly<{
|
|
55
|
-
last: ValueOrSubQueried<I> | undefined;
|
|
56
|
-
by?: QueriedAccountAndProfile;
|
|
57
|
-
at?: Date;
|
|
58
|
-
all: {
|
|
59
|
-
value: ValueOrSubQueried<I>;
|
|
60
|
-
at: Date;
|
|
61
|
-
}[];
|
|
62
|
-
}>;
|
|
63
|
-
export type QueriedCoStream<T extends AnyCoStream> = T extends CoStream<infer I, infer Meta> ? Readonly<{
|
|
64
|
-
id: CoID<T>;
|
|
65
|
-
type: "costream";
|
|
66
|
-
me?: QueriedCoStreamItems<I>;
|
|
67
|
-
perAccount: Readonly<{
|
|
68
|
-
[account: AccountID]: QueriedCoStreamItems<I>;
|
|
69
|
-
}>;
|
|
70
|
-
perSession: Readonly<{
|
|
71
|
-
[session: SessionID]: QueriedCoStreamItems<I>;
|
|
72
|
-
}>;
|
|
73
|
-
meta: Meta;
|
|
74
|
-
group: Group;
|
|
75
|
-
core: CoValueCore;
|
|
76
|
-
edit: (changer: (editable: WriteableCoStream<I, Meta>) => void) => T;
|
|
77
|
-
}> : never;
|
|
78
|
-
export type QueriedBinaryCoStreamItems = Readonly<{
|
|
79
|
-
last: Uint8Array | undefined;
|
|
80
|
-
by: QueriedAccountAndProfile;
|
|
81
|
-
at: Date;
|
|
82
|
-
all: {
|
|
83
|
-
value: Uint8Array;
|
|
84
|
-
at: Date;
|
|
85
|
-
}[];
|
|
86
|
-
}>;
|
|
87
|
-
export type QueriedBinaryCoStream<T extends AnyBinaryCoStream> = T extends BinaryCoStream<infer Meta> ? Readonly<{
|
|
88
|
-
id: CoID<T>;
|
|
89
|
-
type: "costream";
|
|
90
|
-
me?: QueriedBinaryCoStreamItems;
|
|
91
|
-
perAccount: Readonly<{
|
|
92
|
-
[account: AccountID]: QueriedBinaryCoStreamItems;
|
|
93
|
-
}>;
|
|
94
|
-
perSession: Readonly<{
|
|
95
|
-
[session: SessionID]: QueriedBinaryCoStreamItems;
|
|
96
|
-
}>;
|
|
97
|
-
meta: Meta;
|
|
98
|
-
group: Group;
|
|
99
|
-
core: CoValueCore;
|
|
100
|
-
edit: (changer: (editable: WriteableBinaryCoStream<Meta>) => void) => T;
|
|
101
|
-
}> & Readonly<BinaryStreamInfo> : never;
|
|
102
|
-
export type QueriedStatic<T extends AnyStatic> = T extends Static<infer Meta> ? Readonly<{
|
|
103
|
-
id: CoID<T>;
|
|
104
|
-
type: "colist";
|
|
105
|
-
meta: Meta;
|
|
106
|
-
group: Group;
|
|
107
|
-
core: CoValueCore;
|
|
108
|
-
}> : never;
|
|
109
|
-
export type Queried<T extends CoValue> = T extends AnyCoMap ? QueriedCoMap<T> : T extends AnyCoList ? QueriedCoList<T> : T extends AnyCoStream ? QueriedCoStream<T> : T extends AnyStatic ? QueriedStatic<T> : never;
|
|
2
|
+
import { AccountID } from "./account.js";
|
|
3
|
+
import { AnyCoList, AnyCoMap, AnyCoStream, CoID, CoValue } from "./coValue.js";
|
|
4
|
+
import { LocalNode } from "./localNode.js";
|
|
5
|
+
import { QueriedAccountAndProfile, QueriedCoMap } from "./queriedCoValues/queriedCoMap.js";
|
|
6
|
+
import { QueriedCoList } from "./queriedCoValues/queriedCoList.js";
|
|
7
|
+
import { QueriedCoStream } from "./queriedCoValues/queriedCoStream.js";
|
|
8
|
+
export type Queried<T extends CoValue> = T extends AnyCoMap ? QueriedCoMap<T> : T extends AnyCoList ? QueriedCoList<T> : T extends AnyCoStream ? T["meta"] extends {
|
|
9
|
+
type: "binary";
|
|
10
|
+
} ? never : QueriedCoStream<T> : never;
|
|
110
11
|
export type ValueOrSubQueried<V extends JsonValue | CoValue | CoID<CoValue> | undefined> = V extends CoID<infer C> ? Queried<C> | undefined : V extends CoValue ? Queried<V> | undefined : V;
|
|
111
|
-
export
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
12
|
+
export interface CleanupCallbackAndUsable {
|
|
13
|
+
(): void;
|
|
14
|
+
[Symbol.dispose]: () => void;
|
|
15
|
+
}
|
|
16
|
+
export declare class QueryContext {
|
|
17
|
+
values: {
|
|
18
|
+
[id: CoID<CoValue>]: {
|
|
19
|
+
lastQueried: Queried<CoValue> | undefined;
|
|
20
|
+
unsubscribe: () => void;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
node: LocalNode;
|
|
24
|
+
onUpdate: () => void;
|
|
25
|
+
constructor(node: LocalNode, onUpdate: () => void);
|
|
26
|
+
getChildLastQueriedOrSubscribe<T extends CoValue>(valueID: CoID<T>): Queried<T> | undefined;
|
|
27
|
+
resolveAccount(accountID: AccountID): QueriedAccountAndProfile;
|
|
28
|
+
resolveValue<T extends JsonValue>(value: T): T extends CoID<infer C> ? Queried<C> | undefined : T;
|
|
29
|
+
cleanup(): void;
|
|
30
|
+
}
|
|
31
|
+
export declare function query<T extends CoValue>(id: CoID<T>, node: LocalNode, callback: (queried: Queried<T> | undefined) => void, parentContext?: QueryContext): CleanupCallbackAndUsable;
|