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/dist/index.js CHANGED
@@ -43,7 +43,7 @@ import {
43
43
  subscribeToCoValue,
44
44
  unstable_loadUnique,
45
45
  zodReExport_exports
46
- } from "./chunk-GCBXV2KC.js";
46
+ } from "./chunk-CUS6O5NE.js";
47
47
  import {
48
48
  createSSRJazzAgent
49
49
  } from "./chunk-M2HGBOXS.js";
package/dist/testing.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  createAnonymousJazzContext,
8
8
  createJazzContext,
9
9
  randomSessionProvider
10
- } from "./chunk-GCBXV2KC.js";
10
+ } from "./chunk-CUS6O5NE.js";
11
11
  import "./chunk-PZ5AY32C.js";
12
12
 
13
13
  // src/tools/testing.ts
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionScope.d.ts","sourceRoot":"","sources":["../../../src/tools/subscribe/SubscriptionScope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubscriptionScope.d.ts","sourceRoot":"","sources":["../../../src/tools/subscribe/SubscriptionScope.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -187,7 +187,7 @@
187
187
  },
188
188
  "type": "module",
189
189
  "license": "MIT",
190
- "version": "0.19.6",
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.6",
208
- "cojson-storage-indexeddb": "0.19.6",
209
- "cojson-transport-ws": "0.19.6"
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 (!this.migrated && value !== CoValueLoadingState.UNAVAILABLE) {
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
- const ruleset = update.core.verified.header.ruleset;
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 { CoPlainText, Group, Loaded, co, loadCoValue, z } from "../exports.js";
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
  });