npm.io
3.1.0 • Published 5d ago

@fluidframework/runtime-definitions

Licence
MIT
Version
3.1.0
Deps
6
Size
604 kB
Vulns
0
Weekly
0
Stars
4.9K

@fluidframework/runtime-definitions

Contains handshake interfaces for communication between the container runtime layer and the data store runtime layer.

Using Fluid Framework libraries

For a dependency on a Fluid Framework library's public APIs, we recommend a ^ (caret) version range. For example, use ^1.3.4.

For a dependency on an unstable API, such as a beta API, we recommend a more restrictive version range. For example, use a ~ version range.

Installation

Run this command to install the package:

npm i @fluidframework/runtime-definitions

Importing from this package

This package uses package.json exports to separate APIs by support level. For information about the support guarantees, read API Support Levels.

Import the public APIs from @fluidframework/runtime-definitions.

Import the beta APIs from @fluidframework/runtime-definitions/beta.

Import the legacy APIs from @fluidframework/runtime-definitions/legacy.

API Documentation

Read the @fluidframework/runtime-definitions API documentation at https://fluidframework.com/docs/apis/runtime-definitions.

  • IFluidDataStoreRuntimeChannel includes the minimal set of data and functionalities that are needed by the ContainerRuntime to bind and control a FluidDataStoreRuntime, including attach, snapshot, op/signal processing, request routes, and connection state notifications.
  • IFluidDataStoreContext includes data and function provided by the container layer and used by the data store layer for information about the container, to send ops and signals, data store creation, etc.
  • Agent/Task related interfaces, since the agent scheduler is included by default by the container layer, and data stores can make use of it
  • IFluidDataStoreFactory and IFluidDataStoreRegistry definitions
  • Common protocol structures that are not related to back-compat between the layer: IAttachMessage, IEnvelope, ISignalEnvelope, IInboundSignalMessage.
  • IContainerRuntimeBase is a temporary interface that includes a reduced set of data and functionalities from IContainerRuntime that the IFluidDataStoreRuntimeChannel or data store writer will need from ContainerRuntime.Eventually, all of the these should be shim by the IFluidDataStoreContext

These interfaces needs to have strong back-compat guaranetee to support dynamic data store loading scenario where the FluidDataStoreRuntime might be built with different version.

Minimum Client Requirements

Fluid Framework client libraries support the platforms in this document. These requirements are intentionally restrictive. Within a major version series, we can relax these requirements, but we cannot make them stricter. For a Long Term Support (LTS) version, we might need to support these platforms for several years.

Other configurations can work, but Fluid Framework does not support them. If an unsupported configuration stops working, we do not classify this as a bug. To request support for a configuration that is not listed, file an issue. The product team will evaluate your request. In the issue, specify the current status of the configuration:

  • The configuration works but needs official support.
  • The configuration does not work and requires changes.
Supported Runtimes
  • Fluid Framework supports Node.js versions 22 and 24 while they receive upstream support.
  • Fluid Framework supports modern browsers that support the ES2022 standard library.
Supported Tools
  • TypeScript 6.0:
    • Fluid Framework supports all strict options.
    • Set the build targets (lib, target) to ES2022 or later.
    • Enable strictNullChecks.
    • Fluid Framework does not support configuration options deprecated in TypeScript 6.0.
    • Fluid Framework does not fully support exactOptionalPropertyTypes. If you enable this option, do not use in, Reflect.has, Object.hasOwn, or Object.prototype.hasOwnProperty to narrow members of Fluid Framework types. These methods can incorrectly exclude undefined from the possible values.
  • webpack 5
    • We do not require a specific bundler. Other bundlers that handle ES Modules can work, but we actively test only webpack.
Module Resolution

In TypeScript compilerOptions, use Node16, Node20, NodeNext, or Bundler module resolution. These settings follow the Node.js v12+ ESM Resolution and Loading algorithm.

Do not use Node10 module resolution.

Module Formats
  • ES Modules: Use ES Modules to consume Fluid Framework client packages, including in Node.js.
  • CommonJS: Fluid Framework does not officially support CommonJS in version 3.0 or later.

Contribution Guidelines

You can contribute to Fluid Framework in these ways:

For detailed instructions, read the repo documentation.

This project follows the Microsoft Open Source Code of Conduct. For more information, read the Code of Conduct frequently asked questions. For questions or comments, contact opencode@microsoft.com.

This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services. Use of these trademarks or logos must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.

Help

Read the Fluid Framework documentation for information about Fluid Framework concepts and APIs.

To request information that the documentation does not contain, create an issue.

Trademark

This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services.

Use of these trademarks or logos must follow Microsoft's Trademark & Brand Guidelines.

Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.