Dependency updates only.
Dependency updates only.
-
The inbound and outbound properties have been removed from IDeltaManager (#22282) 45a57693f2
The inbound and outbound properties were deprecated in version 2.0.0-rc.2.0.0 and have been removed from
IDeltaManager
.IDeltaManager.inbound
contained functionality that could break core runtime features such as summarization and processing batches if used improperly. Data loss or corruption could occur whenIDeltaManger.inbound.pause()
orIDeltaManager.inbound.resume()
were called.Similarly,
IDeltaManager.outbound
contained functionality that could break core runtime features such as generation of batches and chunking. Data loss or corruption could occur whenIDeltaManger.inbound.pause()
orIDeltaManager.inbound.resume()
were called.- Alternatives to
IDeltaManager.inbound.on("op", ...)
areIDeltaManager.on("op", ...)
- Alternatives to calling
IDeltaManager.inbound.pause
,IDeltaManager.outbound.pause
forIContainer
disconnect useIContainer.disconnect
. - Alternatives to calling
IDeltaManager.inbound.resume
,IDeltaManager.outbound.resume
forIContainer
reconnect useIContainer.connect
.
- Alternatives to
Dependency updates only.
Dependency updates only.
Dependency updates only.
Dependency updates only.
Dependency updates only.
-
Update to TypeScript 5.4 (#21214) 0e6256c722
Update package implementations to use TypeScript 5.4.5.
-
Type Erase IFluidDataStoreRuntime.deltaManager 96872186d0
Make IFluidDataStoreRuntime.deltaManager have an opaque type. Marks the following types which were reachable from it as alpha:
- IConnectionDetails
- IDeltaSender
- IDeltaManagerEvents
- IDeltaManager
- IDeltaQueueEvents
- IDeltaQueue
- ReadOnlyInfo
As a temporary workaround, users needing access to the full delta manager API can use the
@alpha
toDeltaManagerInternal
API to retrieve its members, but should migrate away from requiring access to those APIs.Implementing a custom
IFluidDataStoreRuntime
is not supported: this is now indicated by it being marked with@sealed
.
-
Packages now use package.json "exports" and require modern module resolution 97d68aa06b
Fluid Framework packages have been updated to use the package.json "exports" field to define explicit entry points for both TypeScript types and implementation code.
This means that using Fluid Framework packages require the following TypeScript settings in tsconfig.json:
"moduleResolution": "Node16"
with"module": "Node16"
"moduleResolution": "Bundler"
with"module": "ESNext"
We recommend using Node16/Node16 unless absolutely necessary. That will produce transpiled JavaScript that is suitable for use with modern versions of Node.js and Bundlers. See the TypeScript documentation for more information regarding the module and moduleResolution options.
Node10 moduleResolution is not supported; it does not support Fluid Framework's API structuring pattern that is used to distinguish stable APIs from those that are in development.
-
container-runtime: New feature: ID compression for DataStores & DDSs (#19859) 51f0d3db73
- A new API IContainerRuntimeBase.generateDocumentUniqueId() is exposed. This API will opportunistically generate IDs in short format (non-negative numbers). If it can't achieve that, it will return UUID strings. UUIDs generated will have low entropy in groups and will compress well. It can be leveraged anywhere in container where container unique IDs are required. I.e. any place that uses uuid() and stores data in container is likely candidate to start leveraging this API.
- Data store internal IDs (IDs that are auto generated by FF system) will opportunistically be generated in shorter form. Data stores created in detached container will always have short IDs, data stores created in attached container will opportunistically be short (by using newly added IContainerRuntimeBase.generateDocumentUniqueId() capability)
- Similar DDS names will be opportunistically short (same considerations for detached DDS vs. attached DDS)
- Container level ID Compressor can now be enabled with delay. With such setting, only new IContainerRuntimeBase.generateDocumentUniqueId() is exposed (ID Compressor is not exposed in such case, as leveraging any of its other capabilities requires future container sessions to load ID Compressor on container load, for correctness reasons). Once Container establishes connection and any changes are made in container, newly added API will start generating more compact IDs (in most cases).
- DDS names can no longer start with "_" symbol - this is reserved for FF needs. I've validated that's not an issue for AzureClient (it only creates root object by name, everything else is referred by handle). Our main internal partners almost never use named DDSs (I can find only 4 instances in Loop).
- Data store internal IDs could collide with earlier used names data stores. Earlier versions of FF framework (before DataStore aliasing feature was added) allowed customers to supply IDs for data stores. And thus, files created with earlier versions of framework could have data store IDs that will be similar to names FF will use for newly created data stores ("A", ... "Z", "a"..."z", "AA", etc.). While such collision is possible, it's very unlikely (almost impossible) if user-provided names were at least 4-5 characters long.
- If application runs to these problems, or wants to reduce risks, consider disabling ID compressor via IContainerRuntimeOptions.enableRuntimeIdCompressor = "off".
- IContainerRuntime.createDetachedRootDataStore() is removed. Please use IContainerRuntime.createDetachedDataStore and IDataStore.trySetAlias() instead
- IContainerRuntimeOptions.enableRuntimeIdCompressor has been changes from boolean to tri-state.
-
Deprecated error-related enums have been removed (#19067) 59793302e5
Error-related enums
ContainerErrorType
,DriverErrorType
,OdspErrorType
andRouterliciousErrorType
were previously deprecated and are now removed. There are replacement object-based enumerations ofContainerErrorTypes
,DriverErrorTypes
,OdspErrorTypes
andRouterliciousErrorTypes
. Refer to the release notes of Fluid Framework version 2.0.0-internal.7.0.0 for details on the replacements. -
container-definitions: ILoaderOptions no longer accepts arbitrary key/value pairs (#19306) 741926e225
ILoaderOptions has been narrowed to the specific set of supported loader options, and may no longer be used to pass arbitrary key/value pairs through to the runtime.
-
Updated server dependencies (#19122) 25366b4229
The following Fluid server dependencies have been updated to the latest version, 3.0.0. See the full changelog.
- @fluidframework/gitresources
- @fluidframework/server-kafka-orderer
- @fluidframework/server-lambdas
- @fluidframework/server-lambdas-driver
- @fluidframework/server-local-server
- @fluidframework/server-memory-orderer
- @fluidframework/protocol-base
- @fluidframework/server-routerlicious
- @fluidframework/server-routerlicious-base
- @fluidframework/server-services
- @fluidframework/server-services-client
- @fluidframework/server-services-core
- @fluidframework/server-services-ordering-kafkanode
- @fluidframework/server-services-ordering-rdkafka
- @fluidframework/server-services-ordering-zookeeper
- @fluidframework/server-services-shared
- @fluidframework/server-services-telemetry
- @fluidframework/server-services-utils
- @fluidframework/server-test-utils
- tinylicious
-
Updated @fluidframework/protocol-definitions (#19122) 25366b4229
The @fluidframework/protocol-definitions dependency has been upgraded to v3.1.0. See the full changelog.
-
datastore: Removed
FluidDataStoreRuntime.load(...)
9a451d4946The static method
FluidDataStoreRuntime.load(...)
has been removed. Please migrate all usage of this method toFluidDataStoreRuntime
constructor. -
container-definitions: Fix ISnapshotTreeWithBlobContents and mark internal 9a451d4946
ISnapshotTreeWithBlobContents
is an internal type that should not be used externally. Additionally, the type didn't match the usage, specifically in runtime-utils where anany
cast was used to work around undefined blobContents. The type has been updated to reflect that blobContents can be undefined. -
runtime-definitions: Removed IFluidRouter from IFluidDataStoreChannel and FluidDataStoreRuntime 9a451d4946
The
IFluidRouter
property has been removed fromIFluidDataStoreChannel
andFluidDataStoreRuntime
. Please migrate all usage to theIFluidDataStoreChannel.entryPoint
API.See Removing-IFluidRouter.md for more details.
Dependency updates only.
Dependency updates only.
Dependency updates only.
Dependency updates only.
-
Dependencies on @fluidframework/protocol-definitions package updated to 3.0.0 871b3493dd
This included the following changes from the protocol-definitions release:
- Updating signal interfaces for some planned improvements. The intention is split the interface between signals
submitted by clients to the server and the resulting signals sent from the server to clients.
- A new optional type member is available on the ISignalMessage interface and a new ISentSignalMessage interface has been added, which will be the typing for signals sent from the client to the server. Both extend a new ISignalMessageBase interface that contains common members.
- The @fluidframework/common-definitions package dependency has been updated to version 1.0.0.
- Updating signal interfaces for some planned improvements. The intention is split the interface between signals
submitted by clients to the server and the resulting signals sent from the server to clients.
-
runtime-definitions:
bindToContext
API removed 871b3493ddbindToContext
has been removed fromFluidDataStoreRuntime
,IFluidDataStoreContext
andMockFluidDataStoreContext
. This has been deprecated for several releases and cannot be used anymore. -
Server upgrade: dependencies on Fluid server packages updated to 2.0.1 871b3493dd
Dependencies on the following Fluid server package have been updated to version 2.0.1:
- @fluidframework/gitresources: 2.0.1
- @fluidframework/server-kafka-orderer: 2.0.1
- @fluidframework/server-lambdas: 2.0.1
- @fluidframework/server-lambdas-driver: 2.0.1
- @fluidframework/server-local-server: 2.0.1
- @fluidframework/server-memory-orderer: 2.0.1
- @fluidframework/protocol-base: 2.0.1
- @fluidframework/server-routerlicious: 2.0.1
- @fluidframework/server-routerlicious-base: 2.0.1
- @fluidframework/server-services: 2.0.1
- @fluidframework/server-services-client: 2.0.1
- @fluidframework/server-services-core: 2.0.1
- @fluidframework/server-services-ordering-kafkanode: 2.0.1
- @fluidframework/server-services-ordering-rdkafka: 2.0.1
- @fluidframework/server-services-ordering-zookeeper: 2.0.1
- @fluidframework/server-services-shared: 2.0.1
- @fluidframework/server-services-telemetry: 2.0.1
- @fluidframework/server-services-utils: 2.0.1
- @fluidframework/server-test-utils: 2.0.1
- tinylicious: 2.0.1
-
test-utils: provideEntryPoint is required 871b3493dd
The optional
provideEntryPoint
method has become required on a number of constructors. A value will need to be provided to the following classes:BaseContainerRuntimeFactory
RuntimeFactory
ContainerRuntime
(constructor andloadRuntime
)FluidDataStoreRuntime
See testContainerRuntimeFactoryWithDefaultDataStore.ts for an example implemtation of
provideEntryPoint
for ContainerRuntime. See pureDataObjectFactory.ts for an example implementation ofprovideEntryPoint
for DataStoreRuntime.Subsequently, various
entryPoint
andgetEntryPoint()
endpoints have become required. Please see containerRuntime.ts for example implementations of these APIs.For more details, see Removing-IFluidRouter.md
-
Minimum TypeScript version now 5.1.6 871b3493dd
The minimum supported TypeScript version for Fluid 2.0 clients is now 5.1.6.
-
Some stack traces are improved (#17380) 34f2808ee9
Some stack traces have been improved and might now include frames for async functions that weren't previously included.
Dependency updates only.
-
Remove use of @fluidframework/common-definitions (#16638) a8c81509c9
The @fluidframework/common-definitions package is being deprecated, so the following interfaces and types are now imported from the @fluidframework/core-interfaces package:
- interface IDisposable
- interface IErrorEvent
- interface IErrorEvent
- interface IEvent
- interface IEventProvider
- interface ILoggingError
- interface ITaggedTelemetryPropertyType
- interface ITelemetryBaseEvent
- interface ITelemetryBaseLogger
- interface ITelemetryErrorEvent
- interface ITelemetryGenericEvent
- interface ITelemetryLogger
- interface ITelemetryPerformanceEvent
- interface ITelemetryProperties
- type ExtendEventProvider
- type IEventThisPlaceHolder
- type IEventTransformer
- type ReplaceIEventThisPlaceHolder
- type ReplaceIEventThisPlaceHolder
- type TelemetryEventCategory
- type TelemetryEventPropertyType
Dependency updates only.
-
Request APIs deprecated from many places 8abce8cdb4
The
request
API (associated with theIFluidRouter
interface) has been deprecated on a number of classes and interfaces. The following are impacted:IRuntime
andContainerRuntime
IFluidDataStoreRuntime
andFluidDataStoreRuntime
IFluidDataStoreChannel
MockFluidDataStoreRuntime
TestFluidObject
Please migrate usage to the corresponding
entryPoint
orgetEntryPoint()
of the object. The value for these "entryPoint" related APIs is determined from factories (forIRuntime
andIFluidDataStoreRuntime
) via theinitializeEntryPoint
method. If no method is passed to the factory, the correspondingentryPoint
andgetEntryPoint()
will be undefined.For an example implementation of
initializeEntryPoint
, see pureDataObjectFactory.ts.More information of the migration off the request pattern, and current status of its removal, is documented in Removing-IFluidRouter.md.
-
initializeEntryPoint
will become required 8abce8cdb4The optional
initializeEntryPoint
method has been added to a number of constructors. This method argument will become required in an upcoming release and a value will need to be provided to the following classes:BaseContainerRuntimeFactory
ContainerRuntimeFactoryWithDefaultDataStore
RuntimeFactory
ContainerRuntime
(constructor andloadRuntime
)FluidDataStoreRuntime
For an example implementation of
initializeEntryPoint
, see pureDataObjectFactory.ts.This work will replace the request pattern. See Removing-IFluidRouter.md for more info on this effort.
-
FluidDataStoreRuntime.getChannel throws for channels that do not exist 8abce8cdb4
Previously, calling
FluidDataStoreRuntime.getChannel(id)
for a channel that does not exist would wait for the channel to be created (possibly waiting indefinitely if never created). However, there is no safe means to dynamically create a channel in this manner without risking data corruption. The call will instead now throw for non-existent channels. -
Upgraded typescript transpilation target to ES2020 8abce8cdb4
Upgraded typescript transpilation target to ES2020. This is done in order to decrease the bundle sizes of Fluid Framework packages. This has provided size improvements across the board for ex. Loader, Driver, Runtime etc. Reduced bundle sizes helps to load lesser code in apps and hence also helps to improve the perf.If any app wants to target any older versions of browsers with which this target version is not compatible, then they can use packages like babel to transpile to a older target.
-
IDeltaManager members disposed and dispose() removed 8abce8cdb4
IDeltaManager members disposed and dispose() were deprecated in 2.0.0-internal.5.3.0 and have now been removed.
Dependency updates only.
Dependency updates only.
Dependency updates only.
Dependency updates only.
-
The
@fluidframework/garbage-collector
package was deprecated in version 2.0.0-internal.4.1.0. 8b242fdc79 It has now been removed with the following functions, interfaces, and types in it.cloneGCData
concatGarbageCollectionData
concatGarbageCollectionStates
GCDataBuilder
getGCDataFromSnapshot
IGCResult
removeRouteFromAllNodes
runGarbageCollection
trimLeadingAndTrailingSlashes
trimLeadingSlashes
trimTrailingSlashes
unpackChildNodesGCDetails
unpackChildNodesUsedRoutes
Dependency updates only.
-
GC interfaces removed from runtime-definitions (#14750) 60274eacab
The following interfaces available in
@fluidframework/runtime-definitions
are internal implementation details and have been deprecated for public use. They will be removed in an upcoming release.IGarbageCollectionNodeData
IGarbageCollectionState
IGarbageCollectionSnapshotData
IGarbageCollectionSummaryDetailsLegacy
-
@fluidframework/garbage-collector deprecated (#14750) 60274eacab
The
@fluidframework/garbage-collector
package is deprecated with the following functions, interfaces, and types in it. These are internal implementation details and have been deprecated for public use. They will be removed in an upcoming release.cloneGCData
concatGarbageCollectionData
concatGarbageCollectionStates
GCDataBuilder
getGCDataFromSnapshot
IGCResult
removeRouteFromAllNodes
runGarbageCollection
trimLeadingAndTrailingSlashes
trimLeadingSlashes
trimTrailingSlashes
unpackChildNodesGCDetails
unpackChildNodesUsedRoutes