cojson 0.10.15 → 0.11.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 (138) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +14 -0
  3. package/dist/CoValuesStore.d.ts +12 -0
  4. package/dist/CoValuesStore.d.ts.map +1 -0
  5. package/dist/PeerKnownStates.d.ts +38 -0
  6. package/dist/PeerKnownStates.d.ts.map +1 -0
  7. package/dist/PeerState.d.ts +46 -0
  8. package/dist/PeerState.d.ts.map +1 -0
  9. package/dist/PriorityBasedMessageQueue.d.ts +18 -0
  10. package/dist/PriorityBasedMessageQueue.d.ts.map +1 -0
  11. package/dist/SyncStateManager.d.ts +20 -0
  12. package/dist/SyncStateManager.d.ts.map +1 -0
  13. package/dist/base64url.d.ts +3 -0
  14. package/dist/base64url.d.ts.map +1 -0
  15. package/dist/base64url.test.d.ts +2 -0
  16. package/dist/base64url.test.d.ts.map +1 -0
  17. package/dist/coValue.d.ts +52 -0
  18. package/dist/coValue.d.ts.map +1 -0
  19. package/dist/coValueCore.d.ts +143 -0
  20. package/dist/coValueCore.d.ts.map +1 -0
  21. package/dist/coValueState.d.ts +58 -0
  22. package/dist/coValueState.d.ts.map +1 -0
  23. package/dist/coValues/account.d.ts +69 -0
  24. package/dist/coValues/account.d.ts.map +1 -0
  25. package/dist/coValues/coList.d.ts +163 -0
  26. package/dist/coValues/coList.d.ts.map +1 -0
  27. package/dist/coValues/coMap.d.ts +142 -0
  28. package/dist/coValues/coMap.d.ts.map +1 -0
  29. package/dist/coValues/coPlainText.d.ts +33 -0
  30. package/dist/coValues/coPlainText.d.ts.map +1 -0
  31. package/dist/coValues/coStream.d.ts +109 -0
  32. package/dist/coValues/coStream.d.ts.map +1 -0
  33. package/dist/coValues/group.d.ts +143 -0
  34. package/dist/coValues/group.d.ts.map +1 -0
  35. package/dist/coValues/group.js +51 -3
  36. package/dist/coValues/group.js.map +1 -1
  37. package/dist/coreToCoValue.d.ts +15 -0
  38. package/dist/coreToCoValue.d.ts.map +1 -0
  39. package/dist/crypto/PureJSCrypto.d.ts +50 -0
  40. package/dist/crypto/PureJSCrypto.d.ts.map +1 -0
  41. package/dist/crypto/WasmCrypto.d.ts +49 -0
  42. package/dist/crypto/WasmCrypto.d.ts.map +1 -0
  43. package/dist/crypto/crypto.d.ts +142 -0
  44. package/dist/crypto/crypto.d.ts.map +1 -0
  45. package/dist/exports.d.ts +84 -0
  46. package/dist/exports.d.ts.map +1 -0
  47. package/dist/ids.d.ts +23 -0
  48. package/dist/ids.d.ts.map +1 -0
  49. package/dist/index.d.ts +2 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/jsonStringify.d.ts +7 -0
  52. package/dist/jsonStringify.d.ts.map +1 -0
  53. package/dist/jsonValue.d.ts +45 -0
  54. package/dist/jsonValue.d.ts.map +1 -0
  55. package/dist/localNode.d.ts +111 -0
  56. package/dist/localNode.d.ts.map +1 -0
  57. package/dist/logger.d.ts +33 -0
  58. package/dist/logger.d.ts.map +1 -0
  59. package/dist/media.d.ts +8 -0
  60. package/dist/media.d.ts.map +1 -0
  61. package/dist/permissions.d.ts +24 -0
  62. package/dist/permissions.d.ts.map +1 -0
  63. package/dist/permissions.js +3 -4
  64. package/dist/permissions.js.map +1 -1
  65. package/dist/priority.d.ts +19 -0
  66. package/dist/priority.d.ts.map +1 -0
  67. package/dist/storage/FileSystem.d.ts +37 -0
  68. package/dist/storage/FileSystem.d.ts.map +1 -0
  69. package/dist/storage/chunksAndKnownStates.d.ts +7 -0
  70. package/dist/storage/chunksAndKnownStates.d.ts.map +1 -0
  71. package/dist/storage/index.d.ts +52 -0
  72. package/dist/storage/index.d.ts.map +1 -0
  73. package/dist/streamUtils.d.ts +13 -0
  74. package/dist/streamUtils.d.ts.map +1 -0
  75. package/dist/sync.d.ts +97 -0
  76. package/dist/sync.d.ts.map +1 -0
  77. package/dist/tests/PeerKnownStates.test.d.ts +2 -0
  78. package/dist/tests/PeerKnownStates.test.d.ts.map +1 -0
  79. package/dist/tests/PeerState.test.d.ts +2 -0
  80. package/dist/tests/PeerState.test.d.ts.map +1 -0
  81. package/dist/tests/PriorityBasedMessageQueue.test.d.ts +2 -0
  82. package/dist/tests/PriorityBasedMessageQueue.test.d.ts.map +1 -0
  83. package/dist/tests/SyncStateManager.test.d.ts +2 -0
  84. package/dist/tests/SyncStateManager.test.d.ts.map +1 -0
  85. package/dist/tests/account.test.d.ts +2 -0
  86. package/dist/tests/account.test.d.ts.map +1 -0
  87. package/dist/tests/coList.test.d.ts +2 -0
  88. package/dist/tests/coList.test.d.ts.map +1 -0
  89. package/dist/tests/coMap.test.d.ts +2 -0
  90. package/dist/tests/coMap.test.d.ts.map +1 -0
  91. package/dist/tests/coPlainText.test.d.ts +2 -0
  92. package/dist/tests/coPlainText.test.d.ts.map +1 -0
  93. package/dist/tests/coStream.test.d.ts +2 -0
  94. package/dist/tests/coStream.test.d.ts.map +1 -0
  95. package/dist/tests/coValueCore.test.d.ts +2 -0
  96. package/dist/tests/coValueCore.test.d.ts.map +1 -0
  97. package/dist/tests/coValueState.test.d.ts +2 -0
  98. package/dist/tests/coValueState.test.d.ts.map +1 -0
  99. package/dist/tests/crypto.test.d.ts +2 -0
  100. package/dist/tests/crypto.test.d.ts.map +1 -0
  101. package/dist/tests/cryptoImpl.test.d.ts +2 -0
  102. package/dist/tests/cryptoImpl.test.d.ts.map +1 -0
  103. package/dist/tests/group.test.d.ts +2 -0
  104. package/dist/tests/group.test.d.ts.map +1 -0
  105. package/dist/tests/group.test.js +130 -0
  106. package/dist/tests/group.test.js.map +1 -1
  107. package/dist/tests/logger.test.d.ts +2 -0
  108. package/dist/tests/logger.test.d.ts.map +1 -0
  109. package/dist/tests/permissions.test.d.ts +2 -0
  110. package/dist/tests/permissions.test.d.ts.map +1 -0
  111. package/dist/tests/permissions.test.js +194 -1
  112. package/dist/tests/permissions.test.js.map +1 -1
  113. package/dist/tests/priority.test.d.ts +2 -0
  114. package/dist/tests/priority.test.d.ts.map +1 -0
  115. package/dist/tests/sync.test.d.ts +2 -0
  116. package/dist/tests/sync.test.d.ts.map +1 -0
  117. package/dist/tests/testUtils.d.ts +142 -0
  118. package/dist/tests/testUtils.d.ts.map +1 -0
  119. package/dist/tests/testUtils.js +4 -1
  120. package/dist/tests/testUtils.js.map +1 -1
  121. package/dist/typeUtils/accountOrAgentIDfromSessionID.d.ts +4 -0
  122. package/dist/typeUtils/accountOrAgentIDfromSessionID.d.ts.map +1 -0
  123. package/dist/typeUtils/expectGroup.d.ts +4 -0
  124. package/dist/typeUtils/expectGroup.d.ts.map +1 -0
  125. package/dist/typeUtils/isAccountID.d.ts +4 -0
  126. package/dist/typeUtils/isAccountID.d.ts.map +1 -0
  127. package/dist/typeUtils/isCoValue.d.ts +4 -0
  128. package/dist/typeUtils/isCoValue.d.ts.map +1 -0
  129. package/dist/utils.d.ts +5 -0
  130. package/dist/utils.d.ts.map +1 -0
  131. package/package.json +6 -6
  132. package/src/coValues/group.ts +84 -9
  133. package/src/jsonValue.ts +9 -5
  134. package/src/permissions.ts +3 -4
  135. package/src/tests/group.test.ts +187 -0
  136. package/src/tests/permissions.test.ts +285 -0
  137. package/src/tests/testUtils.ts +4 -1
  138. package/tsconfig.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,YAAY,EACb,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAWpD,wBAAgB,kCAAkC,IAAI;IACpD,eAAe;IACf,SAAS;CACV,CAMA;AAED,wBAAgB,cAAc,cAG7B;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EACvB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;GA8BxB;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EACvB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EACvB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;GA0DxB;AAED,wBAAgB,eAAe,CAC7B,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,EACZ,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAC1B,KAAK,EAAE,QAAQ,GAAG,QAAQ,QAa3B;AAED,wBAAgB,QAAQ;;;;EAkBvB;AAED,wBAAgB,kBAAkB;;;;;;EAgBjC;AAED,wBAAgB,iBAAiB;;;;EAWhC;AAED,wBAAgB,2BAA2B;;;;;EAQ1C;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACvB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,OAAO,GAAG,IAAI,iBA0BrD;AAED,wBAAsB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EAC1D,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GACV,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC;;;EAyBnC;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,UAMlC;AAED;;;;;;GAMG;AACH,cAAM,gBAAiB,SAAQ,YAAY;IACzC,OAAO,CAAC,SAAS,CAEf;IAEF,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAGrC,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAO;IAgB/C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAYxC;AAED,wBAAgB,sBAAsB,qBAWrC;AAED,wBAAgB,wBAAwB,SAEvC;AAED,wBAAgB,eAAe,cAG9B;AAED,wBAAsB,4BAA4B,CAAC,IAAI;;CAAsB;;;;;cAqDnE,QAAQ,GAAG,QAAQ;aACpB,WAAW;;;GA1CnB;AAED,wBAAsB,uBAAuB,CAAC,IAAI;;CAAsB;;;;;;cAuC9D,QAAQ,GAAG,QAAQ;aACpB,WAAW;;;GAlBnB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,UAAO;;;;cAe/D,QAAQ,GAAG,QAAQ;aACpB,WAAW;;;EA0BnB"}
@@ -1,6 +1,6 @@
1
1
  import { metrics } from "@opentelemetry/api";
2
2
  import { AggregationTemporality, InMemoryMetricExporter, MeterProvider, MetricReader, } from "@opentelemetry/sdk-metrics";
3
- import { expect, vi } from "vitest";
3
+ import { expect, onTestFinished, vi } from "vitest";
4
4
  import { ControlledAgent } from "../coValues/account.js";
5
5
  import { WasmCrypto } from "../crypto/WasmCrypto.js";
6
6
  import { LocalNode } from "../localNode.js";
@@ -120,6 +120,9 @@ export function newGroupHighLevel() {
120
120
  const [admin, sessionID] = randomAnonymousAccountAndSessionID();
121
121
  const node = new LocalNode(admin, sessionID, Crypto);
122
122
  const group = node.createGroup();
123
+ onTestFinished(() => {
124
+ node.gracefulShutdown();
125
+ });
123
126
  return { admin, node, group };
124
127
  }
125
128
  export function groupWithTwoAdminsHighLevel() {
@@ -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":"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"}
@@ -0,0 +1,4 @@
1
+ import { RawAccountID } from "../coValues/account.js";
2
+ import { AgentID, SessionID } from "../ids.js";
3
+ export declare function accountOrAgentIDfromSessionID(sessionID: SessionID): RawAccountID | AgentID;
4
+ //# sourceMappingURL=accountOrAgentIDfromSessionID.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountOrAgentIDfromSessionID.d.ts","sourceRoot":"","sources":["../../src/typeUtils/accountOrAgentIDfromSessionID.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE/C,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,SAAS,GACnB,YAAY,GAAG,OAAO,CAGxB"}
@@ -0,0 +1,4 @@
1
+ import { type RawCoValue } from "../coValue.js";
2
+ import { RawGroup } from "../coValues/group.js";
3
+ export declare function expectGroup(content: RawCoValue): RawGroup;
4
+ //# sourceMappingURL=expectGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expectGroup.d.ts","sourceRoot":"","sources":["../../src/typeUtils/expectGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAWzD"}
@@ -0,0 +1,4 @@
1
+ import type { RawAccountID } from "../coValues/account.js";
2
+ import type { AgentID } from "../ids.js";
3
+ export declare function isAccountID(id: RawAccountID | AgentID): id is RawAccountID;
4
+ //# sourceMappingURL=isAccountID.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isAccountID.d.ts","sourceRoot":"","sources":["../../src/typeUtils/isAccountID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,wBAAgB,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,GAAG,EAAE,IAAI,YAAY,CAE1E"}
@@ -0,0 +1,4 @@
1
+ import { type RawCoValue } from "../coValue.js";
2
+ import type { JsonValue } from "../jsonValue.js";
3
+ export declare function isCoValue(value: JsonValue | RawCoValue | undefined): value is RawCoValue;
4
+ //# sourceMappingURL=isCoValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isCoValue.d.ts","sourceRoot":"","sources":["../../src/typeUtils/isCoValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAKhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GACxC,KAAK,IAAI,UAAU,CAOrB"}
@@ -0,0 +1,5 @@
1
+ export declare function parseError(e: unknown): {
2
+ message: string | null;
3
+ stack: string | null;
4
+ };
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG;IACtC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAKA"}
package/package.json CHANGED
@@ -2,22 +2,22 @@
2
2
  "name": "cojson",
3
3
  "module": "dist/index.js",
4
4
  "main": "dist/index.js",
5
- "types": "src/index.ts",
5
+ "types": "dist/index.d.ts",
6
6
  "exports": {
7
7
  ".": {
8
- "types": "./src/index.ts",
8
+ "types": "./dist/index.d.ts",
9
9
  "default": "./dist/index.js"
10
10
  },
11
11
  "./dist/crypto/PureJSCrypto": {
12
- "types": "./src/crypto/PureJSCrypto.ts",
12
+ "types": "./dist/crypto/PureJSCrypto.d.ts",
13
13
  "default": "./dist/crypto/PureJSCrypto.js"
14
14
  },
15
15
  "./crypto/PureJSCrypto": {
16
- "types": "./src/crypto/PureJSCrypto.ts",
16
+ "types": "./dist/crypto/PureJSCrypto.d.ts",
17
17
  "default": "./dist/crypto/PureJSCrypto.js"
18
18
  },
19
19
  "./crypto/WasmCrypto": {
20
- "types": "./src/crypto/WasmCrypto.ts",
20
+ "types": "./dist/crypto/WasmCrypto.d.ts",
21
21
  "default": "./dist/crypto/WasmCrypto.js"
22
22
  },
23
23
  "./dist/*": "./dist/*",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "type": "module",
27
27
  "license": "MIT",
28
- "version": "0.10.15",
28
+ "version": "0.11.0",
29
29
  "devDependencies": {
30
30
  "@opentelemetry/sdk-metrics": "^1.29.0",
31
31
  "typescript": "~5.6.2",
@@ -29,7 +29,12 @@ import { RawBinaryCoStream, RawCoStream } from "./coStream.js";
29
29
  export const EVERYONE = "everyone" as const;
30
30
  export type Everyone = "everyone";
31
31
 
32
- export type ParentGroupReferenceRole = "extend" | "reader" | "writer" | "admin";
32
+ export type ParentGroupReferenceRole =
33
+ | "revoked"
34
+ | "extend"
35
+ | "reader"
36
+ | "writer"
37
+ | "admin";
33
38
 
34
39
  export type GroupShape = {
35
40
  profile: CoID<RawCoMap> | null;
@@ -45,7 +50,7 @@ export type GroupShape = {
45
50
  { encryptedID: KeyID; encryptingID: KeyID }
46
51
  >;
47
52
  [parent: ParentGroupReference]: ParentGroupReferenceRole;
48
- [child: ChildGroupReference]: "extend";
53
+ [child: ChildGroupReference]: "revoked" | "extend";
49
54
  };
50
55
 
51
56
  /** A `Group` is a scope for permissions of its members (`"reader" | "writer" | "admin"`), applying to objects owned by that group.
@@ -77,7 +82,7 @@ export class RawGroup<
77
82
  *
78
83
  * @category 1. Role reading
79
84
  */
80
- roleOf(accountID: RawAccountID): Role | undefined {
85
+ roleOf(accountID: RawAccountID | typeof EVERYONE): Role | undefined {
81
86
  return this.roleOfInternal(accountID)?.role;
82
87
  }
83
88
 
@@ -85,15 +90,15 @@ export class RawGroup<
85
90
  roleOfInternal(
86
91
  accountID: RawAccountID | AgentID | typeof EVERYONE,
87
92
  ): { role: Role; via: CoID<RawGroup> | undefined } | undefined {
88
- const roleHere = this.get(accountID);
93
+ let roleHere = this.get(accountID);
89
94
 
90
95
  if (roleHere === "revoked") {
91
- return undefined;
96
+ roleHere = undefined;
92
97
  }
93
98
 
94
99
  let roleInfo:
95
100
  | {
96
- role: Exclude<Role, "revoked">;
101
+ role: Role;
97
102
  via: CoID<RawGroup> | undefined;
98
103
  }
99
104
  | undefined = roleHere && { role: roleHere, via: undefined };
@@ -114,6 +119,12 @@ export class RawGroup<
114
119
  }
115
120
  }
116
121
 
122
+ if (!roleInfo && accountID !== "everyone") {
123
+ const everyoneRole = this.get("everyone");
124
+
125
+ if (everyoneRole) return { role: everyoneRole, via: undefined };
126
+ }
127
+
117
128
  return roleInfo;
118
129
  }
119
130
 
@@ -122,6 +133,11 @@ export class RawGroup<
122
133
 
123
134
  for (const key of this.keys()) {
124
135
  if (isParentGroupReference(key)) {
136
+ // Check if the parent group reference is revoked
137
+ if (this.get(key) === "revoked") {
138
+ continue;
139
+ }
140
+
125
141
  const parent = this.core.node.expectCoValueLoaded(
126
142
  getParentGroupId(key),
127
143
  "Expected parent group to be loaded",
@@ -183,6 +199,11 @@ export class RawGroup<
183
199
 
184
200
  for (const key of this.keys()) {
185
201
  if (isChildGroupReference(key)) {
202
+ // Check if the child group reference is revoked
203
+ if (this.get(key) === "revoked") {
204
+ continue;
205
+ }
206
+
186
207
  const child = this.core.node.expectCoValueLoaded(
187
208
  getChildGroupId(key),
188
209
  "Expected child group to be loaded",
@@ -385,6 +406,18 @@ export class RawGroup<
385
406
  });
386
407
  }
387
408
 
409
+ getAllMemberKeysSet() {
410
+ const memberKeys = new Set(this.getMemberKeys());
411
+
412
+ for (const { group } of this.getParentGroups()) {
413
+ for (const key of group.getAllMemberKeysSet()) {
414
+ memberKeys.add(key);
415
+ }
416
+ }
417
+
418
+ return memberKeys;
419
+ }
420
+
388
421
  /** @internal */
389
422
  rotateReadKey(removedMemberKey?: RawAccountID | AgentID | "everyone") {
390
423
  const memberKeys = this.getMemberKeys().filter(
@@ -606,6 +639,43 @@ export class RawGroup<
606
639
  );
607
640
  }
608
641
 
642
+ async revokeExtend(parent: RawGroup) {
643
+ if (this.myRole() !== "admin") {
644
+ throw new Error(
645
+ "To unextend a group, the current account must be an admin in the child group",
646
+ );
647
+ }
648
+
649
+ if (
650
+ parent.myRole() !== "admin" &&
651
+ parent.myRole() !== "writer" &&
652
+ parent.myRole() !== "reader" &&
653
+ parent.myRole() !== "writeOnly"
654
+ ) {
655
+ throw new Error(
656
+ "To unextend a group, the current account must be a member of the parent group",
657
+ );
658
+ }
659
+
660
+ if (
661
+ !this.get(`parent_${parent.id}`) ||
662
+ this.get(`parent_${parent.id}`) === "revoked"
663
+ ) {
664
+ return;
665
+ }
666
+
667
+ // Set the parent key on the child group to `revoked`
668
+ this.set(`parent_${parent.id}`, "revoked", "trusting");
669
+
670
+ // Set the child key on the parent group to `revoked`
671
+ parent.set(`child_${this.id}`, "revoked", "trusting");
672
+
673
+ await this.loadAllChildGroups();
674
+
675
+ // Rotate the keys on the child group
676
+ this.rotateReadKey();
677
+ }
678
+
609
679
  /**
610
680
  * Strips the specified member of all roles (preventing future writes in
611
681
  * the group and owned values) and rotates the read encryption key for that group
@@ -781,8 +851,9 @@ export class RawGroup<
781
851
 
782
852
  export function isInheritableRole(
783
853
  roleInParent: Role | undefined,
784
- ): roleInParent is "admin" | "writer" | "reader" {
854
+ ): roleInParent is "revoked" | "admin" | "writer" | "reader" {
785
855
  return (
856
+ roleInParent === "revoked" ||
786
857
  roleInParent === "admin" ||
787
858
  roleInParent === "writer" ||
788
859
  roleInParent === "reader"
@@ -790,9 +861,13 @@ export function isInheritableRole(
790
861
  }
791
862
 
792
863
  function isMorePermissiveAndShouldInherit(
793
- roleInParent: "admin" | "writer" | "reader",
794
- roleInChild: Exclude<Role, "revoked"> | undefined,
864
+ roleInParent: "revoked" | "admin" | "writer" | "reader",
865
+ roleInChild: Role | undefined,
795
866
  ) {
867
+ if (roleInParent === "revoked") {
868
+ return true;
869
+ }
870
+
796
871
  if (roleInParent === "admin") {
797
872
  return !roleInChild || roleInChild !== "admin";
798
873
  }
package/src/jsonValue.ts CHANGED
@@ -8,11 +8,15 @@ export type JsonObject = { [key: string]: JsonValue | undefined };
8
8
  type AtLeastOne<T, U = { [K in keyof T]: Pick<T, K> }> = Partial<T> &
9
9
  U[keyof U];
10
10
  type ExcludeEmpty<T> = T extends AtLeastOne<T> ? T : never;
11
+ type ExcludeNull<T> = T extends null ? never : T;
12
+ type IsFunction<T> = T extends (...args: any[]) => any ? true : false;
13
+ type ContainsSymbolKeys<T> = keyof ExcludeNull<T> extends symbol ? true : false;
11
14
 
12
- export type CoJsonValue<T> =
13
- | JsonValue
14
- | CoJsonObjectWithIndex<T>
15
- | CoJsonArray<T>;
15
+ export type CoJsonValue<T> = IsFunction<T> extends true
16
+ ? "Functions are not allowed"
17
+ : ContainsSymbolKeys<T> extends true
18
+ ? "Only string or number keys are allowed"
19
+ : JsonValue | CoJsonObjectWithIndex<T> | CoJsonArray<T>;
16
20
  export type CoJsonArray<T> = CoJsonValue<T>[] | readonly CoJsonValue<T>[];
17
21
 
18
22
  /**
@@ -25,7 +29,7 @@ export type CoJsonArray<T> = CoJsonValue<T>[] | readonly CoJsonValue<T>[];
25
29
  * Applying the ExcludeEmpty type here to make sure we don't accept functions or non-serializable values
26
30
  */
27
31
  export type CoJsonObjectWithIndex<T> = ExcludeEmpty<{
28
- [K in keyof T & string]: CoJsonValue1L<T[K]> | undefined;
32
+ [K in keyof T]: CoJsonValue1L<T[K]> | undefined;
29
33
  }>;
30
34
 
31
35
  /**
@@ -101,8 +101,7 @@ export function determineValidTransactions(
101
101
  }
102
102
 
103
103
  const transactorRoleAtTxTime =
104
- groupAtTime.roleOfInternal(effectiveTransactor)?.role ||
105
- groupAtTime.roleOfInternal(EVERYONE)?.role;
104
+ groupAtTime.roleOfInternal(effectiveTransactor)?.role;
106
105
 
107
106
  if (
108
107
  transactorRoleAtTxTime !== "admin" &&
@@ -135,8 +134,8 @@ export function determineValidTransactions(
135
134
  }
136
135
 
137
136
  function isHigherRole(a: Role, b: Role | undefined) {
138
- if (a === undefined) return false;
139
- if (b === undefined) return true;
137
+ if (a === undefined || a === "revoked") return false;
138
+ if (b === undefined || b === "revoked") return true;
140
139
  if (b === "admin") return false;
141
140
  if (a === "admin") return true;
142
141
 
@@ -657,6 +657,79 @@ describe("extend", () => {
657
657
  });
658
658
  });
659
659
 
660
+ describe("unextend", () => {
661
+ test("should revoke roles", async () => {
662
+ const { node1, node2, node3 } = await createThreeConnectedNodes(
663
+ "server",
664
+ "server",
665
+ "server",
666
+ );
667
+
668
+ // `parentGroup` has `alice` as a writer
669
+ const parentGroup = node1.node.createGroup();
670
+ const alice = await loadCoValueOrFail(node1.node, node2.accountID);
671
+ parentGroup.addMember(alice, "writer");
672
+ // `alice`'s role in `parentGroup` is `"writer"`
673
+ expect(parentGroup.roleOf(alice.id)).toBe("writer");
674
+
675
+ // `childGroup` has `bob` as a reader
676
+ const childGroup = node1.node.createGroup();
677
+ const bob = await loadCoValueOrFail(node1.node, node3.accountID);
678
+ childGroup.addMember(bob, "reader");
679
+ // `bob`'s role in `childGroup` is `"reader"`
680
+ expect(childGroup.roleOf(bob.id)).toBe("reader");
681
+
682
+ // `childGroup` has `parentGroup`'s members (in this case, `alice` as a writer)
683
+ childGroup.extend(parentGroup);
684
+ expect(childGroup.roleOf(alice.id)).toBe("writer");
685
+
686
+ // `childGroup` no longer has `parentGroup`'s members
687
+ await childGroup.revokeExtend(parentGroup);
688
+ expect(childGroup.roleOf(bob.id)).toBe("reader");
689
+ expect(childGroup.roleOf(alice.id)).toBe(undefined);
690
+ });
691
+
692
+ test("should do nothing if applied to a group that is not extended", async () => {
693
+ const { node1, node2, node3 } = await createThreeConnectedNodes(
694
+ "server",
695
+ "server",
696
+ "server",
697
+ );
698
+
699
+ const parentGroup = node1.node.createGroup();
700
+ const alice = await loadCoValueOrFail(node1.node, node2.accountID);
701
+ parentGroup.addMember(alice, "writer");
702
+ const childGroup = node1.node.createGroup();
703
+ const bob = await loadCoValueOrFail(node1.node, node3.accountID);
704
+ childGroup.addMember(bob, "reader");
705
+ await childGroup.revokeExtend(parentGroup);
706
+ expect(childGroup.roleOf(bob.id)).toBe("reader");
707
+ expect(childGroup.roleOf(alice.id)).toBe(undefined);
708
+ });
709
+
710
+ test("should not throw if the revokeExtend is called twice", async () => {
711
+ const { node1, node2, node3 } = await createThreeConnectedNodes(
712
+ "server",
713
+ "server",
714
+ "server",
715
+ );
716
+
717
+ const parentGroup = node1.node.createGroup();
718
+ const alice = await loadCoValueOrFail(node1.node, node2.accountID);
719
+ parentGroup.addMember(alice, "writer");
720
+ const childGroup = node1.node.createGroup();
721
+ const bob = await loadCoValueOrFail(node1.node, node3.accountID);
722
+ childGroup.addMember(bob, "reader");
723
+
724
+ childGroup.extend(parentGroup);
725
+
726
+ await childGroup.revokeExtend(parentGroup);
727
+ await childGroup.revokeExtend(parentGroup);
728
+ expect(childGroup.roleOf(bob.id)).toBe("reader");
729
+ expect(childGroup.roleOf(alice.id)).toBe(undefined);
730
+ });
731
+ });
732
+
660
733
  describe("extend with role mapping", () => {
661
734
  test("mapping to writer should add the ability to write", async () => {
662
735
  const { node1, node2 } = await createTwoConnectedNodes("server", "server");
@@ -842,3 +915,117 @@ describe("extend with role mapping", () => {
842
915
  expect(mapOnNode2.get("test")).toEqual("Written from the admin");
843
916
  });
844
917
  });
918
+ test("roleOf should prioritize explicit account role over everyone role in same group", async () => {
919
+ const { node1, node2 } = await createTwoConnectedNodes("server", "server");
920
+
921
+ const group = node1.node.createGroup();
922
+ const account2 = await loadCoValueOrFail(node1.node, node2.accountID);
923
+
924
+ // Add both everyone and specific account
925
+ group.addMember("everyone", "reader");
926
+ group.addMember(account2, "writer");
927
+
928
+ // Should return the explicit role, not everyone's role
929
+ expect(group.roleOf(node2.accountID)).toEqual("writer");
930
+
931
+ // Change everyone's role
932
+ group.addMember("everyone", "writer");
933
+
934
+ // Should still return the explicit role
935
+ expect(group.roleOf(node2.accountID)).toEqual("writer");
936
+ });
937
+
938
+ test("roleOf should prioritize inherited everyone role over explicit account role", async () => {
939
+ const { node1, node2 } = await createTwoConnectedNodes("server", "server");
940
+
941
+ const parentGroup = node1.node.createGroup();
942
+ const childGroup = node1.node.createGroup();
943
+ const account2 = await loadCoValueOrFail(node1.node, node2.accountID);
944
+
945
+ // Set up inheritance
946
+ childGroup.extend(parentGroup);
947
+
948
+ // Add everyone to parent and account to child
949
+ parentGroup.addMember("everyone", "writer");
950
+ childGroup.addMember(account2, "reader");
951
+
952
+ // Should return the explicit role from child, not inherited everyone role
953
+ expect(childGroup.roleOf(node2.accountID)).toEqual("writer");
954
+ });
955
+
956
+ test("roleOf should use everyone role when no explicit role exists", async () => {
957
+ const { node1, node2 } = await createTwoConnectedNodes("server", "server");
958
+
959
+ const group = node1.node.createGroup();
960
+
961
+ // Add only everyone role
962
+ group.addMember("everyone", "reader");
963
+
964
+ // Should return everyone's role when no explicit role exists
965
+ expect(group.roleOf(node2.accountID)).toEqual("reader");
966
+ });
967
+
968
+ test("roleOf should inherit everyone role from parent when no explicit roles exist", async () => {
969
+ const { node1, node2 } = await createTwoConnectedNodes("server", "server");
970
+
971
+ const parentGroup = node1.node.createGroup();
972
+ const childGroup = node1.node.createGroup();
973
+
974
+ // Set up inheritance
975
+ childGroup.extend(parentGroup);
976
+
977
+ // Add everyone to parent only
978
+ parentGroup.addMember("everyone", "reader");
979
+
980
+ // Should inherit everyone's role from parent
981
+ expect(childGroup.roleOf(node2.accountID)).toEqual("reader");
982
+ });
983
+
984
+ test("roleOf should handle everyone role inheritance through multiple levels", async () => {
985
+ const { node1, node2 } = await createTwoConnectedNodes("server", "server");
986
+
987
+ const grandParentGroup = node1.node.createGroup();
988
+ const parentGroup = node1.node.createGroup();
989
+ const childGroup = node1.node.createGroup();
990
+
991
+ const childGroupOnNode2 = await loadCoValueOrFail(node2.node, childGroup.id);
992
+
993
+ const account2 = await loadCoValueOrFail(node1.node, node2.accountID);
994
+
995
+ // Set up inheritance chain
996
+ parentGroup.extend(grandParentGroup);
997
+ childGroup.extend(parentGroup);
998
+
999
+ // Add everyone to grandparent
1000
+ grandParentGroup.addMember("everyone", "writer");
1001
+
1002
+ // Should inherit everyone's role from grandparent
1003
+ expect(childGroup.roleOf(node2.accountID)).toEqual("writer");
1004
+
1005
+ // Add explicit role in parent
1006
+ parentGroup.addMember(account2, "reader");
1007
+
1008
+ // Should use parent's explicit role instead of grandparent's everyone role
1009
+ expect(childGroup.roleOf(node2.accountID)).toEqual("writer");
1010
+
1011
+ // Add explicit role in child
1012
+ childGroup.addMember(account2, "admin");
1013
+ await childGroup.core.waitForSync();
1014
+
1015
+ // Should use child's explicit role
1016
+ expect(childGroup.roleOf(node2.accountID)).toEqual("admin");
1017
+
1018
+ // Remove child's explicit role
1019
+ await childGroupOnNode2.removeMember(account2);
1020
+ await childGroupOnNode2.core.waitForSync();
1021
+
1022
+ // Should fall back to parent's explicit role
1023
+ expect(childGroup.roleOf(node2.accountID)).toEqual("writer");
1024
+
1025
+ // Remove parent's explicit role
1026
+ await parentGroup.removeMember(account2);
1027
+ await childGroup.core.waitForSync();
1028
+
1029
+ // Should fall back to grandparent's everyone role
1030
+ expect(childGroup.roleOf(node2.accountID)).toEqual("writer");
1031
+ });