cojson 0.4.1 → 0.4.6

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 (76) hide show
  1. package/dist/coValue.js +0 -9
  2. package/dist/coValue.js.map +1 -1
  3. package/dist/coValueCore.js +4 -34
  4. package/dist/coValueCore.js.map +1 -1
  5. package/dist/coValues/coList.js +2 -2
  6. package/dist/coValues/coList.js.map +1 -1
  7. package/dist/coValues/coMap.js +2 -2
  8. package/dist/coValues/coMap.js.map +1 -1
  9. package/dist/coValues/coStream.js +2 -2
  10. package/dist/coValues/coStream.js.map +1 -1
  11. package/dist/coValues/group.js.map +1 -1
  12. package/dist/coreToCoValue.js +37 -0
  13. package/dist/coreToCoValue.js.map +1 -0
  14. package/dist/index.js +2 -4
  15. package/dist/index.js.map +1 -1
  16. package/dist/isCoValue.js +10 -0
  17. package/dist/isCoValue.js.map +1 -0
  18. package/dist/localNode.js +1 -14
  19. package/dist/localNode.js.map +1 -1
  20. package/package.json +4 -4
  21. package/src/coValue.ts +11 -19
  22. package/src/coValueCore.ts +2 -25
  23. package/src/coValues/coList.ts +3 -2
  24. package/src/coValues/coMap.ts +3 -2
  25. package/src/coValues/coStream.ts +3 -4
  26. package/src/coValues/group.ts +4 -4
  27. package/src/coreToCoValue.ts +37 -0
  28. package/src/index.ts +16 -16
  29. package/src/isCoValue.ts +16 -0
  30. package/src/localNode.ts +6 -47
  31. package/src/tests/coValue.test.ts +5 -5
  32. package/src/tests/group.test.ts +1 -1
  33. package/dist/base64url.d.ts +0 -2
  34. package/dist/coValue.d.ts +0 -38
  35. package/dist/coValueCore.d.ts +0 -103
  36. package/dist/coValues/account.d.ts +0 -62
  37. package/dist/coValues/coList.d.ts +0 -179
  38. package/dist/coValues/coMap.d.ts +0 -149
  39. package/dist/coValues/coStream.d.ts +0 -123
  40. package/dist/coValues/group.d.ts +0 -111
  41. package/dist/crypto.d.ts +0 -120
  42. package/dist/ids.d.ts +0 -11
  43. package/dist/index.d.ts +0 -67
  44. package/dist/jsonStringify.d.ts +0 -6
  45. package/dist/jsonValue.d.ts +0 -7
  46. package/dist/localNode.d.ts +0 -101
  47. package/dist/media.d.ts +0 -7
  48. package/dist/permissions.d.ts +0 -20
  49. package/dist/queriedCoValues/queriedAccount.d.ts +0 -13
  50. package/dist/queriedCoValues/queriedAccount.js +0 -24
  51. package/dist/queriedCoValues/queriedAccount.js.map +0 -1
  52. package/dist/queriedCoValues/queriedCoList.d.ts +0 -66
  53. package/dist/queriedCoValues/queriedCoList.js +0 -116
  54. package/dist/queriedCoValues/queriedCoList.js.map +0 -1
  55. package/dist/queriedCoValues/queriedCoMap.d.ts +0 -40
  56. package/dist/queriedCoValues/queriedCoMap.js +0 -82
  57. package/dist/queriedCoValues/queriedCoMap.js.map +0 -1
  58. package/dist/queriedCoValues/queriedCoStream.d.ts +0 -36
  59. package/dist/queriedCoValues/queriedCoStream.js +0 -97
  60. package/dist/queriedCoValues/queriedCoStream.js.map +0 -1
  61. package/dist/queriedCoValues/queriedGroup.d.ts +0 -29
  62. package/dist/queriedCoValues/queriedGroup.js +0 -54
  63. package/dist/queriedCoValues/queriedGroup.js.map +0 -1
  64. package/dist/queries.d.ts +0 -62
  65. package/dist/queries.js +0 -142
  66. package/dist/queries.js.map +0 -1
  67. package/dist/streamUtils.d.ts +0 -8
  68. package/dist/sync.d.ts +0 -80
  69. package/dist/tests/testUtils.d.ts +0 -37
  70. package/src/queriedCoValues/queriedAccount.ts +0 -40
  71. package/src/queriedCoValues/queriedCoList.ts +0 -240
  72. package/src/queriedCoValues/queriedCoMap.ts +0 -168
  73. package/src/queriedCoValues/queriedCoStream.ts +0 -151
  74. package/src/queriedCoValues/queriedGroup.ts +0 -90
  75. package/src/queries.ts +0 -263
  76. package/src/tests/queries.test.ts +0 -398
@@ -1,82 +0,0 @@
1
- export class QueriedCoMapBase {
2
- /** @internal */
3
- static newWithKVPairs(coMap, queryContext) {
4
- const kv = {};
5
- for (const key of coMap.keys()) {
6
- const value = coMap.get(key);
7
- if (value === undefined)
8
- continue;
9
- queryContext.defineSubqueryPropertiesIn(kv, {
10
- [key]: { value, enumerable: true },
11
- }, [coMap.id]);
12
- }
13
- return Object.assign(new QueriedCoMapBase(coMap, queryContext), kv);
14
- }
15
- /** @internal */
16
- constructor(coMap, queryContext) {
17
- Object.defineProperties(this, {
18
- coMap: {
19
- get() {
20
- return coMap;
21
- },
22
- enumerable: false,
23
- },
24
- id: { value: coMap.id, enumerable: false },
25
- type: { value: "comap", enumerable: false },
26
- edits: {
27
- value: Object.fromEntries(coMap.keys().flatMap((key) => {
28
- const edits = [...coMap.editsAt(key)].map((edit) => queryContext.defineSubqueryPropertiesIn({
29
- tx: edit.tx,
30
- at: new Date(edit.at),
31
- }, {
32
- by: { value: edit.by, enumerable: true },
33
- value: {
34
- value: edit.value,
35
- enumerable: true,
36
- },
37
- }, [coMap.id]));
38
- const lastEdit = edits[edits.length - 1];
39
- if (!lastEdit)
40
- return [];
41
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
- const editsAtKey = {
43
- by: lastEdit.by,
44
- tx: lastEdit.tx,
45
- at: lastEdit.at,
46
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
- value: lastEdit.value,
48
- all: edits,
49
- };
50
- return [[key, editsAtKey]];
51
- })),
52
- enumerable: false,
53
- },
54
- as: {
55
- value: (extension) => {
56
- return queryContext.getOrCreateExtension(coMap.id, extension);
57
- },
58
- enumerable: false,
59
- },
60
- });
61
- }
62
- get meta() {
63
- return this.coMap.meta;
64
- }
65
- get group() {
66
- return this.coMap.group;
67
- }
68
- get core() {
69
- return this.coMap.core;
70
- }
71
- set(...args) {
72
- // eslint-disable-next-line @typescript-eslint/ban-types
73
- return this.coMap.set(...args);
74
- }
75
- delete(key, privacy) {
76
- return this.coMap.delete(key, privacy);
77
- }
78
- mutate(mutator) {
79
- return this.coMap.mutate(mutator);
80
- }
81
- }
82
- //# sourceMappingURL=queriedCoMap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queriedCoMap.js","sourceRoot":"","sources":["../../src/queriedCoValues/queriedCoMap.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import { JsonValue } from "../jsonValue.js";
2
- import { CoStream, MutableCoStream } from "../coValues/coStream.js";
3
- import { CoValueCore } from "../coValueCore.js";
4
- import { Group } from "../coValues/group.js";
5
- import { AccountID } from "../coValues/account.js";
6
- import { CoID, CoValue } from "../coValue.js";
7
- import { SessionID, TransactionID } from "../ids.js";
8
- import { ValueOrSubQueried, QueryContext } from "../queries.js";
9
- import { QueriedAccount } from "./queriedAccount.js";
10
- export type QueriedCoStreamEntry<Item extends JsonValue | CoValue> = {
11
- last?: ValueOrSubQueried<Item>;
12
- by?: QueriedAccount;
13
- tx?: TransactionID;
14
- at?: Date;
15
- all: {
16
- value: ValueOrSubQueried<Item>;
17
- by?: QueriedAccount;
18
- tx: TransactionID;
19
- at: Date;
20
- }[];
21
- };
22
- export declare class QueriedCoStream<S extends CoStream> {
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?: QueriedCoStreamEntry<S["_item"]>;
32
- perAccount: [account: AccountID, items: QueriedCoStreamEntry<S["_item"]>][];
33
- perSession: [session: SessionID, items: QueriedCoStreamEntry<S["_item"]>][];
34
- push(item: S["_item"], privacy?: "private" | "trusting"): S;
35
- mutate(mutator: (mutable: MutableCoStream<S["_item"], S["meta"]>) => void): S;
36
- }
@@ -1,97 +0,0 @@
1
- import { isAccountID } from "../coValues/account.js";
2
- export class QueriedCoStream {
3
- /** @internal */
4
- constructor(coStream, queryContext) {
5
- this.type = "costream";
6
- Object.defineProperty(this, "coStream", {
7
- get() {
8
- return coStream;
9
- },
10
- });
11
- this.id = coStream.id;
12
- this.perSession = coStream.sessions().map((sessionID) => {
13
- const items = [...coStream.itemsIn(sessionID)].map((item) => queryContext.defineSubqueryPropertiesIn({
14
- tx: item.tx,
15
- at: new Date(item.at),
16
- }, {
17
- by: {
18
- value: isAccountID(item.by)
19
- ? item.by
20
- : undefined,
21
- enumerable: true,
22
- },
23
- value: {
24
- value: item.value,
25
- enumerable: true,
26
- },
27
- }, [coStream.id]));
28
- const lastItem = items[items.length - 1];
29
- return [
30
- sessionID,
31
- {
32
- get last() {
33
- return lastItem?.value;
34
- },
35
- get by() {
36
- return lastItem?.by;
37
- },
38
- tx: lastItem?.tx,
39
- at: lastItem?.at,
40
- all: items,
41
- },
42
- ];
43
- });
44
- this.perAccount = [...coStream.accounts()].map((accountID) => {
45
- const items = [...coStream.itemsBy(accountID)].map((item) => queryContext.defineSubqueryPropertiesIn({
46
- tx: item.tx,
47
- at: new Date(item.at),
48
- }, {
49
- by: {
50
- value: isAccountID(item.by)
51
- ? item.by
52
- : undefined,
53
- enumerable: true,
54
- },
55
- value: {
56
- value: item.value,
57
- enumerable: true,
58
- },
59
- }, [coStream.id]));
60
- const lastItem = items[items.length - 1];
61
- const entry = {
62
- get last() {
63
- return lastItem?.value;
64
- },
65
- get by() {
66
- return lastItem?.by;
67
- },
68
- tx: lastItem?.tx,
69
- at: lastItem?.at,
70
- all: items,
71
- };
72
- if (accountID === queryContext.node.account.id) {
73
- this.me = entry;
74
- }
75
- return [
76
- accountID,
77
- entry
78
- ];
79
- });
80
- }
81
- get meta() {
82
- return this.coStream.meta;
83
- }
84
- get group() {
85
- return this.coStream.group;
86
- }
87
- get core() {
88
- return this.coStream.core;
89
- }
90
- push(item, privacy) {
91
- return this.coStream.push(item, privacy);
92
- }
93
- mutate(mutator) {
94
- return this.coStream.mutate(mutator);
95
- }
96
- }
97
- //# sourceMappingURL=queriedCoStream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queriedCoStream.js","sourceRoot":"","sources":["../../src/queriedCoValues/queriedCoStream.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import { Everyone, Group, InviteSecret } from "../coValues/group.js";
2
- import { CoID } from "../coValue.js";
3
- import { QueryContext, ValueOrSubQueried } from "../queries.js";
4
- import { CoValueCore } from "../coValueCore.js";
5
- import { Role } from "../permissions.js";
6
- import { AccountID } from "../coValues/account.js";
7
- import { CoMap } from "../coValues/coMap.js";
8
- import { CoList } from "../coValues/coList.js";
9
- import { CoStream } from "../coValues/coStream.js";
10
- import { BinaryCoStream } from "../coValues/coStream.js";
11
- export declare class QueriedGroup<G extends Group = Group> {
12
- group: G;
13
- id: CoID<G>;
14
- type: "group";
15
- profile?: ValueOrSubQueried<G["_shape"]["profile"]>;
16
- root?: ValueOrSubQueried<G["_shape"]["root"]>;
17
- constructor(group: G, queryContext: QueryContext);
18
- get meta(): G["meta"];
19
- get core(): CoValueCore;
20
- addMember(accountID: AccountID | Everyone, role: Role): G;
21
- removeMember(accountID: AccountID): G;
22
- createInvite(role: "reader" | "writer" | "admin"): InviteSecret;
23
- createMap<M extends CoMap>(init?: {
24
- [K in keyof M["_shape"]]: M["_shape"][K];
25
- }, meta?: M["meta"], initPrivacy?: "trusting" | "private"): M;
26
- createList<L extends CoList>(init?: L["_item"][], meta?: L["meta"], initPrivacy?: "trusting" | "private"): L;
27
- createStream<C extends CoStream>(meta?: C["meta"]): C;
28
- createBinaryStream<C extends BinaryCoStream>(meta?: C["meta"]): C;
29
- }
@@ -1,54 +0,0 @@
1
- export class QueriedGroup {
2
- constructor(group, queryContext) {
3
- this.type = "group";
4
- const profileID = group.get("profile");
5
- const rootID = group.get("root");
6
- queryContext.defineSubqueryPropertiesIn(Object.defineProperties(this, {
7
- group: {
8
- get() {
9
- return group;
10
- },
11
- enumerable: false,
12
- },
13
- id: { value: group.id, enumerable: false },
14
- type: { value: "group", enumerable: false },
15
- }), {
16
- profile: {
17
- value: profileID,
18
- enumerable: false,
19
- },
20
- root: {
21
- value: rootID,
22
- enumerable: false,
23
- },
24
- }, [group.id]);
25
- }
26
- get meta() {
27
- return this.group.meta;
28
- }
29
- get core() {
30
- return this.group.core;
31
- }
32
- addMember(accountID, role) {
33
- return this.group.addMember(accountID, role);
34
- }
35
- removeMember(accountID) {
36
- return this.group.removeMember(accountID);
37
- }
38
- createInvite(role) {
39
- return this.group.createInvite(role);
40
- }
41
- createMap(init, meta, initPrivacy = "private") {
42
- return this.group.createMap(init, meta, initPrivacy);
43
- }
44
- createList(init, meta, initPrivacy = "private") {
45
- return this.group.createList(init, meta, initPrivacy);
46
- }
47
- createStream(meta) {
48
- return this.group.createStream(meta);
49
- }
50
- createBinaryStream(meta = { type: "binary" }) {
51
- return this.group.createBinaryStream(meta);
52
- }
53
- }
54
- //# sourceMappingURL=queriedGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queriedGroup.js","sourceRoot":"","sources":["../../src/queriedCoValues/queriedGroup.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,YAAY;IAOrB,YAAY,KAAQ,EAAE,YAA0B;QAJhD,SAAI,GAAG,OAAgB,CAAC;QAKpB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,YAAY,CAAC,0BAA0B,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;YAClE,KAAK,EAAE;gBACH,GAAG;oBACC,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,UAAU,EAAE,KAAK;aACpB;YACD,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;SAC9C,CAAC,EAAE;YACA,OAAO,EAAE;gBACL,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,KAAK;aACpB;YACD,IAAI,EAAE;gBACF,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,KAAK;aACpB;SACJ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,SAA+B,EAAE,IAAU;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,SAAoB;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,IAAmC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,SAAS,CACL,IAEC,EACD,IAAgB,EAChB,cAAsC,SAAS;QAE/C,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CACN,IAAmB,EACnB,IAAgB,EAChB,cAAsC,SAAS;QAE/C,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY,CAAqB,IAAgB;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB,CACd,OAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE;QAEpC,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;CACJ"}
package/dist/queries.d.ts DELETED
@@ -1,62 +0,0 @@
1
- import { JsonValue } from "./jsonValue.js";
2
- import { CoMap } from "./coValues/coMap.js";
3
- import { CoStream } from "./coValues/coStream.js";
4
- import { CoList } from "./coValues/coList.js";
5
- import { Account } from "./coValues/account.js";
6
- import { CoID, CoValue } from "./coValue.js";
7
- import { LocalNode } from "./localNode.js";
8
- import { QueriedCoMap } from "./queriedCoValues/queriedCoMap.js";
9
- import { QueriedCoList } from "./queriedCoValues/queriedCoList.js";
10
- import { QueriedCoStream } from "./queriedCoValues/queriedCoStream.js";
11
- import { Group } from "./coValues/group.js";
12
- import { QueriedAccount } from "./queriedCoValues/queriedAccount.js";
13
- import { QueriedGroup } from "./queriedCoValues/queriedGroup.js";
14
- export type Queried<T extends CoValue> = T extends CoMap ? T extends Account ? QueriedAccount<T> : T extends Group ? QueriedGroup<T> : QueriedCoMap<T> : T extends CoList ? QueriedCoList<T> : T extends CoStream ? T["meta"] extends {
15
- type: "binary";
16
- } ? never : QueriedCoStream<T> : QueriedAccount | QueriedGroup | QueriedCoMap<CoMap> | QueriedCoList<CoList> | QueriedCoStream<CoStream>;
17
- 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;
18
- export interface CleanupCallbackAndUsable {
19
- (): void;
20
- [Symbol.dispose]: () => void;
21
- }
22
- export interface QueryExtension<T extends CoValue, O> {
23
- id: string;
24
- query(base: T, queryContext: QueryContext, onUpdate: (value: O) => void): () => void;
25
- }
26
- export declare class QueryContext {
27
- values: {
28
- [id: CoID<CoValue>]: {
29
- lastUpdate: CoValue | undefined;
30
- lastQueried: Queried<CoValue> | undefined;
31
- render: () => void;
32
- unsubscribe: () => void;
33
- };
34
- };
35
- extensions: {
36
- [id: `${CoID<CoValue>}_${string}`]: {
37
- lastOutput: unknown;
38
- unsubscribe: () => void;
39
- };
40
- };
41
- node: LocalNode;
42
- onUpdate: () => void;
43
- constructor(node: LocalNode, onUpdate: () => void);
44
- query<T extends CoValue>(valueID: CoID<T>, alsoRender: CoID<CoValue>[]): Queried<T> | undefined;
45
- queryIfCoID<T extends JsonValue | undefined>(value: T, alsoRender: CoID<CoValue>[]): T extends CoID<infer C> ? Queried<C> | undefined : T;
46
- valueOrSubQueryPropertyDescriptor<T extends JsonValue | undefined>(value: T, alsoRender: CoID<CoValue>[]): T extends CoID<infer C> ? {
47
- get(): Queried<C> | undefined;
48
- } : {
49
- value: T;
50
- };
51
- defineSubqueryPropertiesIn<O extends object, P extends {
52
- [key: string]: {
53
- value: JsonValue | undefined;
54
- enumerable: boolean;
55
- };
56
- }>(obj: O, subqueryProps: P, alsoRender: CoID<CoValue>[]): O & {
57
- [Key in keyof P]: ValueOrSubQueried<P[Key]["value"]>;
58
- };
59
- getOrCreateExtension<T extends CoValue, O>(valueID: CoID<T>, extension: QueryExtension<T, O>): O | undefined;
60
- cleanup(): void;
61
- }
62
- export declare function query<T extends CoValue>(id: CoID<T>, node: LocalNode, callback: (queried: Queried<T> | undefined) => void): CleanupCallbackAndUsable;
package/dist/queries.js DELETED
@@ -1,142 +0,0 @@
1
- import { CoMap } from "./coValues/coMap.js";
2
- import { CoStream } from "./coValues/coStream.js";
3
- import { CoList } from "./coValues/coList.js";
4
- import { Account } from "./coValues/account.js";
5
- import { QueriedCoMapBase, } from "./queriedCoValues/queriedCoMap.js";
6
- import { QueriedCoList } from "./queriedCoValues/queriedCoList.js";
7
- import { QueriedCoStream } from "./queriedCoValues/queriedCoStream.js";
8
- import { Group } from "./coValues/group.js";
9
- import { QueriedAccount } from "./queriedCoValues/queriedAccount.js";
10
- import { QueriedGroup } from "./queriedCoValues/queriedGroup.js";
11
- export class QueryContext {
12
- constructor(node, onUpdate) {
13
- this.values = {};
14
- this.extensions = {};
15
- this.node = node;
16
- this.onUpdate = onUpdate;
17
- }
18
- query(valueID, alsoRender) {
19
- let value = this.values[valueID];
20
- if (!value) {
21
- const render = () => {
22
- let newQueried;
23
- const lastUpdate = value.lastUpdate;
24
- if (lastUpdate instanceof CoMap) {
25
- if (lastUpdate instanceof Account) {
26
- newQueried = new QueriedAccount(lastUpdate, this);
27
- }
28
- else if (lastUpdate instanceof Group) {
29
- newQueried = new QueriedGroup(lastUpdate, this);
30
- }
31
- else {
32
- newQueried = QueriedCoMapBase.newWithKVPairs(lastUpdate, this);
33
- }
34
- }
35
- else if (lastUpdate instanceof CoList) {
36
- newQueried = new QueriedCoList(lastUpdate, this);
37
- }
38
- else if (lastUpdate instanceof CoStream) {
39
- if (lastUpdate.meta?.type === "binary") {
40
- // Querying binary string not yet implemented
41
- }
42
- else {
43
- newQueried = new QueriedCoStream(lastUpdate, this);
44
- }
45
- }
46
- // console.log(
47
- // "Rendered ",
48
- // valueID,
49
- // lastUpdate?.constructor.name,
50
- // newQueried
51
- // );
52
- value.lastQueried = newQueried;
53
- for (const alsoRenderID of alsoRender) {
54
- // console.log("Also rendering", alsoRenderID);
55
- this.values[alsoRenderID]?.render();
56
- }
57
- };
58
- value = {
59
- lastQueried: undefined,
60
- lastUpdate: undefined,
61
- render,
62
- unsubscribe: this.node.subscribe(valueID, (valueUpdate) => {
63
- value.lastUpdate = valueUpdate;
64
- value.render();
65
- this.onUpdate();
66
- }),
67
- };
68
- this.values[valueID] = value;
69
- }
70
- return value.lastQueried;
71
- }
72
- queryIfCoID(value, alsoRender) {
73
- if (typeof value === "string" && value.startsWith("co_")) {
74
- return this.query(value, alsoRender);
75
- }
76
- else {
77
- return value;
78
- }
79
- }
80
- valueOrSubQueryPropertyDescriptor(value, alsoRender) {
81
- if (typeof value === "string" && value.startsWith("co_")) {
82
- // TODO: when we track render dirty status, we can actually return the queried value without a getter if it's up to date
83
- return {
84
- get: () => this.query(value, alsoRender),
85
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
- };
87
- }
88
- else {
89
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
- return { value: value };
91
- }
92
- }
93
- defineSubqueryPropertiesIn(obj, subqueryProps, alsoRender) {
94
- for (const [key, descriptor] of Object.entries(subqueryProps)) {
95
- Object.defineProperty(obj, key, {
96
- ...this.valueOrSubQueryPropertyDescriptor(descriptor.value, alsoRender),
97
- enumerable: descriptor.enumerable,
98
- });
99
- }
100
- return obj;
101
- }
102
- getOrCreateExtension(valueID, extension) {
103
- const id = `${valueID}_${extension.id}`;
104
- let ext = this.extensions[id];
105
- if (!ext) {
106
- ext = {
107
- lastOutput: undefined,
108
- unsubscribe: extension.query(this.node
109
- .expectCoValueLoaded(valueID)
110
- .getCurrentContent(), this, (output) => {
111
- ext.lastOutput = output;
112
- this.values[valueID]?.render();
113
- this.onUpdate();
114
- }),
115
- };
116
- this.extensions[id] = ext;
117
- }
118
- return ext.lastOutput;
119
- }
120
- cleanup() {
121
- for (const child of Object.values(this.values)) {
122
- child.unsubscribe?.();
123
- }
124
- for (const extension of Object.values(this.extensions)) {
125
- extension.unsubscribe();
126
- }
127
- }
128
- }
129
- export function query(id, node, callback) {
130
- // console.log("querying", id);
131
- const context = new QueryContext(node, () => {
132
- const rootQueried = context.values[id]?.lastQueried;
133
- callback(rootQueried);
134
- });
135
- context.query(id, []);
136
- const cleanup = function cleanup() {
137
- context.cleanup();
138
- };
139
- cleanup[Symbol.dispose] = cleanup;
140
- return cleanup;
141
- }
142
- //# sourceMappingURL=queries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { ReadableStream, WritableStream } from "isomorphic-streams";
2
- import { Peer, PeerID } from "./sync.js";
3
- export declare function connectedPeers(peer1id: PeerID, peer2id: PeerID, { trace, peer1role, peer2role, }?: {
4
- trace?: boolean;
5
- peer1role?: Peer["role"];
6
- peer2role?: Peer["role"];
7
- }): [Peer, Peer];
8
- export declare function newStreamPair<T>(): [ReadableStream<T>, WritableStream<T>];
package/dist/sync.d.ts DELETED
@@ -1,80 +0,0 @@
1
- import { Signature } from "./crypto.js";
2
- import { CoValueHeader, Transaction } from "./coValueCore.js";
3
- import { CoValueCore } from "./coValueCore.js";
4
- import { LocalNode } from "./localNode.js";
5
- import { ReadableStream, WritableStream, WritableStreamDefaultWriter } from "isomorphic-streams";
6
- import { RawCoID, SessionID } from "./ids.js";
7
- export type CoValueKnownState = {
8
- id: RawCoID;
9
- header: boolean;
10
- sessions: {
11
- [sessionID: SessionID]: number;
12
- };
13
- };
14
- export declare function emptyKnownState(id: RawCoID): CoValueKnownState;
15
- export type SyncMessage = LoadMessage | KnownStateMessage | NewContentMessage | DoneMessage;
16
- export type LoadMessage = {
17
- action: "load";
18
- } & CoValueKnownState;
19
- export type KnownStateMessage = {
20
- action: "known";
21
- asDependencyOf?: RawCoID;
22
- isCorrection?: boolean;
23
- } & CoValueKnownState;
24
- export type NewContentMessage = {
25
- action: "content";
26
- id: RawCoID;
27
- header?: CoValueHeader;
28
- new: {
29
- [sessionID: SessionID]: SessionNewContent;
30
- };
31
- };
32
- export type SessionNewContent = {
33
- after: number;
34
- newTransactions: Transaction[];
35
- lastSignature: Signature;
36
- };
37
- export type DoneMessage = {
38
- action: "done";
39
- id: RawCoID;
40
- };
41
- export type PeerID = string;
42
- export interface Peer {
43
- id: PeerID;
44
- incoming: ReadableStream<SyncMessage>;
45
- outgoing: WritableStream<SyncMessage>;
46
- role: "peer" | "server" | "client";
47
- delayOnError?: number;
48
- }
49
- export interface PeerState {
50
- id: PeerID;
51
- optimisticKnownStates: {
52
- [id: RawCoID]: CoValueKnownState;
53
- };
54
- toldKnownState: Set<RawCoID>;
55
- incoming: ReadableStream<SyncMessage>;
56
- outgoing: WritableStreamDefaultWriter<SyncMessage>;
57
- role: "peer" | "server" | "client";
58
- delayOnError?: number;
59
- }
60
- export declare function combinedKnownStates(stateA: CoValueKnownState, stateB: CoValueKnownState): CoValueKnownState;
61
- export declare class SyncManager {
62
- peers: {
63
- [key: PeerID]: PeerState;
64
- };
65
- local: LocalNode;
66
- constructor(local: LocalNode);
67
- loadFromPeers(id: RawCoID): void;
68
- handleSyncMessage(msg: SyncMessage, peer: PeerState): Promise<void | never[]>;
69
- subscribeToIncludingDependencies(id: RawCoID, peer: PeerState): Promise<void>;
70
- tellUntoldKnownStateIncludingDependencies(id: RawCoID, peer: PeerState, asDependencyOf?: RawCoID): Promise<void>;
71
- sendNewContentIncludingDependencies(id: RawCoID, peer: PeerState): Promise<void>;
72
- addPeer(peer: Peer): void;
73
- trySendToPeer(peer: PeerState, msg: SyncMessage): Promise<void>;
74
- handleLoad(msg: LoadMessage, peer: PeerState): Promise<void>;
75
- handleKnownState(msg: KnownStateMessage, peer: PeerState): Promise<never[] | undefined>;
76
- handleNewContent(msg: NewContentMessage, peer: PeerState): Promise<void>;
77
- handleCorrection(msg: KnownStateMessage, peer: PeerState): Promise<void>;
78
- handleUnsubscribe(_msg: DoneMessage): void;
79
- syncCoValue(coValue: CoValueCore): Promise<void>;
80
- }
@@ -1,37 +0,0 @@
1
- import { LocalNode } from "../localNode.js";
2
- import { AnonymousControlledAccount } from "../coValues/account.js";
3
- import { SessionID } from "../ids.js";
4
- export declare function randomAnonymousAccountAndSessionID(): [AnonymousControlledAccount, SessionID];
5
- export declare function newGroup(): {
6
- node: LocalNode;
7
- groupCore: import("../coValueCore.js").CoValueCore;
8
- admin: AnonymousControlledAccount;
9
- };
10
- export declare function groupWithTwoAdmins(): {
11
- groupCore: import("../coValueCore.js").CoValueCore;
12
- admin: AnonymousControlledAccount;
13
- otherAdmin: import("../coValues/account.js").ControlledAccount<import("../coValues/account.js").Profile<import("../coValues/account.js").ProfileShape, import("../coValues/account.js").ProfileMeta>, import("../index.js").CoMap<{
14
- [key: string]: import("../jsonValue.js").JsonValue | undefined;
15
- }, import("../jsonValue.js").JsonObject | null>, import("../coValues/account.js").AccountMeta>;
16
- node: LocalNode;
17
- };
18
- export declare function newGroupHighLevel(): {
19
- admin: AnonymousControlledAccount;
20
- node: LocalNode;
21
- group: import("../coValues/group.js").Group<import("../coValues/account.js").Profile<import("../coValues/account.js").ProfileShape, import("../coValues/account.js").ProfileMeta>, import("../index.js").CoMap<{
22
- [key: string]: import("../jsonValue.js").JsonValue | undefined;
23
- }, import("../jsonValue.js").JsonObject | null>, import("../jsonValue.js").JsonObject | null>;
24
- };
25
- export declare function groupWithTwoAdminsHighLevel(): {
26
- admin: AnonymousControlledAccount;
27
- node: LocalNode;
28
- group: import("../coValues/group.js").Group<import("../coValues/account.js").Profile<import("../coValues/account.js").ProfileShape, import("../coValues/account.js").ProfileMeta>, import("../index.js").CoMap<{
29
- [key: string]: import("../jsonValue.js").JsonValue | undefined;
30
- }, import("../jsonValue.js").JsonObject | null>, import("../jsonValue.js").JsonObject | null>;
31
- otherAdmin: import("../coValues/account.js").ControlledAccount<import("../coValues/account.js").Profile<import("../coValues/account.js").ProfileShape, import("../coValues/account.js").ProfileMeta>, import("../index.js").CoMap<{
32
- [key: string]: import("../jsonValue.js").JsonValue | undefined;
33
- }, import("../jsonValue.js").JsonObject | null>, import("../coValues/account.js").AccountMeta>;
34
- };
35
- export declare function shouldNotResolve<T>(promise: Promise<T>, ops: {
36
- timeout: number;
37
- }): Promise<void>;