jazz-tools 0.8.17 → 0.8.19-group-inheritance.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,12 @@
1
+
2
+ > jazz-tools@0.8.18 build /Users/anselm/jazz/jazz/packages/jazz-tools
3
+ > rm -rf ./dist && pnpm run build:web && pnpm run build:native
4
+
5
+
6
+ > jazz-tools@0.8.18 build:web /Users/anselm/jazz/jazz/packages/jazz-tools
7
+ > tsc --sourceMap --outDir dist/web -p tsconfig.web.json
8
+
9
+
10
+ > jazz-tools@0.8.18 build:native /Users/anselm/jazz/jazz/packages/jazz-tools
11
+ > tsc --sourceMap --outDir dist/native -p tsconfig.native.json
12
+
@@ -0,0 +1,4 @@
1
+
2
+ > jazz-tools@0.7.35-guest-auth.5 lint /Users/anselm/jazz/jazz/packages/jazz-tools
3
+ > eslint . --ext ts,tsx
4
+
@@ -0,0 +1,144 @@
1
+
2
+ > jazz-tools@0.7.35-unique.2 test /Users/anselm/jazz/jazz/packages/jazz-tools
3
+ > vitest --run
4
+
5
+
6
+ RUN v0.34.6 /Users/anselm/jazz/jazz/packages/jazz-tools
7
+
8
+ ✓ src/tests/groupsAndAccounts.test.ts (1 test) 64ms
9
+ stdout | unknown test
10
+ TestMap schema undefined
11
+
12
+ ✓ src/tests/deepLoading.test.ts (3 tests) 83ms
13
+ stdout | src/tests/coList.test.ts > Simple CoList operations > Mutation > splice
14
+ [ 'bread', 'onion' ] 0
15
+ [ 'bread', 'salt', 'onion' ] 1
16
+
17
+ stdout | src/tests/coList.test.ts > CoList resolution > Subscription & auto-resolution
18
+ subscribedList?.[0]?.[0]?.[0] undefined
19
+ subscribedList?.[0]?.[0]?.[0] undefined
20
+ subscribedList?.[0]?.[0]?.[0] a
21
+ subscribedList?.[0]?.[0]?.[0] x
22
+ subscribedList?.[0]?.[0]?.[0] y
23
+ subscribedList?.[0]?.[0]?.[0] w
24
+
25
+ ✓ src/tests/coList.test.ts (10 tests) 190ms
26
+ stdout | src/tests/coStream.test.ts > CoStream resolution > Subscription & auto-resolution
27
+ subscribedStream[me.id] {
28
+ value: [Getter],
29
+ ref: [Getter],
30
+ by: [Getter],
31
+ madeAt: 2024-09-05T17:35:38.414Z,
32
+ tx: {
33
+ sessionID: 'co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_ziAMdGVstAxF',
34
+ txIndex: 0
35
+ }
36
+ }
37
+ subscribedStream[me.id]?.value?.[me.id]?.value undefined
38
+ subscribedStream[me.id]?.value?.[me.id]?.value?.[me.id]?.value undefined
39
+ subscribedStream[me.id] {
40
+ value: [Getter],
41
+ ref: [Getter],
42
+ by: [Getter],
43
+ madeAt: 2024-09-05T17:35:38.414Z,
44
+ tx: {
45
+ sessionID: 'co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_ziAMdGVstAxF',
46
+ txIndex: 0
47
+ }
48
+ }
49
+ subscribedStream[me.id]?.value?.[me.id]?.value null
50
+ subscribedStream[me.id]?.value?.[me.id]?.value?.[me.id]?.value undefined
51
+ subscribedStream[me.id] {
52
+ value: [Getter],
53
+ ref: [Getter],
54
+ by: [Getter],
55
+ madeAt: 2024-09-05T17:35:38.414Z,
56
+ tx: {
57
+ sessionID: 'co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_ziAMdGVstAxF',
58
+ txIndex: 0
59
+ }
60
+ }
61
+ subscribedStream[me.id]?.value?.[me.id]?.value {
62
+ id: 'co_zHELVqRmAN6YuGDpKqVrSXJ5qe1',
63
+ _type: 'CoStream',
64
+ perSession: undefined,
65
+ co_zURWEpvoH1e35FGHVxadgXKU8Ri: 'milk',
66
+ in: { co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_ziAMdGVstAxF: 'milk' }
67
+ }
68
+ subscribedStream[me.id]?.value?.[me.id]?.value?.[me.id]?.value milk
69
+ subscribedStream[me.id] {
70
+ value: [Getter],
71
+ ref: [Getter],
72
+ by: [Getter],
73
+ madeAt: 2024-09-05T17:35:38.414Z,
74
+ tx: {
75
+ sessionID: 'co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_ziAMdGVstAxF',
76
+ txIndex: 0
77
+ }
78
+ }
79
+ subscribedStream[me.id]?.value?.[me.id]?.value {
80
+ id: 'co_zHELVqRmAN6YuGDpKqVrSXJ5qe1',
81
+ _type: 'CoStream',
82
+ perSession: undefined,
83
+ co_zURWEpvoH1e35FGHVxadgXKU8Ri: 'bread',
84
+ in: {
85
+ co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_ziAMdGVstAxF: 'milk',
86
+ co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_zgik2JjD86Qa: 'bread'
87
+ }
88
+ }
89
+ subscribedStream[me.id]?.value?.[me.id]?.value?.[me.id]?.value bread
90
+ subscribedStream[me.id] {
91
+ value: [Getter],
92
+ ref: [Getter],
93
+ by: [Getter],
94
+ madeAt: 2024-09-05T17:35:38.424Z,
95
+ tx: {
96
+ sessionID: 'co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_zgik2JjD86Qa',
97
+ txIndex: 0
98
+ }
99
+ }
100
+ subscribedStream[me.id]?.value?.[me.id]?.value {
101
+ id: 'co_zJmdvJY15XJkWF3n3rwPgGfebxa',
102
+ _type: 'CoStream',
103
+ perSession: undefined,
104
+ co_zURWEpvoH1e35FGHVxadgXKU8Ri: 'butter',
105
+ in: { co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_zgik2JjD86Qa: 'butter' }
106
+ }
107
+ subscribedStream[me.id]?.value?.[me.id]?.value?.[me.id]?.value butter
108
+ subscribedStream[me.id] {
109
+ value: [Getter],
110
+ ref: [Getter],
111
+ by: [Getter],
112
+ madeAt: 2024-09-05T17:35:38.424Z,
113
+ tx: {
114
+ sessionID: 'co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_zgik2JjD86Qa',
115
+ txIndex: 0
116
+ }
117
+ }
118
+ subscribedStream[me.id]?.value?.[me.id]?.value {
119
+ id: 'co_zJmdvJY15XJkWF3n3rwPgGfebxa',
120
+ _type: 'CoStream',
121
+ perSession: undefined,
122
+ co_zURWEpvoH1e35FGHVxadgXKU8Ri: 'jam',
123
+ in: { co_zURWEpvoH1e35FGHVxadgXKU8Ri_session_zgik2JjD86Qa: 'jam' }
124
+ }
125
+ subscribedStream[me.id]?.value?.[me.id]?.value?.[me.id]?.value jam
126
+
127
+ ✓ src/tests/coStream.test.ts (10 tests) 205ms
128
+ stdout | src/tests/coMap.test.ts > CoMap resolution > Subscription & auto-resolution
129
+ subscribedMap.nested?.twiceNested?.taste undefined
130
+ subscribedMap.nested?.twiceNested?.taste undefined
131
+ subscribedMap.nested?.twiceNested?.taste sour
132
+ subscribedMap.nested?.twiceNested?.taste sour
133
+ subscribedMap.nested?.twiceNested?.taste sweet
134
+ subscribedMap.nested?.twiceNested?.taste sweet
135
+ subscribedMap.nested?.twiceNested?.taste salty
136
+ subscribedMap.nested?.twiceNested?.taste umami
137
+
138
+ ✓ src/tests/coMap.test.ts (20 tests) 257ms
139
+
140
+ Test Files 5 passed (5)
141
+ Tests 44 passed (44)
142
+ Start at 18:35:37
143
+ Duration 929ms (transform 419ms, setup 0ms, collect 2.29s, tests 799ms, environment 0ms, prepare 298ms)
144
+
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # jazz-tools
2
2
 
3
+ ## 0.8.19-group-inheritance.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 8b87117: Implement Group Inheritance
8
+ - Updated dependencies [8b87117]
9
+ - cojson@0.8.19-group-inheritance.0
10
+
11
+ ## 0.8.18
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [d4319d8]
16
+ - cojson@0.8.18
17
+
3
18
  ## 0.8.17
4
19
 
5
20
  ### Patch Changes
@@ -75,6 +75,10 @@ export class Group extends CoValueBase {
75
75
  this._raw.addMember(member === "everyone" ? member : member._raw, role);
76
76
  return this;
77
77
  }
78
+ removeMember(member) {
79
+ this._raw.removeMember(member === "everyone" ? member : member._raw);
80
+ return this;
81
+ }
78
82
  get members() {
79
83
  return this._raw
80
84
  .keys()
@@ -97,6 +101,10 @@ export class Group extends CoValueBase {
97
101
  };
98
102
  });
99
103
  }
104
+ extend(parent) {
105
+ this._raw.extend(parent._raw);
106
+ return this;
107
+ }
100
108
  /** @category Subscription & Loading */
101
109
  static load(id, as, depth) {
102
110
  return loadCoValue(this, id, as, depth);
@@ -1 +1 @@
1
- {"version":3,"file":"group.js","sourceRoot":"","sources":["../../../src/coValues/group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../../../src/coValues/group.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,10 @@ export class Group extends CoValueBase {
75
75
  this._raw.addMember(member === "everyone" ? member : member._raw, role);
76
76
  return this;
77
77
  }
78
+ removeMember(member) {
79
+ this._raw.removeMember(member === "everyone" ? member : member._raw);
80
+ return this;
81
+ }
78
82
  get members() {
79
83
  return this._raw
80
84
  .keys()
@@ -97,6 +101,10 @@ export class Group extends CoValueBase {
97
101
  };
98
102
  });
99
103
  }
104
+ extend(parent) {
105
+ this._raw.extend(parent._raw);
106
+ return this;
107
+ }
100
108
  /** @category Subscription & Loading */
101
109
  static load(id, as, depth) {
102
110
  return loadCoValue(this, id, as, depth);
@@ -1 +1 @@
1
- {"version":3,"file":"group.js","sourceRoot":"","sources":["../../../src/coValues/group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../../../src/coValues/group.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -19,10 +19,10 @@
19
19
  },
20
20
  "type": "module",
21
21
  "license": "MIT",
22
- "version": "0.8.17",
22
+ "version": "0.8.19-group-inheritance.0",
23
23
  "dependencies": {
24
24
  "fast-check": "^3.17.2",
25
- "cojson": "0.8.17"
25
+ "cojson": "0.8.19-group-inheritance.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "typescript": "^5.3.3",
@@ -142,6 +142,11 @@ export class Group extends CoValueBase implements CoValue {
142
142
  return this;
143
143
  }
144
144
 
145
+ removeMember(member: Everyone | Account) {
146
+ this._raw.removeMember(member === "everyone" ? member : member._raw);
147
+ return this;
148
+ }
149
+
145
150
  get members() {
146
151
  return this._raw
147
152
  .keys()
@@ -172,6 +177,11 @@ export class Group extends CoValueBase implements CoValue {
172
177
  });
173
178
  }
174
179
 
180
+ extend(parent: Group) {
181
+ this._raw.extend(parent._raw);
182
+ return this;
183
+ }
184
+
175
185
  /** @category Subscription & Loading */
176
186
  static load<G extends Group, Depth>(
177
187
  this: CoValueClass<G>,
@@ -1,3 +1,4 @@
1
+ import { RawGroup } from "cojson";
1
2
  import { describe, expect, test } from "vitest";
2
3
  import { Account, CoMap, Group, WasmCrypto, co } from "../index.web.js";
3
4
 
@@ -85,3 +86,95 @@ describe("Custom accounts and groups", async () => {
85
86
  expect(map._owner.castAs(CustomGroup).nMembers).toBe(2);
86
87
  });
87
88
  });
89
+
90
+ describe("Group inheritance", () => {
91
+ class TestMap extends CoMap {
92
+ title = co.string;
93
+ }
94
+
95
+ test("Group inheritance", async () => {
96
+ const me = await Account.create({
97
+ creationProps: { name: "Hermes Puggington" },
98
+ crypto: Crypto,
99
+ });
100
+
101
+ const parentGroup = Group.create({ owner: me });
102
+ const group = Group.create({ owner: me });
103
+
104
+ group.extend(parentGroup);
105
+
106
+ console.log(
107
+ group.id,
108
+ group._raw.core.getDependedOnCoValuesUncached(),
109
+ parentGroup.id,
110
+ );
111
+
112
+ console.log(
113
+ (group._raw.core.getCurrentContent() as RawGroup)
114
+ .keys()
115
+ .filter((k) => k.startsWith("parent_"))
116
+ .map((k) => k.replace("parent_", "")),
117
+ );
118
+
119
+ const reader = await Account.createAs(me, {
120
+ creationProps: { name: "Reader" },
121
+ });
122
+
123
+ parentGroup.addMember(reader, "reader");
124
+
125
+ const mapInChild = TestMap.create({ title: "In Child" }, { owner: group });
126
+
127
+ const mapAsReader = await TestMap.load(mapInChild.id, reader, {});
128
+ expect(mapAsReader?.title).toBe("In Child");
129
+
130
+ parentGroup.removeMember(reader);
131
+
132
+ mapInChild.title = "In Child (updated)";
133
+
134
+ const mapAsReaderAfterUpdate = await TestMap.load(
135
+ mapInChild.id,
136
+ reader,
137
+ {},
138
+ );
139
+ expect(mapAsReaderAfterUpdate?.title).toBe("In Child");
140
+ });
141
+
142
+ test("Group inheritance with grand-children", async () => {
143
+ const me = await Account.create({
144
+ creationProps: { name: "Hermes Puggington" },
145
+ crypto: Crypto,
146
+ });
147
+
148
+ const grandParentGroup = Group.create({ owner: me });
149
+ const parentGroup = Group.create({ owner: me });
150
+ const group = Group.create({ owner: me });
151
+
152
+ group.extend(parentGroup);
153
+ parentGroup.extend(grandParentGroup);
154
+
155
+ const reader = await Account.createAs(me, {
156
+ creationProps: { name: "Reader" },
157
+ });
158
+
159
+ grandParentGroup.addMember(reader, "reader");
160
+
161
+ const mapInGrandChild = TestMap.create(
162
+ { title: "In Grand Child" },
163
+ { owner: group },
164
+ );
165
+
166
+ const mapAsReader = await TestMap.load(mapInGrandChild.id, reader, {});
167
+ expect(mapAsReader?.title).toBe("In Grand Child");
168
+
169
+ grandParentGroup.removeMember(reader);
170
+
171
+ mapInGrandChild.title = "In Grand Child (updated)";
172
+
173
+ const mapAsReaderAfterUpdate = await TestMap.load(
174
+ mapInGrandChild.id,
175
+ reader,
176
+ {},
177
+ );
178
+ expect(mapAsReaderAfterUpdate?.title).toBe("In Grand Child");
179
+ });
180
+ });