FluidFramework

Library for building distributed, real-time collaborative web applications

MIT License

Downloads
1.4M
Stars
4.7K
Committers
246

Bot releases are visible (Hide)

FluidFramework - Fluid Framework v2.0.0-internal.6.0.4 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • release/v2int/6.0: Make forceReadonly work (#17401) #17595
  • [bump] client: 2.0.0-internal.6.0.3 => 2.0.0-internal.6.0.4 (patch) #17249

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.0.3...client_v2.0.0-internal.6.0.4

FluidFramework - Fluid Framework v2.0.0-internal.7.0.0 (major)

Published by github-actions[bot] about 1 year ago

Fluid Framework v2.0.0-internal.7.0.0

container-runtime-definitions: IDataStoreWithBindToContext_Deprecated interface removed

IDataStoreWithBindToContext_Deprecated has been removed. It has been deprecated for a while and cannot be used anymore.

container-runtime-definitions: getAliasedDataStoreEntryPoint in IContainerRuntime is now required

getAliasedDataStoreEntryPoint was added to IContainerRuntime in 2.0.0-internal.6.0 and is now required.

container-loader: Container caching in the Loader is removed

Container caching in the Loader has been removed. Do not to rely on caching and inform the FluidFramework team ASAP if you cannot do so.

odsp-driver: Load container in readonly mode when driver throws DriverErrorType.outOfStorage

Handle DriverErrorType.outOfStorage error from driver and load the container in readonly mode. Currently there is no handling and when the join session throws this error, the container will get closed. With this we use NoDeltaStream object as connection and load the container in read mode, so that it loads properly. We also notify the that the container is "readonly" through the event on delta manager so that apps can listen to this and show any UX etc. The app can listen to the event like this:

container.deltaManager.on(
	"readonly",
	(readonly?: boolean, readonlyConnectionReason?: { text: string; error?: IErrorBase }) => {
		// error?.errorType will be equal to DriverErrorType.outOfStorage in this case
		// App logic
	},
);

container-loader: Containers will connect in read-mode by default

When a container is loaded, it will connect in read-mode unless it is loaded with a pending state containing stashed ops.

runtime-definitions: bindToContext API removed

bindToContext has been removed from FluidDataStoreRuntime, IFluidDataStoreContext and MockFluidDataStoreContext. This has been deprecated for several releases and cannot be used anymore.

aqueduct: ContainerRuntimeFactory constructors have changed

The following class constructors have been changed to allow for better flexible in arguments passed:

  • BaseContainerRuntimeFactory
  • ContainerRuntimeFactoryWithDefaultDataStore
  • RuntimeFactory

They now use a single object for constructor params. Example change to be made:

// Old
new BaseContainerRuntimeFactory(
	myRegistryEntries,
	myDependencyContainer,
	myRequestHandlers,
	myRuntimeOptions,
	myProvideEntryPoint,
);

// New
new BaseContainerRuntimeFactory({
	registryEntries: myRegistryEntries,
	dependencyContainer: myDependencyContainer,
	requestHandlers: myRequestHandlers,
	runtimeOptions: myRuntimeOptions,
	provideEntryPoint: myProvideEntryPoint,
});

aqueduct: EventForwarder and IDisposable members removed from PureDataObject

The EventForwarder and IDisposable members of PureDataObject were deprecated in 2.0.0-internal.5.2.0 and have now been removed.

If your code was overriding any methods/properties from EventForwarder and or IDisposable on a class that inherits (directly or transitively) from PureDataObject, you'll have to remove the override keyword.

test-utils: provideEntryPoint is required

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 and loadRuntime)
  • FluidDataStoreRuntime

See testContainerRuntimeFactoryWithDefaultDataStore.ts for an example implemtation of provideEntryPoint for ContainerRuntime. See pureDataObjectFactory.ts for an example implementation of provideEntryPoint for DataStoreRuntime.

Subsequently, various entryPoint and getEntryPoint() endpoints have become required. Please see containerRuntime.ts for example implementations of these APIs.

For more details, see Removing-IFluidRouter.md

container-runtime: initializeEntryPoint renamed to provideEntryPoint

The naming of initializeEntryPoint has been changed to provideEntryPoint. Please change the property name in relevant calls to ContainerRuntime.loadRuntime(...).

container-runtime: Removing some deprecated and likely unused ContainerRuntime APIs

  • IGCRuntimeOptions.sweepAllowed
  • ContainerRuntime.reSubmitFn

sequence: New API for specifying spatial positioning of intervals

Previously intervals were specified with only an index. Now the model is a bit more nuanced in that you can specify positions that lie before or after a given index. This makes it more clear how interval endpoints should interact with changes to the sequence. See the docs for SequencePlace for additional context.

sequence: IIntervalCollection.change must specify both endpoints

IIntervalCollection.change no longer allows an endpoint to be undefined. undefined can unintentionally result in end < start. To adapt to this change, simply use the current position of the endpoint that is not intended to change.

sequence: Remove compareStarts and compareEnds from IIntervalHelpers

These methods are redudant with the functions IInterval.compareStart and IInterval.compareEnd respectively.

sequence: Remove the mergeTreeUseNewLengthCalculations flag

The mergeTreeUseNewLengthCalculations flag has been removed, because the feature was enabled by default in 2.0.0-internal.6.0.0.

Minimum TypeScript version now 5.1.6

The minimum supported TypeScript version for Fluid 2.0 clients is now 5.1.6.

Dependencies on @fluidframework/protocol-definitions package updated to 3.0.0

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.

Server upgrade: dependencies on Fluid server packages updated to 2.0.1

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

routerlicious-driver: remove dead blob aggregation concepts and code

Dead concepts blob aggregation like aggregateBlobsSmallerThanBytes and minBlobSize have been removed.

@fluidframework/container-utils package removed

All members of the @fluidframework/container-utils package have been deprecated and the package is now removed.

Migration by API member:

  • ClientSessionExpiredError (deprecated in 2.0.0-internal.6.2.0): No replacement API offered.
  • DataCorruptionError (deprecated in 2.0.0-internal.6.2.0): Import from @fluidframework/telemetry-utils instead.
  • DataProcessingError (deprecated in 2.0.0-internal.6.2.0): Import from @fluidframework/telemetry-utils instead.
  • DeltaManagerProxyBase (deprecated in 2.0.0-internal.6.1.0): No replacement API offered.
  • extractSafePropertiesFromMessage (deprecated in 2.0.0-internal.6.2.0): Import from @fluidframework/telemetry-utils instead.
  • GenericError (deprecated in 2.0.0-internal.6.2.0): Import from @fluidframework/telemetry-utils instead.
  • ThrottlingWarning (deprecated in 2.0.0-internal.6.2.0): No replacement API offered.
  • UsageError (deprecated in 2.0.0-internal.6.2.0): Import from @fluidframework/telemetry-utils instead.

Deprecations

DEPRECATED: resolveHandle and IFluidHandleContext deprecated on IContainerRuntime

The resolveHandle(...) and get IFluidHandleContext() methods have been deprecated on the following interfaces:

  • IContainerRuntime
  • IContainerRuntimeBase

Requesting arbitrary URLs has been deprecated on IContainerRuntime. Please migrate all usage to the IContainerRuntime.getEntryPoint() method if trying to obtain the application-specified root object.

See Removing-IFluidRouter.md for more details.

DEPRECATED: container-loader: Various request related APIs have been deprecated

Please remove all calls to the following functions and instead use the new entryPoint pattern:

  • requestFluidObject
  • requestResolvedObjectFromContainer
  • getDefaultObjectFromContainer
  • getObjectWithIdFromContainer
  • getObjectFromContainer

See Removing-IFluidRouter.md for more details.

DEPRECATED: core-interfaces: IFluidRouter and IProvideFluidRouter deprecated

IFluidRouter and IProvideFluidRouter have been deprecated. Please remove all usages of these interfaces and migrate to the new entryPoint pattern.

See Removing-IFluidRouter.md for more details.

DEPRECATED: container-runtime: requestHandlers are deprecated

The concept of requestHandlers has been deprecated. Please migrate all usage of the following APIs to the new entryPoint pattern:

  • requestHandler property in ContainerRuntime.loadRuntime(...)
  • RuntimeRequestHandler
  • RuntimeRequestHandlerBuilder
  • defaultFluidObjectRequestHandler(...)
  • defaultRouteRequestHandler(...)
  • mountableViewRequestHandler(...)
  • buildRuntimeRequestHandler(...)
  • createFluidObjectResponse(...)
  • handleFromLegacyUri(...)
  • rootDataStoreRequestHandler(...)

See Removing-IFluidRouter.md for more details.

DEPRECATED: container-definitions: IContainer's and IDataStore's IFluidRouter capabilities are deprecated

IFluidRouter and request({ url: "/" }) on IContainer and IDataStore are deprecated and will be removed in a future major release. Please migrate all usage to the appropriate getEntryPoint() or entryPoint APIs.

See Removing-IFluidRouter.md for more details.

FluidFramework - Fluid Framework v2.0.0-internal.6.4.0 (minor)

Published by github-actions[bot] about 1 year ago

Fluid Framework v2.0.0-internal.6.4.0

Upcoming: The type of the logger property/param in various APIs will be changing

  • @fluidframework/runtime-definitions
    • IFluidDataStoreRuntime.logger will be re-typed as ITelemetryBaseLogger
  • @fluidframework/odsp-driver
    • protected OdspDocumentServiceFactoryCore.createDocumentServiceCore's parameter odspLogger will be re-typed as ITelemetryLoggerExt
    • protected LocalOdspDocumentServiceFactory.createDocumentServiceCore's parameter odspLogger will be re-typed as ITelemetryLoggerExt

Additionally, several of @fluidframework/telemetry-utils's exports are being marked as internal and should not be consumed outside of other FF packages.

Some stack traces are improved

Some stack traces have been improved and might now include frames for async functions that weren't previously included.

tree2: Replace ValueSchema.Serializable with FluidHandle

Replace ValueSchema.Serializable with FluidHandle, removing support for arbitrary objects as tree values and preventing "any" type from Serializable from infecting TreeValue.

tree2: Restrict struct field names to avoid collisions with schema2 names

Struct field names are now restricted to avoid collisions with schema2 names.

FluidFramework - build-tools v0.24.0 (minor)

Published by github-actions[bot] about 1 year ago

This is a major release.

FluidFramework - Fluid Framework v2.0.0-internal.6.3.3 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • [v2int/6.3] Port #17421 - Always log GarbageCollectorLoaded event #17425
  • [V2int/6.3] Port #17371 - Bump default GC version in code to 3 #17418

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.3.2...client_v2.0.0-internal.6.3.3

FluidFramework - Fluid Framework v2.0.0-internal.4.3.2 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • [release/v2int/4.3] Ignore chunked ops when accounting for container progress (#15744) #17255
  • [bump] client: 2.0.0-internal.4.3.1 => 2.0.0-internal.4.3.2 (patch) #15967

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.4.3.1...client_v2.0.0-internal.4.3.2

FluidFramework - Fluid Framework v2.0.0-internal.6.2.1 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • [port 6.2] Server deps update 1.0.0->1.0.1 #17245
  • [bump] client: 2.0.0-internal.6.2.0 => 2.0.0-internal.6.2.1 (patch) #17071

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.2.0...client_v2.0.0-internal.6.2.1

FluidFramework - Fluid Framework v2.0.0-internal.6.1.2 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • [port 6.1] Server deps update 1.0.0->1.0.1 #17244
  • Update type tests in release branch #16927
  • [bump] client: 2.0.0-internal.6.1.1 => 2.0.0-internal.6.1.2 (patch) #16916

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.1.1...client_v2.0.0-internal.6.1.2

FluidFramework - Fluid Framework v2.0.0-internal.6.0.3 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • [port 6.0] Server deps update 1.0.0->1.0.1 #17242
  • [bump] client: 2.0.0-internal.6.0.2 => 2.0.0-internal.6.0.3 (patch) #17223

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.0.2...client_v2.0.0-internal.6.0.3

FluidFramework - Fluid Framework v2.0.0-internal.6.3.2 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • [Port v2int6.3] Remove augment on ContainerRuntime.loadRuntime (#17153) #17236
  • build: Update typetests in release branch #17216
  • [bump] client: 2.0.0-internal.6.3.1 => 2.0.0-internal.6.3.2 (patch) #17211

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.3.1...client_v2.0.0-internal.6.3.2

FluidFramework - Fluid Framework v2.0.0-internal.6.0.2 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • Fix SharedString Event and Submit Order to Avoid Reentrancy (#16815) #17218
  • [bump] client: 2.0.0-internal.6.0.1 => 2.0.0-internal.6.0.2 (patch) #16947

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.0.1...client_v2.0.0-internal.6.0.2

FluidFramework - Fluid Framework v2.0.0-internal.6.3.0 (minor)

Published by github-actions[bot] about 1 year ago

This is a minor release.

FluidFramework - Fluid Framework v2.0.0-internal.6.3.1 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • Add ability to release @fluid-internal/client-utils package #17208
  • [bump] client: 2.0.0-internal.6.3.0 => 2.0.0-internal.6.3.1 (patch) #17200

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.3.0...client_v2.0.0-internal.6.3.1

FluidFramework - common-utils v2.0.0 (major)

Published by tylerbutler about 1 year ago

This is a major release.

Deprecated classes and functions

The following classes, functions, and types are deprecated in this release. In some cases, the implementations have been
moved to other packages.

Moved to @fluidframework/core-utils

  • class Lazy
  • class LazyPromise
  • class PromiseCache<TKey, TResult>
  • interface PromiseCacheOptions
  • type PromiseCacheExpiry
  • class Deferred
  • class Heap
  • class PromiseTimer
  • class Timer
  • const delay
  • const NumberComparer
  • function assert
  • function safelyParseJSON
  • function setLongTimeout
  • function unreachableCase
  • interface IComparer
  • interface IHeapNode
  • interface IPromiseTimer
  • interface IPromiseTimerResult
  • interface ITimer

Moved to @fluid-internal/client-utils

  • class Buffer
  • class EventForwarder
  • class Trace
  • class TypedEventEmitter
  • class TypedEventTransform
  • function bufferToString
  • function fromBase64ToUtf8
  • function fromUtf8ToBase64
  • function gitHashFile
  • function hashFile
  • function stringToBuffer
  • function toUtf8
  • function Uint8ArrayToArrayBuffer
  • function Uint8ArrayToString
  • interface ITraceEvent
  • type EventEmitterEventType
  • type IsoBuffer
  • type IsomorphicPerformance

Deprecated with no replacement

  • function doIfNotDisposed
  • class RateLimiter
  • class RangeTracker
  • interface IRange
  • interface IRangeTrackerSnapshot
FluidFramework - common-definitions v1.0.0 (major)

Published by tylerbutler about 1 year ago

This is a major release.

Deprecated interfaces and types

The following interfaces and types are deprecated in this release. They can now be found in @fluidframework/core-interfaces.

These deprecated APIs will be removed in version 2.0.0.

Moved to @fluidframework/core-interfaces

  • 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
FluidFramework - Fluid Framework v2.0.0-internal.5.4.2 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • [main > 5.4] build: Remove lerna from client and build-tools] #16910
  • [bump] client: 2.0.0-internal.5.4.1 => 2.0.0-internal.5.4.2 (patch) #16897

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.5.4.1...client_v2.0.0-internal.5.4.2

FluidFramework - Fluid Framework v2.0.0-internal.6.0.1 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • [main > 6.0] build: Remove lerna from client and build-tools #16908
  • [port 6.0] revert: Temporarily revert some breaking changes (for 2.0.0-internal.6.x) #16893
  • [6.0 port] Move quorum validation back to ProtocolHandler so it can be overridde… #16862
  • Fix the seqnum issue when creating subdirectory with grouped batching - release 6.0 #16857
  • [main > 6.0] revert: Bring back TelemetryNullLogger for 6.x #16849
  • build: typetests generate in release branch #16716
  • [bump] client: 2.0.0-internal.6.0.0 => 2.0.0-internal.6.0.1 (patch) #16708

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.0.0...client_v2.0.0-internal.6.0.1

FluidFramework - build-tools v0.23.0 (minor)

Published by github-actions[bot] about 1 year ago

This is a minor release.

FluidFramework - Fluid Framework v2.0.0-internal.6.2.0 (minor)

Published by github-actions[bot] about 1 year ago

Deprecations and other changes

Deprecate SharedSequence, SubSequence, and IJSONRunSegment

The types SharedSequence, SubSequence, and IJSONRunSegment are being deprecated and moved.

They are now, and will continue to be exposed from the @fluid-experimental/sequence-deprecated package.

New usages of these types should not be added, but they may be necessary for migration.

PureDataObject temporarily extends EventForwarder and implements IDisposable again

PureDataObject extends EventForwarder and implements IDìsposable again to ease the transition to 2.0.0-internal.6.x. These interfaces will no longer be implemented on PureDataObject in version 2.0.0-internal.7.0.0.

The original deprecation announcement for these members can be found here.

Once the change is re-applied in 2.0.0-internal.7.0.0, if your code was overriding any methods/properties from EventForwarder and or IDisposable on a class that inherits (directly or transitively) from PureDataObject, you'll have to remove the override keyword.

Temporarily restore id property on IContainerContext

The id property on IContainerContext has been temporarily restored to ease the transition to 2.0.0-internal.6.x. It will be removed again in 2.0.0-internal.7.0.0.

The original deprecation announcement can be found here.

Deprecate getStackContext and associated NestBegin/End

Deprecate SharedSegmentSequence.getStackContext and Client.getStackContext (and the enums ReferenceType.NestBegin and NestEnd they use). This functionality is unused, poorly tested, and incurs performance overhead.

Deprecated refreshLatestAck in ISummarizeOptions, IOnDemandSummarizeOptions and IEnqueueSummarizeOptions

Passing refreshLatestAck as true will result in closing the summarizer. It is not supported anymore and will be removed in a future release. It should not be passed in to summarizeOnDemand and enqueueSummarize APIs anymore.

Remove use of @fluidframework/common-definitions

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

Deprecation of findTile in favor of searchForMarker, which uses depthFirstNodeWalk to locate the nearest marker.

findTile has a decent amount of buggy behavior, which leads partners who want to use it to implement workarounds for the odd behavior. searchForMarker is being introduced as a replacement. It performs the same basic functionality of searching for the nearest marker to a given start position in the indicated direction. However, it includes the start position as one of the nodes to search, so markers at the start position will be returned as the nearest marker to that position. Notably, positions 0 and length-1 will be included in the search as well, so searching forwards from position 0 or backwards from position length-1 would allow the entire string to be searched.

FluidFramework - Fluid Framework v2.0.0-internal.6.1.1 (patch)

Published by github-actions[bot] about 1 year ago

What's Changed

  • [bump] client: 2.0.0-internal.6.1.0 => 2.0.0-internal.6.1.1 (patch) #16905
  • [main > 6.1] build: Remove lerna from client and build-tools] #16909
  • [port 6.1] revert: Temporarily revert some breaking changes (for 2.0.0-internal.6.x) #16891

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.6.1.0...client_v2.0.0-internal.6.1.1

Package Rankings
Top 1.24% on Npmjs.org