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.
Files changed (85) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/dist/account.d.ts +8 -8
  3. package/dist/account.js +2 -2
  4. package/dist/account.js.map +1 -1
  5. package/dist/coValue.d.ts +22 -27
  6. package/dist/coValue.js +21 -0
  7. package/dist/coValue.js.map +1 -1
  8. package/dist/coValueCore.d.ts +7 -7
  9. package/dist/coValueCore.js +11 -14
  10. package/dist/coValueCore.js.map +1 -1
  11. package/dist/coValues/coList.d.ts +107 -42
  12. package/dist/coValues/coList.js +163 -72
  13. package/dist/coValues/coList.js.map +1 -1
  14. package/dist/coValues/coMap.d.ts +109 -50
  15. package/dist/coValues/coMap.js +161 -109
  16. package/dist/coValues/coMap.js.map +1 -1
  17. package/dist/coValues/coStream.d.ts +78 -33
  18. package/dist/coValues/coStream.js +134 -53
  19. package/dist/coValues/coStream.js.map +1 -1
  20. package/dist/crypto.d.ts +8 -3
  21. package/dist/crypto.js +6 -6
  22. package/dist/crypto.js.map +1 -1
  23. package/dist/group.d.ts +59 -23
  24. package/dist/group.js +83 -25
  25. package/dist/group.js.map +1 -1
  26. package/dist/index.d.ts +14 -11
  27. package/dist/index.js +8 -8
  28. package/dist/index.js.map +1 -1
  29. package/dist/{node.d.ts → localNode.d.ts} +23 -11
  30. package/dist/{node.js → localNode.js} +80 -42
  31. package/dist/localNode.js.map +1 -0
  32. package/dist/media.d.ts +1 -2
  33. package/dist/permissions.js +6 -3
  34. package/dist/permissions.js.map +1 -1
  35. package/dist/queriedCoValues/queriedCoList.d.ts +66 -0
  36. package/dist/queriedCoValues/queriedCoList.js +120 -0
  37. package/dist/queriedCoValues/queriedCoList.js.map +1 -0
  38. package/dist/queriedCoValues/queriedCoMap.d.ts +47 -0
  39. package/dist/queriedCoValues/queriedCoMap.js +83 -0
  40. package/dist/queriedCoValues/queriedCoMap.js.map +1 -0
  41. package/dist/queriedCoValues/queriedCoStream.d.ts +40 -0
  42. package/dist/queriedCoValues/queriedCoStream.js +72 -0
  43. package/dist/queriedCoValues/queriedCoStream.js.map +1 -0
  44. package/dist/queries.d.ts +31 -0
  45. package/dist/queries.js +77 -0
  46. package/dist/queries.js.map +1 -0
  47. package/dist/sync.d.ts +1 -1
  48. package/dist/sync.js +1 -1
  49. package/dist/sync.js.map +1 -1
  50. package/dist/{testUtils.d.ts → tests/testUtils.d.ts} +9 -9
  51. package/dist/{testUtils.js → tests/testUtils.js} +9 -7
  52. package/dist/tests/testUtils.js.map +1 -0
  53. package/package.json +2 -2
  54. package/src/account.ts +6 -6
  55. package/src/coValue.ts +65 -34
  56. package/src/coValueCore.ts +18 -22
  57. package/src/coValues/coList.ts +272 -122
  58. package/src/coValues/coMap.ts +349 -152
  59. package/src/coValues/coStream.ts +258 -94
  60. package/src/crypto.ts +37 -24
  61. package/src/group.ts +112 -46
  62. package/src/index.ts +42 -30
  63. package/src/{node.ts → localNode.ts} +117 -66
  64. package/src/media.ts +1 -2
  65. package/src/permissions.ts +15 -18
  66. package/src/queriedCoValues/queriedCoList.ts +248 -0
  67. package/src/queriedCoValues/queriedCoMap.ts +180 -0
  68. package/src/queriedCoValues/queriedCoStream.ts +125 -0
  69. package/src/queries.ts +142 -0
  70. package/src/sync.ts +2 -2
  71. package/src/{account.test.ts → tests/account.test.ts} +6 -9
  72. package/src/{coValue.test.ts → tests/coValue.test.ts} +120 -114
  73. package/src/{coValueCore.test.ts → tests/coValueCore.test.ts} +7 -7
  74. package/src/{crypto.test.ts → tests/crypto.test.ts} +19 -21
  75. package/src/{group.test.ts → tests/group.test.ts} +2 -2
  76. package/src/{permissions.test.ts → tests/permissions.test.ts} +260 -247
  77. package/src/tests/queries.test.ts +318 -0
  78. package/src/{sync.test.ts → tests/sync.test.ts} +39 -39
  79. package/src/{testUtils.ts → tests/testUtils.ts} +10 -8
  80. package/dist/coValues/static.d.ts +0 -14
  81. package/dist/coValues/static.js +0 -20
  82. package/dist/coValues/static.js.map +0 -1
  83. package/dist/node.js.map +0 -1
  84. package/dist/testUtils.js.map +0 -1
  85. package/src/coValues/static.ts +0 -31
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}`]: CoID<BinaryCoStream>;
6
+ [res: `${number}x${number}`]: BinaryCoStream;
8
7
  }>;
@@ -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.getAtTime(transactor, tx.madeAt);
136
+ const transactorRoleAtTxTime = groupContent
137
+ .atTime(tx.madeAt)
138
+ .get(transactor);
136
139
  return (transactorRoleAtTxTime === "admin" ||
137
140
  transactorRoleAtTxTime === "writer");
138
141
  })
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -0,0 +1,31 @@
1
+ import { JsonValue } from "./jsonValue.js";
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;
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;
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;
@@ -0,0 +1,77 @@
1
+ import { CoMap } from "./coValues/coMap.js";
2
+ import { CoStream } from "./coValues/coStream.js";
3
+ import { CoList } from "./coValues/coList.js";
4
+ import { QueriedCoMapBase, } from "./queriedCoValues/queriedCoMap.js";
5
+ import { QueriedCoList } from "./queriedCoValues/queriedCoList.js";
6
+ import { QueriedCoStream } from "./queriedCoValues/queriedCoStream.js";
7
+ export class QueryContext {
8
+ constructor(node, onUpdate) {
9
+ this.values = {};
10
+ this.node = node;
11
+ this.onUpdate = onUpdate;
12
+ }
13
+ getChildLastQueriedOrSubscribe(valueID) {
14
+ let value = this.values[valueID];
15
+ if (!value) {
16
+ value = {
17
+ lastQueried: undefined,
18
+ unsubscribe: query(valueID, this.node, (childQueried) => {
19
+ value.lastQueried = childQueried;
20
+ this.onUpdate();
21
+ }),
22
+ };
23
+ this.values[valueID] = value;
24
+ }
25
+ return value.lastQueried;
26
+ }
27
+ resolveAccount(accountID) {
28
+ return this.getChildLastQueriedOrSubscribe(accountID);
29
+ }
30
+ resolveValue(value) {
31
+ return (typeof value === "string" && value.startsWith("co_")
32
+ ? this.getChildLastQueriedOrSubscribe(value)
33
+ : value);
34
+ }
35
+ cleanup() {
36
+ for (const child of Object.values(this.values)) {
37
+ child.unsubscribe();
38
+ }
39
+ }
40
+ }
41
+ export function query(id, node, callback, parentContext) {
42
+ console.log("querying", id);
43
+ const context = parentContext || new QueryContext(node, onUpdate);
44
+ const unsubscribe = node.subscribe(id, (update) => {
45
+ lastRootValue = update;
46
+ onUpdate();
47
+ });
48
+ let lastRootValue;
49
+ function onUpdate() {
50
+ const rootValue = lastRootValue;
51
+ if (rootValue === undefined) {
52
+ return undefined;
53
+ }
54
+ if (rootValue instanceof CoMap) {
55
+ callback(QueriedCoMapBase.newWithKVPairs(rootValue, context));
56
+ }
57
+ else if (rootValue instanceof CoList) {
58
+ callback(new QueriedCoList(rootValue, context));
59
+ }
60
+ else if (rootValue instanceof CoStream) {
61
+ if (rootValue.meta?.type === "binary") {
62
+ // Querying binary string not yet implemented
63
+ return {};
64
+ }
65
+ else {
66
+ callback(new QueriedCoStream(rootValue, context));
67
+ }
68
+ }
69
+ }
70
+ const cleanup = function cleanup() {
71
+ context.cleanup();
72
+ unsubscribe();
73
+ };
74
+ cleanup[Symbol.dispose] = cleanup;
75
+ return cleanup;
76
+ }
77
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"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"}
package/dist/sync.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Signature } from "./crypto.js";
2
2
  import { CoValueHeader, Transaction } from "./coValueCore.js";
3
3
  import { CoValueCore } from "./coValueCore.js";
4
- import { LocalNode } from "./node.js";
4
+ import { LocalNode } from "./localNode.js";
5
5
  import { ReadableStream, WritableStream, WritableStreamDefaultWriter } from "isomorphic-streams";
6
6
  import { RawCoID, SessionID } from "./ids.js";
7
7
  export type CoValueKnownState = {