fluid-framework 2.0.0-rc.4.0.5 → 2.0.0-rc.5.0.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,178 @@
1
1
  # fluid-framework
2
2
 
3
+ ## 2.0.0-rc.5.0.0
4
+
5
+ ### Minor Changes
6
+
7
+ - fluid-framework: Type Erase ISharedObjectKind ([#21081](https://github.com/microsoft/FluidFramework/pull/21081)) [78f228e370](https://github.com/microsoft/FluidFramework/commit/78f228e37055bd4d9a8f02b3a1eefebf4da9c59c)
8
+
9
+ A new type, `SharedObjectKind` is added as a type erased version of `ISharedObjectKind` and `DataObjectClass`.
10
+
11
+ This type fills the role of both `ISharedObjectKind` and `DataObjectClass` in the `@public` "declarative API" exposed in the `fluid-framework` package.
12
+
13
+ This allows several types referenced by `ISharedObjectKind` to be made `@alpha` as they should only need to be used by legacy code and users of the unstable/alpha/legacy "encapsulated API".
14
+
15
+ Access to these now less public types should not be required for users of the `@public` "declarative API" exposed in the `fluid-framework` package, but can still be accessed for those who need them under the `/legacy` import paths.
16
+ The full list of such types is:
17
+
18
+ - `SharedTree` as exported from `@fluidframwork/tree`: It is still exported as `@public` from `fluid-framework` as `SharedObjectKind`.
19
+ - `ISharedObjectKind`: See new `SharedObjectKind` type for use in `@public` APIs.
20
+ `ISharedObject`
21
+ - `IChannel`
22
+ - `IChannelAttributes`
23
+ - `IChannelFactory`
24
+ - `IExperimentalIncrementalSummaryContext`
25
+ - `IGarbageCollectionData`
26
+ - `ISummaryStats`
27
+ - `ISummaryTreeWithStats`
28
+ - `ITelemetryContext`
29
+ - `IDeltaManagerErased`
30
+ - `IFluidDataStoreRuntimeEvents`
31
+ - `IFluidHandleContext`
32
+ - `IProvideFluidHandleContext`
33
+
34
+ Removed APIs:
35
+
36
+ - `DataObjectClass`: Usages replaced with `SharedObjectKind`.
37
+ - `LoadableObjectClass`: Replaced with `SharedObjectKind`.
38
+ - `LoadableObjectClassRecord`: Replaced with `Record<string, SharedObjectKind>`.
39
+ -
40
+
41
+ - tree: Added support for optional schema validation on newly inserted content in SharedTree ([#21011](https://github.com/microsoft/FluidFramework/pull/21011)) [b14e9fa607](https://github.com/microsoft/FluidFramework/commit/b14e9fa607a8281f86d0cfac631e33ef12033e21)
42
+
43
+ When defining how to view a SharedTree, an application can now specify that new content inserted into the tree should
44
+ be subject to schema validation at the time it is inserted, so if it's not valid according to the stored schema in the
45
+ tree an error is thrown immediately.
46
+
47
+ This can be accomplished by passing an `ITreeConfigurationOptions` argument with `enableSchemaValidation` set to `true`
48
+ when creating a `TreeConfiguration` to use with the SharedTree.
49
+
50
+ Since this feature requires additional compute when inserting new content into the tree, it is not enabled by default.
51
+
52
+ - Update to TypeScript 5.4 ([#21214](https://github.com/microsoft/FluidFramework/pull/21214)) [0e6256c722](https://github.com/microsoft/FluidFramework/commit/0e6256c722d8bf024f4325bf02547daeeb18bfa6)
53
+
54
+ Update package implementations to use TypeScript 5.4.5.
55
+
56
+ - fluid-framework: Remove some types from `@public` that are not needed ([#21326](https://github.com/microsoft/FluidFramework/pull/21326)) [b629cb80b0](https://github.com/microsoft/FluidFramework/commit/b629cb80b0e5ecdc750270807f77a0e30fab4559)
57
+
58
+ Mark the following APIs `@alpha` instead of `@public`:
59
+
60
+ - IBranchOrigin
61
+ - ISequencedDocumentMessage
62
+ - ISignalMessage
63
+ - ISignalMessageBase
64
+ - ITrace
65
+
66
+ - tree: A new tree status has been added for SharedTree nodes. ([#21270](https://github.com/microsoft/FluidFramework/pull/21270)) [8760e321b0](https://github.com/microsoft/FluidFramework/commit/8760e321b02177babfb187ae293a17a65723f249)
67
+
68
+ `TreeStatus.Created` indicates that a SharedTree node has been constructed but not yet inserted into the tree.
69
+ Constraints passed to the `runTransaction` API are now marked as `readonly`.
70
+
71
+ - fluid-framework: Remove several types from `@public` scope ([#21142](https://github.com/microsoft/FluidFramework/pull/21142)) [983e9f09f7](https://github.com/microsoft/FluidFramework/commit/983e9f09f7b10fef9ffa1e9af86166f0ccda7e14)
72
+
73
+ The following types have been moved from `@public` to `@alpha`:
74
+
75
+ - `IFluidSerializer`
76
+ - `ISharedObjectEvents`
77
+ - `IChannelServices`
78
+ - `IChannelStorageService`
79
+ - `IDeltaConnection`
80
+ - `IDeltaHandler`
81
+
82
+ These should not be needed by users of the declarative API, which is what `@public` is targeting.
83
+
84
+ - sequence: Stop ISharedString extending SharedObject ([#21067](https://github.com/microsoft/FluidFramework/pull/21067)) [47465f4b12](https://github.com/microsoft/FluidFramework/commit/47465f4b12056810112df30a6dad89282afc7a2d)
85
+
86
+ ISharedString no longer extends SharedSegmentSequence and instead extends the new ISharedSegmentSequence, which may be missing some APIs.
87
+
88
+ Attempt to migrate off the missing APIs, but if that is not practical, request they be added to ISharedSegmentSequence and cast to SharedSegmentSequence as a workaround temporally.
89
+
90
+ - Update to ES 2022 ([#21292](https://github.com/microsoft/FluidFramework/pull/21292)) [68921502f7](https://github.com/microsoft/FluidFramework/commit/68921502f79b1833c4cd6d0fe339bfb126a712c7)
91
+
92
+ Update tsconfig to target ES 2022.
93
+
94
+ - tree: Move several types into InternalTypes ([#21482](https://github.com/microsoft/FluidFramework/pull/21482)) [64d49dd362](https://github.com/microsoft/FluidFramework/commit/64d49dd3629cefe6260a1d6223e58b10c2ac0cb6)
95
+
96
+ The stable public API surface for Tree has been reduced.
97
+ Several types have been moved into InternalTypes, indicating that they are not fully stable nor intended to be referenced by users of Tree.
98
+
99
+ - NodeBuilderData
100
+ - FieldHasDefault
101
+ - TreeNodeSchemaNonClass
102
+ - TreeArrayNodeBase
103
+ - ScopedSchemaName
104
+ - DefaultProvider
105
+ - typeNameSymbol
106
+ - InsertableObjectFromSchemaRecord
107
+ - ObjectFromSchemaRecord
108
+ - FieldHasDefaultUnsafe
109
+ - ObjectFromSchemaRecordUnsafe
110
+ - TreeObjectNodeUnsafe
111
+ - TreeFieldFromImplicitFieldUnsafe
112
+ - TreeNodeFromImplicitAllowedTypesUnsafe
113
+ - InsertableTreeNodeFromImplicitAllowedTypesUnsafe
114
+ - TreeArrayNodeUnsafe
115
+ - TreeMapNodeUnsafe
116
+ - InsertableObjectFromSchemaRecordUnsafe
117
+ - InsertableTreeFieldFromImplicitFieldUnsafe
118
+ - InsertableTypedNodeUnsafe
119
+ - NodeBuilderDataUnsafe
120
+ - NodeFromSchemaUnsafe
121
+ - FlexList
122
+ - TreeApi
123
+
124
+ Additionally a few more types which could not be moved due to technically limitations have been documented that they should be treated similarly.
125
+
126
+ - TreeNodeApi
127
+ - TreeNodeSchemaCore
128
+ - All \*Unsafe type (use for construction of recursive schema).
129
+ - WithType
130
+ - AllowedTypes
131
+ - FieldSchemaUnsafe
132
+
133
+ Also to reduce confusion `type` was renamed to `typeNameSymbol`, and is now only type exported. `Tree.is` should be used to get type information from `TreeNodes` instead.
134
+
135
+ - tree: object node fields with statically known default values are now optional ([#21193](https://github.com/microsoft/FluidFramework/pull/21193)) [21eac41660](https://github.com/microsoft/FluidFramework/commit/21eac41660944208bad42b156d7df05fe6dc6b97)
136
+
137
+ Makes object node fields with statically known default values (i.e., `optional` and `identifier` fields) optional when creating trees, where they were previously required.
138
+
139
+ Example:
140
+
141
+ ```typescript
142
+ class Foo extends schemaFactory.object("Foo", {
143
+ name: schemaFactory.string,
144
+ id: schemaFactory.identifier,
145
+ nickname: schemaFactory.optional(schemaFactory.string),
146
+ }) {}
147
+
148
+ // Before
149
+ const foo = new Foo({
150
+ name: "Bar",
151
+ id: undefined, // Had to explicitly specify `undefined` to opt into default behavior
152
+ nickname: undefined, // Had to explicitly specify `undefined` for optional field
153
+ });
154
+
155
+ // After
156
+ const foo = new Foo({
157
+ name: "Bar",
158
+ // Can omit `id` and `nickname` fields, as both have statically known defaults!
159
+ });
160
+ ```
161
+
162
+ - tree: Breaking change: `TreeStatus.Created` is now `TreeStatus.New` ([#21278](https://github.com/microsoft/FluidFramework/pull/21278)) [5a26346a14](https://github.com/microsoft/FluidFramework/commit/5a26346a145ed54d08cd5a9b4f1c9b177711bd7c)
163
+
164
+ `TreeStatus.Created` has been renamed to `TreeStatus.New`.
165
+
166
+ - core-interfaces, tree: Unify `IDisposable` interfaces ([#21184](https://github.com/microsoft/FluidFramework/pull/21184)) [cfcb827851](https://github.com/microsoft/FluidFramework/commit/cfcb827851ffc81486db6c718380150189fb95c5)
167
+
168
+ Public APIs in `@fluidframework/tree` now use `IDisposable` from `@fluidframework/core-interfaces` replacing `disposeSymbol` with "dispose".
169
+
170
+ `IDisposable` in `@fluidframework/core-interfaces` is now `@sealed` indicating that third parties should not implement it to reserve the ability for Fluid Framework to extend it to include `Symbol.dispose` as a future non-breaking change.
171
+
172
+ - fluid-framework: Cleanup `fluid-framework` legacy exports ([#21153](https://github.com/microsoft/FluidFramework/pull/21153)) [efee21c296](https://github.com/microsoft/FluidFramework/commit/efee21c2965a02288db6e0345fcf9b3713210953)
173
+
174
+ Cleanup `fluid-framework` legacy exports to remove no longer required types.
175
+
3
176
  ## 2.0.0-rc.4.0.0
4
177
 
5
178
  ### Minor Changes
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/lib/public.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/dist/legacy.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/lib/legacy.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/dist/public.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/lib/public.d.ts"
5
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
- "extends": "../../../common/build/build-common/api-extractor-base.esm.primary.json",
3
+ "extends": "../../../common/build/build-common/api-extractor-base.esm.current.json",
4
4
  "bundledPackages": ["@fluidframework/*"],
5
5
  "messages": {
6
6
  "extractorMessageReporting": {