
Product
Introducing Data Exports
Export Socket alert data to your own cloud storage in JSON, CSV, or Parquet, with flexible snapshot or incremental delivery.
@fluid-experimental/dds-interceptions
Advanced tools
Distributed Data Structures that support an interception callback
This package provides factory methods to create a wrapper around some of the basic Distributed Data Structures (DDS) that support an interception callback. Apps can provide a callback when creating these wrappers and this callback will be called when the DDS is modified. This allows apps to support features such as basic user attribution on a SharedString.
When taking a dependency on a Fluid Framework library, we recommend using a ^ (caret) version range, such as ^1.3.4.
While Fluid Framework libraries may use different ranges with interdependencies between other Fluid Framework libraries,
library consumers should always prefer ^.
It provides createSharedStringWithInterception that accepts a SharedString, the data store context and a callback, and returns a SharedString object:
function createSharedStringWithInterception(
sharedString: SharedString,
context: IFluidDataStoreContext,
propertyInterceptionCallback: (props?: MergeTree.PropertySet) => MergeTree.PropertySet,
): SharedString;
When a function is called that modifies the SharedString (for example, insertText), it calls propertyInterceptionCallback with the provided properties. The callback function can then provide the new set of properties that it wants to set. The operation in the called function and any operations in the callback are batched, i.e., they are guaranteed to be in order and will be applied together.
For example, to support a feature like simple user attribution, the app can append the user information to the properties in the callback. The user information can than be retrieved by getting the properties at any position.
It provides createSharedMapWithInterception that accepts a SharedMap, the data store context and a callback, and returns a SharedMap object:
function createSharedMapWithInterception(
sharedMap: SharedMap,
context: IFluidDataStoreContext,
setInterceptionCallback: (sharedMap: ISharedMap, key: string, value: any) => void,
): SharedMap;
When set is called on the SharedMap, it calls setInterceptionCallback with the underlying SharedMap, the key and value that the set was called with. The callback function can then perform operations on either the underlying SharedMap or any other DDS. The original set operation and any operations in the callback are batched, i.e., they are guaranteed to be in order and will be applied together.
Example: To support a feature like simple user attribution, in the callback, the app can set the user information in the underlying SharedMap against a key derived from the original key - say against "key.attribute". Or, it could use a separate SharedMap to store the user information against the same key.
It provides createdDirectoryWithInterception that accepts an IDirectory object, the data store context and a callback, and returns an IDirectory object:
function createDirectoryWithInterception<T extends IDirectory>(
baseDirectory: T,
context: IFluidDataStoreContext,
setInterceptionCallback: (
baseDirectory: IDirectory,
subDirectory: IDirectory,
key: string,
value: any,
) => void,
): T;
It can be used to wrap a SharedDirectory or one of it's subdirectories to get an interception callback when set is called on the object. The callback function is passed the following:
The original set operation and any operations in the callback function are batched, i.e., they are guaranteed to in order and will be applied together.
Example: To support a feature like simple user attribution, in the callback, the app can set the user information in a sub directory of the original object against the same key.
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.
FAQs
Distributed Data Structures that support an interception callback
We found that @fluid-experimental/dds-interceptions demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Export Socket alert data to your own cloud storage in JSON, CSV, or Parquet, with flexible snapshot or incremental delivery.

Research
/Security News
Bitwarden CLI 2026.4.0 was compromised in the Checkmarx supply chain campaign after attackers abused a GitHub Action in Bitwarden’s CI/CD pipeline.

Research
/Security News
Docker and Socket have uncovered malicious Checkmarx KICS images and suspicious code extension releases in a broader supply chain compromise.