npm.io
3.1.0 • Published 5d ago

@fluidframework/datastore-definitions

Licence
MIT
Version
3.1.0
Deps
5
Size
162 kB
Vulns
0
Weekly
0
Stars
4.9K

@fluidframework/datastore-definitions

Interface IFluidDataStoreRuntime specifies the data store developer API.

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/datastore-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/datastore-definitions.

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

API Documentation

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

Capabilities exposed on IFluidDataStoreRuntime

TODO: The full set of functionality is under review

  • DDS creation and management APIs
  • Container info and states (connection state, documentId, quorum, audience, etc.)
  • Loader
  • Op/Signal submission
  • Snapshotting
  • DeltaManager
  • Blob Management API.
Signals

Signals provide a transient data channel for data (any serializable payload) that doesn't need to be persisted in the op stream. Use signals where possible to avoid storing unnecessary ops, e.g. to transmit presence status during a collaborative session.

Signals are not persisted, ordered, or guaranteed. If a client is behind, the op state can be behind the signal state. For this reason people usually stick the currentSeq on the signal, so other clients can wait to process if they are behind.

You can send a signal via the container or data store runtime. The container will emit the signal event on all signals, but a data store will emit the signal event only on signals emitted on that data store runtime.

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.