-
Update to TypeScript 5.4 (#21214) 0e6256c722
Update package implementations to use TypeScript 5.4.5.
-
Deprecated members of IFluidHandle are split off into new IFluidHandleInternal interface 96872186d0
Split IFluidHandle into two interfaces,
IFluidHandle
andIFluidHandleInternal
. Code depending on the previously deprecated members of IFluidHandle can access them by usingtoFluidHandleInternal
from@fluidframework/runtime-utils/legacy
.External implementation of the
IFluidHandle
interface are not supported: this change makes the typing better convey this using theErasedType
pattern. Any existing and previously working, and now broken, external implementations ofIFluidHandle
should still work at runtime, but will need some unsafe type casts to compile. Such handle implementation may break in the future and thus should be replaced with use of handles produced by the Fluid Framework client packages.
-
fluid-framework: DDS classes are no longer publicly exported 97d68aa06b
SharedDirectory now only exports its factory and the interface type. The actual concrete classes which leak implementation details are no longer exported. Users of the
SharedDirectory
type should useISharedDirectory
.Most of other internal crufts are also hided within the API surface, such as the encoded format, ILocalValue, ICreateInfo, local op metadata types, etc.
-
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.
-
fluid-framework: Replace SharedObjectClass with new ISharedObjectKind type. 97d68aa06b
The static objects used as SharedObjectClass now explicitly implement the new ISharedObjectKind type. SharedObjectClass has been removed as ISharedObjectKind now fills that role. LoadableObjectCtor has been inlined as it only had one use: an external user of it can replace it with
(new (...args: any[]) => T)
. -
fluid-framework: Make some interface members readonly 97d68aa06b
Remove unneeded mutability from some interface members.
-
map, tree: DDS classes are no longer publicly exported (#19717) ae1d0be26d
SharedMap and SharedTree now only export their factories and the interface types. The actual concrete classes which leak implementation details are no longer exported. Users of the
SharedMap
type should useISharedMap
. Users of theSharedTree
type should useISharedTree
.
-
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-definitions: Jsonable and Serializable now require a generic parameter 9a451d4946
The
Jsonable
andSerializable
types from @fluidframework/datastore-definitions now require a generic parameter and if that type isany
orunknown
will return a new resultJsonableTypeWith<>
that more accurately represents the limitation of serialization.Additional modifications:
Jsonable
'sTReplacement
parameter default has also been changed fromvoid
tonever
, which now disallowsvoid
.- Unrecognized primitive types like
symbol
are now filtered tonever
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 anany
default that meant values wereSerializable<any>
(i.e.any
), but nowSerializable<any>
isJsonableTypeWith<IFluidHandle>
which may be problematic for reading or writing. Preferred correction is to specify the value type but casting throughany
may provide a quick fix.
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.
-
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
-
Minimum TypeScript version now 5.1.6 871b3493dd
The minimum supported TypeScript version for Fluid 2.0 clients is now 5.1.6.
Dependency updates only.
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.
-
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.
Dependency updates only.
Dependency updates only.
Dependency updates only.
Dependency updates only.
Dependency updates only.
Dependency updates only.
Dependency updates only.