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.
Files changed (61) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/dist/account.d.ts +7 -7
  3. package/dist/account.js +2 -2
  4. package/dist/account.js.map +1 -1
  5. package/dist/coValue.d.ts +26 -23
  6. package/dist/coValue.js +14 -0
  7. package/dist/coValue.js.map +1 -1
  8. package/dist/coValueCore.d.ts +6 -6
  9. package/dist/coValueCore.js.map +1 -1
  10. package/dist/coValues/coList.d.ts +22 -22
  11. package/dist/coValues/coList.js +3 -2
  12. package/dist/coValues/coList.js.map +1 -1
  13. package/dist/coValues/coMap.d.ts +29 -35
  14. package/dist/coValues/coMap.js +17 -8
  15. package/dist/coValues/coMap.js.map +1 -1
  16. package/dist/coValues/coStream.d.ts +28 -27
  17. package/dist/coValues/coStream.js +15 -6
  18. package/dist/coValues/coStream.js.map +1 -1
  19. package/dist/coValues/static.d.ts +4 -4
  20. package/dist/coValues/static.js.map +1 -1
  21. package/dist/group.d.ts +8 -6
  22. package/dist/group.js +20 -4
  23. package/dist/group.js.map +1 -1
  24. package/dist/index.d.ts +7 -6
  25. package/dist/index.js.map +1 -1
  26. package/dist/media.d.ts +1 -2
  27. package/dist/node.d.ts +7 -3
  28. package/dist/node.js +37 -7
  29. package/dist/node.js.map +1 -1
  30. package/dist/queries.d.ts +114 -0
  31. package/dist/queries.js +260 -0
  32. package/dist/queries.js.map +1 -0
  33. package/dist/sync.js +3 -1
  34. package/dist/sync.js.map +1 -1
  35. package/dist/{testUtils.d.ts → tests/testUtils.d.ts} +9 -9
  36. package/dist/{testUtils.js → tests/testUtils.js} +7 -5
  37. package/dist/tests/testUtils.js.map +1 -0
  38. package/package.json +2 -2
  39. package/src/account.ts +5 -5
  40. package/src/coValue.ts +54 -28
  41. package/src/coValueCore.ts +6 -6
  42. package/src/coValues/coList.ts +73 -37
  43. package/src/coValues/coMap.ts +134 -68
  44. package/src/coValues/coStream.ts +86 -55
  45. package/src/coValues/static.ts +5 -5
  46. package/src/group.ts +50 -11
  47. package/src/index.ts +10 -8
  48. package/src/media.ts +1 -2
  49. package/src/node.ts +70 -19
  50. package/src/queries.ts +519 -0
  51. package/src/sync.ts +10 -2
  52. package/src/{account.test.ts → tests/account.test.ts} +4 -4
  53. package/src/{coValue.test.ts → tests/coValue.test.ts} +5 -5
  54. package/src/{coValueCore.test.ts → tests/coValueCore.test.ts} +7 -7
  55. package/src/{crypto.test.ts → tests/crypto.test.ts} +3 -3
  56. package/src/{group.test.ts → tests/group.test.ts} +2 -2
  57. package/src/{permissions.test.ts → tests/permissions.test.ts} +5 -5
  58. package/src/tests/queries.test.ts +301 -0
  59. package/src/{sync.test.ts → tests/sync.test.ts} +10 -10
  60. package/src/{testUtils.ts → tests/testUtils.ts} +8 -6
  61. package/dist/testUtils.js.map +0 -1
@@ -1,6 +1,7 @@
1
- import { accountOrAgentIDfromSessionID } from '../coValueCore.js';
2
- import { isAccountID } from '../account.js';
3
- import { parseJSON } from '../jsonStringify.js';
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 (parseJSON(changes)).entries()) {
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 { at: lastEntry.madeAt, txID: lastEntry.txID, value: lastEntry.value };
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({ at: op.madeAt, txID: op.txID, value: undefined });
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":"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"}
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 { CoID, ReadableCoValue, WriteableCoValue } from "../coValue.js";
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 "../index.js";
7
- export type BinaryChunkInfo = {
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
- } & BinaryChunkInfo;
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 declare class CoStream<T extends JsonValue, Meta extends JsonObject | null = null> implements ReadableCoValue {
27
- id: CoID<CoStream<T, Meta>>;
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: (coMap: CoStream<T, Meta>) => void): () => void;
51
- edit(changer: (editable: WriteableCoStream<T, Meta>) => void): CoStream<T, Meta>;
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 ReadableCoValue {
56
- id: CoID<BinaryCoStream<Meta>>;
57
- getBinaryChunks(allowUnfinished?: boolean): (BinaryChunkInfo & {
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): BinaryCoStream<Meta>;
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 WriteableCoValue {
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): CoStream<T, Meta>;
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 WriteableCoValue {
71
+ }> extends BinaryCoStream<Meta> implements CoValue {
71
72
  /** @internal */
72
- edit(_changer: (editable: WriteableBinaryCoStream<Meta>) => void): BinaryCoStream<Meta>;
73
+ edit(_changer: (editable: WriteableBinaryCoStream<Meta>) => void): this;
73
74
  /** @internal */
74
75
  push(item: BinaryStreamItem, privacy?: "private" | "trusting"): void;
75
- startBinaryStream(settings: BinaryChunkInfo, privacy?: "private" | "trusting"): void;
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] || lastItemOfSession.madeAt > result[account].madeAt) {
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]) => [account, item?.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 || lastItemOfSession.madeAt > lastItem.madeAt) {
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]) => [sessionID, items.map(item => item.item)]));
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":"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"}
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, ReadableCoValue } from '../coValue.js';
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 ReadableCoValue {
6
- id: CoID<Static<T>>;
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: (coMap: Static<T>) => void): () => void;
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,EAAqB,CAAC;QACrC,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,SAAqC;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ"}
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, CoValueImpl } from "./coValue.js";
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: CoValueImpl): CoMap<GroupContent, JsonObject | null>;
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>>(meta?: M["meta"]): M;
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
- return this.node
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
- return this.node
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":"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"}
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"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"}
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, ReadableCoValue } from "./coValue.js";
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, CoValueImpl } from "./coValue.js";
16
- import type { BinaryChunkInfo, BinaryCoStreamMeta } from "./coValues/coStream.js";
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 | CoValueImpl;
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, ReadableCoValue, CoValueImpl, CoID, AccountID, Profile, SessionID, Peer, BinaryChunkInfo, BinaryCoStreamMeta, AgentID, AgentSecret, InviteSecret, SyncMessage, Media };
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;AAc/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"}
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}`]: CoID<BinaryCoStream>;
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, CoValueImpl } from "./coValue.js";
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 CoValueImpl>(id: CoID<T>): Promise<T>;
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 CoValueImpl>(groupOrOwnedValueID: CoID<T>, inviteSecret: InviteSecret): Promise<void>;
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 { Account, accountHeaderForInitialAgentSecret, ControlledAccount, AnonymousControlledAccount, } from "./account.js";
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 = groupAsInvite.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
- const profile = accountAsGroup.createMap({
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 = { ...accountAsGroup.underlyingMap.core.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 Account(coValue.getCurrentContent(), this).getCurrentAgentID();
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() {