# Fluid Framework v2.0.0-internal.8.0.0 ## aqueduct: Removed getDefaultObjectFromContainer, getObjectWithIdFromContainer and getObjectFromContainer The `getDefaultObjectFromContainer`, `getObjectWithIdFromContainer` and `getObjectFromContainer` helper methods have been removed from @fluidframework/aqueduct. Please move all code usage to the new `entryPoint` pattern. ## aqueduct: Removed IRootDataObjectFactory The `IRootDataObjectFactory` interface has been removed. Please remove all usage of it. ## aqueduct: Removed requestHandler utilities The following `requestHandler` utilities have been removed: - `makeModelRequestHandler` - `defaultFluidObjectRequestHandler` - `defaultRouteRequestHandler` - `mountableViewRequestHandler` - `createFluidObjectResponse` - `rootDataStoreRequestHandler` - `handleFromLegacyUri` - `RuntimeRequestHandlerBuilder` Please migrate all usage to the new `entryPoint` pattern. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## azure-client: Removed deprecated FluidStatic classes Several FluidStatic classes were unnecessarily exposed and were deprecated in an earlier release. They have been replaced with creation functions. This helps us keep implementations decoupled from usage which is easier to maintain and extend. It has very minimal impact on the public surface area of downstream packages. The removed classes are as follows: ## container-definitions: Fix ISnapshotTreeWithBlobContents and mark internal `ISnapshotTreeWithBlobContents` is an internal type that should not be used externally. Additionally, the type didn't match the usage, specifically in runtime-utils where an `any` cast was used to work around undefined blobContents. The type has been updated to reflect that blobContents can be undefined. ## container-definitions: Removed request(...) and IFluidRouter from IContainer The `request(...)` method and `IFluidRouter` property have been removed from `IContainer`. Please use the `IContainer.getEntryPoint()` method to get the container's entry point. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## container-runtime: Removed IPendingLocalState and IRuntime.notifyAttaching The deprecated `IPendingLocalState` and `IRuntime.notifyAttaching` APIs are removed. There is no replacement as they are not longer used. ## container-runtime: Removed request pattern from ContainerRuntime, IRuntime, and IContainerRuntimeBase The `request(...)` method and `IFluidRouter` property have been removed from the following places: - `ContainerRuntime` - `IRuntime` - `IContainerRuntimeBase` Please use the `IRuntime.getEntryPoint()` method to get the runtime's entry point. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## container-runtime: Removed `ContainerRuntime.load(...)` The static method `ContainerRuntime.load(...)` has been removed. Please migrate all usage of this method to `ContainerRuntime.loadRuntime(...)`. ## container-runtime-definitions: Removed getRootDataStore The `getRootDataStore` method has been removed from `IContainerRuntime` and `ContainerRuntime`. Please migrate all usage to the new `getAliasedDataStoreEntryPoint` method. This method returns the data store's entry point which is its `IFluidHandle`. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## container-runtime-definitions: Removed resolveHandle and IFluidHandleContext from ContainerRuntime interfaces The `IContainerRuntime.resolveHandle(...)` method and the `IContainerRuntimeBase.IFluidHandleContext` property have been removed. Please remove all usage of these APIs. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## container-loader: Removed request(...) and IFluidRouter from ILoader and Loader The `request(...)` method and `IFluidRouter` property have been removed from `ILoader` and `Loader`. Instead, after calling `ILoader.resolve(...)`, call the `getEntryPoint()` method on the returned `IContainer`. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## container-loader: Removed requestResolvedObjectFromContainer The helper function `requestResolvedObjectFromContainer` has been removed. Please remove all calls to it and instead use the new `entryPoint` pattern. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## core-interfaces: Removed IFluidRouter and IProvideFluidRouter The `IFluidRouter` and `IProvideFluidRouter` interfaces have been removed. Please migrate all usage to the new `entryPoint` pattern. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## datastore-definitions: Removed request and IFluidRouter from IFluidDataStoreRuntime The `request` method and `IFluidRouter` property have been removed from `IFluidDataStoreRuntime`. Please migrate all usage to the `IFluidDataStoreRuntime.entryPoint` API. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## datastore-definitions: Jsonable and Serializable now require a generic parameter The `Jsonable` and `Serializable` types from @fluidframework/datastore-definitions now require a generic parameter and if that type is `any` or `unknown` will return a new result `JsonableTypeWith<>` that more accurately represents the limitation of serialization. Additional modifications: - `Jsonable`'s `TReplacement` parameter default has also been changed from `void` to `never`, which now disallows `void`. - Unrecognized primitive types like `symbol` are now filtered to `never` instead of `{}`. - Recursive types with arrays (`[]`) are now supported. `Serializable` is commonly used for DDS values and now requires more precision when using them. For example SharedMatrix (unqualified) has an `any` default that meant values were `Serializable` (i.e. `any`), but now `Serializable` is `JsonableTypeWith` which may be problematic for reading or writing. Preferred correction is to specify the value type but casting through `any` may provide a quick fix. ## datastore: Removed `FluidDataStoreRuntime.load(...)` The static method `FluidDataStoreRuntime.load(...)` has been removed. Please migrate all usage of this method to `FluidDataStoreRuntime` constructor. ## data-object-base: Removed IFluidRouter from DataObject interfaces and classes The `IFluidRouter` property has been removed from a number of DataObject related classes: - `PureDataObject` - `LazyLoadedDataObject` - `TestFluidObject` Please migrate to the new `entryPoint` pattern or use the relevant `request` method as necessary. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## local-driver: LocalDocumentStorageService class property type changes The `repositoryUrl` property on the `LocalDocumentStorageService` class has changed from a property getter to a `readonly` field. While this is an API change, there should be no changes required on the consumer side since calling code should remain the same. ## merge-tree: Remove `IIntegerRange` This interface is deprecated and was not intended for public export. ## merge-tree: Remove several APIs Removed the following APIs: - `Stack` - `clone` - `combine` - `createMap` - `extend` - `extendIfUndefined` - `matchProperties` This functionality is deprecated and was not intended for public export. - `AzureAudience` (use `IAzureAudience` instead) - `TinyliciousAudience` (use `ITinyliciousAudience` instead) - `DOProviderContainerRuntimeFactory` - `FluidContainer` - `ServiceAudience` ## runtime-definitions: Removed request and IFluidRouter from IDataStore The `request` method and `IFluidRouter` property have been removed from `IDataStore`. Please migrate all usage to the `IDataStore.entryPoint` API. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## runtime-definitions: Removed IFluidRouter from IFluidDataStoreChannel and FluidDataStoreRuntime The `IFluidRouter` property has been removed from `IFluidDataStoreChannel` and `FluidDataStoreRuntime`. Please migrate all usage to the `IFluidDataStoreChannel.entryPoint` API. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## runtime-utils: Removed requestFluidObject The `requestFluidObject` utility has been removed. Please migrate all usage of it to the new `entryPoint` pattern. See [Removing-IFluidRouter.md](https://github.com/microsoft/FluidFramework/blob/main/packages/common/core-interfaces/Removing-IFluidRouter.md) for more details. ## sequence: Some function return types are now void instead of any The return types of some functions have changed from `any` to `void` because the projects are now being compiled with the `noImplicitAny` TypeScript compilation option. This does not represent a logic change and only serves to make the typing of these functions more accurate. ## sequence: Add experimental support for the obliterate operation This change adds experimental support for *obliterate*, a form of *remove* that deletes concurrently inserted segments. To use, enable the `mergeTreeEnableObliterate` feature flag and call the new `obliterateRange` functions. Note: this change may cause compilation errors for those attaching event listeners. As long as obliterate isn't used in current handlers, their current implementation is sound. ## sequence: Removed Marker.hasSimpleType and made sequence operations return void `Marker.hasSimpleType` was unused. Sequence operations now no longer return IMergeTree\*Msg types. These types are redundant with the input. ## sequence: Removed several public exports from merge-tree and sequence The following APIs have been removed or marked internal in merge-tree and sequence. This functionality was never intended for public export. - `BaseSegment.ack` - `Client` - `CollaborationWindow` - `compareNumbers` - `compareStrings` - `createAnnotateMarkerOp` - `createAnnotateRangeOp` - `createGroupOp` - `createInsertOp` - `createInsertSegmentOp` - `createRemoveRangeOp` - `IConsensusInfo` - `IConsensusValue` - `IMarkerModifiedAction` - `IMergeTreeTextHelper` - `LocalClientId` - `MergeTreeDeltaCallback` - `MergeTreeMaintenanceCallback` - `NonCollabClient` - `SegmentAccumulator` - `SegmentGroup` - `SegmentGroupCollection.enqueue` - `SegmentGroupCollection.dequeue` - `SegmentGroupCollection.pop` - `SortedSegmentSet` - `SortedSegmentSetItem` - `SortedSet` - `toRemovalInfo` - `TreeMaintenanceSequenceNumber` - `UniversalSequenceNumber` - `SharedSegmentSequence.submitSequenceMessage` ## sequence: Remove support for combining ops In sequence, removed the following APIs: - the `combiningOp` argument from `SharedSegmentSequence.annotateRange` and `SharedString.annotateMarker` - the function `SharedString.annotateMarkerNotifyConsensus` In merge-tree, removed the following APIs: - `ICombiningOp` - the `combiningOp` field from `IMergeTreeAnnotateMsg` - the `op` argument from `BaseSegment.addProperties`, `PropertiesManager.addProperties`, and `ReferencePosition.addProperties` - the enum variant `PropertiesRollback.Rewrite`. This functionality was largely unused and had no test coverage. ## sequence: Removed several APIs The following APIs have been removed: - `Client.getStackContext` - `SharedSegmentSequence.getStackContext` - `IntervalType.Nest` - `ReferenceType.NestBegin` - `ReferenceType.NestEnd` - `internedSpaces` - `RangeStackMap` - `refGetRangeLabels` - `refHasRangeLabel` - `refHasRangeLabels` This functionality is deprecated, has low test coverage, and is largely unused. ## test-runtime-utils: MockDeltaManager class property type changes The `active` and `maxMessageSize` properties on the `MockDeltaManager` class have changed from property getters to `readonly` fields. While this is an API change, there should be no changes required on the consumer side since calling code should remain the same.