jazz-tools 0.14.24 → 0.14.26
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.
- package/.turbo/turbo-build.log +5 -5
- package/CHANGELOG.md +14 -0
- package/dist/{chunk-LCH2NPSZ.js → chunk-G3QC4FAY.js} +28 -3
- package/dist/chunk-G3QC4FAY.js.map +1 -0
- package/dist/coValues/group.d.ts +24 -0
- package/dist/coValues/group.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/testing.js +1 -1
- package/package.json +2 -2
- package/src/coValues/group.ts +47 -7
- package/src/tests/groupsAndAccounts.test.ts +51 -15
- package/src/tests/patterns/requestToJoin.test.ts +4 -4
- package/dist/chunk-LCH2NPSZ.js.map +0 -1
package/dist/coValues/group.d.ts
CHANGED
@@ -29,7 +29,18 @@ export declare class Group extends CoValueBase implements CoValue {
|
|
29
29
|
myRole(): Role | undefined;
|
30
30
|
addMember(member: Everyone, role: "writer" | "reader" | "writeOnly"): void;
|
31
31
|
addMember(member: Account, role: AccountRole): void;
|
32
|
+
/** @category Identity & Permissions
|
33
|
+
* Gives members of a parent group membership in this group.
|
34
|
+
* @param member The group that will gain access to this group.
|
35
|
+
* @param role The role all members of the parent group should have in this group.
|
36
|
+
*/
|
37
|
+
addMember(member: Group, role?: "reader" | "writer" | "admin" | "inherit"): void;
|
32
38
|
removeMember(member: Everyone | Account): Promise<void>;
|
39
|
+
/** @category Identity & Permissions
|
40
|
+
* Revokes membership from members a parent group.
|
41
|
+
* @param member The group that will lose access to this group.
|
42
|
+
*/
|
43
|
+
removeMember(member: Group): Promise<void>;
|
33
44
|
get members(): Array<{
|
34
45
|
id: string;
|
35
46
|
role: AccountRole;
|
@@ -46,7 +57,20 @@ export declare class Group extends CoValueBase implements CoValue {
|
|
46
57
|
*/
|
47
58
|
makePublic(role?: "reader" | "writer"): this;
|
48
59
|
getParentGroups(): Array<Group>;
|
60
|
+
/** @category Identity & Permissions
|
61
|
+
* Gives members of a parent group membership in this group.
|
62
|
+
* @deprecated Use `addMember` instead.
|
63
|
+
* @param parent The group that will gain access to this group.
|
64
|
+
* @param roleMapping The role all members of the parent group should have in this group.
|
65
|
+
* @returns This group.
|
66
|
+
*/
|
49
67
|
extend(parent: Group, roleMapping?: "reader" | "writer" | "admin" | "inherit"): this;
|
68
|
+
/** @category Identity & Permissions
|
69
|
+
* Revokes membership from members a parent group.
|
70
|
+
* @deprecated Use `removeMember` instead.
|
71
|
+
* @param parent The group that will lose access to this group.
|
72
|
+
* @returns This group.
|
73
|
+
*/
|
50
74
|
revokeExtend(parent: Group): Promise<this>;
|
51
75
|
/** @category Subscription & Loading */
|
52
76
|
static load<G extends Group, const R extends RefsToResolve<G>>(this: CoValueClass<G>, id: ID<G>, options?: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/coValues/group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,IAAI,EACL,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/coValues/group.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/dist/testing.js
CHANGED
package/package.json
CHANGED
@@ -17,12 +17,12 @@
|
|
17
17
|
},
|
18
18
|
"type": "module",
|
19
19
|
"license": "MIT",
|
20
|
-
"version": "0.14.
|
20
|
+
"version": "0.14.26",
|
21
21
|
"dependencies": {
|
22
22
|
"@scure/bip39": "^1.3.0",
|
23
23
|
"fast-myers-diff": "^3.2.0",
|
24
24
|
"zod": "3.25.28",
|
25
|
-
"cojson": "0.14.
|
25
|
+
"cojson": "0.14.26"
|
26
26
|
},
|
27
27
|
"devDependencies": {
|
28
28
|
"tsup": "8.3.5",
|
package/src/coValues/group.ts
CHANGED
@@ -7,12 +7,10 @@ import type {
|
|
7
7
|
Role,
|
8
8
|
} from "cojson";
|
9
9
|
import type {
|
10
|
-
AnyAccountSchema,
|
11
10
|
CoMap,
|
12
11
|
CoValue,
|
13
12
|
CoValueClass,
|
14
13
|
ID,
|
15
|
-
InstanceOfSchema,
|
16
14
|
RefEncoded,
|
17
15
|
RefsToResolve,
|
18
16
|
RefsToResolveStrict,
|
@@ -30,7 +28,6 @@ import {
|
|
30
28
|
RegisteredSchemas,
|
31
29
|
accessChildById,
|
32
30
|
activeAccountContext,
|
33
|
-
anySchemaToCoSchema,
|
34
31
|
ensureCoValueLoaded,
|
35
32
|
isControlledAccount,
|
36
33
|
loadCoValueWithoutMe,
|
@@ -147,12 +144,42 @@ export class Group extends CoValueBase implements CoValue {
|
|
147
144
|
|
148
145
|
addMember(member: Everyone, role: "writer" | "reader" | "writeOnly"): void;
|
149
146
|
addMember(member: Account, role: AccountRole): void;
|
150
|
-
|
151
|
-
|
147
|
+
/** @category Identity & Permissions
|
148
|
+
* Gives members of a parent group membership in this group.
|
149
|
+
* @param member The group that will gain access to this group.
|
150
|
+
* @param role The role all members of the parent group should have in this group.
|
151
|
+
*/
|
152
|
+
addMember(
|
153
|
+
member: Group,
|
154
|
+
role?: "reader" | "writer" | "admin" | "inherit",
|
155
|
+
): void;
|
156
|
+
addMember(
|
157
|
+
member: Group | Everyone | Account,
|
158
|
+
role?: AccountRole | "inherit",
|
159
|
+
) {
|
160
|
+
if (member !== "everyone" && member._type === "Group") {
|
161
|
+
if (role === "writeOnly")
|
162
|
+
throw new Error("Cannot add group as member with write-only role");
|
163
|
+
this._raw.extend(member._raw, role);
|
164
|
+
} else if (role !== undefined && role !== "inherit") {
|
165
|
+
this._raw.addMember(member === "everyone" ? member : member._raw, role);
|
166
|
+
}
|
152
167
|
}
|
153
168
|
|
154
|
-
removeMember(member: Everyone | Account)
|
155
|
-
|
169
|
+
removeMember(member: Everyone | Account): Promise<void>;
|
170
|
+
/** @category Identity & Permissions
|
171
|
+
* Revokes membership from members a parent group.
|
172
|
+
* @param member The group that will lose access to this group.
|
173
|
+
*/
|
174
|
+
removeMember(member: Group): Promise<void>;
|
175
|
+
removeMember(member: Group | Everyone | Account) {
|
176
|
+
if (member !== "everyone" && member._type === "Group") {
|
177
|
+
return this._raw.revokeExtend(member._raw);
|
178
|
+
} else {
|
179
|
+
return this._raw.removeMember(
|
180
|
+
member === "everyone" ? member : member._raw,
|
181
|
+
);
|
182
|
+
}
|
156
183
|
}
|
157
184
|
|
158
185
|
get members(): Array<{
|
@@ -231,6 +258,13 @@ export class Group extends CoValueBase implements CoValue {
|
|
231
258
|
return this._raw.getParentGroups().map((group) => Group.fromRaw(group));
|
232
259
|
}
|
233
260
|
|
261
|
+
/** @category Identity & Permissions
|
262
|
+
* Gives members of a parent group membership in this group.
|
263
|
+
* @deprecated Use `addMember` instead.
|
264
|
+
* @param parent The group that will gain access to this group.
|
265
|
+
* @param roleMapping The role all members of the parent group should have in this group.
|
266
|
+
* @returns This group.
|
267
|
+
*/
|
234
268
|
extend(
|
235
269
|
parent: Group,
|
236
270
|
roleMapping?: "reader" | "writer" | "admin" | "inherit",
|
@@ -239,6 +273,12 @@ export class Group extends CoValueBase implements CoValue {
|
|
239
273
|
return this;
|
240
274
|
}
|
241
275
|
|
276
|
+
/** @category Identity & Permissions
|
277
|
+
* Revokes membership from members a parent group.
|
278
|
+
* @deprecated Use `removeMember` instead.
|
279
|
+
* @param parent The group that will lose access to this group.
|
280
|
+
* @returns This group.
|
281
|
+
*/
|
242
282
|
async revokeExtend(parent: Group) {
|
243
283
|
await this._raw.revokeExtend(parent._raw);
|
244
284
|
return this;
|
@@ -1,13 +1,6 @@
|
|
1
1
|
import { WasmCrypto } from "cojson/crypto/WasmCrypto";
|
2
|
-
import {
|
3
|
-
|
4
|
-
beforeEach,
|
5
|
-
describe,
|
6
|
-
expect,
|
7
|
-
expectTypeOf,
|
8
|
-
test,
|
9
|
-
} from "vitest";
|
10
|
-
import { Account, CoMap, Group, Profile, coField, z } from "../exports.js";
|
2
|
+
import { assert, beforeEach, describe, expect, test } from "vitest";
|
3
|
+
import { CoMap, Group, z } from "../exports.js";
|
11
4
|
import { Loaded, Ref, co, zodSchemaToCoSchema } from "../internal.js";
|
12
5
|
import { createJazzTestAccount, setupJazzTestSync } from "../testing.js";
|
13
6
|
import { setupTwoNodes, waitFor } from "./utils.js";
|
@@ -112,7 +105,7 @@ describe("Group inheritance", () => {
|
|
112
105
|
const parentGroup = Group.create({ owner: me });
|
113
106
|
const group = Group.create({ owner: me });
|
114
107
|
|
115
|
-
group.
|
108
|
+
group.addMember(parentGroup);
|
116
109
|
|
117
110
|
const reader = await co.account().createAs(me, {
|
118
111
|
creationProps: { name: "Reader" },
|
@@ -147,8 +140,8 @@ describe("Group inheritance", () => {
|
|
147
140
|
const parentGroup = Group.create({ owner: me });
|
148
141
|
const group = Group.create({ owner: me });
|
149
142
|
|
150
|
-
group.
|
151
|
-
parentGroup.
|
143
|
+
group.addMember(parentGroup);
|
144
|
+
parentGroup.addMember(grandParentGroup);
|
152
145
|
|
153
146
|
const reader = await co.account().createAs(me, {
|
154
147
|
creationProps: { name: "Reader" },
|
@@ -188,8 +181,8 @@ describe("Group inheritance", () => {
|
|
188
181
|
const parentGroup = Group.create({ owner: me });
|
189
182
|
const childGroup = Group.create({ owner: me });
|
190
183
|
|
191
|
-
childGroup.
|
192
|
-
parentGroup.
|
184
|
+
childGroup.addMember(parentGroup);
|
185
|
+
parentGroup.addMember(grandParentGroup);
|
193
186
|
|
194
187
|
const parentGroups = childGroup.getParentGroups();
|
195
188
|
|
@@ -269,6 +262,10 @@ describe("Group inheritance", () => {
|
|
269
262
|
|
270
263
|
// @ts-expect-error - Even though readerInvite is a valid role for an account, we don't allow it to not create confusion when using the intellisense
|
271
264
|
group.addMember(account, "readerInvite");
|
265
|
+
// @ts-expect-error - Only groups can have an `inherit` role, not accounts
|
266
|
+
group.addMember(account, "inherit");
|
267
|
+
// @ts-expect-error - Only groups can be added without a role, not accounts
|
268
|
+
group.addMember(account, undefined);
|
272
269
|
|
273
270
|
expect(group.members).not.toContainEqual(
|
274
271
|
expect.objectContaining({
|
@@ -279,6 +276,45 @@ describe("Group inheritance", () => {
|
|
279
276
|
|
280
277
|
expect(group.getRoleOf(account.id)).toBe("readerInvite");
|
281
278
|
});
|
279
|
+
|
280
|
+
test("adding a group member as writeOnly should fail", async () => {
|
281
|
+
const account = await createJazzTestAccount({});
|
282
|
+
await account.waitForAllCoValuesSync();
|
283
|
+
|
284
|
+
const parentGroup = Group.create();
|
285
|
+
const group = Group.create();
|
286
|
+
expect(() => {
|
287
|
+
// @ts-expect-error
|
288
|
+
group.addMember(parentGroup, "writeOnly");
|
289
|
+
}).toThrow();
|
290
|
+
});
|
291
|
+
|
292
|
+
test("Removing member group", async () => {
|
293
|
+
const alice = await createJazzTestAccount({});
|
294
|
+
await alice.waitForAllCoValuesSync();
|
295
|
+
const bob = await createJazzTestAccount({});
|
296
|
+
await bob.waitForAllCoValuesSync();
|
297
|
+
|
298
|
+
const parentGroup = Group.create();
|
299
|
+
// `parentGroup` has `alice` as a writer
|
300
|
+
parentGroup.addMember(alice, "writer");
|
301
|
+
expect(parentGroup.getRoleOf(alice.id)).toBe("writer");
|
302
|
+
|
303
|
+
const group = Group.create();
|
304
|
+
// `group` has `bob` as a reader
|
305
|
+
group.addMember(bob, "reader");
|
306
|
+
expect(group.getRoleOf(bob.id)).toBe("reader");
|
307
|
+
|
308
|
+
group.addMember(parentGroup);
|
309
|
+
// `group` has `parentGroup`'s members (in this case, `alice` as a writer)
|
310
|
+
expect(group.getRoleOf(bob.id)).toBe("reader");
|
311
|
+
expect(group.getRoleOf(alice.id)).toBe("writer");
|
312
|
+
|
313
|
+
// `group` no longer has `parentGroup`'s members
|
314
|
+
await group.removeMember(parentGroup);
|
315
|
+
expect(group.getRoleOf(bob.id)).toBe("reader");
|
316
|
+
expect(group.getRoleOf(alice.id)).toBe(undefined);
|
317
|
+
});
|
282
318
|
});
|
283
319
|
|
284
320
|
describe("Group.getRoleOf", () => {
|
@@ -557,7 +593,7 @@ describe("Group.members", () => {
|
|
557
593
|
await bob.waitForAllCoValuesSync();
|
558
594
|
|
559
595
|
parentGroup.addMember(bob, "writer");
|
560
|
-
childGroup.
|
596
|
+
childGroup.addMember(parentGroup, "reader");
|
561
597
|
|
562
598
|
expect(childGroup.getRoleOf(bob.id)).toBe("reader");
|
563
599
|
|
@@ -41,15 +41,15 @@ async function setup() {
|
|
41
41
|
|
42
42
|
const publicGroup = Group.create(admin1);
|
43
43
|
publicGroup.addMember("everyone", "reader");
|
44
|
-
publicGroup.
|
44
|
+
publicGroup.addMember(adminsGroup);
|
45
45
|
|
46
46
|
// Everyone can write to requests, but only admins can read
|
47
47
|
const requestsGroup = Group.create(admin1);
|
48
48
|
requestsGroup.addMember("everyone", "writeOnly");
|
49
|
-
requestsGroup.
|
49
|
+
requestsGroup.addMember(adminsGroup);
|
50
50
|
|
51
51
|
const organizationGroup = Group.create(admin1);
|
52
|
-
organizationGroup.
|
52
|
+
organizationGroup.addMember(adminsGroup);
|
53
53
|
|
54
54
|
const organization = Organization.create(
|
55
55
|
{
|
@@ -95,7 +95,7 @@ async function sendRequestToJoin(organizationId: string, account: Account) {
|
|
95
95
|
}
|
96
96
|
|
97
97
|
const group = Group.create(account);
|
98
|
-
group.
|
98
|
+
group.addMember(organization.adminsGroup);
|
99
99
|
|
100
100
|
const request = RequestToJoin.create(
|
101
101
|
{
|