jazz-tools 0.19.6 → 0.19.7
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 +59 -59
- package/CHANGELOG.md +9 -0
- package/dist/{chunk-GCBXV2KC.js → chunk-CUS6O5NE.js} +7 -5
- package/dist/chunk-CUS6O5NE.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/testing.js +1 -1
- package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/tools/subscribe/SubscriptionScope.ts +16 -9
- package/src/tools/tests/coDiscriminatedUnion.test.ts +69 -2
- package/dist/chunk-GCBXV2KC.js.map +0 -1
package/dist/index.js
CHANGED
package/dist/testing.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubscriptionScope.d.ts","sourceRoot":"","sources":["../../../src/tools/subscribe/SubscriptionScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAEL,MAAM,EACN,KAAK,EACL,KAAK,OAAO,EACZ,KAAK,EAAE,EACP,WAAW,EACX,SAAS,EACT,KAAK,UAAU,EACf,KAAK,aAAa,EAKnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGxE,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO;IAkCrC,IAAI,EAAE,SAAS;IAEf,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACT,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACrB,SAAS;IACT,oBAAoB;IACpB,eAAe,CAAC,EAAE,gBAAgB;IAvC3C,UAAU,0CAAiD;IAC3D,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAGjD;IACJ;;OAEG;IACH,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAC/C;;OAEG;IACH,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACnD,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,wBAAwB,CAAC;IAC5D,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAChD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IACrD,iBAAiB,EAAE,SAAS,GAAG,SAAS,CAAC;IACzC,YAAY,EAAE,uBAAuB,CAAC;IACtC,KAAK,UAAS;IACd,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,aAAa,cAAqB;IAClC,UAAU,cAAqB;IAC/B,cAAc,cAAqB;IACnC,eAAe,cAAqB;IACpC,sBAAsB,SAAK;IAC3B,OAAO,SAAK;IACZ,QAAQ,UAAS;IACjB,SAAS,UAAS;IAClB,MAAM,UAAS;IAEf,cAAc,UAAS;gBAGd,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAClB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EACT,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,SAAS,UAAQ,EACjB,oBAAoB,UAAQ,EAC5B,eAAe,CAAC,EAAE,gBAAgB,YAAA;
|
|
1
|
+
{"version":3,"file":"SubscriptionScope.d.ts","sourceRoot":"","sources":["../../../src/tools/subscribe/SubscriptionScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAEL,MAAM,EACN,KAAK,EACL,KAAK,OAAO,EACZ,KAAK,EAAE,EACP,WAAW,EACX,SAAS,EACT,KAAK,UAAU,EACf,KAAK,aAAa,EAKnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGxE,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO;IAkCrC,IAAI,EAAE,SAAS;IAEf,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACT,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACrB,SAAS;IACT,oBAAoB;IACpB,eAAe,CAAC,EAAE,gBAAgB;IAvC3C,UAAU,0CAAiD;IAC3D,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAGjD;IACJ;;OAEG;IACH,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAC/C;;OAEG;IACH,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACnD,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,wBAAwB,CAAC;IAC5D,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAChD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IACrD,iBAAiB,EAAE,SAAS,GAAG,SAAS,CAAC;IACzC,YAAY,EAAE,uBAAuB,CAAC;IACtC,KAAK,UAAS;IACd,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,aAAa,cAAqB;IAClC,UAAU,cAAqB;IAC/B,cAAc,cAAqB;IACnC,eAAe,cAAqB;IACpC,sBAAsB,SAAK;IAC3B,OAAO,SAAK;IACZ,QAAQ,UAAS;IACjB,SAAS,UAAS;IAClB,MAAM,UAAS;IAEf,cAAc,UAAS;gBAGd,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAClB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EACT,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,SAAS,UAAQ,EACjB,oBAAoB,UAAQ,EAC5B,eAAe,CAAC,EAAE,gBAAgB,YAAA;IAmD3C,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC;IAO5C,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,mBAAmB,CAAC,WAAW;IAiExE,kBAAkB;IA8ClB,iBAAiB,OACX,MAAM,SACH,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,wBAAwB,QACvD,MAAM,UAkCZ;IAEF,iBAAiB;IASjB,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAExC,OAAO,CAAC,gBAAgB;IAYxB,eAAe,IAAI,WAAW,CAAC,CAAC,CAAC;IAcjC,kBAAkB,IAAI,CAAC,GAAG,qBAAqB;IAyB/C,aAAa;IAkBb,WAAW,cAAmB,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,EAAI;IACpE,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI;IAQ9D,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI;IAKhE,cAAc,CAAC,GAAG,EAAE,MAAM;IAsC1B,gBAAgB,CAAC,EAAE,EAAE,MAAM;IAS3B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI;IA0B9D,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC;IAmDrD,YAAY;IAoHZ,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA0CvE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAsC1E,aAAa,CACX,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EACzB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,GAAG,CAAC,EAAE,MAAM;IAoDd,OAAO;CAOR"}
|
package/package.json
CHANGED
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
},
|
|
188
188
|
"type": "module",
|
|
189
189
|
"license": "MIT",
|
|
190
|
-
"version": "0.19.
|
|
190
|
+
"version": "0.19.7",
|
|
191
191
|
"dependencies": {
|
|
192
192
|
"@manuscripts/prosemirror-recreate-steps": "^0.1.4",
|
|
193
193
|
"@scure/base": "1.2.1",
|
|
@@ -204,9 +204,9 @@
|
|
|
204
204
|
"prosemirror-transform": "^1.9.0",
|
|
205
205
|
"use-sync-external-store": "^1.5.0",
|
|
206
206
|
"zod": "4.1.11",
|
|
207
|
-
"cojson": "0.19.
|
|
208
|
-
"cojson-storage-indexeddb": "0.19.
|
|
209
|
-
"cojson-transport-ws": "0.19.
|
|
207
|
+
"cojson": "0.19.7",
|
|
208
|
+
"cojson-storage-indexeddb": "0.19.7",
|
|
209
|
+
"cojson-transport-ws": "0.19.7"
|
|
210
210
|
},
|
|
211
211
|
"devDependencies": {
|
|
212
212
|
"@scure/bip39": "^1.3.0",
|
|
@@ -91,7 +91,11 @@ export class SubscriptionScope<D extends CoValue> {
|
|
|
91
91
|
// - Run the migration only once
|
|
92
92
|
// - Skip all the updates until the migration is done
|
|
93
93
|
// - Trigger handleUpdate only with the final value
|
|
94
|
-
if (
|
|
94
|
+
if (
|
|
95
|
+
!this.migrated &&
|
|
96
|
+
value !== CoValueLoadingState.UNAVAILABLE &&
|
|
97
|
+
hasAccessToCoValue(value)
|
|
98
|
+
) {
|
|
95
99
|
if (this.migrating) {
|
|
96
100
|
return;
|
|
97
101
|
}
|
|
@@ -139,14 +143,7 @@ export class SubscriptionScope<D extends CoValue> {
|
|
|
139
143
|
return;
|
|
140
144
|
}
|
|
141
145
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
// Groups and accounts are accessible by everyone, for the other coValues we use the role to check access
|
|
145
|
-
const hasAccess =
|
|
146
|
-
ruleset.type !== "ownedByGroup" ||
|
|
147
|
-
myRoleForRawValue(update) !== undefined;
|
|
148
|
-
|
|
149
|
-
if (!hasAccess) {
|
|
146
|
+
if (!hasAccessToCoValue(update)) {
|
|
150
147
|
if (this.value.type !== CoValueLoadingState.UNAUTHORIZED) {
|
|
151
148
|
this.updateValue(
|
|
152
149
|
new JazzError(this.id, CoValueLoadingState.UNAUTHORIZED, [
|
|
@@ -759,3 +756,13 @@ export class SubscriptionScope<D extends CoValue> {
|
|
|
759
756
|
this.childNodes.forEach((child) => child.destroy());
|
|
760
757
|
}
|
|
761
758
|
}
|
|
759
|
+
|
|
760
|
+
function hasAccessToCoValue(rawCoValue: RawCoValue): boolean {
|
|
761
|
+
const ruleset = rawCoValue.core.verified.header.ruleset;
|
|
762
|
+
|
|
763
|
+
// Groups and accounts are accessible by everyone, for the other coValues we use the role to check access
|
|
764
|
+
return (
|
|
765
|
+
ruleset.type !== "ownedByGroup" ||
|
|
766
|
+
myRoleForRawValue(rawCoValue) !== undefined
|
|
767
|
+
);
|
|
768
|
+
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, test, vi } from "vitest";
|
|
2
|
-
import {
|
|
1
|
+
import { assert, beforeEach, describe, expect, test, vi } from "vitest";
|
|
2
|
+
import {
|
|
3
|
+
CoPlainText,
|
|
4
|
+
CoValueLoadingState,
|
|
5
|
+
Group,
|
|
6
|
+
Loaded,
|
|
7
|
+
co,
|
|
8
|
+
loadCoValue,
|
|
9
|
+
z,
|
|
10
|
+
} from "../exports.js";
|
|
3
11
|
import { createJazzTestAccount, setupJazzTestSync } from "../testing.js";
|
|
4
12
|
import { assertLoaded, waitFor } from "./utils.js";
|
|
5
13
|
import type { Account } from "jazz-tools";
|
|
@@ -713,4 +721,63 @@ describe("co.discriminatedUnion", () => {
|
|
|
713
721
|
}
|
|
714
722
|
});
|
|
715
723
|
});
|
|
724
|
+
|
|
725
|
+
test("cannot create a co.discriminatedUnion member if it has no matching discriminator value", async () => {
|
|
726
|
+
const Dog = co.map({
|
|
727
|
+
type: z.literal("dog"),
|
|
728
|
+
name: z.string(),
|
|
729
|
+
});
|
|
730
|
+
const Cat = co.map({
|
|
731
|
+
type: z.literal("cat"),
|
|
732
|
+
name: z.string(),
|
|
733
|
+
});
|
|
734
|
+
const Parrot = co.map({
|
|
735
|
+
type2: z.literal("parrot"),
|
|
736
|
+
name: z.string(),
|
|
737
|
+
});
|
|
738
|
+
const Pet = co.discriminatedUnion("type", [Dog, Cat, Parrot]);
|
|
739
|
+
const Pets = co.list(Pet);
|
|
740
|
+
|
|
741
|
+
expect(() => Pets.create([{ type2: "parrot", name: "Polly" }])).toThrow(
|
|
742
|
+
"co.discriminatedUnion() of collaborative types with no matching discriminator value found",
|
|
743
|
+
);
|
|
744
|
+
});
|
|
745
|
+
|
|
746
|
+
test("can load a discriminated union CoList even if some elements are not accessible", async () => {
|
|
747
|
+
const Dog = co.map({
|
|
748
|
+
type: z.literal("dog"),
|
|
749
|
+
name: z.string(),
|
|
750
|
+
});
|
|
751
|
+
const Cat = co.map({
|
|
752
|
+
type: z.literal("cat"),
|
|
753
|
+
name: z.string(),
|
|
754
|
+
});
|
|
755
|
+
const Pet = co.discriminatedUnion("type", [Dog, Cat]);
|
|
756
|
+
const Pets = co.list(Pet);
|
|
757
|
+
|
|
758
|
+
const publicGroup = Group.create().makePublic();
|
|
759
|
+
const privateGroup = Group.create();
|
|
760
|
+
const pets = Pets.create(
|
|
761
|
+
[
|
|
762
|
+
Dog.create({ type: "dog", name: "Rex" }, publicGroup),
|
|
763
|
+
Cat.create({ type: "cat", name: "Whiskers" }, privateGroup),
|
|
764
|
+
],
|
|
765
|
+
{ owner: publicGroup },
|
|
766
|
+
);
|
|
767
|
+
|
|
768
|
+
const anotherAccount = await createJazzTestAccount();
|
|
769
|
+
const loadedPets = await Pets.load(pets.$jazz.id, {
|
|
770
|
+
resolve: { $each: { $onError: "catch" } },
|
|
771
|
+
loadAs: anotherAccount,
|
|
772
|
+
});
|
|
773
|
+
|
|
774
|
+
assertLoaded(loadedPets);
|
|
775
|
+
expect(loadedPets.length).toEqual(2);
|
|
776
|
+
assert(loadedPets[0]);
|
|
777
|
+
assertLoaded(loadedPets[0]);
|
|
778
|
+
expect(loadedPets[0].type).toEqual("dog");
|
|
779
|
+
expect(loadedPets[1]?.$jazz.loadingState).toEqual(
|
|
780
|
+
CoValueLoadingState.UNAUTHORIZED,
|
|
781
|
+
);
|
|
782
|
+
});
|
|
716
783
|
});
|