FluidFramework

Library for building distributed, real-time collaborative web applications

MIT License

Downloads
1.4M
Stars
4.7K
Committers
246

Bot releases are hidden (Show)

FluidFramework - tinylicious v0.7.2 (patch)

Published by tylerbutler over 1 year ago

What's Changed

Other changes

Full Changelog: https://github.com/microsoft/FluidFramework/compare/tinylicious_v0.7.1...tinylicious_v0.7.2

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

Published by tylerbutler over 1 year ago

What's Changed

Other changes

Full Changelog: https://github.com/microsoft/FluidFramework/compare/client_v2.0.0-internal.4.0.0...client_v2.0.0-internal.4.0.1

FluidFramework - tinylicious v0.7.1 (patch)

Published by tylerbutler over 1 year ago

What's Changed

Other changes

Full Changelog: https://github.com/microsoft/FluidFramework/compare/tinylicious_v0.7.0...tinylicious_v0.7.1

FluidFramework - tinylicious v0.7.0 (minor)

Published by tylerbutler over 1 year ago

This is a minor release.

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

Published by jenn-le over 1 year ago

This is a patch release that fixes a failure when trying to access localStorage (PR #14760)

SweepReadyUsageDetectionHandler accesses localStorage which can fail if access to localStorage is not allowed. We are seeing this happening in production. This removes the usage of SweepReadyUsageDetectionHandler in garbage collector - It was added by #12004 but the sweep ready detection feature was never enabled.

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

Published by tylerbutler over 1 year ago

This is a major release that includes breaking changes in addition to deprecations that will take effect in a future major release.

💥 Breaking changes

This release contains the following breaking changes:

Container and RelativeLoader no longer exported

Container and RelativeLoader are no longer exported. All Container usages should have previously moved to IContainer. RelativeLoader is an internal implementation which should not be exposed or used directly.

Remove ensureContainerConnected() in @fluidframework/test-utils

This function was deprecated in a previous release and has now been removed.
Use waitForContainerConnection() from the same package instead.
See the note about breaking
changes in that function in this release.

New default parameter values for waitForContainerConnection() in @fluidframework/test-utils

The default value for the failOnContainerClose parameter has changed from false to true for function
waitForContainerConnection() exported by @fluidframework/test-utils.

This is overall a safer default because it ensures that unexpected errors which cause the Container to close are surfaced
immediately, instead of potentially being hidden by a timeout.

Most use cases should prefer true; explicit passing of false should only be necessary when the caller expects the
Container to connect or close for some reason.

Some test packages no longer published

These packages were previously published under the @fluidframework scope:

  • @fluidframework/test-drivers
  • @fluidframework/test-pairwise-generator
  • @fluidframework/test-version-utils
  • @fluidframework/test-loader-utils

These have been moved to the @fluid-internal scope and are no longer published.

IFluidHTMLView, ReactViewAdapter, and HTMLViewAdapter removed

IFluidHTMLView, ReactViewAdapter, and HTMLViewAdapter were deprecated in 2.0.0-internal.3.2.0, and are now removed.

IFluidTokenProvider removed

The IFluidTokenProvider interface was deprecated in 2.0.0-internal.3.2.0, and is now removed.

Summarizer node and related items removed

The following functions, interfaces, and types currently available in @fluidframework/runtime-utils were deprecated in 2.0.0-internal.3.0.0 and are now removed.

  • createRootSummarizerNode
  • createRootSummarizerNodeWithGC
  • IFetchSnapshotResult
  • IRootSummarizerNode
  • IRootSummarizerNodeWithGC
  • ISummarizerNodeRootContract
  • RefreshSummaryResult

web-code-loader and ICodeAllowList removed

The @fluidframework/web-code-loader and the ICodeAllowList were deprecated in 2.0.0-internal.3.2.0, and are now removed.

Container and IContainer no longer raise events when a new listener is registered

Container and IContainer had previously raised the connected, disconnected, dirty, and saved events when a new listener was registered and the corresponding state was true. This behavior has been removed. To avoid issues, add checks to the state of the container before registering listeners.

	// Ensure client is connected
+	if (container.connectionState !== ConnectionState.Connected) {
		await new Promise<void>((resolve) => {
			container.once("connected", resolve);
		});
+   }

Remove deprecated PendingStateManager interfaces

The following interfaces used by the PendingStateManager are no longer exported:

  • IPendingMessage
  • IPendingFlush
  • IPendingState
  • IPendingLocalState

Aqueduct members removed

ContainerServices in @fluidframework/aqueduct and waitForAttach() was deprecated in 2.0.0-internal.3.0.0 and has now been removed.

driver-utils members removed

The following members of the @fluidframework/driver-utils package were deprecated in 2.0.0-internal.3.0.0 or earlier, and are now removed:

  • waitForConnectedState
  • MapWithExpiration
  • configurableUrlResolver
  • MultiUrlResolver
  • MultiDocumentServiceFactory
  • BlobCacheStorageService
  • EmptyDocumentDeltaStorageService
  • convertSnapshotAndBlobsToSummaryTree
  • ISummaryTreeAssemblerProps
  • SummaryTreeAssembler
  • BlobAggregationStorage
  • SnapshotExtractor
  • isUnpackedRuntimeMessage
  • IAnyDriverError

Remove IConnectableRuntime.deltaManager

Note: IConnectableRuntime is only to be implemented internally, so removing this should not be impactful.

IDocumentServiceFactory.protocolName removed

IDocumentServiceFactory.protocolName was deprecated in 2.0.0-internal.3.0.0 and has now been removed.

Changes to Summarizer's public API

The following interfaces and exports in @fluidframework/container-runtime deprecated since 0.14.0
have been removed and have no replacement:

  • IProvideSummarizer interface
  • ISummarizer const (note: the ISummarizer interface still exists and is used)

Additionally, the ISummarizer interface no longer extends IFluidLoadable nor Partial<IProvideSummarizer>.
This means it no longer has readonly properties IFluidLoadable and handle.

Deprecations

bindToContext deprecated in IFluidDataStoreContext

bindToContext in IFluidDataStoreContext was deprecated in 2.0.0-internal.2.0.0. This is a heads up that it will be removed in 2.0.0-internal.5.0.0. Its usage in FluidDataStoreRuntime was removed in this release.

getBaseGCDetails deprecated in IFluidDataStoreContext and CreateChildSummarizerNodeFn

getBaseGCDetails() has been deprecated in IFluidDataStoreContext and CreateChildSummarizerNodeFn. The functionality to update the base GC details of nodes has been moved to summarizer nodes. These will be removed in 2.0.0-internal.5.0.0.

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

Published by tylerbutler over 1 year ago

This is a patch release that fixes the dependency ranges of the published packages (PR #14727)

In the previous release (v2.0.0-internal.3.4.1), dependencies on other Fluid Framework packages were specified using a caret (^). However, they should have been using >= < range dependencies. This release contains corrected >= < dependencies.

FluidFramework - server v0.1038.4000

Published by tylerbutler over 1 year ago

This is a minor release.

FluidFramework - Fluid Framework v2.0.0-internal.3.4.0

Published by tylerbutler over 1 year ago

This is a minor release that includes several deprecations that will take effect in a future major release.

Deprecations

This list includes deprecations new to v2.0.0-internal.3.4.0 and those made in the previous minor release, 2.0.0-internal.3.3.0.

IResolvedUrl will be equivalent to IFluidResolvedUrl

In @fluidframework/driver-definitions IResolvedUrlBase and IWebResolvedUrl are deprecated as they are not used.
This will make IResolvedUrl and IFluidResolvedUrl equivalent. Since all ResolvedUrls will now be FluidResolvedUrls we no longer need to differentiate them. In @fluidframework/driver-utils isFluidResolvedUrl and
ensureFluidResolvedUrl will be deprecated and removed due to this.

LoaderHeader.cache deprecated

In @fluidframework/container-definitions, the cache value from the LoaderHeader enum has been deprecated.
Therefore, the [LoaderHeader.cache] property from ILoaderHeader is also deprecated. They will both be removed in the next major release, as well as all caching functionality of containers. Cache support will be removed soon, please try not to rely on caching, and inform us if you cannot do so.

deltaManager property in IConnectableRuntime moved

The deltaManager property in IConnectableRuntime has been moved to ISummarizerRuntime directly. ISummarizerRuntime extends IConnectableRuntime so it hasn't been changed.

attachGraph and bind methods in IFluidHandle deprecated

attachGraph and bind methods in IFluidHandle have been deprecated. These are internal methods used by the Fluid Framework and should not be used. They will be removed in a future release.

Some APIs meant only for internal usage are deprecated

IGarbageCollectionRuntime in the @fluidframework/container-runtime package should not be used outside the FF codebase. It has been deprecated and is expected to be removed in the next major release.

IConnectableRuntime.deltaManager in the same package is no longer used and deprecated as well.

FluidFramework - build-tools v0.13.0

Published by tylerbutler over 1 year ago

The 0.13 build-tools release includes a new command, flub exec, and various bug fixes. These release notes
cover the major changes in this release.

✨ Features

flub exec runs shell commands in the context of repo projects

PR #14635

The flub exec command can be used to execute shell commands in the context of packages or release groups in the repo.

The following example runs pnpm -r remove @rushstack/eslint-config on all independent packages and all release group root packages:

flub exec --all --releaseGroupRoots "pnpm -r remove @rushstack/eslint-config"

check policy has a setting to ignore single-package pnpm workspaces

PR #14656

pnpm does not support nesting packages under a workspace that is not managed by the workspace. That is, if there's a pnpm-workspace.yaml file anywhere in the parent hierarchy, pnpm doesn't install the package individually like one might expect.

Because we have the client release group at the root of the repo, there's a pnpm-workspace.yaml file in the hierarchy for our independent packages as well. We put a workspace file in each independent package so pnpm treats the project as a one-package workspace.

However, for check policy, we need to be able to treat these single-package workspaces differently. In particular we
don't want to enforce the preinstall script that we use in release group roots. There is now a setting that contains a list of packages that are single-package workspaces.

🐛 Bug fixes

This list only includes notable bug fixes. See the changelog for a full list of fixes in this release.

check policy now uses the correct indentation when editing package.json files

PR #14481

Previously the indentation was changed to spaces when check policy was run. This has been corrected.

FluidFramework - Fluid Framework v2.0.0-internal.3.0.0

Published by tylerbutler over 1 year ago

This is a major release that includes several breaking changes in addition to deprecations that will take effect in a future major release.

💥 Breaking changes

This release contains the following breaking changes:

existing parameter is now required in IRuntimeFactory::instantiateRuntime

Breaking change first announced in v2.0.0-internal.2.0.0.

The existing flag was added as optional in client version 0.44 and has been updated to be expected
and required in the IRuntimeFactory.instantiateRuntime function. This flag is used to determine whether the runtime should
be created for the first time or from an existing context. Similarly, the load function in containerRuntime
is being deprecated and replaced with loadRuntime, in which existing is a required parameter.

Removed: @fluidframework/iframe-driver

Breaking change first announced in v2.0.0-internal.1.3.0.

The iframe-driver package was deprecated in 2.0.0-internal.1.3.0 and has now been removed.

Removed: Deprecated Fields from ISummaryRuntimeOptions

Breaking change first announced in v1.0.0.

The following fields have been removed from ISummaryRuntimeOptions as they became properties from ISummaryConfiguration:

ISummaryRuntimeOptions.disableSummaries
ISummaryRuntimeOptions.maxOpsSinceLastSummary
ISummaryRuntimeOptions.summarizerClientElection
ISummaryRuntimeOptions.summarizerOptions

Removed: ISummarizerRuntime batchEnd listener

Breaking change first announced in v2.0.0-internal.2.1.0.

The "batchEnd" listener in ISummarizerRuntime has been removed. Please remove all usage and implementations of ISummarizerRuntime.on("batchEnd", ...) and ISummarizerRuntime.removeListener("batchEnd", ...).
If these methods are needed, refer to the IContainerRuntimeBase interface.

Removed: ISummaryBaseConfigurationsummarizerClientElection

Breaking change first announced in v2.0.0-internal.2.1.0.

ISummaryBaseConfiguration.summarizerClientElection was deprecated and is now removed.
There is no replacement for this property.

Removed: Deprecated IFluidObject Interface

Breaking change first announced in v1.0.0.

IFluidObject is removed and has been replaced with FluidObject.

Removed: @fluid-experimental/get-container

Breaking change first announced in v0.39.0.

The @fluid-experimental/get-container package was deprecated in version 0.39 and has now been removed.

Behavior changes coming soon

Op re-entry will no longer be supported

Submitting an op while processing an op will no longer be supported as it can lead to inconsistencies in the document and to DDS change events observing out-of-order changes. An example scenario is changing a DDS inside the handler for the valueChanged event of a DDS.

This behavior change is currently disabled but it can be enabled using the IContainerRuntimeOptions.enableOpReentryCheck property, which will eventually become the default. If the option is enabled, the functionality can be disabled at runtime using the Fluid.ContainerRuntime.DisableOpReentryCheck feature gate.

With the feature enabled, if the runtime detects an op which was submitted in this manner, an error will be thrown and the current container will close.

sharedMap.on("valueChanged", (changed) => {
    if (changed.key !== "key2") {
        sharedMap.set("key2", "2");
    }
});

sharedMap.set("key1", "1"); // executing this statement will cause an exception to be thrown

Other clients will not be affected.

Because we are planning to enable this feature by default, we are advising our partners to use the IContainerRuntimeOptions.enableOpReentryCheck option to identify existing code using this pattern and to let us know in case the proposed API behavior is problematic.

Deprecations

This list includes deprecations new to v2.0.0-internal.3.0.0 and those made in the previous minor release, 2.0.0-internal.2.4.0.

Deprecated: ensureContainerConnected() in @fluidframework/test-utils

This change was made in v2.0.0-internal.2.4.0.

ensureContainerConnected() is now deprecated.
Use waitForContainerConnection() from the same package instead.

NOTE: the default value for the failOnContainerClose parameter of waitForContainerConnection() is currently set
to false for backwards compatibility but will change to true in a future release.
This is overall a safer default because it ensures that unexpected errors which cause the Container to close are surfaced
immediately, instead of potentially being hidden by a timeout.
We recommend that you start passing failOnContainerClose=true when calling waitForContainerConnection() in
preparation for this upcoming breaking change.

Deprecated: internal connection details from IConnectionDetails

This change was made in v2.0.0-internal.2.4.0.

The existing, mode, version and initialClients properties in IConnectionDetails are deprecated and no longer exposed to the runtime. No replacement API recommended.

Reasons for deprecation:

  • existing : this will always be true, which no longer provides useful information.
  • mode : this is an implementation detail of the connection.
  • initialClients and version : these are implementation details of handshake protocol of establishing connection, and should not be accessible.

Deprecated: IPendingFlush

New deprecation in v2.0.0-internal.3.0.0.

IPendingFlush has been deprecated. Use batch metadata on IPendingMessage instead to indicate the end of a batch.

Deprecated: AzureFunctionTokenProvider in @fluidframework/azure-client

New deprecation in @fluidframework/azure-client v1.2.0.

AzureFunctionTokenProvider is now deprecated. To be removed in @fluidframework/azure-client v2.0.0.
The @fluidframework/azure-client will no longer expose the AzureFunctionTokenProvider as it is not a
production-ready token provider implementation. Developers who are currently consuming this token provider
should look to implement a custom token provider as a replacement.

Package Rankings
Top 1.24% on Npmjs.org