cojson 0.3.7 → 0.4.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 (78) hide show
  1. package/dist/coValue.d.ts +7 -12
  2. package/dist/coValue.js.map +1 -1
  3. package/dist/coValueCore.d.ts +9 -4
  4. package/dist/coValueCore.js +69 -33
  5. package/dist/coValueCore.js.map +1 -1
  6. package/dist/coValues/account.d.ts +62 -0
  7. package/dist/{account.js → coValues/account.js} +19 -11
  8. package/dist/coValues/account.js.map +1 -0
  9. package/dist/coValues/coList.d.ts +19 -19
  10. package/dist/coValues/coList.js.map +1 -1
  11. package/dist/coValues/coMap.d.ts +31 -23
  12. package/dist/coValues/coMap.js +4 -6
  13. package/dist/coValues/coMap.js.map +1 -1
  14. package/dist/coValues/coStream.d.ts +19 -19
  15. package/dist/coValues/coStream.js.map +1 -1
  16. package/dist/{group.d.ts → coValues/group.d.ts} +27 -38
  17. package/dist/{group.js → coValues/group.js} +69 -73
  18. package/dist/coValues/group.js.map +1 -0
  19. package/dist/ids.d.ts +1 -1
  20. package/dist/index.d.ts +15 -11
  21. package/dist/index.js +10 -5
  22. package/dist/index.js.map +1 -1
  23. package/dist/localNode.d.ts +20 -7
  24. package/dist/localNode.js +74 -39
  25. package/dist/localNode.js.map +1 -1
  26. package/dist/media.d.ts +1 -1
  27. package/dist/permissions.d.ts +1 -1
  28. package/dist/permissions.js +43 -22
  29. package/dist/permissions.js.map +1 -1
  30. package/dist/queriedCoValues/queriedAccount.d.ts +13 -0
  31. package/dist/queriedCoValues/queriedAccount.js +24 -0
  32. package/dist/queriedCoValues/queriedAccount.js.map +1 -0
  33. package/dist/queriedCoValues/queriedCoList.d.ts +10 -10
  34. package/dist/queriedCoValues/queriedCoList.js +11 -15
  35. package/dist/queriedCoValues/queriedCoList.js.map +1 -1
  36. package/dist/queriedCoValues/queriedCoMap.d.ts +14 -21
  37. package/dist/queriedCoValues/queriedCoMap.js +27 -28
  38. package/dist/queriedCoValues/queriedCoMap.js.map +1 -1
  39. package/dist/queriedCoValues/queriedCoStream.d.ts +9 -9
  40. package/dist/queriedCoValues/queriedCoStream.js +44 -20
  41. package/dist/queriedCoValues/queriedCoStream.js.map +1 -1
  42. package/dist/queriedCoValues/queriedGroup.d.ts +29 -0
  43. package/dist/queriedCoValues/queriedGroup.js +54 -0
  44. package/dist/queriedCoValues/queriedGroup.js.map +1 -0
  45. package/dist/queries.d.ts +40 -9
  46. package/dist/queries.js +104 -39
  47. package/dist/queries.js.map +1 -1
  48. package/dist/tests/testUtils.d.ts +15 -7
  49. package/dist/tests/testUtils.js +16 -17
  50. package/dist/tests/testUtils.js.map +1 -1
  51. package/package.json +2 -2
  52. package/src/coValue.ts +12 -31
  53. package/src/coValueCore.ts +100 -40
  54. package/src/{account.ts → coValues/account.ts} +46 -27
  55. package/src/coValues/coList.ts +24 -28
  56. package/src/coValues/coMap.ts +42 -68
  57. package/src/coValues/coStream.ts +20 -26
  58. package/src/{group.ts → coValues/group.ts} +121 -141
  59. package/src/ids.ts +1 -1
  60. package/src/index.ts +25 -10
  61. package/src/localNode.ts +180 -77
  62. package/src/media.ts +1 -1
  63. package/src/permissions.ts +67 -36
  64. package/src/queriedCoValues/queriedAccount.ts +40 -0
  65. package/src/queriedCoValues/queriedCoList.ts +22 -30
  66. package/src/queriedCoValues/queriedCoMap.ts +60 -72
  67. package/src/queriedCoValues/queriedCoStream.ts +67 -37
  68. package/src/queriedCoValues/queriedGroup.ts +90 -0
  69. package/src/queries.ts +181 -60
  70. package/src/tests/account.test.ts +14 -9
  71. package/src/tests/coValueCore.test.ts +2 -2
  72. package/src/tests/permissions.test.ts +351 -242
  73. package/src/tests/queries.test.ts +98 -79
  74. package/src/tests/sync.test.ts +11 -11
  75. package/src/tests/testUtils.ts +16 -18
  76. package/dist/account.d.ts +0 -58
  77. package/dist/account.js.map +0 -1
  78. package/dist/group.js.map +0 -1
package/dist/queries.js CHANGED
@@ -1,22 +1,67 @@
1
1
  import { CoMap } from "./coValues/coMap.js";
2
2
  import { CoStream } from "./coValues/coStream.js";
3
3
  import { CoList } from "./coValues/coList.js";
4
+ import { Account } from "./coValues/account.js";
4
5
  import { QueriedCoMapBase, } from "./queriedCoValues/queriedCoMap.js";
5
6
  import { QueriedCoList } from "./queriedCoValues/queriedCoList.js";
6
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";
7
11
  export class QueryContext {
8
12
  constructor(node, onUpdate) {
9
13
  this.values = {};
14
+ this.extensions = {};
10
15
  this.node = node;
11
16
  this.onUpdate = onUpdate;
12
17
  }
13
- getChildLastQueriedOrSubscribe(valueID) {
18
+ query(valueID, alsoRender) {
14
19
  let value = this.values[valueID];
15
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
+ };
16
58
  value = {
17
59
  lastQueried: undefined,
18
- unsubscribe: query(valueID, this.node, (childQueried) => {
19
- value.lastQueried = childQueried;
60
+ lastUpdate: undefined,
61
+ render,
62
+ unsubscribe: this.node.subscribe(valueID, (valueUpdate) => {
63
+ value.lastUpdate = valueUpdate;
64
+ value.render();
20
65
  this.onUpdate();
21
66
  }),
22
67
  };
@@ -24,52 +69,72 @@ export class QueryContext {
24
69
  }
25
70
  return value.lastQueried;
26
71
  }
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);
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
+ }
34
79
  }
35
- cleanup() {
36
- for (const child of Object.values(this.values)) {
37
- child.unsubscribe();
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 };
38
91
  }
39
92
  }
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;
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
+ });
53
99
  }
54
- if (rootValue instanceof CoMap) {
55
- callback(QueriedCoMapBase.newWithKVPairs(rootValue, context));
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;
56
117
  }
57
- else if (rootValue instanceof CoList) {
58
- callback(new QueriedCoList(rootValue, context));
118
+ return ext.lastOutput;
119
+ }
120
+ cleanup() {
121
+ for (const child of Object.values(this.values)) {
122
+ child.unsubscribe?.();
59
123
  }
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
- }
124
+ for (const extension of Object.values(this.extensions)) {
125
+ extension.unsubscribe();
68
126
  }
69
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, []);
70
136
  const cleanup = function cleanup() {
71
137
  context.cleanup();
72
- unsubscribe();
73
138
  };
74
139
  cleanup[Symbol.dispose] = cleanup;
75
140
  return cleanup;
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,OAAO,EAGH,gBAAgB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAyBvE,MAAM,OAAO,YAAY;IAUrB,YAAY,IAAe,EAAE,QAAoB;QATjD,WAAM,GAKF,EAAE,CAAC;QAKH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,8BAA8B,CAAoB,OAAgB;QAC9D,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE;YACR,KAAK,GAAG;gBACJ,WAAW,EAAE,SAAS;gBACtB,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;oBACpD,KAAM,CAAC,WAAW,GAAG,YAAgC,CAAC;oBACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,CAAC,CAAC;aACL,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;SAChC;QACD,OAAO,KAAK,CAAC,WAAqC,CAAC;IACvD,CAAC;IAED,cAAc,CAAC,SAAoB;QAC/B,OAAO,IAAI,CAAC,8BAA8B,CACtC,SAAS,CACgB,CAAC;IAClC,CAAC;IAED,YAAY,CACR,KAAQ;QAER,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAsB,CAAC;YAC7D,CAAC,CAAC,KAAK,CAC0C,CAAC;IAC9D,CAAC;IAED,OAAO;QACH,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC5C,KAAK,CAAC,WAAW,EAAE,CAAC;SACvB;IACL,CAAC;CACJ;AAED,MAAM,UAAU,KAAK,CACjB,EAAW,EACX,IAAe,EACf,QAAmD,EACnD,aAA4B;IAE5B,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE5B,MAAM,OAAO,GAAG,aAAa,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAElE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;QAC9C,aAAa,GAAG,MAAM,CAAC;QACvB,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,IAAI,aAA4B,CAAC;IAEjC,SAAS,QAAQ;QACb,MAAM,SAAS,GAAG,aAAa,CAAC;QAEhC,IAAI,SAAS,KAAK,SAAS,EAAE;YACzB,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,SAAS,YAAY,KAAK,EAAE;YAC5B,QAAQ,CACJ,gBAAgB,CAAC,cAAc,CAC3B,SAAS,EACT,OAAO,CACI,CAClB,CAAC;SACL;aAAM,IAAI,SAAS,YAAY,MAAM,EAAE;YACpC,QAAQ,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,OAAO,CAAe,CAAC,CAAC;SACjE;aAAM,IAAI,SAAS,YAAY,QAAQ,EAAE;YACtC,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE;gBACnC,6CAA6C;gBAC7C,OAAO,EAAE,CAAC;aACb;iBAAM;gBACH,QAAQ,CAAC,IAAI,eAAe,CAAC,SAAS,EAAE,OAAO,CAAe,CAAC,CAAC;aACnE;SACJ;IACL,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,OAAO;QAC5B,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,WAAW,EAAE,CAAC;IAClB,CAA6B,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAElC,OAAO,OAAO,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,36 @@
1
1
  import { LocalNode } from "../localNode.js";
2
- import { AnonymousControlledAccount } from "../account.js";
2
+ import { AnonymousControlledAccount } from "../coValues/account.js";
3
3
  import { SessionID } from "../ids.js";
4
4
  export declare function randomAnonymousAccountAndSessionID(): [AnonymousControlledAccount, SessionID];
5
5
  export declare function newGroup(): {
6
6
  node: LocalNode;
7
- group: import("../coValueCore.js").CoValueCore;
7
+ groupCore: import("../coValueCore.js").CoValueCore;
8
8
  admin: AnonymousControlledAccount;
9
9
  };
10
10
  export declare function groupWithTwoAdmins(): {
11
- group: import("../coValueCore.js").CoValueCore;
11
+ groupCore: import("../coValueCore.js").CoValueCore;
12
12
  admin: AnonymousControlledAccount;
13
- otherAdmin: import("../account.js").ControlledAccount;
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>;
14
16
  node: LocalNode;
15
17
  };
16
18
  export declare function newGroupHighLevel(): {
17
19
  admin: AnonymousControlledAccount;
18
20
  node: LocalNode;
19
- group: import("../group.js").Group;
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>;
20
24
  };
21
25
  export declare function groupWithTwoAdminsHighLevel(): {
22
26
  admin: AnonymousControlledAccount;
23
27
  node: LocalNode;
24
- group: import("../group.js").Group;
25
- otherAdmin: import("../account.js").ControlledAccount;
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>;
26
34
  };
27
35
  export declare function shouldNotResolve<T>(promise: Promise<T>, ops: {
28
36
  timeout: number;
@@ -1,8 +1,8 @@
1
1
  import { createdNowUnique, getAgentID, newRandomAgentSecret } from "../crypto.js";
2
2
  import { newRandomSessionID } from "../coValueCore.js";
3
3
  import { LocalNode } from "../localNode.js";
4
- import { expectGroupContent } from "../group.js";
5
- import { AnonymousControlledAccount } from "../account.js";
4
+ import { expectGroup } from "../coValues/group.js";
5
+ import { AnonymousControlledAccount } from "../coValues/account.js";
6
6
  // @ts-ignore
7
7
  import { expect } from "bun:test";
8
8
  export function randomAnonymousAccountAndSessionID() {
@@ -13,33 +13,32 @@ export function randomAnonymousAccountAndSessionID() {
13
13
  export function newGroup() {
14
14
  const [admin, sessionID] = randomAnonymousAccountAndSessionID();
15
15
  const node = new LocalNode(admin, sessionID);
16
- const group = node.createCoValue({
16
+ const groupCore = node.createCoValue({
17
17
  type: "comap",
18
18
  ruleset: { type: "group", initialAdmin: admin.id },
19
19
  meta: null,
20
20
  ...createdNowUnique(),
21
21
  });
22
- const groupContent = expectGroupContent(group.getCurrentContent());
23
- groupContent.mutate((editable) => {
22
+ const group = expectGroup(groupCore.getCurrentContent());
23
+ group.mutate((editable) => {
24
24
  editable.set(admin.id, "admin", "trusting");
25
25
  expect(editable.get(admin.id)).toEqual("admin");
26
26
  });
27
- return { node, group, admin };
27
+ return { node, groupCore, admin };
28
28
  }
29
29
  export function groupWithTwoAdmins() {
30
- const { group, admin, node } = newGroup();
30
+ const { groupCore, admin, node } = newGroup();
31
31
  const otherAdmin = node.createAccount("otherAdmin");
32
- let content = expectGroupContent(group.getCurrentContent());
33
- content.mutate((editable) => {
34
- editable.set(otherAdmin.id, "admin", "trusting");
35
- expect(editable.get(otherAdmin.id)).toEqual("admin");
32
+ let group = expectGroup(groupCore.getCurrentContent());
33
+ group = group.mutate((mutable) => {
34
+ mutable.set(otherAdmin.id, "admin", "trusting");
35
+ expect(mutable.get(otherAdmin.id)).toEqual("admin");
36
36
  });
37
- content = expectGroupContent(group.getCurrentContent());
38
- if (content.type !== "comap") {
37
+ if (group.type !== "comap") {
39
38
  throw new Error("Expected map");
40
39
  }
41
- expect(content.get(otherAdmin.id)).toEqual("admin");
42
- return { group, admin, otherAdmin, node };
40
+ expect(group.get(otherAdmin.id)).toEqual("admin");
41
+ return { groupCore, admin, otherAdmin, node };
43
42
  }
44
43
  export function newGroupHighLevel() {
45
44
  const [admin, sessionID] = randomAnonymousAccountAndSessionID();
@@ -48,9 +47,9 @@ export function newGroupHighLevel() {
48
47
  return { admin, node, group };
49
48
  }
50
49
  export function groupWithTwoAdminsHighLevel() {
51
- const { admin, node, group } = newGroupHighLevel();
50
+ let { admin, node, group } = newGroupHighLevel();
52
51
  const otherAdmin = node.createAccount("otherAdmin");
53
- group.addMember(otherAdmin.id, "admin");
52
+ group = group.addMember(otherAdmin.id, "admin");
54
53
  return { admin, node, group, otherAdmin };
55
54
  }
56
55
  export function shouldNotResolve(promise, ops) {
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAE,UAAU,EAAE,oBAAoB,EAAG,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,UAAU,kCAAkC;IAC9C,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAE3C,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAE9D,OAAO,CAAC,IAAI,0BAA0B,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,QAAQ;IACpB,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,kCAAkC,EAAE,CAAC;IAEhE,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE;QAClD,IAAI,EAAE,IAAI;QACV,GAAG,gBAAgB,EAAE;KACxB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEzD,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;QACtB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAC9B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAEpD,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEvD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;KACnC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,kCAAkC,EAAE,CAAC;IAGhE,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,2BAA2B;IACvC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEjD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAEpD,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAEhD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,OAAmB,EACnB,GAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,OAAO;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACR,MAAM,CACF,IAAI,KAAK,CACL,4CAA4C;YACxC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CACxB,CACJ,CACJ;aACA,KAAK,CAAC,MAAM,CAAC,CAAC;QACnB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
7
7
  "license": "MIT",
8
- "version": "0.3.7",
8
+ "version": "0.4.0",
9
9
  "devDependencies": {
10
10
  "@types/jest": "^29.5.3",
11
11
  "@typescript-eslint/eslint-plugin": "^6.2.1",
@@ -51,5 +51,5 @@
51
51
  "/dist/"
52
52
  ]
53
53
  },
54
- "gitHead": "33c27053293b4801b968c61d5c4c989f93a67d13"
54
+ "gitHead": "b2c8d8c8557c0324ee1c10d0f47441b624647f85"
55
55
  }
package/src/coValue.ts CHANGED
@@ -8,7 +8,8 @@ import {
8
8
  } from "./coValues/coStream.js";
9
9
  import { CoList } from "./coValues/coList.js";
10
10
  import { CoValueCore } from "./coValueCore.js";
11
- import { Group } from "./group.js";
11
+ import { Group } from "./coValues/group.js";
12
+ import { Account, Profile } from "./index.js";
12
13
 
13
14
  export type CoID<T extends CoValue> = RawCoID & {
14
15
  readonly __type: T;
@@ -37,55 +38,35 @@ export interface CoValue {
37
38
  subscribe(listener: (coValue: this) => void): () => void;
38
39
  }
39
40
 
40
- export type AnyCoMap = CoMap<
41
- { [key: string]: JsonValue | CoValue | undefined },
42
- JsonObject | null
43
- >;
41
+ export type AnyCoValue = CoMap | Group | Account | Profile | CoList | CoStream | BinaryCoStream;
44
42
 
45
- export type AnyCoList = CoList<JsonValue | CoValue, JsonObject | null>;
46
-
47
- export type AnyCoStream = CoStream<JsonValue | CoValue, JsonObject | null>;
48
-
49
- export type AnyBinaryCoStream = BinaryCoStream<BinaryCoStreamMeta>;
50
-
51
-
52
- export type AnyCoValue =
53
- | AnyCoMap
54
- | AnyCoList
55
- | AnyCoStream
56
- | AnyBinaryCoStream
57
-
58
- export function expectMap(
59
- content: CoValue
60
- ): AnyCoMap {
43
+ export function expectMap(content: CoValue): CoMap {
61
44
  if (content.type !== "comap") {
62
45
  throw new Error("Expected map");
63
46
  }
64
47
 
65
- return content as AnyCoMap;
48
+ return content as CoMap;
66
49
  }
67
50
 
68
- export function expectList(
69
- content: CoValue
70
- ): AnyCoList {
51
+ export function expectList(content: CoValue): CoList {
71
52
  if (content.type !== "colist") {
72
53
  throw new Error("Expected list");
73
54
  }
74
55
 
75
- return content as AnyCoList;
56
+ return content as CoList;
76
57
  }
77
58
 
78
- export function expectStream(
79
- content: CoValue
80
- ): AnyCoStream {
59
+ export function expectStream(content: CoValue): CoStream {
81
60
  if (content.type !== "costream") {
82
61
  throw new Error("Expected stream");
83
62
  }
84
63
 
85
- return content as AnyCoStream;
64
+ return content as CoStream;
86
65
  }
87
66
 
88
- export function isCoValue(value: JsonValue | CoValue | undefined) : value is CoValue {
67
+ export function isCoValue(
68
+ value: JsonValue | CoValue | undefined
69
+ ): value is CoValue {
89
70
  return (
90
71
  value instanceof CoMap ||
91
72
  value instanceof CoList ||