jazz-tools 0.11.5 → 0.11.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.
@@ -9,6 +9,7 @@ export declare class ImageDefinition extends CoMap {
9
9
  [res: `${number}x${number}`]: co<FileStream | null>;
10
10
  highestResAvailable(options?: {
11
11
  maxWidth?: number;
12
+ targetWidth?: number;
12
13
  }): {
13
14
  res: `${number}x${number}`;
14
15
  stream: FileStream;
@@ -1 +1 @@
1
- {"version":3,"file":"imageDef.d.ts","sourceRoot":"","sources":["../../../src/coValues/extensions/imageDef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAuB,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,sBAAsB;AACtB,qBAAa,eAAgB,SAAQ,KAAK;IACxC,YAAY,uBAA+B;IAC3C,kBAAkB,CAAC,yBAAa;IAEhC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAsB;IAChC,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAEpD,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG;QAAE,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS;CAyCnE"}
1
+ {"version":3,"file":"imageDef.d.ts","sourceRoot":"","sources":["../../../src/coValues/extensions/imageDef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAuB,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,sBAAsB;AACtB,qBAAa,eAAgB,SAAQ,KAAK;IACxC,YAAY,uBAA+B;IAC3C,kBAAkB,CAAC,yBAAa;IAEhC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAsB;IAChC,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAEpD,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG;QAAE,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS;CA+CnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/coValues/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/coValues/interfaces.ts"],"names":[],"mappings":"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"}
package/dist/exports.d.ts CHANGED
@@ -3,7 +3,7 @@ export type { CoValue, ID } from "./internal.js";
3
3
  export { Encoders, co } from "./internal.js";
4
4
  export { Inbox, InboxSender } from "./coValues/inbox.js";
5
5
  export { Account, isControlledAccount, type AccountClass, type AccountCreationProps, } from "./coValues/account.js";
6
- export { BinaryCoStream, CoFeed, CoStream, FileStream, } from "./coValues/coFeed.js";
6
+ export { BinaryCoStream, CoFeed, CoStream, type CoFeedEntry, FileStream, } from "./coValues/coFeed.js";
7
7
  export { CoList } from "./coValues/coList.js";
8
8
  export { CoMap, type CoMapInit } from "./coValues/coMap.js";
9
9
  export { CoPlainText, type TextPos } from "./coValues/coPlainText.js";
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,MAAM,EACN,QAAQ,EACR,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACL,UAAU,EACV,KAAK,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,KAAK,2BAA2B,GACjC,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,wCAAwC,EACxC,8BAA8B,EAC9B,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AAEvB,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,WAAW,GACZ,MAAM,QAAQ,CAAC;AAEhB,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,MAAM,EACN,QAAQ,EACR,KAAK,WAAW,EAChB,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACL,UAAU,EACV,KAAK,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,KAAK,2BAA2B,GACjC,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,wCAAwC,EACxC,8BAA8B,EAC9B,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AAEvB,mBAAmB,YAAY,CAAC"}
@@ -25,9 +25,10 @@ export declare class SubscriptionScope<Root extends CoValue> {
25
25
  parents: {
26
26
  [id: ID<CoValue>]: Set<ID<CoValue>>;
27
27
  };
28
+ syncResolution: boolean;
28
29
  constructor(root: Root, rootSchema: CoValueClass<Root> & CoValueFromRaw<Root>, onUpdate: (newRoot: Root, scope: SubscriptionScope<Root>) => void);
29
30
  onRefAccessedOrSet(fromId: ID<CoValue>, accessedOrSetId: ID<CoValue> | undefined): void;
30
- invalidate(id: ID<CoValue>, fromChild?: ID<CoValue>, seen?: Set<ID<CoValue>>): void;
31
+ invalidate(id: ID<CoValue>, seen?: Set<ID<CoValue>>): void;
31
32
  unsubscribeAll: () => void;
32
33
  }
33
34
  //# sourceMappingURL=subscriptionScope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptionScope.d.ts","sourceRoot":"","sources":["../../src/implementation/subscriptionScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EACV,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,cAAc,EACd,EAAE,EACH,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,mBAAmB,0CAI7B,CAAC;AAIJ,qBAAa,iBAAiB,CAAC,IAAI,SAAS,OAAO;IACjD,OAAO,EAAE,MAAM,CAAkD;IACjE,UAAU,EAAE,OAAO,GAAG,kBAAkB,CAAC;IACzC,OAAO;eAEM,SAAS;2BAAqB,OAAO;;eACrC,QAAQ;kBAAY,MAAM,IAAI;OACvC;IACJ,SAAS,EAAE;QACT,KAAK,EAAE,QAAQ,CAAC;QAChB,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;KACtB,CAAC;IACF,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAS;IACjC,YAAY,EAAE;QAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;KAAE,CAAM;IAClD,OAAO,EAAE;QAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;KAAE,CAAM;gBAGpD,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,EACrD,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI;IA2BnE,kBAAkB,CAChB,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EACnB,eAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,SAAS;IA4C1C,UAAU,CACR,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EACf,SAAS,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EACvB,IAAI,GAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAa;IAYpC,cAAc,aASZ;CACH"}
1
+ {"version":3,"file":"subscriptionScope.d.ts","sourceRoot":"","sources":["../../src/implementation/subscriptionScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,UAAU,EAAE,MAAM,QAAQ,CAAC;AACjE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EACV,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,cAAc,EACd,EAAE,EACH,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,mBAAmB,0CAI7B,CAAC;AAEJ,qBAAa,iBAAiB,CAAC,IAAI,SAAS,OAAO;IACjD,OAAO,EAAE,MAAM,CAAkD;IACjE,UAAU,EAAE,OAAO,GAAG,kBAAkB,CAAC;IACzC,OAAO;eAEM,SAAS;2BAAqB,OAAO;;eACrC,QAAQ;kBAAY,MAAM,IAAI;OACvC;IACJ,SAAS,EAAE;QACT,KAAK,EAAE,QAAQ,CAAC;QAChB,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;KACtB,CAAC;IACF,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAS;IACjC,YAAY,EAAE;QAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;KAAE,CAAM;IAClD,OAAO,EAAE;QAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;KAAE,CAAM;IACtD,cAAc,EAAE,OAAO,CAAS;gBAG9B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,EACrD,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI;IA4BnE,kBAAkB,CAChB,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EACnB,eAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,SAAS;IAqD1C,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAa;IAU9D,cAAc,aASZ;CACH"}
package/dist/index.js CHANGED
@@ -35,7 +35,7 @@ import {
35
35
  parseInviteLink,
36
36
  randomSessionProvider,
37
37
  subscribeToCoValue
38
- } from "./chunk-IOK4K3XC.js";
38
+ } from "./chunk-HH3Z4JSB.js";
39
39
 
40
40
  // src/index.ts
41
41
  import { MAX_RECOMMENDED_TX_SIZE, cojsonInternals } from "cojson";
package/dist/testing.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  createAnonymousJazzContext,
6
6
  createJazzContext,
7
7
  randomSessionProvider
8
- } from "./chunk-IOK4K3XC.js";
8
+ } from "./chunk-HH3Z4JSB.js";
9
9
 
10
10
  // src/testing.ts
11
11
  import { LocalNode } from "cojson";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=imageDef.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageDef.test.d.ts","sourceRoot":"","sources":["../../src/tests/imageDef.test.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -17,11 +17,11 @@
17
17
  },
18
18
  "type": "module",
19
19
  "license": "MIT",
20
- "version": "0.11.5",
20
+ "version": "0.11.7",
21
21
  "dependencies": {
22
22
  "@scure/bip39": "^1.3.0",
23
23
  "fast-myers-diff": "^3.2.0",
24
- "cojson": "0.11.5"
24
+ "cojson": "0.11.7"
25
25
  },
26
26
  "devDependencies": {
27
27
  "tsup": "8.3.5",
@@ -12,6 +12,7 @@ export class ImageDefinition extends CoMap {
12
12
 
13
13
  highestResAvailable(options?: {
14
14
  maxWidth?: number;
15
+ targetWidth?: number;
15
16
  }): { res: `${number}x${number}`; stream: FileStream } | undefined {
16
17
  if (!subscriptionsScopes.get(this)) {
17
18
  console.warn(
@@ -19,33 +20,39 @@ export class ImageDefinition extends CoMap {
19
20
  );
20
21
  }
21
22
 
22
- const resolutions = Object.keys(this).filter(
23
- (key) =>
24
- key.match(/^\d+x\d+$/) &&
25
- (options?.maxWidth === undefined ||
26
- Number(key.split("x")[0]) <= options.maxWidth),
23
+ const resolutions = Object.keys(this).filter((key) =>
24
+ key.match(/^\d+x\d+$/),
27
25
  ) as `${number}x${number}`[];
28
26
 
29
- resolutions.sort((a, b) => {
27
+ let maxWidth = options?.maxWidth;
28
+
29
+ if (options?.targetWidth) {
30
+ const targetWidth = options.targetWidth;
31
+ const widths = resolutions.map((res) => Number(res.split("x")[0]));
32
+
33
+ maxWidth = Math.min(...widths.filter((w) => w >= targetWidth));
34
+ }
35
+
36
+ const validResolutions = resolutions.filter(
37
+ (key) => maxWidth === undefined || Number(key.split("x")[0]) <= maxWidth,
38
+ ) as `${number}x${number}`[];
39
+
40
+ // Sort the resolutions by width, smallest to largest
41
+ validResolutions.sort((a, b) => {
30
42
  const aWidth = Number(a.split("x")[0]);
31
43
  const bWidth = Number(b.split("x")[0]);
32
- return aWidth - bWidth;
44
+ return aWidth - bWidth; // Sort smallest to largest
33
45
  });
34
46
 
35
47
  let highestAvailableResolution: `${number}x${number}` | undefined;
36
48
 
37
- for (const resolution of resolutions) {
49
+ for (const resolution of validResolutions) {
38
50
  if (this[resolution] && this[resolution]?.getChunks()) {
39
51
  highestAvailableResolution = resolution;
40
- } else {
41
- return (
42
- highestAvailableResolution && {
43
- res: highestAvailableResolution,
44
- stream: this[highestAvailableResolution]!,
45
- }
46
- );
47
52
  }
48
53
  }
54
+
55
+ // Return the highest complete resolution if we found one
49
56
  return (
50
57
  highestAvailableResolution && {
51
58
  res: highestAvailableResolution,
@@ -212,7 +212,7 @@ export class Group extends CoValueBase implements CoValue {
212
212
  }
213
213
 
214
214
  getParentGroups(): Array<Group> {
215
- return this._raw.getParentGroups().map(({ group }) => Group.fromRaw(group));
215
+ return this._raw.getParentGroups().map((group) => Group.fromRaw(group));
216
216
  }
217
217
 
218
218
  extend(
@@ -269,11 +269,22 @@ export function subscribeToCoValue<V extends CoValue, Depth>(
269
269
  return;
270
270
  }
271
271
  if (unsubscribed) return;
272
+
272
273
  const subscription = new SubscriptionScope(
273
274
  value,
274
275
  cls as CoValueClass<V> & CoValueFromRaw<V>,
275
276
  (update, subscription) => {
276
- if (fulfillsDepth(depth, update)) {
277
+ // fullfillsDepth may trigger a syncronous update while accessing values
278
+ // we want to discard those to avoid invalid updates
279
+ if (subscription.syncResolution) return false;
280
+
281
+ // Enabling syncResolution during fullfillsDepth access to block any
282
+ // unnecessery update triggers related to in-memory values
283
+ subscription.syncResolution = true;
284
+ const isLoaded = fulfillsDepth(depth, update);
285
+ subscription.syncResolution = false;
286
+
287
+ if (isLoaded) {
277
288
  listener(
278
289
  update as DeeplyLoaded<V, Depth>,
279
290
  subscription.unsubscribeAll,
package/src/exports.ts CHANGED
@@ -24,6 +24,7 @@ export {
24
24
  BinaryCoStream,
25
25
  CoFeed,
26
26
  CoStream,
27
+ type CoFeedEntry,
27
28
  FileStream,
28
29
  } from "./coValues/coFeed.js";
29
30
  export { CoList } from "./coValues/coList.js";
@@ -1,4 +1,4 @@
1
- import type { RawCoValue } from "cojson";
1
+ import type { CoValueCore, LocalNode, RawCoValue } from "cojson";
2
2
  import { type Account } from "../coValues/account.js";
3
3
  import type {
4
4
  AnonymousJazzAgent,
@@ -14,8 +14,6 @@ export const subscriptionsScopes = new WeakMap<
14
14
  SubscriptionScope<any>
15
15
  >();
16
16
 
17
- const TRACE_INVALIDATIONS = false;
18
-
19
17
  export class SubscriptionScope<Root extends CoValue> {
20
18
  scopeID: string = `scope-${Math.random().toString(36).slice(2)}`;
21
19
  subscriber: Account | AnonymousJazzAgent;
@@ -33,6 +31,7 @@ export class SubscriptionScope<Root extends CoValue> {
33
31
  scheduledUpdate: boolean = false;
34
32
  cachedValues: { [id: ID<CoValue>]: CoValue } = {};
35
33
  parents: { [id: ID<CoValue>]: Set<ID<CoValue>> } = {};
34
+ syncResolution: boolean = false;
36
35
 
37
36
  constructor(
38
37
  root: Root,
@@ -49,6 +48,7 @@ export class SubscriptionScope<Root extends CoValue> {
49
48
  subscriptionsScopes.set(root, this);
50
49
 
51
50
  this.subscriber = root._loadedAs;
51
+
52
52
  this.scheduleUpdate = () => {
53
53
  const value = rootSchema.fromRaw(this.rootEntry.value) as Root;
54
54
  subscriptionsScopes.set(value, this);
@@ -86,42 +86,46 @@ export class SubscriptionScope<Root extends CoValue> {
86
86
  this.subscriber._type === "Account"
87
87
  ? this.subscriber._raw.core.node
88
88
  : this.subscriber.node;
89
- void node.loadCoValueCore(accessedOrSetId).then((core) => {
90
- if (loadingEntry.state === "loading" && loadingEntry.immediatelyUnsub) {
91
- return;
92
- }
93
- if (core !== "unavailable") {
94
- const entry = {
95
- state: "loaded" as const,
96
- rawUnsub: () => {}, // placeholder
97
- };
98
- this.entries.set(accessedOrSetId, entry);
99
-
100
- const rawUnsub = core.subscribe((rawUpdate) => {
101
- // console.log("ref update", this.scopeID, accessedOrSetId, JSON.stringify(rawUpdate))
102
- if (!rawUpdate) return;
103
- this.invalidate(accessedOrSetId);
104
- this.scheduleUpdate();
105
- });
106
-
107
- entry.rawUnsub = rawUnsub;
108
- }
109
- });
89
+
90
+ loadCoValue(
91
+ node,
92
+ accessedOrSetId,
93
+ (core) => {
94
+ if (
95
+ loadingEntry.state === "loading" &&
96
+ loadingEntry.immediatelyUnsub
97
+ ) {
98
+ return;
99
+ }
100
+ if (core !== "unavailable") {
101
+ const entry = {
102
+ state: "loaded" as const,
103
+ rawUnsub: () => {}, // placeholder
104
+ };
105
+ this.entries.set(accessedOrSetId, entry);
106
+
107
+ const rawUnsub = core.subscribe((rawUpdate) => {
108
+ if (!rawUpdate) return;
109
+
110
+ this.invalidate(accessedOrSetId);
111
+ this.scheduleUpdate();
112
+ });
113
+
114
+ entry.rawUnsub = rawUnsub;
115
+ }
116
+ },
117
+ this.syncResolution,
118
+ );
110
119
  }
111
120
  }
112
121
 
113
- invalidate(
114
- id: ID<CoValue>,
115
- fromChild?: ID<CoValue>,
116
- seen: Set<ID<CoValue>> = new Set(),
117
- ) {
122
+ invalidate(id: ID<CoValue>, seen: Set<ID<CoValue>> = new Set()) {
118
123
  if (seen.has(id)) return;
119
- TRACE_INVALIDATIONS &&
120
- console.log("invalidating", fromChild, "->", id, this.cachedValues[id]);
124
+
121
125
  delete this.cachedValues[id];
122
126
  seen.add(id);
123
127
  for (const parent of this.parents[id] || []) {
124
- this.invalidate(parent, id, seen);
128
+ this.invalidate(parent, seen);
125
129
  }
126
130
  }
127
131
 
@@ -136,3 +140,26 @@ export class SubscriptionScope<Root extends CoValue> {
136
140
  this.entries.clear();
137
141
  };
138
142
  }
143
+
144
+ /**
145
+ * Loads a CoValue from the node and calls the callback with the result.
146
+
147
+ * If the CoValue is already loaded, the callback is called synchronously.
148
+ * If the CoValue is not loaded, the callback is called asynchronously.
149
+ */
150
+ function loadCoValue(
151
+ node: LocalNode,
152
+ id: ID<CoValue>,
153
+ callback: (value: CoValueCore | "unavailable") => void,
154
+ syncResolution: boolean,
155
+ ) {
156
+ const entry = node.coValuesStore.get(id);
157
+
158
+ if (entry.state.type === "available" && syncResolution) {
159
+ callback(entry.state.coValue);
160
+ } else {
161
+ void node.loadCoValueCore(id).then((core) => {
162
+ callback(core);
163
+ });
164
+ }
165
+ }
@@ -470,6 +470,38 @@ describe("FileStream.loadAsBlob", async () => {
470
470
  });
471
471
  });
472
472
 
473
+ describe("FileStream progress tracking", async () => {
474
+ test("createFromBlob should report upload progress correctly", async () => {
475
+ // Create 5MB test blob
476
+ const testData = new Uint8Array(5 * 1024 * 1024); // 5MB instead of 500KB
477
+ for (let i = 0; i < testData.length; i++) testData[i] = i % 256;
478
+ const testBlob = new Blob([testData]);
479
+
480
+ // Collect progress updates
481
+ const progressUpdates: number[] = [];
482
+ await FileStream.createFromBlob(testBlob, {
483
+ onProgress: (progress) => progressUpdates.push(progress),
484
+ });
485
+
486
+ // Verify progress reporting
487
+ expect(progressUpdates.length).toBeGreaterThan(1);
488
+
489
+ // Check values between 0-1, increasing, with final=1
490
+ progressUpdates.forEach((p) => {
491
+ expect(p).toBeGreaterThanOrEqual(0);
492
+ expect(p).toBeLessThanOrEqual(1);
493
+ });
494
+
495
+ for (let i = 1; i < progressUpdates.length; i++) {
496
+ expect(progressUpdates[i]!).toBeGreaterThanOrEqual(
497
+ progressUpdates[i - 1]!,
498
+ );
499
+ }
500
+
501
+ expect(progressUpdates[progressUpdates.length - 1]).toBe(1);
502
+ });
503
+ });
504
+
473
505
  describe("waitForSync", async () => {
474
506
  test("CoFeed: should resolve when the value is uploaded", async () => {
475
507
  class TestStream extends CoFeed.Of(co.string) {}