fluid-framework 2.1.0-281041 → 2.1.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,52 @@
1
1
  # fluid-framework
2
2
 
3
+ ## 2.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Detect arrayNode iterator invalidation ([#21760](https://github.com/microsoft/FluidFramework/pull/21760)) [6fd320c385](https://github.com/microsoft/FluidFramework/commit/6fd320c38561e272a1acaf4248f47fc386c650e4)
8
+
9
+ When `arrayNode`s are edited concurrently during iteration, an error will be thrown.
10
+
11
+ - Some SharedDirectory/SharedMap-related APIs have been sealed ([#21836](https://github.com/microsoft/FluidFramework/pull/21836)) [b1d0427eab](https://github.com/microsoft/FluidFramework/commit/b1d0427eab3fcd55588dd80996967133db66f1b8)
12
+
13
+ Note that this is a _documentation only change._ There is no runtime or type-level impact.
14
+
15
+ Some top-level APIs within `@fluidframework/map` and `fluid-framework` have been updated to reflect their
16
+ sealed/readonly nature. That is, they are not to be implemented externally to Fluid Framework and not changed. This was
17
+ already the case, but the documentation was not clear.
18
+
19
+ Updated APIs:
20
+
21
+ - [IDirectory](https://fluidframework.com/docs/api/v2/fluid-framework/idirectory-interface) sealed
22
+ - [IDirectoryEvents](https://fluidframework.com/docs/api/v2/fluid-framework/idirectoryevents-interface) sealed
23
+ - [IDirectoryValueChanged](https://fluidframework.com/docs/api/v2/fluid-framework/idirectoryvaluechanged-interface) sealed and path property is readonly
24
+ - [ISharedDirectory](https://fluidframework.com/docs/api/v2/fluid-framework/ishareddirectory-interface) sealed
25
+ - [ISharedDirectoryEvents](https://fluidframework.com/docs/api/v2/fluid-framework/ishareddirectoryevents-interface) sealed
26
+ - [IValueChanged](https://fluidframework.com/docs/api/v2/fluid-framework/ivaluechanged-interface) sealed
27
+
28
+ - tree: Improved performance for accessing identifiers in shortId API ([#21944](https://github.com/microsoft/FluidFramework/pull/21944)) [6b4cf26d9c](https://github.com/microsoft/FluidFramework/commit/6b4cf26d9cc14c1a36cf07fd7408f1d1227e373a)
29
+
30
+ Users should see improved performance when calling the `Tree.shortId` API. Identifier field keys are now cached in the schema for faster access.
31
+
32
+ - ✨ New! Debug visualizers for TreeNodes in NodeJS and browsers ([#21895](https://github.com/microsoft/FluidFramework/pull/21895)) [0d197fefec](https://github.com/microsoft/FluidFramework/commit/0d197fefec852df2911151217ac1b71cde528a70)
33
+
34
+ TreeNodes now have custom debug visualizers to improve the debug experience in NodeJS and in browsers. Note that custom formatters must be enabled in the browser developer tools for that visualizer to be used.
35
+
36
+ - Using "delete" on tree fields now throws an error instead of not working correctly ([#21609](https://github.com/microsoft/FluidFramework/pull/21609)) [416849b1fd](https://github.com/microsoft/FluidFramework/commit/416849b1fda029870ee1c1742100de4f8dde45b7)
37
+
38
+ TypeScript allows `delete` on object node optional fields if the `exactOptionalPropertyTypes` tsconfig setting is not
39
+ enabled. This does not work correctly at runtime and now produces an informative error.
40
+
41
+ - Improved error reporting ([#21940](https://github.com/microsoft/FluidFramework/pull/21940)) [3b8a366dd1](https://github.com/microsoft/FluidFramework/commit/3b8a366dd15660f9c916832040faf772534c0755)
42
+
43
+ Several cases of invalid usage patterns for tree APIs have gained improved error reporting, as well as improved documentation on the APIs detailing what usage is supported.
44
+ These improvements include:
45
+
46
+ - Unsupported usages of schema classes: using more than one schema class derived from a single SchemaFactory generated base class. This used to hit internal asserts, but now has a descriptive user-facing UsageError. Most of this work was done in [9fb3dcf](https://github.com/microsoft/FluidFramework/commit/9fb3dcf491a7f0d66f4abbdc64ab97ccabef4707).
47
+ - Improved detection of when prior exception may have left SharedTree in an invalid state.
48
+ These cases now report a UsageError including a reference to the prior exception. This was mainly done in [9fb3dcf](https://github.com/microsoft/FluidFramework/commit/9fb3dcf491a7f0d66f4abbdc64ab97ccabef4707) and [b77d530](https://github.com/microsoft/FluidFramework/commit/b77d530b9252201c40a90d1a2a6315f76f1a4a4b).
49
+
3
50
  ## 2.0.0-rc.5.0.0
4
51
 
5
52
  ### Minor Changes
package/README.md CHANGED
@@ -39,6 +39,10 @@ To access the `public` ([SemVer](https://semver.org/)) APIs, import via `fluid-f
39
39
 
40
40
  To access the `legacy` APIs, import via `fluid-framework/legacy`.
41
41
 
42
+ ## API Documentation
43
+
44
+ API documentation for **fluid-framework** is available at <https://fluidframework.com/docs/apis/fluid-framework>.
45
+
42
46
  <!-- prettier-ignore-end -->
43
47
 
44
48
  <!-- AUTO-GENERATED-CONTENT:END -->
@@ -70,10 +74,6 @@ Check out the [Hello World tutorial](https://fluidframework.com/docs/start/tutor
70
74
  <!-- prettier-ignore-start -->
71
75
  <!-- NOTE: This section is automatically generated using @fluid-tools/markdown-magic. Do not update these generated contents directly. -->
72
76
 
73
- ## API Documentation
74
-
75
- API documentation for **fluid-framework** is available at <https://fluidframework.com/docs/apis/fluid-framework>.
76
-
77
77
  ## Minimum Client Requirements
78
78
 
79
79
  These are the platform requirements for the current version of Fluid Framework Client Packages.
@@ -796,7 +796,7 @@ export interface TreeNodeApi {
796
796
  parent(node: TreeNode): TreeNode | undefined;
797
797
  schema<T extends TreeNode | TreeLeafValue>(node: T): TreeNodeSchema<string, NodeKind, unknown, T>;
798
798
  shortId(node: TreeNode): number | string | undefined;
799
- readonly status: (node: TreeNode) => TreeStatus;
799
+ status(node: TreeNode): TreeStatus;
800
800
  }
801
801
 
802
802
  // @public
@@ -1206,7 +1206,7 @@ export interface TreeNodeApi {
1206
1206
  parent(node: TreeNode): TreeNode | undefined;
1207
1207
  schema<T extends TreeNode | TreeLeafValue>(node: T): TreeNodeSchema<string, NodeKind, unknown, T>;
1208
1208
  shortId(node: TreeNode): number | string | undefined;
1209
- readonly status: (node: TreeNode) => TreeStatus;
1209
+ status(node: TreeNode): TreeStatus;
1210
1210
  }
1211
1211
 
1212
1212
  // @public
@@ -830,7 +830,7 @@ export interface TreeNodeApi {
830
830
  parent(node: TreeNode): TreeNode | undefined;
831
831
  schema<T extends TreeNode | TreeLeafValue>(node: T): TreeNodeSchema<string, NodeKind, unknown, T>;
832
832
  shortId(node: TreeNode): number | string | undefined;
833
- readonly status: (node: TreeNode) => TreeStatus;
833
+ status(node: TreeNode): TreeStatus;
834
834
  }
835
835
 
836
836
  // @public
@@ -796,7 +796,7 @@ export interface TreeNodeApi {
796
796
  parent(node: TreeNode): TreeNode | undefined;
797
797
  schema<T extends TreeNode | TreeLeafValue>(node: T): TreeNodeSchema<string, NodeKind, unknown, T>;
798
798
  shortId(node: TreeNode): number | string | undefined;
799
- readonly status: (node: TreeNode) => TreeStatus;
799
+ status(node: TreeNode): TreeStatus;
800
800
  }
801
801
 
802
802
  // @public
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluid-framework",
3
- "version": "2.1.0-281041",
3
+ "version": "2.1.0",
4
4
  "description": "The main entry point into Fluid Framework public packages",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -37,22 +37,22 @@
37
37
  "main": "lib/index.js",
38
38
  "types": "lib/public.d.ts",
39
39
  "dependencies": {
40
- "@fluidframework/container-definitions": "2.1.0-281041",
41
- "@fluidframework/container-loader": "2.1.0-281041",
42
- "@fluidframework/core-interfaces": "2.1.0-281041",
43
- "@fluidframework/driver-definitions": "2.1.0-281041",
44
- "@fluidframework/fluid-static": "2.1.0-281041",
45
- "@fluidframework/map": "2.1.0-281041",
46
- "@fluidframework/sequence": "2.1.0-281041",
47
- "@fluidframework/shared-object-base": "2.1.0-281041",
48
- "@fluidframework/tree": "2.1.0-281041"
40
+ "@fluidframework/container-definitions": "~2.1.0",
41
+ "@fluidframework/container-loader": "~2.1.0",
42
+ "@fluidframework/core-interfaces": "~2.1.0",
43
+ "@fluidframework/driver-definitions": "~2.1.0",
44
+ "@fluidframework/fluid-static": "~2.1.0",
45
+ "@fluidframework/map": "~2.1.0",
46
+ "@fluidframework/sequence": "~2.1.0",
47
+ "@fluidframework/shared-object-base": "~2.1.0",
48
+ "@fluidframework/tree": "~2.1.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@arethetypeswrong/cli": "^0.15.2",
52
52
  "@biomejs/biome": "~1.8.3",
53
- "@fluid-tools/build-cli": "^0.40.0",
53
+ "@fluid-tools/build-cli": "^0.41.0",
54
54
  "@fluidframework/build-common": "^2.0.3",
55
- "@fluidframework/build-tools": "^0.40.0",
55
+ "@fluidframework/build-tools": "^0.41.0",
56
56
  "@fluidframework/eslint-config-fluid": "^5.3.0",
57
57
  "@microsoft/api-extractor": "^7.45.1",
58
58
  "@types/node": "^18.19.0",