🚀. Socket Launch Week Day 2:Introducing Manifest Alerts.Learn more
Sign In

@fluidframework/runtime-definitions

Package Overview
Dependencies
Maintainers
1
Versions
670
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fluidframework/runtime-definitions - npm Package Compare versions

Comparing version
2.93.0
to
2.100.0
+17
-4
api-report/runtime-definitions.legacy.alpha.api.md

@@ -24,4 +24,2 @@ ## Alpha API Report File for "@fluidframework/runtime-definitions"

export interface ContainerRuntimeBaseAlpha extends IContainerRuntimeBase {
enterStagingMode(): StageControlsAlpha;
readonly inStagingMode: boolean;
}

@@ -88,2 +86,3 @@

readonly disposed: boolean;
enterStagingMode(): StageControls;
generateDocumentUniqueId(): number | string;

@@ -98,2 +97,3 @@ getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;

}>;
readonly inStagingMode: boolean;
orderSequentially(callback: () => void): void;

@@ -114,2 +114,3 @@ submitSignal: (type: string, content: unknown, targetClientId?: string) => void;

(event: "dispose", listener: () => void): any;
(event: "stagingModeChanged", listener: (stagingModeInfo: StagingModeChangedEvent) => void): any;
}

@@ -428,4 +429,4 @@

// @alpha @sealed @legacy
export interface StageControlsAlpha {
// @beta @sealed @legacy
export interface StageControls {
readonly commitChanges: () => void;

@@ -435,2 +436,14 @@ readonly discardChanges: () => void;

// @alpha @sealed @deprecated @legacy
export interface StageControlsAlpha extends StageControls {
}
// @beta @legacy
export type StagingModeChangedEvent = {
readonly inStagingMode: true;
} | {
readonly inStagingMode: false;
readonly commit: boolean;
};
// @beta @legacy (undocumented)

@@ -437,0 +450,0 @@ export type SummarizeInternalFn = (fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext, incrementalSummaryContext?: IExperimentalIncrementalSummaryContext) => Promise<ISummarizeInternalResult>;

@@ -78,2 +78,3 @@ ## Beta API Report File for "@fluidframework/runtime-definitions"

readonly disposed: boolean;
enterStagingMode(): StageControls;
generateDocumentUniqueId(): number | string;

@@ -88,2 +89,3 @@ getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;

}>;
readonly inStagingMode: boolean;
orderSequentially(callback: () => void): void;

@@ -104,2 +106,3 @@ submitSignal: (type: string, content: unknown, targetClientId?: string) => void;

(event: "dispose", listener: () => void): any;
(event: "stagingModeChanged", listener: (stagingModeInfo: StagingModeChangedEvent) => void): any;
}

@@ -418,2 +421,16 @@

// @beta @sealed @legacy
export interface StageControls {
readonly commitChanges: () => void;
readonly discardChanges: () => void;
}
// @beta @legacy
export type StagingModeChangedEvent = {
readonly inStagingMode: true;
} | {
readonly inStagingMode: false;
readonly commit: boolean;
};
// @beta @legacy (undocumented)

@@ -420,0 +437,0 @@ export type SummarizeInternalFn = (fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext, incrementalSummaryContext?: IExperimentalIncrementalSummaryContext) => Promise<ISummarizeInternalResult>;

# @fluidframework/runtime-definitions
## 2.100.0
### Minor Changes
- Node 22 is now the minimum supported Node.js version ([#27116](https://github.com/microsoft/FluidFramework/pull/27116)) [e8214d29663](https://github.com/microsoft/FluidFramework/commit/e8214d29663f5ee98d737daed82506a25d8de8d0)
All Fluid Framework client packages now require Node.js 22 or later. This aligns with the standing Node upgrade policy as Node 20 reaches end-of-life on April 30, 2026.
## 2.93.0

@@ -4,0 +12,0 @@

@@ -92,2 +92,13 @@ /*!

(event: "dispose", listener: () => void): any;
/**
* Fires when the container runtime enters or exits staging mode.
* @param stagingModeInfo - An object describing the staging mode state.
* If `inStagingMode` is true, the runtime has entered staging mode.
* If false, it has exited staging mode, and `commit` indicates whether changes were committed or discarded.
*
* @remarks
* This event is not emitted when the container is disposed while in staging mode.
* If the container is disposed, staged changes are silently dropped.
*/
(event: "stagingModeChanged", listener: (stagingModeInfo: StagingModeChangedEvent) => void): any;
}

@@ -138,2 +149,30 @@ /**

/**
* Controls for managing staged changes in staging mode.
*
* Provides methods to either commit or discard changes made while in staging mode.
*
* @see {@link IContainerRuntimeBase.enterStagingMode}
*
* @legacy @beta
* @sealed
*/
export interface StageControls {
/**
* Exit staging mode and commit to any changes made while in staging mode.
* This will cause them to be sent to the ordering service, and subsequent changes
* made by this container will additionally flow freely to the ordering service.
*
* @remarks
* Squash-rebase semantics during commit are not yet fully specified.
*/
readonly commitChanges: () => void;
/**
* Exit staging mode and discard any changes made while in staging mode.
*
* @remarks
* DDS rollback support may be incomplete — this may throw for some DDS implementations.
*/
readonly discardChanges: () => void;
}
/**
* A reduced set of functionality of {@link @fluidframework/container-runtime-definitions#IContainerRuntime} that a data store context/data store runtime will need.

@@ -231,2 +270,21 @@ * @privateRemarks

}>;
/**
* Enter Staging Mode, such that ops submitted to the ContainerRuntime will not be sent to the ordering service.
* To exit Staging Mode, call either discardChanges or commitChanges on the Stage Controls returned from this method.
*
* @remarks
* Known limitations:
* - DDS rollback support may be incomplete — {@link StageControls.discardChanges} may throw for some DDS implementations.
* - Squash-rebase semantics during {@link StageControls.commitChanges} are not yet fully specified.
*
* @returns Controls for committing or discarding staged changes.
*/
enterStagingMode(): StageControls;
/**
* If true, the ContainerRuntime is not submitting any new ops to the ordering service.
* Ops submitted to the ContainerRuntime while in Staging Mode will be queued in the PendingStateManager,
* either to be discarded or committed later (via the Stage Controls returned from enterStagingMode).
* @see {@link IContainerRuntimeBase.enterStagingMode}
*/
readonly inStagingMode: boolean;
}

@@ -251,2 +309,6 @@ /**

* to prevent modifications that would leave the data store in an unresponsive state.
*
* This provides a best-effort readonly appearance, but no strict enforcement.
*
* @see {@link IContainerRuntimeBase.enterStagingMode}
*/

@@ -356,4 +418,19 @@ readonly readonlyInStagingMode: boolean;

/**
* Describes a staging mode transition on the container runtime.
* - `{ inStagingMode: true }` — the runtime has entered staging mode.
*
* - `{ inStagingMode: false, commit: boolean }` — the runtime has exited staging mode.
* `commit` is `true` when staged changes were committed (not discarded), or `false` when they were discarded.
*
* @legacy @beta
*/
export type StagingModeChangedEvent = {
readonly inStagingMode: true;
} | {
readonly inStagingMode: false;
readonly commit: boolean;
};
/**
* @legacy @beta
*/
export type CreateChildSummarizerNodeFn = (summarizeInternal: SummarizeInternalFn, getGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>,

@@ -360,0 +437,0 @@ /**

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"dataStoreContext.js","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkDH;;;GAGG;AACH,IAAY,SAcX;AAdD,WAAY,SAAS;IACpB;;;;;OAKG;IACH,mDAAS,CAAA;IAET;;;OAGG;IACH,mDAAS,CAAA;AACV,CAAC,EAdW,SAAS,yBAAT,SAAS,QAcpB;AAED;;;;GAIG;AACU,QAAA,eAAe,GAAG;IAC9B;;OAEG;IACH,UAAU,EAAE,YAAY;IAExB;;;;OAIG;IACH,cAAc,EAAE,gBAAgB;IAEhC;;;;;;;;OAQG;IACH,eAAe,EAAE,iBAAiB;CAClC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { AttachState, IAudience } from \"@fluidframework/container-definitions\";\nimport type { IDeltaManager } from \"@fluidframework/container-definitions/internal\";\nimport type {\n\tFluidObject,\n\tIDisposable,\n\tIEvent,\n\tIEventProvider,\n\tIFluidHandle,\n\tIRequest,\n\tIResponse,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type {\n\tIFluidHandleInternal,\n\tIProvideFluidHandleContext,\n} from \"@fluidframework/core-interfaces/internal\";\nimport type { IClientDetails, IQuorumClients } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentMessage,\n\tISnapshotTree,\n\tISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\n\nimport type { MinimumVersionForCollab } from \"./compatibilityDefinitions.js\";\nimport type { ContainerExtensionProvider } from \"./containerExtensionProvider.js\";\nimport type {\n\tIFluidDataStoreFactory,\n\tIProvideFluidDataStoreFactory,\n} from \"./dataStoreFactory.js\";\nimport type { IProvideFluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nimport type {\n\tIGarbageCollectionData,\n\tIGarbageCollectionDetailsBase,\n} from \"./garbageCollectionDefinitions.js\";\nimport type {\n\tIInboundSignalMessage,\n\tIRuntimeMessageCollection,\n\tIRuntimeStorageService,\n} from \"./protocol.js\";\nimport type {\n\tCreateChildSummarizerNodeParam,\n\tISummarizerNodeWithGC,\n\tISummaryTreeWithStats,\n\tITelemetryContext,\n\tSummarizeInternalFn,\n} from \"./summary.js\";\n\n/**\n * Runtime flush mode handling\n * @legacy @beta\n */\nexport enum FlushMode {\n\t/**\n\t * In Immediate flush mode the runtime will immediately send all operations to the driver layer.\n\t *\n\t * @deprecated This option will be removed in the next major version and should not be used. Use {@link FlushMode.TurnBased} instead, which is the default.\n\t * See https://github.com/microsoft/FluidFramework/tree/main/packages/runtime/container-runtime/src/opLifecycle#how-batching-works\n\t */\n\tImmediate,\n\n\t/**\n\t * When in TurnBased flush mode the runtime will buffer operations in the current turn and send them as a single\n\t * batch at the end of the turn. The flush call on the runtime can be used to force send the current batch.\n\t */\n\tTurnBased,\n}\n\n/**\n * This tells the visibility state of a Fluid object. It basically tracks whether the object is not visible, visible\n * locally within the container only or visible globally to all clients.\n * @legacy @beta\n */\nexport const VisibilityState = {\n\t/**\n\t * Indicates that the object is not visible. This is the state when an object is first created.\n\t */\n\tNotVisible: \"NotVisible\",\n\n\t/**\n\t * Indicates that the object is visible locally within the container. This is the state when an object is attached\n\t * to the container's graph but the container itself isn't globally visible. The object's state goes from not\n\t * visible to locally visible.\n\t */\n\tLocallyVisible: \"LocallyVisible\",\n\n\t/**\n\t * Indicates that the object is visible globally to all clients. This is the state of an object in 2 scenarios:\n\t *\n\t * 1. It is attached to the container's graph when the container is globally visible. The object's state goes from\n\t * not visible to globally visible.\n\t *\n\t * 2. When a container becomes globally visible, all locally visible objects go from locally visible to globally\n\t * visible.\n\t */\n\tGloballyVisible: \"GloballyVisible\",\n};\n/**\n * @legacy @beta\n */\nexport type VisibilityState = (typeof VisibilityState)[keyof typeof VisibilityState];\n\n/**\n * @legacy @beta\n * @sealed\n */\nexport interface IContainerRuntimeBaseEvents extends IEvent {\n\t/**\n\t * Indicates the beginning of an incoming batch of ops\n\t * @param op - The first op in the batch. Can be inspected to learn about the sequence numbers relevant for this batch.\n\t */\n\t(event: \"batchBegin\", listener: (op: Omit<ISequencedDocumentMessage, \"contents\">) => void);\n\t/**\n\t * Indicates the end of an incoming batch of ops\n\t * @param error - If an error occurred while processing the batch, it is provided here.\n\t * @param op - The last op in the batch. Can be inspected to learn about the sequence numbers relevant for this batch.\n\t */\n\t(\n\t\tevent: \"batchEnd\",\n\t\tlistener: (error: unknown, op: Omit<ISequencedDocumentMessage, \"contents\">) => void,\n\t);\n\t/**\n\t * Indicates that an incoming op has been processed.\n\t * @param runtimeMessage - tells if op is runtime op. If it is, it was unpacked, i.e. its type and content\n\t * represent internal container runtime type / content. i.e. A grouped batch of N ops will result in N \"op\" events\n\t */\n\t(event: \"op\", listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void);\n\t(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n\t(event: \"dispose\", listener: () => void);\n}\n\n/**\n * Encapsulates the return codes of the aliasing API.\n *\n * 'Success' - the datastore has been successfully aliased. It can now be used.\n *\n * 'Conflict' - there is already a datastore bound to the provided alias. To acquire it's entry point, use\n * the `IContainerRuntime.getAliasedDataStoreEntryPoint` function. The current datastore should be discarded\n * and will be garbage collected. The current datastore cannot be aliased to a different value.\n *\n * 'AlreadyAliased' - the datastore has already been previously bound to another alias name.\n * @legacy @beta\n */\nexport type AliasResult = \"Success\" | \"Conflict\" | \"AlreadyAliased\";\n\n/**\n * Exposes some functionality/features of a data store:\n *\n * - Handle to the data store's entryPoint\n *\n * - Fluid router for the data store\n *\n * - Can be assigned an alias\n *\n * @privateRemarks\n * TODO: These docs should define what a \"data store\" is, and not do so by just referencing \"data store\".\n *\n * @legacy @beta\n */\nexport interface IDataStore {\n\t/**\n\t * Attempt to assign an alias to the datastore.\n\t * If the operation succeeds, the datastore can be referenced\n\t * by the supplied alias and will not be garbage collected.\n\t *\n\t * @param alias - Given alias for this datastore.\n\t * @returns A promise with the {@link AliasResult}\n\t */\n\ttrySetAlias(alias: string): Promise<AliasResult>;\n\n\t/**\n\t * Exposes a handle to the root object / entryPoint of the data store. Use this as the primary way of interacting\n\t * with it.\n\t */\n\treadonly entryPoint: IFluidHandleInternal<FluidObject>;\n}\n\n/**\n * A reduced set of functionality of {@link @fluidframework/container-runtime-definitions#IContainerRuntime} that a data store context/data store runtime will need.\n * @privateRemarks\n * TODO: this should be merged into IFluidDataStoreContext\n * @legacy @beta\n * @sealed\n */\nexport interface IContainerRuntimeBase extends IEventProvider<IContainerRuntimeBaseEvents> {\n\treadonly baseLogger: ITelemetryBaseLogger;\n\treadonly clientDetails: IClientDetails;\n\treadonly disposed: boolean;\n\n\t/**\n\t * Invokes the given callback and guarantees that all operations generated within the callback will be ordered\n\t * sequentially.\n\t *\n\t * If the callback throws an error, the container will close and the error will be logged.\n\t *\n\t * @remarks\n\t * `orderSequentially` may enter staging mode for the duration of the function. This is necessary for rolling back certain op types.\n\t */\n\torderSequentially(callback: () => void): void;\n\n\t/**\n\t * Submits a container runtime level signal to be sent to other clients.\n\t * @param type - Type of the signal.\n\t * @param content - Content of the signal. Should be a JSON serializable object or primitive.\n\t * @param targetClientId - When specified, the signal is only sent to the provided client id.\n\t */\n\tsubmitSignal: (type: string, content: unknown, targetClientId?: string) => void;\n\n\t/**\n\t * Creates a data store and returns an object that exposes a handle to the data store's entryPoint, and also serves\n\t * as the data store's router. The data store is not bound to a container, and in such state is not persisted to\n\t * storage (file). Storing the entryPoint handle (or any other handle inside the data store, e.g. for DDS) into an\n\t * already attached DDS (or non-attached DDS that will eventually get attached to storage) will result in this\n\t * store being attached to storage.\n\t * @param pkg - Package name of the data store factory\n\t * @param loadingGroupId - This represents the group of the datastore within a container or its snapshot.\n\t * When not specified the datastore will belong to a `default` group. Read more about it in this\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}\n\t */\n\tcreateDataStore(pkg: string | PackagePath, loadingGroupId?: string): Promise<IDataStore>;\n\n\t/**\n\t * Creates detached data store context. Only after context.attachRuntime() is called,\n\t * data store initialization is considered complete.\n\t * @param pkg - Package name of the data store factory\n\t * @param loadingGroupId - This represents the group of the datastore within a container or its snapshot.\n\t * When not specified the datastore will belong to a `default` group. Read more about it in this\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}.\n\t */\n\tcreateDetachedDataStore(\n\t\tpkg: readonly string[],\n\t\tloadingGroupId?: string,\n\t): IFluidDataStoreContextDetached;\n\n\t/**\n\t * Returns the aliased data store's entryPoint, given the alias.\n\t * @param alias - The alias for the data store.\n\t * @returns The data store's entry point ({@link @fluidframework/core-interfaces#IFluidHandle}) if it exists and is aliased.\n\t * Returns undefined if no data store has been assigned the given alias.\n\t */\n\tgetAliasedDataStoreEntryPoint(alias: string): Promise<IFluidHandle<FluidObject> | undefined>;\n\n\t/**\n\t * Get an absolute url for a provided container-relative request.\n\t * Returns undefined if the container or data store isn't attached to storage.\n\t * @param relativeUrl - A relative request within the container\n\t */\n\tgetAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n\tuploadBlob(\n\t\tblob: ArrayBufferLike,\n\t\tsignal?: AbortSignal,\n\t): Promise<IFluidHandle<ArrayBufferLike>>;\n\n\t/**\n\t * Returns the current quorum.\n\t */\n\tgetQuorum(): IQuorumClients;\n\n\t/**\n\t * Returns the current audience.\n\t */\n\tgetAudience(): IAudience;\n\n\t/**\n\t * Generates a new ID that is guaranteed to be unique across all sessions for this container.\n\t * It could be in compact form (non-negative integer, opportunistic), but it could also be UUID string.\n\t * UUIDs generated will have low entropy in groups and will compress well.\n\t * It can be leveraged anywhere in container where container unique IDs are required, i.e. any place\n\t * that uses uuid() and stores result in container is likely candidate to start leveraging this API.\n\t * If you always want to convert to string, instead of doing String(generateDocumentUniqueId()), consider\n\t * doing encodeCompactIdToString(generateDocumentUniqueId()).\n\t *\n\t * @see {@link @fluidframework/id-compressor#IIdCompressor.generateDocumentUniqueId}\n\t */\n\tgenerateDocumentUniqueId(): number | string;\n\n\t/**\n\t * Api to fetch the snapshot from the service for a loadingGroupIds.\n\t * @param loadingGroupIds - LoadingGroupId for which the snapshot is asked for.\n\t * @param pathParts - Parts of the path, which we want to extract from the snapshot tree.\n\t * @returns snapshotTree and the sequence number of the snapshot.\n\t */\n\tgetSnapshotForLoadingGroupId(\n\t\tloadingGroupIds: string[],\n\t\tpathParts: string[],\n\t): Promise<{ snapshotTree: ISnapshotTree; sequenceNumber: number }>;\n}\n\n/**\n * These policies can be set by the author of the data store via its data store runtime to influence behaviors.\n *\n * @remarks\n * Policies allow data store authors to define specific behaviors or constraints for their data stores.\n * These settings can impact how the data store interacts with the runtime and other components.\n *\n * @legacy @beta\n */\nexport interface IFluidDataStorePolicies {\n\t/**\n\t * When set to true, the data store will appear readonly while in staging mode.\n\t *\n\t * @remarks\n\t * In staging mode, operations are held locally until committed, so consensus-based operations\n\t * (e.g., `ConsensusRegisterCollection`, `ConsensusQueue`, `TaskManager`) won't resolve their promises until\n\t * staging mode exits. Set this to `true` for data stores that depend on consensus acknowledgments\n\t * to prevent modifications that would leave the data store in an unresponsive state.\n\t */\n\treadonly readonlyInStagingMode: boolean;\n}\n\n/**\n * Minimal interface a data store runtime needs to provide for IFluidDataStoreContext to bind to control.\n *\n * Functionality include attach, snapshot, op/signal processing, request routes, expose an entryPoint,\n * and connection state notifications\n * @legacy @beta\n */\nexport interface IFluidDataStoreChannel extends IDisposable {\n\t/**\n\t * Optional policies that the data store channel may adhere to that the data store context should know about.\n\t * These policies influence the behavior of the data store, such as its readonly state in specific modes.\n\t */\n\treadonly policies?: IFluidDataStorePolicies;\n\n\t/**\n\t * Makes the data store channel visible in the container. Also, runs through its graph and attaches all\n\t * bound handles that represent its dependencies in the container's graph.\n\t */\n\tmakeVisibleAndAttachGraph(): void;\n\n\t/**\n\t * Synchronously retrieves the summary used as part of the initial summary message\n\t */\n\tgetAttachSummary(telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;\n\n\t/**\n\t * Synchronously retrieves GC Data (representing the outbound routes present) for the initial state of the DataStore\n\t */\n\tgetAttachGCData(telemetryContext?: ITelemetryContext): IGarbageCollectionData;\n\n\t/**\n\t * Process messages for this channel. The messages here are contiguous messages in a batch.\n\t * @param messageCollection - The collection of messages to process.\n\t */\n\tprocessMessages(messageCollection: IRuntimeMessageCollection): void;\n\n\t/**\n\t * Processes the signal.\n\t */\n\tprocessSignal(message: IInboundSignalMessage, local: boolean): void;\n\n\t/**\n\t * Generates a summary for the channel.\n\t * Introduced with summarizerNode - will be required in a future release.\n\t * @param fullTree - true to bypass optimizations and force a full summary tree.\n\t * @param trackState - This tells whether we should track state from this summary.\n\t * @param telemetryContext - summary data passed through the layers for telemetry purposes\n\t */\n\tsummarize(\n\t\tfullTree?: boolean,\n\t\ttrackState?: boolean,\n\t\ttelemetryContext?: ITelemetryContext,\n\t): Promise<ISummaryTreeWithStats>;\n\n\t/**\n\t * Returns the data used for garbage collection. This includes a list of GC nodes that represent this context\n\t * including any of its children. Each node has a list of outbound routes to other GC nodes in the document.\n\t * @param fullGC - true to bypass optimizations and force full generation of GC data.\n\t */\n\tgetGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;\n\n\t/**\n\t * After GC has run, called to notify this channel of routes that are used in it.\n\t * @param usedRoutes - The routes that are used in this channel.\n\t */\n\tupdateUsedRoutes(usedRoutes: string[]): void;\n\n\t/**\n\t * Notifies this object about changes in the connection state.\n\t * @param value - New connection state.\n\t * @param clientId - ID of the client. It's old ID when in disconnected state and\n\t * it's new client ID when we are connecting or connected.\n\t */\n\tsetConnectionState(connected: boolean, clientId?: string): void;\n\n\t/**\n\t * Notifies this object about changes in the readonly state\n\t */\n\tnotifyReadOnlyState?(readonly: boolean): void;\n\n\t/**\n\t * Ask the DDS to resubmit a message. This can happen for several reasons, such as:\n\t *\n\t * - We reconnected and discovered the original message was never acked.\n\t * - The original message was submitted from a reentrant state that is impossible for other clients to interpret correctly\n\t * - The original message was never sent on the wire and subsequent ops have been inbounded\n\t * @param type - The type of the original message.\n\t * @param content - The content of the original message.\n\t * @param localOpMetadata - The local metadata associated with the original message.\n\t * @param squash - If true, the DDS should avoid resubmitting any \"unnecessary intermediate state\" created by this message.\n\t * This includes any content which this message created but has since been changed or removed by subsequent messages.\n\t * For example, if this message (call it A) inserts content into a DDS that a subsequent op (call it B) removes,\n\t * resubmission of this message (call it A') should avoid inserting that content, and resubmission of the subsequent op that removed it (B') would\n\t * account for the fact that A' never inserted content.\n\t *\n\t * @privateRemarks\n\t * See remarks about squashing contract on `CommitStagedChangesOptionsExperimental`.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treSubmit(type: string, content: any, localOpMetadata: unknown, squash: boolean): void;\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\tapplyStashedOp(content: any): Promise<unknown>;\n\n\t/**\n\t * Revert a local message.\n\t * @param type - The type of the original message.\n\t * @param content - The content of the original message.\n\t * @param localOpMetadata - The local metadata associated with the original message.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\trollback?(type: string, content: any, localOpMetadata: unknown): void;\n\n\t/**\n\t * Exposes a handle to the root object / entryPoint of the component. Use this as the primary way of interacting\n\t * with the component.\n\t */\n\treadonly entryPoint: IFluidHandleInternal<FluidObject>;\n\n\trequest(request: IRequest): Promise<IResponse>;\n\n\tsetAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;\n}\n\n/**\n * @legacy @beta\n */\nexport type CreateChildSummarizerNodeFn = (\n\tsummarizeInternal: SummarizeInternalFn,\n\tgetGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>,\n\t/**\n\t * @deprecated The functionality to get base GC details has been moved to summarizer node.\n\t */\n\tgetBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>,\n) => ISummarizerNodeWithGC;\n\n/**\n * The state maintained for messages that are received when a channel isn't yet loaded.\n * @internal\n */\nexport interface IPendingMessagesState {\n\tmessageCollections: IRuntimeMessageCollection[];\n\tpendingCount: number;\n}\n\n/**\n * Context for an {@link IDataStore} like object.\n * @remarks\n * This context does NOT represent common information provided to all channels under a specific parent.\n * Each implementation of {@link IFluidDataStoreChannel} will receive its own instance of this context that contains specifically the data it needs.\n *\n * This layout is temporary, as {@link IFluidParentContext} and {@link IFluidDataStoreContext} will converge.\n * Therefore the semantics of these two interfaces is not really distinct.\n *\n * @privateRemarks\n * In addition to the use for datastores via IFluidDataStoreContext, this is\n * partially implemented by ContainerRuntime to provide context to the ChannelCollection.\n *\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidParentContext\n\textends IProvideFluidHandleContext,\n\t\tPartial<IProvideFluidDataStoreRegistry> {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treadonly options: Record<string | number, any>;\n\treadonly clientId: string | undefined;\n\treadonly connected: boolean;\n\t/**\n\t * Indicates if the parent context is readonly. If isReadOnly is true, the consumer of\n\t * the context should also consider themselves readonly.\n\t */\n\treadonly isReadOnly?: () => boolean;\n\t/**\n\t * Minimum version of the FF runtime that is required to collaborate on new documents.\n\t * Consumed by {@link @fluidframework/container-runtime#FluidDataStoreContext}.\n\t * See {@link @fluidframework/container-runtime#LoadContainerRuntimeParams.minVersionForCollab} for more details.\n\t */\n\treadonly minVersionForCollab: MinimumVersionForCollab;\n\treadonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;\n\treadonly storage: IRuntimeStorageService;\n\treadonly baseLogger: ITelemetryBaseLogger;\n\treadonly clientDetails: IClientDetails;\n\treadonly idCompressor?: IIdCompressor;\n\t/**\n\t * Represents the loading group to which the data store belongs to. Please refer to this readme for more context.\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}\n\t */\n\treadonly loadingGroupId?: string;\n\t/**\n\t * Indicates the attachment state of the data store to a host service.\n\t */\n\treadonly attachState: AttachState;\n\n\treadonly containerRuntime: IContainerRuntimeBase;\n\n\t/**\n\t * Ambient services provided with the context\n\t */\n\treadonly scope: FluidObject;\n\n\t/**\n\t * @deprecated this functionality has been removed.\n\t */\n\treadonly gcThrowOnTombstoneUsage: boolean;\n\t/**\n\t * @deprecated this functionality has been removed.\n\t */\n\treadonly gcTombstoneEnforcementAllowed: boolean;\n\n\t/**\n\t * Returns the current quorum.\n\t */\n\tgetQuorum(): IQuorumClients;\n\n\t/**\n\t * Returns the current audience.\n\t */\n\tgetAudience(): IAudience;\n\n\t/**\n\t * Submits the message to be sent to other clients.\n\t * @param type - Type of the message.\n\t * @param content - Content of the message.\n\t * @param localOpMetadata - The local metadata associated with the message. This is kept locally and not sent to\n\t * the server. This will be sent back when this message is received back from the server. This is also sent if\n\t * we are asked to resubmit the message.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\tsubmitMessage(type: string, content: any, localOpMetadata: unknown): void;\n\n\t/**\n\t * Submits the signal to be sent to other clients.\n\t * @param type - Type of the signal.\n\t * @param content - Content of the signal. Should be an {@link IEnvelope} with `contents` that is a JSON\n\t * serializable object or primitive.\n\t * @param targetClientId - When specified, the signal is only sent to the provided client id.\n\t */\n\tsubmitSignal: (type: string, content: unknown, targetClientId?: string) => void;\n\n\t/**\n\t * Called to make the data store locally visible in the container. This happens automatically for root data stores\n\t * when they are marked as root. For non-root data stores, this happens when their handle is added to a visible DDS.\n\t */\n\tmakeLocallyVisible(): void;\n\n\t/**\n\t * Get an absolute url to the container based on the provided relativeUrl.\n\t * Returns undefined if the container or data store isn't attached to storage.\n\t * @param relativeUrl - A relative request within the container\n\t */\n\tgetAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n\tgetCreateChildSummarizerNodeFn(\n\t\t/**\n\t\t * Initial id or path part of this node\n\t\t */\n\t\tid: string,\n\t\t/**\n\t\t * Information needed to create the node.\n\t\t * If it is from a base summary, it will assert that a summary has been seen.\n\t\t * Attach information if it is created from an attach op.\n\t\t * If it is local, it will throw unsupported errors on calls to summarize.\n\t\t */\n\t\tcreateParam: CreateChildSummarizerNodeParam,\n\t): CreateChildSummarizerNodeFn;\n\n\tdeleteChildSummarizerNode(id: string): void;\n\n\tuploadBlob(\n\t\tblob: ArrayBufferLike,\n\t\tsignal?: AbortSignal,\n\t): Promise<IFluidHandleInternal<ArrayBufferLike>>;\n\n\t/**\n\t * Called by IFluidDataStoreChannel, indicates that a channel is dirty and needs to be part of the summary.\n\t * @param address - The address of the channel that is dirty.\n\t */\n\tsetChannelDirty(address: string): void;\n\n\t/**\n\t * Called when a new outbound reference is added to another node. This is used by garbage collection to identify\n\t * all references added in the system.\n\t *\n\t * @param fromPath - The absolute path of the node that added the reference.\n\t * @param toPath - The absolute path of the outbound node that is referenced.\n\t * @param messageTimestampMs - The timestamp of the message that added the reference.\n\t */\n\taddedGCOutboundRoute(fromPath: string, toPath: string, messageTimestampMs?: number): void;\n}\n\n/**\n * A path which selects a {@link (IFluidDataStoreFactory:interface)} within a hierarchial registry.\n * @remarks\n * Each string in the array is the \"identifier\" to pick a specific {@link NamedFluidDataStoreRegistryEntry2} within a {@link NamedFluidDataStoreRegistryEntries}.\n *\n * Due to some usages joining this array with \"/\", it is recommended to avoid using \"/\" in the strings.\n * @legacy @beta\n */\nexport type PackagePath = readonly string[];\n\n/**\n * Extension to {@link IFluidParentContext} specifically for {@link IDataStore}s.\n *\n * @remarks\n * This context is provided to the implementation of {@link IFluidDataStoreChannel} which powers the datastore.\n *\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidDataStoreContext extends IFluidParentContext {\n\treadonly id: string;\n\t/**\n\t * A data store created by a client, is a local data store for that client. Also, when a detached container loads\n\t * from a snapshot, all the data stores are treated as local data stores because at that stage the container\n\t * still doesn't exists in storage and so the data store couldn't have been created by any other client.\n\t * Value of this never changes even after the data store is attached.\n\t * As implementer of data store runtime, you can use this property to check that this data store belongs to this\n\t * client and hence implement any scenario based on that.\n\t */\n\treadonly isLocalDataStore: boolean;\n\t/**\n\t * The {@link PackagePath} of the data store as per the package factory.\n\t * @remarks\n\t * This defines what {@link (IFluidDataStoreFactory:interface)} would be used to create the {@link IDataStore.entryPoint} of the {@link IDataStore}.\n\t */\n\treadonly packagePath: PackagePath;\n\treadonly baseSnapshot: ISnapshotTree | undefined;\n\n\t/**\n\t * @deprecated 0.16 Issue #1635, #3631\n\t */\n\t// Seems like this can be removed now; the issues mentioned in the @deprecated tag are about _createDataStoreWithProps\n\t// which we finally removed in FF 2.20 (https://github.com/microsoft/FluidFramework/pull/22996).\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treadonly createProps?: any;\n\n\t/**\n\t * @deprecated The functionality to get base GC details has been moved to summarizer node.\n\t *\n\t * Returns the GC details in the initial summary of this data store. This is used to initialize the data store\n\t * and its children with the GC details from the previous summary.\n\t */\n\tgetBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;\n\n\t/**\n\t * Synchronously creates a detached child data store.\n\t *\n\t * The `createChildDataStore` method allows for the synchronous creation of a detached child data store. This is particularly\n\t * useful in scenarios where immediate availability of the child data store is required, such as during the initialization\n\t * of a parent data store, or when creation is in response to synchronous user input.\n\t *\n\t * In order for this function to succeed:\n\t * 1. The parent data store's factory must also be an `IFluidDataStoreRegistry`.\n\t * 2. The parent data store's registry must include the same instance as the provided child factory.\n\t * 3. The parent data store's registry must synchronously provide the child factory via the `getSync` method.\n\t * 4. The child factory must implement the `createDataStore` method.\n\t *\n\t * These invariants ensure that the child data store can also be created by a remote client running the same code as this client.\n\t *\n\t * @param childFactory - The factory of the data store to be created.\n\t * @returns The created data store channel.\n\t */\n\tcreateChildDataStore?<T extends IFluidDataStoreFactory>(\n\t\tchildFactory: T,\n\t): ReturnType<Exclude<T[\"createDataStore\"], undefined>>;\n}\n\n/**\n * Internal extension to {@link IFluidDataStoreContext} for use across FluidFramework packages.\n *\n * @remarks\n * Important: this interface does cross layer boundaries and must follow `@legacy`\n * layer compatibility patterns.\n * This is meant to be a staging ground ahead of adding properties to {@link IFluidDataStoreContext}.\n *\n * @internal\n */\nexport interface FluidDataStoreContextInternal\n\textends IFluidDataStoreContext,\n\t\tContainerExtensionProvider {}\n\n/**\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidDataStoreContextDetached extends IFluidDataStoreContext {\n\t/**\n\t * Binds a runtime to the context.\n\t */\n\tattachRuntime(\n\t\tfactory: IProvideFluidDataStoreFactory,\n\t\tdataStoreRuntime: IFluidDataStoreChannel,\n\t): Promise<IDataStore>;\n}\n"]}
{"version":3,"file":"dataStoreContext.js","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkDH;;;GAGG;AACH,IAAY,SAcX;AAdD,WAAY,SAAS;IACpB;;;;;OAKG;IACH,mDAAS,CAAA;IAET;;;OAGG;IACH,mDAAS,CAAA;AACV,CAAC,EAdW,SAAS,yBAAT,SAAS,QAcpB;AAED;;;;GAIG;AACU,QAAA,eAAe,GAAG;IAC9B;;OAEG;IACH,UAAU,EAAE,YAAY;IAExB;;;;OAIG;IACH,cAAc,EAAE,gBAAgB;IAEhC;;;;;;;;OAQG;IACH,eAAe,EAAE,iBAAiB;CAClC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { AttachState, IAudience } from \"@fluidframework/container-definitions\";\nimport type { IDeltaManager } from \"@fluidframework/container-definitions/internal\";\nimport type {\n\tFluidObject,\n\tIDisposable,\n\tIEvent,\n\tIEventProvider,\n\tIFluidHandle,\n\tIRequest,\n\tIResponse,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type {\n\tIFluidHandleInternal,\n\tIProvideFluidHandleContext,\n} from \"@fluidframework/core-interfaces/internal\";\nimport type { IClientDetails, IQuorumClients } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentMessage,\n\tISnapshotTree,\n\tISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\n\nimport type { MinimumVersionForCollab } from \"./compatibilityDefinitions.js\";\nimport type { ContainerExtensionProvider } from \"./containerExtensionProvider.js\";\nimport type {\n\tIFluidDataStoreFactory,\n\tIProvideFluidDataStoreFactory,\n} from \"./dataStoreFactory.js\";\nimport type { IProvideFluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nimport type {\n\tIGarbageCollectionData,\n\tIGarbageCollectionDetailsBase,\n} from \"./garbageCollectionDefinitions.js\";\nimport type {\n\tIInboundSignalMessage,\n\tIRuntimeMessageCollection,\n\tIRuntimeStorageService,\n} from \"./protocol.js\";\nimport type {\n\tCreateChildSummarizerNodeParam,\n\tISummarizerNodeWithGC,\n\tISummaryTreeWithStats,\n\tITelemetryContext,\n\tSummarizeInternalFn,\n} from \"./summary.js\";\n\n/**\n * Runtime flush mode handling\n * @legacy @beta\n */\nexport enum FlushMode {\n\t/**\n\t * In Immediate flush mode the runtime will immediately send all operations to the driver layer.\n\t *\n\t * @deprecated This option will be removed in the next major version and should not be used. Use {@link FlushMode.TurnBased} instead, which is the default.\n\t * See https://github.com/microsoft/FluidFramework/tree/main/packages/runtime/container-runtime/src/opLifecycle#how-batching-works\n\t */\n\tImmediate,\n\n\t/**\n\t * When in TurnBased flush mode the runtime will buffer operations in the current turn and send them as a single\n\t * batch at the end of the turn. The flush call on the runtime can be used to force send the current batch.\n\t */\n\tTurnBased,\n}\n\n/**\n * This tells the visibility state of a Fluid object. It basically tracks whether the object is not visible, visible\n * locally within the container only or visible globally to all clients.\n * @legacy @beta\n */\nexport const VisibilityState = {\n\t/**\n\t * Indicates that the object is not visible. This is the state when an object is first created.\n\t */\n\tNotVisible: \"NotVisible\",\n\n\t/**\n\t * Indicates that the object is visible locally within the container. This is the state when an object is attached\n\t * to the container's graph but the container itself isn't globally visible. The object's state goes from not\n\t * visible to locally visible.\n\t */\n\tLocallyVisible: \"LocallyVisible\",\n\n\t/**\n\t * Indicates that the object is visible globally to all clients. This is the state of an object in 2 scenarios:\n\t *\n\t * 1. It is attached to the container's graph when the container is globally visible. The object's state goes from\n\t * not visible to globally visible.\n\t *\n\t * 2. When a container becomes globally visible, all locally visible objects go from locally visible to globally\n\t * visible.\n\t */\n\tGloballyVisible: \"GloballyVisible\",\n};\n/**\n * @legacy @beta\n */\nexport type VisibilityState = (typeof VisibilityState)[keyof typeof VisibilityState];\n\n/**\n * @legacy @beta\n * @sealed\n */\nexport interface IContainerRuntimeBaseEvents extends IEvent {\n\t/**\n\t * Indicates the beginning of an incoming batch of ops\n\t * @param op - The first op in the batch. Can be inspected to learn about the sequence numbers relevant for this batch.\n\t */\n\t(event: \"batchBegin\", listener: (op: Omit<ISequencedDocumentMessage, \"contents\">) => void);\n\t/**\n\t * Indicates the end of an incoming batch of ops\n\t * @param error - If an error occurred while processing the batch, it is provided here.\n\t * @param op - The last op in the batch. Can be inspected to learn about the sequence numbers relevant for this batch.\n\t */\n\t(\n\t\tevent: \"batchEnd\",\n\t\tlistener: (error: unknown, op: Omit<ISequencedDocumentMessage, \"contents\">) => void,\n\t);\n\t/**\n\t * Indicates that an incoming op has been processed.\n\t * @param runtimeMessage - tells if op is runtime op. If it is, it was unpacked, i.e. its type and content\n\t * represent internal container runtime type / content. i.e. A grouped batch of N ops will result in N \"op\" events\n\t */\n\t(event: \"op\", listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void);\n\t(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n\t(event: \"dispose\", listener: () => void);\n\t/**\n\t * Fires when the container runtime enters or exits staging mode.\n\t * @param stagingModeInfo - An object describing the staging mode state.\n\t * If `inStagingMode` is true, the runtime has entered staging mode.\n\t * If false, it has exited staging mode, and `commit` indicates whether changes were committed or discarded.\n\t *\n\t * @remarks\n\t * This event is not emitted when the container is disposed while in staging mode.\n\t * If the container is disposed, staged changes are silently dropped.\n\t */\n\t(event: \"stagingModeChanged\", listener: (stagingModeInfo: StagingModeChangedEvent) => void);\n}\n\n/**\n * Encapsulates the return codes of the aliasing API.\n *\n * 'Success' - the datastore has been successfully aliased. It can now be used.\n *\n * 'Conflict' - there is already a datastore bound to the provided alias. To acquire it's entry point, use\n * the `IContainerRuntime.getAliasedDataStoreEntryPoint` function. The current datastore should be discarded\n * and will be garbage collected. The current datastore cannot be aliased to a different value.\n *\n * 'AlreadyAliased' - the datastore has already been previously bound to another alias name.\n * @legacy @beta\n */\nexport type AliasResult = \"Success\" | \"Conflict\" | \"AlreadyAliased\";\n\n/**\n * Exposes some functionality/features of a data store:\n *\n * - Handle to the data store's entryPoint\n *\n * - Fluid router for the data store\n *\n * - Can be assigned an alias\n *\n * @privateRemarks\n * TODO: These docs should define what a \"data store\" is, and not do so by just referencing \"data store\".\n *\n * @legacy @beta\n */\nexport interface IDataStore {\n\t/**\n\t * Attempt to assign an alias to the datastore.\n\t * If the operation succeeds, the datastore can be referenced\n\t * by the supplied alias and will not be garbage collected.\n\t *\n\t * @param alias - Given alias for this datastore.\n\t * @returns A promise with the {@link AliasResult}\n\t */\n\ttrySetAlias(alias: string): Promise<AliasResult>;\n\n\t/**\n\t * Exposes a handle to the root object / entryPoint of the data store. Use this as the primary way of interacting\n\t * with it.\n\t */\n\treadonly entryPoint: IFluidHandleInternal<FluidObject>;\n}\n\n/**\n * Controls for managing staged changes in staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n *\n * @see {@link IContainerRuntimeBase.enterStagingMode}\n *\n * @legacy @beta\n * @sealed\n */\nexport interface StageControls {\n\t/**\n\t * Exit staging mode and commit to any changes made while in staging mode.\n\t * This will cause them to be sent to the ordering service, and subsequent changes\n\t * made by this container will additionally flow freely to the ordering service.\n\t *\n\t * @remarks\n\t * Squash-rebase semantics during commit are not yet fully specified.\n\t */\n\treadonly commitChanges: () => void;\n\t/**\n\t * Exit staging mode and discard any changes made while in staging mode.\n\t *\n\t * @remarks\n\t * DDS rollback support may be incomplete — this may throw for some DDS implementations.\n\t */\n\treadonly discardChanges: () => void;\n}\n\n/**\n * A reduced set of functionality of {@link @fluidframework/container-runtime-definitions#IContainerRuntime} that a data store context/data store runtime will need.\n * @privateRemarks\n * TODO: this should be merged into IFluidDataStoreContext\n * @legacy @beta\n * @sealed\n */\nexport interface IContainerRuntimeBase extends IEventProvider<IContainerRuntimeBaseEvents> {\n\treadonly baseLogger: ITelemetryBaseLogger;\n\treadonly clientDetails: IClientDetails;\n\treadonly disposed: boolean;\n\n\t/**\n\t * Invokes the given callback and guarantees that all operations generated within the callback will be ordered\n\t * sequentially.\n\t *\n\t * If the callback throws an error, the container will close and the error will be logged.\n\t *\n\t * @remarks\n\t * `orderSequentially` may enter staging mode for the duration of the function. This is necessary for rolling back certain op types.\n\t */\n\torderSequentially(callback: () => void): void;\n\n\t/**\n\t * Submits a container runtime level signal to be sent to other clients.\n\t * @param type - Type of the signal.\n\t * @param content - Content of the signal. Should be a JSON serializable object or primitive.\n\t * @param targetClientId - When specified, the signal is only sent to the provided client id.\n\t */\n\tsubmitSignal: (type: string, content: unknown, targetClientId?: string) => void;\n\n\t/**\n\t * Creates a data store and returns an object that exposes a handle to the data store's entryPoint, and also serves\n\t * as the data store's router. The data store is not bound to a container, and in such state is not persisted to\n\t * storage (file). Storing the entryPoint handle (or any other handle inside the data store, e.g. for DDS) into an\n\t * already attached DDS (or non-attached DDS that will eventually get attached to storage) will result in this\n\t * store being attached to storage.\n\t * @param pkg - Package name of the data store factory\n\t * @param loadingGroupId - This represents the group of the datastore within a container or its snapshot.\n\t * When not specified the datastore will belong to a `default` group. Read more about it in this\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}\n\t */\n\tcreateDataStore(pkg: string | PackagePath, loadingGroupId?: string): Promise<IDataStore>;\n\n\t/**\n\t * Creates detached data store context. Only after context.attachRuntime() is called,\n\t * data store initialization is considered complete.\n\t * @param pkg - Package name of the data store factory\n\t * @param loadingGroupId - This represents the group of the datastore within a container or its snapshot.\n\t * When not specified the datastore will belong to a `default` group. Read more about it in this\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}.\n\t */\n\tcreateDetachedDataStore(\n\t\tpkg: readonly string[],\n\t\tloadingGroupId?: string,\n\t): IFluidDataStoreContextDetached;\n\n\t/**\n\t * Returns the aliased data store's entryPoint, given the alias.\n\t * @param alias - The alias for the data store.\n\t * @returns The data store's entry point ({@link @fluidframework/core-interfaces#IFluidHandle}) if it exists and is aliased.\n\t * Returns undefined if no data store has been assigned the given alias.\n\t */\n\tgetAliasedDataStoreEntryPoint(alias: string): Promise<IFluidHandle<FluidObject> | undefined>;\n\n\t/**\n\t * Get an absolute url for a provided container-relative request.\n\t * Returns undefined if the container or data store isn't attached to storage.\n\t * @param relativeUrl - A relative request within the container\n\t */\n\tgetAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n\tuploadBlob(\n\t\tblob: ArrayBufferLike,\n\t\tsignal?: AbortSignal,\n\t): Promise<IFluidHandle<ArrayBufferLike>>;\n\n\t/**\n\t * Returns the current quorum.\n\t */\n\tgetQuorum(): IQuorumClients;\n\n\t/**\n\t * Returns the current audience.\n\t */\n\tgetAudience(): IAudience;\n\n\t/**\n\t * Generates a new ID that is guaranteed to be unique across all sessions for this container.\n\t * It could be in compact form (non-negative integer, opportunistic), but it could also be UUID string.\n\t * UUIDs generated will have low entropy in groups and will compress well.\n\t * It can be leveraged anywhere in container where container unique IDs are required, i.e. any place\n\t * that uses uuid() and stores result in container is likely candidate to start leveraging this API.\n\t * If you always want to convert to string, instead of doing String(generateDocumentUniqueId()), consider\n\t * doing encodeCompactIdToString(generateDocumentUniqueId()).\n\t *\n\t * @see {@link @fluidframework/id-compressor#IIdCompressor.generateDocumentUniqueId}\n\t */\n\tgenerateDocumentUniqueId(): number | string;\n\n\t/**\n\t * Api to fetch the snapshot from the service for a loadingGroupIds.\n\t * @param loadingGroupIds - LoadingGroupId for which the snapshot is asked for.\n\t * @param pathParts - Parts of the path, which we want to extract from the snapshot tree.\n\t * @returns snapshotTree and the sequence number of the snapshot.\n\t */\n\tgetSnapshotForLoadingGroupId(\n\t\tloadingGroupIds: string[],\n\t\tpathParts: string[],\n\t): Promise<{ snapshotTree: ISnapshotTree; sequenceNumber: number }>;\n\n\t/**\n\t * Enter Staging Mode, such that ops submitted to the ContainerRuntime will not be sent to the ordering service.\n\t * To exit Staging Mode, call either discardChanges or commitChanges on the Stage Controls returned from this method.\n\t *\n\t * @remarks\n\t * Known limitations:\n\t * - DDS rollback support may be incomplete — {@link StageControls.discardChanges} may throw for some DDS implementations.\n\t * - Squash-rebase semantics during {@link StageControls.commitChanges} are not yet fully specified.\n\t *\n\t * @returns Controls for committing or discarding staged changes.\n\t */\n\tenterStagingMode(): StageControls;\n\n\t/**\n\t * If true, the ContainerRuntime is not submitting any new ops to the ordering service.\n\t * Ops submitted to the ContainerRuntime while in Staging Mode will be queued in the PendingStateManager,\n\t * either to be discarded or committed later (via the Stage Controls returned from enterStagingMode).\n\t * @see {@link IContainerRuntimeBase.enterStagingMode}\n\t */\n\treadonly inStagingMode: boolean;\n}\n\n/**\n * These policies can be set by the author of the data store via its data store runtime to influence behaviors.\n *\n * @remarks\n * Policies allow data store authors to define specific behaviors or constraints for their data stores.\n * These settings can impact how the data store interacts with the runtime and other components.\n *\n * @legacy @beta\n */\nexport interface IFluidDataStorePolicies {\n\t/**\n\t * When set to true, the data store will appear readonly while in staging mode.\n\t *\n\t * @remarks\n\t * In staging mode, operations are held locally until committed, so consensus-based operations\n\t * (e.g., `ConsensusRegisterCollection`, `ConsensusQueue`, `TaskManager`) won't resolve their promises until\n\t * staging mode exits. Set this to `true` for data stores that depend on consensus acknowledgments\n\t * to prevent modifications that would leave the data store in an unresponsive state.\n\t *\n\t * This provides a best-effort readonly appearance, but no strict enforcement.\n\t *\n\t * @see {@link IContainerRuntimeBase.enterStagingMode}\n\t */\n\treadonly readonlyInStagingMode: boolean;\n}\n\n/**\n * Minimal interface a data store runtime needs to provide for IFluidDataStoreContext to bind to control.\n *\n * Functionality include attach, snapshot, op/signal processing, request routes, expose an entryPoint,\n * and connection state notifications\n * @legacy @beta\n */\nexport interface IFluidDataStoreChannel extends IDisposable {\n\t/**\n\t * Optional policies that the data store channel may adhere to that the data store context should know about.\n\t * These policies influence the behavior of the data store, such as its readonly state in specific modes.\n\t */\n\treadonly policies?: IFluidDataStorePolicies;\n\n\t/**\n\t * Makes the data store channel visible in the container. Also, runs through its graph and attaches all\n\t * bound handles that represent its dependencies in the container's graph.\n\t */\n\tmakeVisibleAndAttachGraph(): void;\n\n\t/**\n\t * Synchronously retrieves the summary used as part of the initial summary message\n\t */\n\tgetAttachSummary(telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;\n\n\t/**\n\t * Synchronously retrieves GC Data (representing the outbound routes present) for the initial state of the DataStore\n\t */\n\tgetAttachGCData(telemetryContext?: ITelemetryContext): IGarbageCollectionData;\n\n\t/**\n\t * Process messages for this channel. The messages here are contiguous messages in a batch.\n\t * @param messageCollection - The collection of messages to process.\n\t */\n\tprocessMessages(messageCollection: IRuntimeMessageCollection): void;\n\n\t/**\n\t * Processes the signal.\n\t */\n\tprocessSignal(message: IInboundSignalMessage, local: boolean): void;\n\n\t/**\n\t * Generates a summary for the channel.\n\t * Introduced with summarizerNode - will be required in a future release.\n\t * @param fullTree - true to bypass optimizations and force a full summary tree.\n\t * @param trackState - This tells whether we should track state from this summary.\n\t * @param telemetryContext - summary data passed through the layers for telemetry purposes\n\t */\n\tsummarize(\n\t\tfullTree?: boolean,\n\t\ttrackState?: boolean,\n\t\ttelemetryContext?: ITelemetryContext,\n\t): Promise<ISummaryTreeWithStats>;\n\n\t/**\n\t * Returns the data used for garbage collection. This includes a list of GC nodes that represent this context\n\t * including any of its children. Each node has a list of outbound routes to other GC nodes in the document.\n\t * @param fullGC - true to bypass optimizations and force full generation of GC data.\n\t */\n\tgetGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;\n\n\t/**\n\t * After GC has run, called to notify this channel of routes that are used in it.\n\t * @param usedRoutes - The routes that are used in this channel.\n\t */\n\tupdateUsedRoutes(usedRoutes: string[]): void;\n\n\t/**\n\t * Notifies this object about changes in the connection state.\n\t * @param value - New connection state.\n\t * @param clientId - ID of the client. It's old ID when in disconnected state and\n\t * it's new client ID when we are connecting or connected.\n\t */\n\tsetConnectionState(connected: boolean, clientId?: string): void;\n\n\t/**\n\t * Notifies this object about changes in the readonly state\n\t */\n\tnotifyReadOnlyState?(readonly: boolean): void;\n\n\t/**\n\t * Ask the DDS to resubmit a message. This can happen for several reasons, such as:\n\t *\n\t * - We reconnected and discovered the original message was never acked.\n\t * - The original message was submitted from a reentrant state that is impossible for other clients to interpret correctly\n\t * - The original message was never sent on the wire and subsequent ops have been inbounded\n\t * @param type - The type of the original message.\n\t * @param content - The content of the original message.\n\t * @param localOpMetadata - The local metadata associated with the original message.\n\t * @param squash - If true, the DDS should avoid resubmitting any \"unnecessary intermediate state\" created by this message.\n\t * This includes any content which this message created but has since been changed or removed by subsequent messages.\n\t * For example, if this message (call it A) inserts content into a DDS that a subsequent op (call it B) removes,\n\t * resubmission of this message (call it A') should avoid inserting that content, and resubmission of the subsequent op that removed it (B') would\n\t * account for the fact that A' never inserted content.\n\t *\n\t * @privateRemarks\n\t * See remarks about squashing contract on `CommitStagedChangesOptionsExperimental`.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treSubmit(type: string, content: any, localOpMetadata: unknown, squash: boolean): void;\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\tapplyStashedOp(content: any): Promise<unknown>;\n\n\t/**\n\t * Revert a local message.\n\t * @param type - The type of the original message.\n\t * @param content - The content of the original message.\n\t * @param localOpMetadata - The local metadata associated with the original message.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\trollback?(type: string, content: any, localOpMetadata: unknown): void;\n\n\t/**\n\t * Exposes a handle to the root object / entryPoint of the component. Use this as the primary way of interacting\n\t * with the component.\n\t */\n\treadonly entryPoint: IFluidHandleInternal<FluidObject>;\n\n\trequest(request: IRequest): Promise<IResponse>;\n\n\tsetAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;\n}\n\n/**\n * Describes a staging mode transition on the container runtime.\n * - `{ inStagingMode: true }` — the runtime has entered staging mode.\n *\n * - `{ inStagingMode: false, commit: boolean }` — the runtime has exited staging mode.\n * `commit` is `true` when staged changes were committed (not discarded), or `false` when they were discarded.\n *\n * @legacy @beta\n */\nexport type StagingModeChangedEvent =\n\t| { readonly inStagingMode: true }\n\t| { readonly inStagingMode: false; readonly commit: boolean };\n\n/**\n * @legacy @beta\n */\nexport type CreateChildSummarizerNodeFn = (\n\tsummarizeInternal: SummarizeInternalFn,\n\tgetGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>,\n\t/**\n\t * @deprecated The functionality to get base GC details has been moved to summarizer node.\n\t */\n\tgetBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>,\n) => ISummarizerNodeWithGC;\n\n/**\n * The state maintained for messages that are received when a channel isn't yet loaded.\n * @internal\n */\nexport interface IPendingMessagesState {\n\tmessageCollections: IRuntimeMessageCollection[];\n\tpendingCount: number;\n}\n\n/**\n * Context for an {@link IDataStore} like object.\n * @remarks\n * This context does NOT represent common information provided to all channels under a specific parent.\n * Each implementation of {@link IFluidDataStoreChannel} will receive its own instance of this context that contains specifically the data it needs.\n *\n * This layout is temporary, as {@link IFluidParentContext} and {@link IFluidDataStoreContext} will converge.\n * Therefore the semantics of these two interfaces is not really distinct.\n *\n * @privateRemarks\n * In addition to the use for datastores via IFluidDataStoreContext, this is\n * partially implemented by ContainerRuntime to provide context to the ChannelCollection.\n *\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidParentContext\n\textends IProvideFluidHandleContext,\n\t\tPartial<IProvideFluidDataStoreRegistry> {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treadonly options: Record<string | number, any>;\n\treadonly clientId: string | undefined;\n\treadonly connected: boolean;\n\t/**\n\t * Indicates if the parent context is readonly. If isReadOnly is true, the consumer of\n\t * the context should also consider themselves readonly.\n\t */\n\treadonly isReadOnly?: () => boolean;\n\t/**\n\t * Minimum version of the FF runtime that is required to collaborate on new documents.\n\t * Consumed by {@link @fluidframework/container-runtime#FluidDataStoreContext}.\n\t * See {@link @fluidframework/container-runtime#LoadContainerRuntimeParams.minVersionForCollab} for more details.\n\t */\n\treadonly minVersionForCollab: MinimumVersionForCollab;\n\treadonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;\n\treadonly storage: IRuntimeStorageService;\n\treadonly baseLogger: ITelemetryBaseLogger;\n\treadonly clientDetails: IClientDetails;\n\treadonly idCompressor?: IIdCompressor;\n\t/**\n\t * Represents the loading group to which the data store belongs to. Please refer to this readme for more context.\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}\n\t */\n\treadonly loadingGroupId?: string;\n\t/**\n\t * Indicates the attachment state of the data store to a host service.\n\t */\n\treadonly attachState: AttachState;\n\n\treadonly containerRuntime: IContainerRuntimeBase;\n\n\t/**\n\t * Ambient services provided with the context\n\t */\n\treadonly scope: FluidObject;\n\n\t/**\n\t * @deprecated this functionality has been removed.\n\t */\n\treadonly gcThrowOnTombstoneUsage: boolean;\n\t/**\n\t * @deprecated this functionality has been removed.\n\t */\n\treadonly gcTombstoneEnforcementAllowed: boolean;\n\n\t/**\n\t * Returns the current quorum.\n\t */\n\tgetQuorum(): IQuorumClients;\n\n\t/**\n\t * Returns the current audience.\n\t */\n\tgetAudience(): IAudience;\n\n\t/**\n\t * Submits the message to be sent to other clients.\n\t * @param type - Type of the message.\n\t * @param content - Content of the message.\n\t * @param localOpMetadata - The local metadata associated with the message. This is kept locally and not sent to\n\t * the server. This will be sent back when this message is received back from the server. This is also sent if\n\t * we are asked to resubmit the message.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\tsubmitMessage(type: string, content: any, localOpMetadata: unknown): void;\n\n\t/**\n\t * Submits the signal to be sent to other clients.\n\t * @param type - Type of the signal.\n\t * @param content - Content of the signal. Should be an {@link IEnvelope} with `contents` that is a JSON\n\t * serializable object or primitive.\n\t * @param targetClientId - When specified, the signal is only sent to the provided client id.\n\t */\n\tsubmitSignal: (type: string, content: unknown, targetClientId?: string) => void;\n\n\t/**\n\t * Called to make the data store locally visible in the container. This happens automatically for root data stores\n\t * when they are marked as root. For non-root data stores, this happens when their handle is added to a visible DDS.\n\t */\n\tmakeLocallyVisible(): void;\n\n\t/**\n\t * Get an absolute url to the container based on the provided relativeUrl.\n\t * Returns undefined if the container or data store isn't attached to storage.\n\t * @param relativeUrl - A relative request within the container\n\t */\n\tgetAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n\tgetCreateChildSummarizerNodeFn(\n\t\t/**\n\t\t * Initial id or path part of this node\n\t\t */\n\t\tid: string,\n\t\t/**\n\t\t * Information needed to create the node.\n\t\t * If it is from a base summary, it will assert that a summary has been seen.\n\t\t * Attach information if it is created from an attach op.\n\t\t * If it is local, it will throw unsupported errors on calls to summarize.\n\t\t */\n\t\tcreateParam: CreateChildSummarizerNodeParam,\n\t): CreateChildSummarizerNodeFn;\n\n\tdeleteChildSummarizerNode(id: string): void;\n\n\tuploadBlob(\n\t\tblob: ArrayBufferLike,\n\t\tsignal?: AbortSignal,\n\t): Promise<IFluidHandleInternal<ArrayBufferLike>>;\n\n\t/**\n\t * Called by IFluidDataStoreChannel, indicates that a channel is dirty and needs to be part of the summary.\n\t * @param address - The address of the channel that is dirty.\n\t */\n\tsetChannelDirty(address: string): void;\n\n\t/**\n\t * Called when a new outbound reference is added to another node. This is used by garbage collection to identify\n\t * all references added in the system.\n\t *\n\t * @param fromPath - The absolute path of the node that added the reference.\n\t * @param toPath - The absolute path of the outbound node that is referenced.\n\t * @param messageTimestampMs - The timestamp of the message that added the reference.\n\t */\n\taddedGCOutboundRoute(fromPath: string, toPath: string, messageTimestampMs?: number): void;\n}\n\n/**\n * A path which selects a {@link (IFluidDataStoreFactory:interface)} within a hierarchial registry.\n * @remarks\n * Each string in the array is the \"identifier\" to pick a specific {@link NamedFluidDataStoreRegistryEntry2} within a {@link NamedFluidDataStoreRegistryEntries}.\n *\n * Due to some usages joining this array with \"/\", it is recommended to avoid using \"/\" in the strings.\n * @legacy @beta\n */\nexport type PackagePath = readonly string[];\n\n/**\n * Extension to {@link IFluidParentContext} specifically for {@link IDataStore}s.\n *\n * @remarks\n * This context is provided to the implementation of {@link IFluidDataStoreChannel} which powers the datastore.\n *\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidDataStoreContext extends IFluidParentContext {\n\treadonly id: string;\n\t/**\n\t * A data store created by a client, is a local data store for that client. Also, when a detached container loads\n\t * from a snapshot, all the data stores are treated as local data stores because at that stage the container\n\t * still doesn't exists in storage and so the data store couldn't have been created by any other client.\n\t * Value of this never changes even after the data store is attached.\n\t * As implementer of data store runtime, you can use this property to check that this data store belongs to this\n\t * client and hence implement any scenario based on that.\n\t */\n\treadonly isLocalDataStore: boolean;\n\t/**\n\t * The {@link PackagePath} of the data store as per the package factory.\n\t * @remarks\n\t * This defines what {@link (IFluidDataStoreFactory:interface)} would be used to create the {@link IDataStore.entryPoint} of the {@link IDataStore}.\n\t */\n\treadonly packagePath: PackagePath;\n\treadonly baseSnapshot: ISnapshotTree | undefined;\n\n\t/**\n\t * @deprecated 0.16 Issue #1635, #3631\n\t */\n\t// Seems like this can be removed now; the issues mentioned in the @deprecated tag are about _createDataStoreWithProps\n\t// which we finally removed in FF 2.20 (https://github.com/microsoft/FluidFramework/pull/22996).\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treadonly createProps?: any;\n\n\t/**\n\t * @deprecated The functionality to get base GC details has been moved to summarizer node.\n\t *\n\t * Returns the GC details in the initial summary of this data store. This is used to initialize the data store\n\t * and its children with the GC details from the previous summary.\n\t */\n\tgetBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;\n\n\t/**\n\t * Synchronously creates a detached child data store.\n\t *\n\t * The `createChildDataStore` method allows for the synchronous creation of a detached child data store. This is particularly\n\t * useful in scenarios where immediate availability of the child data store is required, such as during the initialization\n\t * of a parent data store, or when creation is in response to synchronous user input.\n\t *\n\t * In order for this function to succeed:\n\t * 1. The parent data store's factory must also be an `IFluidDataStoreRegistry`.\n\t * 2. The parent data store's registry must include the same instance as the provided child factory.\n\t * 3. The parent data store's registry must synchronously provide the child factory via the `getSync` method.\n\t * 4. The child factory must implement the `createDataStore` method.\n\t *\n\t * These invariants ensure that the child data store can also be created by a remote client running the same code as this client.\n\t *\n\t * @param childFactory - The factory of the data store to be created.\n\t * @returns The created data store channel.\n\t */\n\tcreateChildDataStore?<T extends IFluidDataStoreFactory>(\n\t\tchildFactory: T,\n\t): ReturnType<Exclude<T[\"createDataStore\"], undefined>>;\n}\n\n/**\n * Internal extension to {@link IFluidDataStoreContext} for use across FluidFramework packages.\n *\n * @remarks\n * Important: this interface does cross layer boundaries and must follow `@legacy`\n * layer compatibility patterns.\n * This is meant to be a staging ground ahead of adding properties to {@link IFluidDataStoreContext}.\n *\n * @internal\n */\nexport interface FluidDataStoreContextInternal\n\textends IFluidDataStoreContext,\n\t\tContainerExtensionProvider {}\n\n/**\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidDataStoreContextDetached extends IFluidDataStoreContext {\n\t/**\n\t * Binds a runtime to the context.\n\t */\n\tattachRuntime(\n\t\tfactory: IProvideFluidDataStoreFactory,\n\t\tdataStoreRuntime: IFluidDataStoreChannel,\n\t): Promise<IDataStore>;\n}\n"]}

@@ -7,3 +7,3 @@ /*!

export type { ContainerExtensionId, ContainerExtensionProvider, ContainerExtensionExpectations, ExtensionCompatibilityDetails, UnknownExtensionInstantiation, } from "./containerExtensionProvider.js";
export type { AliasResult, CreateChildSummarizerNodeFn, FluidDataStoreContextInternal, IContainerRuntimeBase, IContainerRuntimeBaseEvents, IDataStore, IFluidDataStoreChannel, IFluidDataStorePolicies, IFluidDataStoreContext, IFluidParentContext, IFluidDataStoreContextDetached, IPendingMessagesState, PackagePath, } from "./dataStoreContext.js";
export type { AliasResult, CreateChildSummarizerNodeFn, FluidDataStoreContextInternal, IContainerRuntimeBase, IContainerRuntimeBaseEvents, IDataStore, IFluidDataStoreChannel, IFluidDataStorePolicies, IFluidDataStoreContext, IFluidParentContext, IFluidDataStoreContextDetached, IPendingMessagesState, PackagePath, StageControls, StagingModeChangedEvent, } from "./dataStoreContext.js";
export { FlushMode, VisibilityState } from "./dataStoreContext.js";

@@ -10,0 +10,0 @@ export type { IProvideFluidDataStoreFactory } from "./dataStoreFactory.js";

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACX,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,GAC7B,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACX,WAAW,EACX,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,2BAA2B,EAC3B,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,qBAAqB,EACrB,WAAW,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EACX,2BAA2B,EAC3B,8BAA8B,EAC9B,kCAAkC,EAClC,gCAAgC,EAChC,iCAAiC,GACjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EACX,sBAAsB,EACtB,6BAA6B,GAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACN,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,GACT,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACX,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,GACrB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACX,8BAA8B,EAC9B,sCAAsC,EACtC,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,GACzB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,EACN,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,aAAa,GACb,MAAM,kBAAkB,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACX,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,GAC7B,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACX,WAAW,EACX,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,2BAA2B,EAC3B,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,uBAAuB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EACX,2BAA2B,EAC3B,8BAA8B,EAC9B,kCAAkC,EAClC,gCAAgC,EAChC,iCAAiC,GACjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EACX,sBAAsB,EACtB,6BAA6B,GAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACN,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,GACT,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACX,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,GACrB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACX,8BAA8B,EAC9B,sCAAsC,EACtC,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,GACzB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,EACN,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,aAAa,GACb,MAAM,kBAAkB,CAAC"}

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA+BH,6DAAmE;AAA1D,gHAAA,SAAS,OAAA;AAAE,sHAAA,eAAe,OAAA;AAEnC,6DAA+D;AAAtD,6HAAA,sBAAsB,OAAA;AAQ/B,+DAAiE;AAAxD,+HAAA,uBAAuB,OAAA;AAKhC,qFAM2C;AAL1C,+HAAA,YAAY,OAAA;AACZ,gIAAA,aAAa,OAAA;AACb,mIAAA,gBAAgB,OAAA;AAChB,qIAAA,kBAAkB,OAAA;AAClB,4HAAA,SAAS,OAAA;AAaV,yFAG6C;AAF5C,oJAAA,+BAA+B,OAAA;AAC/B,0IAAA,qBAAqB,OAAA;AAiBtB,2CAOsB;AANrB,mHAAA,qBAAqB,OAAA;AACrB,8GAAA,gBAAgB,OAAA;AAChB,wHAAA,0BAA0B,OAAA;AAC1B,wHAAA,0BAA0B,OAAA;AAC1B,8HAAA,gCAAgC,OAAA;AAChC,uHAAA,yBAAyB,OAAA;AAI1B,mDAO0B;AADzB,+GAAA,aAAa,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type {\n\tAttributionInfo,\n\tAttributionKey,\n\tDetachedAttributionKey,\n\tLocalAttributionKey,\n\tOpAttributionKey,\n} from \"./attribution.js\";\nexport type {\n\tContainerExtensionId,\n\tContainerExtensionProvider,\n\tContainerExtensionExpectations,\n\tExtensionCompatibilityDetails,\n\tUnknownExtensionInstantiation,\n} from \"./containerExtensionProvider.js\";\nexport type {\n\tAliasResult,\n\tCreateChildSummarizerNodeFn,\n\tFluidDataStoreContextInternal,\n\tIContainerRuntimeBase,\n\tIContainerRuntimeBaseEvents,\n\tIDataStore,\n\tIFluidDataStoreChannel,\n\tIFluidDataStorePolicies,\n\tIFluidDataStoreContext,\n\tIFluidParentContext,\n\tIFluidDataStoreContextDetached,\n\tIPendingMessagesState,\n\tPackagePath,\n} from \"./dataStoreContext.js\";\nexport { FlushMode, VisibilityState } from \"./dataStoreContext.js\";\nexport type { IProvideFluidDataStoreFactory } from \"./dataStoreFactory.js\";\nexport { IFluidDataStoreFactory } from \"./dataStoreFactory.js\";\nexport type {\n\tFluidDataStoreRegistryEntry,\n\tIProvideFluidDataStoreRegistry,\n\tNamedFluidDataStoreRegistryEntries,\n\tNamedFluidDataStoreRegistryEntry,\n\tNamedFluidDataStoreRegistryEntry2,\n} from \"./dataStoreRegistry.js\";\nexport { IFluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nexport type {\n\tIGarbageCollectionData,\n\tIGarbageCollectionDetailsBase,\n} from \"./garbageCollectionDefinitions.js\";\nexport {\n\tgcBlobPrefix,\n\tgcDataBlobKey,\n\tgcDeletedBlobKey,\n\tgcTombstoneBlobKey,\n\tgcTreeKey,\n} from \"./garbageCollectionDefinitions.js\";\nexport type {\n\tFluidDataStoreMessage,\n\tIAttachMessage,\n\tIEnvelope,\n\tIInboundSignalMessage,\n\tInboundAttachMessage,\n\tIRuntimeMessageCollection,\n\tIRuntimeMessagesContent,\n\tISequencedMessageEnvelope,\n\tIRuntimeStorageService,\n} from \"./protocol.js\";\nexport {\n\tencodeHandlesInContainerRuntime,\n\tnotifiesReadOnlyState,\n} from \"./runtimeLayerCompatFeatureNames.js\";\nexport type {\n\tCreateChildSummarizerNodeParam,\n\tIExperimentalIncrementalSummaryContext,\n\tISummarizeInternalResult,\n\tISummarizeResult,\n\tISummarizerNode,\n\tISummarizerNodeConfig,\n\tISummarizerNodeConfigWithGC,\n\tISummarizerNodeWithGC,\n\tISummaryStats,\n\tISummaryTreeWithStats,\n\tITelemetryContext,\n\tITelemetryContextExt,\n\tSummarizeInternalFn,\n} from \"./summary.js\";\nexport {\n\tblobCountPropertyName,\n\tchannelsTreeName,\n\tCreateSummarizerNodeSource,\n\tcurrentSummarizeStepPrefix,\n\tcurrentSummarizeStepPropertyName,\n\ttotalBlobSizePropertyName,\n} from \"./summary.js\";\nexport type { MinimumVersionForCollab } from \"./compatibilityDefinitions.js\";\n\nexport {\n\ttype ContainerRuntimeBaseAlpha,\n\ttype StageControlsAlpha,\n\ttype CommitStagedChangesOptionsInternal,\n\ttype IContainerRuntimeBaseInternal,\n\ttype StageControlsInternal,\n\tasLegacyAlpha,\n} from \"./stagingMode.js\";\n"]}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiCH,6DAAmE;AAA1D,gHAAA,SAAS,OAAA;AAAE,sHAAA,eAAe,OAAA;AAEnC,6DAA+D;AAAtD,6HAAA,sBAAsB,OAAA;AAQ/B,+DAAiE;AAAxD,+HAAA,uBAAuB,OAAA;AAKhC,qFAM2C;AAL1C,+HAAA,YAAY,OAAA;AACZ,gIAAA,aAAa,OAAA;AACb,mIAAA,gBAAgB,OAAA;AAChB,qIAAA,kBAAkB,OAAA;AAClB,4HAAA,SAAS,OAAA;AAaV,yFAG6C;AAF5C,oJAAA,+BAA+B,OAAA;AAC/B,0IAAA,qBAAqB,OAAA;AAiBtB,2CAOsB;AANrB,mHAAA,qBAAqB,OAAA;AACrB,8GAAA,gBAAgB,OAAA;AAChB,wHAAA,0BAA0B,OAAA;AAC1B,wHAAA,0BAA0B,OAAA;AAC1B,8HAAA,gCAAgC,OAAA;AAChC,uHAAA,yBAAyB,OAAA;AAI1B,mDAO0B;AADzB,+GAAA,aAAa,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type {\n\tAttributionInfo,\n\tAttributionKey,\n\tDetachedAttributionKey,\n\tLocalAttributionKey,\n\tOpAttributionKey,\n} from \"./attribution.js\";\nexport type {\n\tContainerExtensionId,\n\tContainerExtensionProvider,\n\tContainerExtensionExpectations,\n\tExtensionCompatibilityDetails,\n\tUnknownExtensionInstantiation,\n} from \"./containerExtensionProvider.js\";\nexport type {\n\tAliasResult,\n\tCreateChildSummarizerNodeFn,\n\tFluidDataStoreContextInternal,\n\tIContainerRuntimeBase,\n\tIContainerRuntimeBaseEvents,\n\tIDataStore,\n\tIFluidDataStoreChannel,\n\tIFluidDataStorePolicies,\n\tIFluidDataStoreContext,\n\tIFluidParentContext,\n\tIFluidDataStoreContextDetached,\n\tIPendingMessagesState,\n\tPackagePath,\n\tStageControls,\n\tStagingModeChangedEvent,\n} from \"./dataStoreContext.js\";\nexport { FlushMode, VisibilityState } from \"./dataStoreContext.js\";\nexport type { IProvideFluidDataStoreFactory } from \"./dataStoreFactory.js\";\nexport { IFluidDataStoreFactory } from \"./dataStoreFactory.js\";\nexport type {\n\tFluidDataStoreRegistryEntry,\n\tIProvideFluidDataStoreRegistry,\n\tNamedFluidDataStoreRegistryEntries,\n\tNamedFluidDataStoreRegistryEntry,\n\tNamedFluidDataStoreRegistryEntry2,\n} from \"./dataStoreRegistry.js\";\nexport { IFluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nexport type {\n\tIGarbageCollectionData,\n\tIGarbageCollectionDetailsBase,\n} from \"./garbageCollectionDefinitions.js\";\nexport {\n\tgcBlobPrefix,\n\tgcDataBlobKey,\n\tgcDeletedBlobKey,\n\tgcTombstoneBlobKey,\n\tgcTreeKey,\n} from \"./garbageCollectionDefinitions.js\";\nexport type {\n\tFluidDataStoreMessage,\n\tIAttachMessage,\n\tIEnvelope,\n\tIInboundSignalMessage,\n\tInboundAttachMessage,\n\tIRuntimeMessageCollection,\n\tIRuntimeMessagesContent,\n\tISequencedMessageEnvelope,\n\tIRuntimeStorageService,\n} from \"./protocol.js\";\nexport {\n\tencodeHandlesInContainerRuntime,\n\tnotifiesReadOnlyState,\n} from \"./runtimeLayerCompatFeatureNames.js\";\nexport type {\n\tCreateChildSummarizerNodeParam,\n\tIExperimentalIncrementalSummaryContext,\n\tISummarizeInternalResult,\n\tISummarizeResult,\n\tISummarizerNode,\n\tISummarizerNodeConfig,\n\tISummarizerNodeConfigWithGC,\n\tISummarizerNodeWithGC,\n\tISummaryStats,\n\tISummaryTreeWithStats,\n\tITelemetryContext,\n\tITelemetryContextExt,\n\tSummarizeInternalFn,\n} from \"./summary.js\";\nexport {\n\tblobCountPropertyName,\n\tchannelsTreeName,\n\tCreateSummarizerNodeSource,\n\tcurrentSummarizeStepPrefix,\n\tcurrentSummarizeStepPropertyName,\n\ttotalBlobSizePropertyName,\n} from \"./summary.js\";\nexport type { MinimumVersionForCollab } from \"./compatibilityDefinitions.js\";\n\nexport {\n\ttype ContainerRuntimeBaseAlpha,\n\ttype StageControlsAlpha,\n\ttype CommitStagedChangesOptionsInternal,\n\ttype IContainerRuntimeBaseInternal,\n\ttype StageControlsInternal,\n\tasLegacyAlpha,\n} from \"./stagingMode.js\";\n"]}

@@ -64,2 +64,4 @@ /*!

PackagePath,
StageControls,
StagingModeChangedEvent,
SummarizeInternalFn,

@@ -66,0 +68,0 @@ VisibilityState

@@ -64,2 +64,4 @@ /*!

PackagePath,
StageControls,
StagingModeChangedEvent,
SummarizeInternalFn,

@@ -66,0 +68,0 @@ VisibilityState,

@@ -5,3 +5,3 @@ /*!

*/
import type { IContainerRuntimeBase } from "./dataStoreContext.js";
import type { IContainerRuntimeBase, StageControls } from "./dataStoreContext.js";
/**

@@ -34,3 +34,3 @@ * Options for committing staged changes in experimental staging mode.

*/
export interface StageControlsInternal extends StageControlsAlpha {
export interface StageControlsInternal extends StageControls {
/**

@@ -45,26 +45,7 @@ * Exit staging mode and commit to any changes made while in staging mode.

/**
* Controls for managing staged changes in alpha staging mode.
*
* Provides methods to either commit or discard changes made while in staging mode.
*
* @legacy @alpha
* @sealed
*/
export interface StageControlsAlpha {
/**
* Exit staging mode and commit to any changes made while in staging mode.
* This will cause them to be sent to the ordering service, and subsequent changes
* made by this container will additionally flow freely to the ordering service.
*/
readonly commitChanges: () => void;
/**
* Exit staging mode and discard any changes made while in staging mode.
*/
readonly discardChanges: () => void;
}
/**
* Experimental extension of {@link IContainerRuntimeBase} to support staging mode.
* Internal extension of {@link IContainerRuntimeBase} whose {@link IContainerRuntimeBaseInternal.enterStagingMode}
* returns {@link StageControlsInternal} (which exposes internal commit options such as squash)
* @internal
*/
export interface IContainerRuntimeBaseInternal extends ContainerRuntimeBaseAlpha {
export interface IContainerRuntimeBaseInternal extends IContainerRuntimeBase {
/**

@@ -77,17 +58,21 @@ * Enters staging mode, allowing changes to be staged before being committed or discarded.

/**
* Alpha interface for container runtime base supporting staging mode.
* Controls for managing staged changes in alpha staging mode.
*
* Provides methods to either commit or discard changes made while in staging mode.
*
* @deprecated Use {@link StageControls} (beta) instead.
* @legacy @alpha
* @sealed
*/
export interface StageControlsAlpha extends StageControls {
}
/**
* Alpha extension of {@link IContainerRuntimeBase} that exposes alpha-level APIs.
*
* @remarks Use {@link asLegacyAlpha} to obtain an instance from an {@link IContainerRuntimeBase}.
*
* @legacy @alpha
* @sealed
*/
export interface ContainerRuntimeBaseAlpha extends IContainerRuntimeBase {
/**
* Enters staging mode, allowing changes to be staged before being committed or discarded.
* @returns Controls for committing or discarding staged changes.
*/
enterStagingMode(): StageControlsAlpha;
/**
* Indicates whether the container is currently in staging mode.
*/
readonly inStagingMode: boolean;
}

@@ -94,0 +79,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"stagingMode.d.ts","sourceRoot":"","sources":["../src/stagingMode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IAClD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAChE;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kCAAkC,CAAC,KAAK,IAAI,CAAC;CACxF;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;IACnC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC/E;;;OAGG;IACH,gBAAgB,IAAI,qBAAqB,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;IACvE;;;OAGG;IACH,gBAAgB,IAAI,kBAAkB,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,yBAAyB,CAEpF"}
{"version":3,"file":"stagingMode.d.ts","sourceRoot":"","sources":["../src/stagingMode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAElF;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IAClD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC3D;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kCAAkC,CAAC,KAAK,IAAI,CAAC;CACxF;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC3E;;;OAGG;IACH,gBAAgB,IAAI,qBAAqB,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;CAAG;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;CAAG;AAE3E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,yBAAyB,CAEpF"}

@@ -1,1 +0,1 @@

{"version":3,"file":"stagingMode.js","sourceRoot":"","sources":["../src/stagingMode.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA6FH;;;;GAIG;AACH,SAAgB,aAAa,CAAC,IAA2B;IACxD,OAAO,IAAiC,CAAC;AAC1C,CAAC;AAFD,sCAEC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IContainerRuntimeBase } from \"./dataStoreContext.js\";\n\n/**\n * Options for committing staged changes in experimental staging mode.\n * @internal\n */\nexport interface CommitStagedChangesOptionsInternal {\n\t/**\n\t * If true, intermediate states created by changes made while in staging mode will be \"squashed\" out of the\n\t * ops which were created during staging mode.\n\t * Defaults to false.\n\t * @remarks\n\t * The squash parameter is analogous to `git squash` but differs in a notable way: ops created by a client exiting staging mode\n\t * are not necessarily coalesced into a single op or something like it.\n\t * It still does have the desirable property that \"unnecessary changes\" (such as inserting some content then removing it) will\n\t * be removed from the set of submitted ops, which means it helps reduce network traffic and the chance of unwanted data being\n\t * persisted--even if only temporarily--in the document.\n\t *\n\t * By not attempting to reduce the set of changes to a single op a la `git squash`, we can better preserve the ordering of\n\t * changes that remote clients see such that they better align with the client which submitted the changes.\n\t */\n\tsquash?: boolean;\n}\n\n/**\n * Controls for managing staged changes in experimental staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n * @internal\n */\nexport interface StageControlsInternal extends StageControlsAlpha {\n\t/**\n\t * Exit staging mode and commit to any changes made while in staging mode.\n\t * This will cause them to be sent to the ordering service, and subsequent changes\n\t * made by this container will additionally flow freely to the ordering service.\n\t * @param options - Options when committing changes.\n\t */\n\treadonly commitChanges: (options?: Partial<CommitStagedChangesOptionsInternal>) => void;\n}\n\n/**\n * Controls for managing staged changes in alpha staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n *\n * @legacy @alpha\n * @sealed\n */\nexport interface StageControlsAlpha {\n\t/**\n\t * Exit staging mode and commit to any changes made while in staging mode.\n\t * This will cause them to be sent to the ordering service, and subsequent changes\n\t * made by this container will additionally flow freely to the ordering service.\n\t */\n\treadonly commitChanges: () => void;\n\t/**\n\t * Exit staging mode and discard any changes made while in staging mode.\n\t */\n\treadonly discardChanges: () => void;\n}\n\n/**\n * Experimental extension of {@link IContainerRuntimeBase} to support staging mode.\n * @internal\n */\nexport interface IContainerRuntimeBaseInternal extends ContainerRuntimeBaseAlpha {\n\t/**\n\t * Enters staging mode, allowing changes to be staged before being committed or discarded.\n\t * @returns Controls for committing or discarding staged changes.\n\t */\n\tenterStagingMode(): StageControlsInternal;\n}\n\n/**\n * Alpha interface for container runtime base supporting staging mode.\n *\n * @legacy @alpha\n * @sealed\n */\nexport interface ContainerRuntimeBaseAlpha extends IContainerRuntimeBase {\n\t/**\n\t * Enters staging mode, allowing changes to be staged before being committed or discarded.\n\t * @returns Controls for committing or discarding staged changes.\n\t */\n\tenterStagingMode(): StageControlsAlpha;\n\t/**\n\t * Indicates whether the container is currently in staging mode.\n\t */\n\treadonly inStagingMode: boolean;\n}\n\n/**\n * Converts types to their alpha counterparts to expose alpha functionality.\n * @legacy @alpha\n * @sealed\n */\nexport function asLegacyAlpha(base: IContainerRuntimeBase): ContainerRuntimeBaseAlpha {\n\treturn base as ContainerRuntimeBaseAlpha;\n}\n"]}
{"version":3,"file":"stagingMode.js","sourceRoot":"","sources":["../src/stagingMode.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA4EH;;;;GAIG;AACH,SAAgB,aAAa,CAAC,IAA2B;IACxD,OAAO,IAAiC,CAAC;AAC1C,CAAC;AAFD,sCAEC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IContainerRuntimeBase, StageControls } from \"./dataStoreContext.js\";\n\n/**\n * Options for committing staged changes in experimental staging mode.\n * @internal\n */\nexport interface CommitStagedChangesOptionsInternal {\n\t/**\n\t * If true, intermediate states created by changes made while in staging mode will be \"squashed\" out of the\n\t * ops which were created during staging mode.\n\t * Defaults to false.\n\t * @remarks\n\t * The squash parameter is analogous to `git squash` but differs in a notable way: ops created by a client exiting staging mode\n\t * are not necessarily coalesced into a single op or something like it.\n\t * It still does have the desirable property that \"unnecessary changes\" (such as inserting some content then removing it) will\n\t * be removed from the set of submitted ops, which means it helps reduce network traffic and the chance of unwanted data being\n\t * persisted--even if only temporarily--in the document.\n\t *\n\t * By not attempting to reduce the set of changes to a single op a la `git squash`, we can better preserve the ordering of\n\t * changes that remote clients see such that they better align with the client which submitted the changes.\n\t */\n\tsquash?: boolean;\n}\n\n/**\n * Controls for managing staged changes in experimental staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n * @internal\n */\nexport interface StageControlsInternal extends StageControls {\n\t/**\n\t * Exit staging mode and commit to any changes made while in staging mode.\n\t * This will cause them to be sent to the ordering service, and subsequent changes\n\t * made by this container will additionally flow freely to the ordering service.\n\t * @param options - Options when committing changes.\n\t */\n\treadonly commitChanges: (options?: Partial<CommitStagedChangesOptionsInternal>) => void;\n}\n\n/**\n * Internal extension of {@link IContainerRuntimeBase} whose {@link IContainerRuntimeBaseInternal.enterStagingMode}\n * returns {@link StageControlsInternal} (which exposes internal commit options such as squash)\n * @internal\n */\nexport interface IContainerRuntimeBaseInternal extends IContainerRuntimeBase {\n\t/**\n\t * Enters staging mode, allowing changes to be staged before being committed or discarded.\n\t * @returns Controls for committing or discarding staged changes.\n\t */\n\tenterStagingMode(): StageControlsInternal;\n}\n\n/**\n * Controls for managing staged changes in alpha staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n *\n * @deprecated Use {@link StageControls} (beta) instead.\n * @legacy @alpha\n * @sealed\n */\nexport interface StageControlsAlpha extends StageControls {}\n\n/**\n * Alpha extension of {@link IContainerRuntimeBase} that exposes alpha-level APIs.\n *\n * @remarks Use {@link asLegacyAlpha} to obtain an instance from an {@link IContainerRuntimeBase}.\n *\n * @legacy @alpha\n * @sealed\n */\nexport interface ContainerRuntimeBaseAlpha extends IContainerRuntimeBase {}\n\n/**\n * Converts types to their alpha counterparts to expose alpha functionality.\n * @legacy @alpha\n * @sealed\n */\nexport function asLegacyAlpha(base: IContainerRuntimeBase): ContainerRuntimeBaseAlpha {\n\treturn base as ContainerRuntimeBaseAlpha;\n}\n"]}

@@ -92,2 +92,13 @@ /*!

(event: "dispose", listener: () => void): any;
/**
* Fires when the container runtime enters or exits staging mode.
* @param stagingModeInfo - An object describing the staging mode state.
* If `inStagingMode` is true, the runtime has entered staging mode.
* If false, it has exited staging mode, and `commit` indicates whether changes were committed or discarded.
*
* @remarks
* This event is not emitted when the container is disposed while in staging mode.
* If the container is disposed, staged changes are silently dropped.
*/
(event: "stagingModeChanged", listener: (stagingModeInfo: StagingModeChangedEvent) => void): any;
}

@@ -138,2 +149,30 @@ /**

/**
* Controls for managing staged changes in staging mode.
*
* Provides methods to either commit or discard changes made while in staging mode.
*
* @see {@link IContainerRuntimeBase.enterStagingMode}
*
* @legacy @beta
* @sealed
*/
export interface StageControls {
/**
* Exit staging mode and commit to any changes made while in staging mode.
* This will cause them to be sent to the ordering service, and subsequent changes
* made by this container will additionally flow freely to the ordering service.
*
* @remarks
* Squash-rebase semantics during commit are not yet fully specified.
*/
readonly commitChanges: () => void;
/**
* Exit staging mode and discard any changes made while in staging mode.
*
* @remarks
* DDS rollback support may be incomplete — this may throw for some DDS implementations.
*/
readonly discardChanges: () => void;
}
/**
* A reduced set of functionality of {@link @fluidframework/container-runtime-definitions#IContainerRuntime} that a data store context/data store runtime will need.

@@ -231,2 +270,21 @@ * @privateRemarks

}>;
/**
* Enter Staging Mode, such that ops submitted to the ContainerRuntime will not be sent to the ordering service.
* To exit Staging Mode, call either discardChanges or commitChanges on the Stage Controls returned from this method.
*
* @remarks
* Known limitations:
* - DDS rollback support may be incomplete — {@link StageControls.discardChanges} may throw for some DDS implementations.
* - Squash-rebase semantics during {@link StageControls.commitChanges} are not yet fully specified.
*
* @returns Controls for committing or discarding staged changes.
*/
enterStagingMode(): StageControls;
/**
* If true, the ContainerRuntime is not submitting any new ops to the ordering service.
* Ops submitted to the ContainerRuntime while in Staging Mode will be queued in the PendingStateManager,
* either to be discarded or committed later (via the Stage Controls returned from enterStagingMode).
* @see {@link IContainerRuntimeBase.enterStagingMode}
*/
readonly inStagingMode: boolean;
}

@@ -251,2 +309,6 @@ /**

* to prevent modifications that would leave the data store in an unresponsive state.
*
* This provides a best-effort readonly appearance, but no strict enforcement.
*
* @see {@link IContainerRuntimeBase.enterStagingMode}
*/

@@ -356,4 +418,19 @@ readonly readonlyInStagingMode: boolean;

/**
* Describes a staging mode transition on the container runtime.
* - `{ inStagingMode: true }` — the runtime has entered staging mode.
*
* - `{ inStagingMode: false, commit: boolean }` — the runtime has exited staging mode.
* `commit` is `true` when staged changes were committed (not discarded), or `false` when they were discarded.
*
* @legacy @beta
*/
export type StagingModeChangedEvent = {
readonly inStagingMode: true;
} | {
readonly inStagingMode: false;
readonly commit: boolean;
};
/**
* @legacy @beta
*/
export type CreateChildSummarizerNodeFn = (summarizeInternal: SummarizeInternalFn, getGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>,

@@ -360,0 +437,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"dataStoreContext.js","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkDH;;;GAGG;AACH,MAAM,CAAN,IAAY,SAcX;AAdD,WAAY,SAAS;IACpB;;;;;OAKG;IACH,mDAAS,CAAA;IAET;;;OAGG;IACH,mDAAS,CAAA;AACV,CAAC,EAdW,SAAS,KAAT,SAAS,QAcpB;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B;;OAEG;IACH,UAAU,EAAE,YAAY;IAExB;;;;OAIG;IACH,cAAc,EAAE,gBAAgB;IAEhC;;;;;;;;OAQG;IACH,eAAe,EAAE,iBAAiB;CAClC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { AttachState, IAudience } from \"@fluidframework/container-definitions\";\nimport type { IDeltaManager } from \"@fluidframework/container-definitions/internal\";\nimport type {\n\tFluidObject,\n\tIDisposable,\n\tIEvent,\n\tIEventProvider,\n\tIFluidHandle,\n\tIRequest,\n\tIResponse,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type {\n\tIFluidHandleInternal,\n\tIProvideFluidHandleContext,\n} from \"@fluidframework/core-interfaces/internal\";\nimport type { IClientDetails, IQuorumClients } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentMessage,\n\tISnapshotTree,\n\tISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\n\nimport type { MinimumVersionForCollab } from \"./compatibilityDefinitions.js\";\nimport type { ContainerExtensionProvider } from \"./containerExtensionProvider.js\";\nimport type {\n\tIFluidDataStoreFactory,\n\tIProvideFluidDataStoreFactory,\n} from \"./dataStoreFactory.js\";\nimport type { IProvideFluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nimport type {\n\tIGarbageCollectionData,\n\tIGarbageCollectionDetailsBase,\n} from \"./garbageCollectionDefinitions.js\";\nimport type {\n\tIInboundSignalMessage,\n\tIRuntimeMessageCollection,\n\tIRuntimeStorageService,\n} from \"./protocol.js\";\nimport type {\n\tCreateChildSummarizerNodeParam,\n\tISummarizerNodeWithGC,\n\tISummaryTreeWithStats,\n\tITelemetryContext,\n\tSummarizeInternalFn,\n} from \"./summary.js\";\n\n/**\n * Runtime flush mode handling\n * @legacy @beta\n */\nexport enum FlushMode {\n\t/**\n\t * In Immediate flush mode the runtime will immediately send all operations to the driver layer.\n\t *\n\t * @deprecated This option will be removed in the next major version and should not be used. Use {@link FlushMode.TurnBased} instead, which is the default.\n\t * See https://github.com/microsoft/FluidFramework/tree/main/packages/runtime/container-runtime/src/opLifecycle#how-batching-works\n\t */\n\tImmediate,\n\n\t/**\n\t * When in TurnBased flush mode the runtime will buffer operations in the current turn and send them as a single\n\t * batch at the end of the turn. The flush call on the runtime can be used to force send the current batch.\n\t */\n\tTurnBased,\n}\n\n/**\n * This tells the visibility state of a Fluid object. It basically tracks whether the object is not visible, visible\n * locally within the container only or visible globally to all clients.\n * @legacy @beta\n */\nexport const VisibilityState = {\n\t/**\n\t * Indicates that the object is not visible. This is the state when an object is first created.\n\t */\n\tNotVisible: \"NotVisible\",\n\n\t/**\n\t * Indicates that the object is visible locally within the container. This is the state when an object is attached\n\t * to the container's graph but the container itself isn't globally visible. The object's state goes from not\n\t * visible to locally visible.\n\t */\n\tLocallyVisible: \"LocallyVisible\",\n\n\t/**\n\t * Indicates that the object is visible globally to all clients. This is the state of an object in 2 scenarios:\n\t *\n\t * 1. It is attached to the container's graph when the container is globally visible. The object's state goes from\n\t * not visible to globally visible.\n\t *\n\t * 2. When a container becomes globally visible, all locally visible objects go from locally visible to globally\n\t * visible.\n\t */\n\tGloballyVisible: \"GloballyVisible\",\n};\n/**\n * @legacy @beta\n */\nexport type VisibilityState = (typeof VisibilityState)[keyof typeof VisibilityState];\n\n/**\n * @legacy @beta\n * @sealed\n */\nexport interface IContainerRuntimeBaseEvents extends IEvent {\n\t/**\n\t * Indicates the beginning of an incoming batch of ops\n\t * @param op - The first op in the batch. Can be inspected to learn about the sequence numbers relevant for this batch.\n\t */\n\t(event: \"batchBegin\", listener: (op: Omit<ISequencedDocumentMessage, \"contents\">) => void);\n\t/**\n\t * Indicates the end of an incoming batch of ops\n\t * @param error - If an error occurred while processing the batch, it is provided here.\n\t * @param op - The last op in the batch. Can be inspected to learn about the sequence numbers relevant for this batch.\n\t */\n\t(\n\t\tevent: \"batchEnd\",\n\t\tlistener: (error: unknown, op: Omit<ISequencedDocumentMessage, \"contents\">) => void,\n\t);\n\t/**\n\t * Indicates that an incoming op has been processed.\n\t * @param runtimeMessage - tells if op is runtime op. If it is, it was unpacked, i.e. its type and content\n\t * represent internal container runtime type / content. i.e. A grouped batch of N ops will result in N \"op\" events\n\t */\n\t(event: \"op\", listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void);\n\t(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n\t(event: \"dispose\", listener: () => void);\n}\n\n/**\n * Encapsulates the return codes of the aliasing API.\n *\n * 'Success' - the datastore has been successfully aliased. It can now be used.\n *\n * 'Conflict' - there is already a datastore bound to the provided alias. To acquire it's entry point, use\n * the `IContainerRuntime.getAliasedDataStoreEntryPoint` function. The current datastore should be discarded\n * and will be garbage collected. The current datastore cannot be aliased to a different value.\n *\n * 'AlreadyAliased' - the datastore has already been previously bound to another alias name.\n * @legacy @beta\n */\nexport type AliasResult = \"Success\" | \"Conflict\" | \"AlreadyAliased\";\n\n/**\n * Exposes some functionality/features of a data store:\n *\n * - Handle to the data store's entryPoint\n *\n * - Fluid router for the data store\n *\n * - Can be assigned an alias\n *\n * @privateRemarks\n * TODO: These docs should define what a \"data store\" is, and not do so by just referencing \"data store\".\n *\n * @legacy @beta\n */\nexport interface IDataStore {\n\t/**\n\t * Attempt to assign an alias to the datastore.\n\t * If the operation succeeds, the datastore can be referenced\n\t * by the supplied alias and will not be garbage collected.\n\t *\n\t * @param alias - Given alias for this datastore.\n\t * @returns A promise with the {@link AliasResult}\n\t */\n\ttrySetAlias(alias: string): Promise<AliasResult>;\n\n\t/**\n\t * Exposes a handle to the root object / entryPoint of the data store. Use this as the primary way of interacting\n\t * with it.\n\t */\n\treadonly entryPoint: IFluidHandleInternal<FluidObject>;\n}\n\n/**\n * A reduced set of functionality of {@link @fluidframework/container-runtime-definitions#IContainerRuntime} that a data store context/data store runtime will need.\n * @privateRemarks\n * TODO: this should be merged into IFluidDataStoreContext\n * @legacy @beta\n * @sealed\n */\nexport interface IContainerRuntimeBase extends IEventProvider<IContainerRuntimeBaseEvents> {\n\treadonly baseLogger: ITelemetryBaseLogger;\n\treadonly clientDetails: IClientDetails;\n\treadonly disposed: boolean;\n\n\t/**\n\t * Invokes the given callback and guarantees that all operations generated within the callback will be ordered\n\t * sequentially.\n\t *\n\t * If the callback throws an error, the container will close and the error will be logged.\n\t *\n\t * @remarks\n\t * `orderSequentially` may enter staging mode for the duration of the function. This is necessary for rolling back certain op types.\n\t */\n\torderSequentially(callback: () => void): void;\n\n\t/**\n\t * Submits a container runtime level signal to be sent to other clients.\n\t * @param type - Type of the signal.\n\t * @param content - Content of the signal. Should be a JSON serializable object or primitive.\n\t * @param targetClientId - When specified, the signal is only sent to the provided client id.\n\t */\n\tsubmitSignal: (type: string, content: unknown, targetClientId?: string) => void;\n\n\t/**\n\t * Creates a data store and returns an object that exposes a handle to the data store's entryPoint, and also serves\n\t * as the data store's router. The data store is not bound to a container, and in such state is not persisted to\n\t * storage (file). Storing the entryPoint handle (or any other handle inside the data store, e.g. for DDS) into an\n\t * already attached DDS (or non-attached DDS that will eventually get attached to storage) will result in this\n\t * store being attached to storage.\n\t * @param pkg - Package name of the data store factory\n\t * @param loadingGroupId - This represents the group of the datastore within a container or its snapshot.\n\t * When not specified the datastore will belong to a `default` group. Read more about it in this\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}\n\t */\n\tcreateDataStore(pkg: string | PackagePath, loadingGroupId?: string): Promise<IDataStore>;\n\n\t/**\n\t * Creates detached data store context. Only after context.attachRuntime() is called,\n\t * data store initialization is considered complete.\n\t * @param pkg - Package name of the data store factory\n\t * @param loadingGroupId - This represents the group of the datastore within a container or its snapshot.\n\t * When not specified the datastore will belong to a `default` group. Read more about it in this\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}.\n\t */\n\tcreateDetachedDataStore(\n\t\tpkg: readonly string[],\n\t\tloadingGroupId?: string,\n\t): IFluidDataStoreContextDetached;\n\n\t/**\n\t * Returns the aliased data store's entryPoint, given the alias.\n\t * @param alias - The alias for the data store.\n\t * @returns The data store's entry point ({@link @fluidframework/core-interfaces#IFluidHandle}) if it exists and is aliased.\n\t * Returns undefined if no data store has been assigned the given alias.\n\t */\n\tgetAliasedDataStoreEntryPoint(alias: string): Promise<IFluidHandle<FluidObject> | undefined>;\n\n\t/**\n\t * Get an absolute url for a provided container-relative request.\n\t * Returns undefined if the container or data store isn't attached to storage.\n\t * @param relativeUrl - A relative request within the container\n\t */\n\tgetAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n\tuploadBlob(\n\t\tblob: ArrayBufferLike,\n\t\tsignal?: AbortSignal,\n\t): Promise<IFluidHandle<ArrayBufferLike>>;\n\n\t/**\n\t * Returns the current quorum.\n\t */\n\tgetQuorum(): IQuorumClients;\n\n\t/**\n\t * Returns the current audience.\n\t */\n\tgetAudience(): IAudience;\n\n\t/**\n\t * Generates a new ID that is guaranteed to be unique across all sessions for this container.\n\t * It could be in compact form (non-negative integer, opportunistic), but it could also be UUID string.\n\t * UUIDs generated will have low entropy in groups and will compress well.\n\t * It can be leveraged anywhere in container where container unique IDs are required, i.e. any place\n\t * that uses uuid() and stores result in container is likely candidate to start leveraging this API.\n\t * If you always want to convert to string, instead of doing String(generateDocumentUniqueId()), consider\n\t * doing encodeCompactIdToString(generateDocumentUniqueId()).\n\t *\n\t * @see {@link @fluidframework/id-compressor#IIdCompressor.generateDocumentUniqueId}\n\t */\n\tgenerateDocumentUniqueId(): number | string;\n\n\t/**\n\t * Api to fetch the snapshot from the service for a loadingGroupIds.\n\t * @param loadingGroupIds - LoadingGroupId for which the snapshot is asked for.\n\t * @param pathParts - Parts of the path, which we want to extract from the snapshot tree.\n\t * @returns snapshotTree and the sequence number of the snapshot.\n\t */\n\tgetSnapshotForLoadingGroupId(\n\t\tloadingGroupIds: string[],\n\t\tpathParts: string[],\n\t): Promise<{ snapshotTree: ISnapshotTree; sequenceNumber: number }>;\n}\n\n/**\n * These policies can be set by the author of the data store via its data store runtime to influence behaviors.\n *\n * @remarks\n * Policies allow data store authors to define specific behaviors or constraints for their data stores.\n * These settings can impact how the data store interacts with the runtime and other components.\n *\n * @legacy @beta\n */\nexport interface IFluidDataStorePolicies {\n\t/**\n\t * When set to true, the data store will appear readonly while in staging mode.\n\t *\n\t * @remarks\n\t * In staging mode, operations are held locally until committed, so consensus-based operations\n\t * (e.g., `ConsensusRegisterCollection`, `ConsensusQueue`, `TaskManager`) won't resolve their promises until\n\t * staging mode exits. Set this to `true` for data stores that depend on consensus acknowledgments\n\t * to prevent modifications that would leave the data store in an unresponsive state.\n\t */\n\treadonly readonlyInStagingMode: boolean;\n}\n\n/**\n * Minimal interface a data store runtime needs to provide for IFluidDataStoreContext to bind to control.\n *\n * Functionality include attach, snapshot, op/signal processing, request routes, expose an entryPoint,\n * and connection state notifications\n * @legacy @beta\n */\nexport interface IFluidDataStoreChannel extends IDisposable {\n\t/**\n\t * Optional policies that the data store channel may adhere to that the data store context should know about.\n\t * These policies influence the behavior of the data store, such as its readonly state in specific modes.\n\t */\n\treadonly policies?: IFluidDataStorePolicies;\n\n\t/**\n\t * Makes the data store channel visible in the container. Also, runs through its graph and attaches all\n\t * bound handles that represent its dependencies in the container's graph.\n\t */\n\tmakeVisibleAndAttachGraph(): void;\n\n\t/**\n\t * Synchronously retrieves the summary used as part of the initial summary message\n\t */\n\tgetAttachSummary(telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;\n\n\t/**\n\t * Synchronously retrieves GC Data (representing the outbound routes present) for the initial state of the DataStore\n\t */\n\tgetAttachGCData(telemetryContext?: ITelemetryContext): IGarbageCollectionData;\n\n\t/**\n\t * Process messages for this channel. The messages here are contiguous messages in a batch.\n\t * @param messageCollection - The collection of messages to process.\n\t */\n\tprocessMessages(messageCollection: IRuntimeMessageCollection): void;\n\n\t/**\n\t * Processes the signal.\n\t */\n\tprocessSignal(message: IInboundSignalMessage, local: boolean): void;\n\n\t/**\n\t * Generates a summary for the channel.\n\t * Introduced with summarizerNode - will be required in a future release.\n\t * @param fullTree - true to bypass optimizations and force a full summary tree.\n\t * @param trackState - This tells whether we should track state from this summary.\n\t * @param telemetryContext - summary data passed through the layers for telemetry purposes\n\t */\n\tsummarize(\n\t\tfullTree?: boolean,\n\t\ttrackState?: boolean,\n\t\ttelemetryContext?: ITelemetryContext,\n\t): Promise<ISummaryTreeWithStats>;\n\n\t/**\n\t * Returns the data used for garbage collection. This includes a list of GC nodes that represent this context\n\t * including any of its children. Each node has a list of outbound routes to other GC nodes in the document.\n\t * @param fullGC - true to bypass optimizations and force full generation of GC data.\n\t */\n\tgetGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;\n\n\t/**\n\t * After GC has run, called to notify this channel of routes that are used in it.\n\t * @param usedRoutes - The routes that are used in this channel.\n\t */\n\tupdateUsedRoutes(usedRoutes: string[]): void;\n\n\t/**\n\t * Notifies this object about changes in the connection state.\n\t * @param value - New connection state.\n\t * @param clientId - ID of the client. It's old ID when in disconnected state and\n\t * it's new client ID when we are connecting or connected.\n\t */\n\tsetConnectionState(connected: boolean, clientId?: string): void;\n\n\t/**\n\t * Notifies this object about changes in the readonly state\n\t */\n\tnotifyReadOnlyState?(readonly: boolean): void;\n\n\t/**\n\t * Ask the DDS to resubmit a message. This can happen for several reasons, such as:\n\t *\n\t * - We reconnected and discovered the original message was never acked.\n\t * - The original message was submitted from a reentrant state that is impossible for other clients to interpret correctly\n\t * - The original message was never sent on the wire and subsequent ops have been inbounded\n\t * @param type - The type of the original message.\n\t * @param content - The content of the original message.\n\t * @param localOpMetadata - The local metadata associated with the original message.\n\t * @param squash - If true, the DDS should avoid resubmitting any \"unnecessary intermediate state\" created by this message.\n\t * This includes any content which this message created but has since been changed or removed by subsequent messages.\n\t * For example, if this message (call it A) inserts content into a DDS that a subsequent op (call it B) removes,\n\t * resubmission of this message (call it A') should avoid inserting that content, and resubmission of the subsequent op that removed it (B') would\n\t * account for the fact that A' never inserted content.\n\t *\n\t * @privateRemarks\n\t * See remarks about squashing contract on `CommitStagedChangesOptionsExperimental`.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treSubmit(type: string, content: any, localOpMetadata: unknown, squash: boolean): void;\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\tapplyStashedOp(content: any): Promise<unknown>;\n\n\t/**\n\t * Revert a local message.\n\t * @param type - The type of the original message.\n\t * @param content - The content of the original message.\n\t * @param localOpMetadata - The local metadata associated with the original message.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\trollback?(type: string, content: any, localOpMetadata: unknown): void;\n\n\t/**\n\t * Exposes a handle to the root object / entryPoint of the component. Use this as the primary way of interacting\n\t * with the component.\n\t */\n\treadonly entryPoint: IFluidHandleInternal<FluidObject>;\n\n\trequest(request: IRequest): Promise<IResponse>;\n\n\tsetAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;\n}\n\n/**\n * @legacy @beta\n */\nexport type CreateChildSummarizerNodeFn = (\n\tsummarizeInternal: SummarizeInternalFn,\n\tgetGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>,\n\t/**\n\t * @deprecated The functionality to get base GC details has been moved to summarizer node.\n\t */\n\tgetBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>,\n) => ISummarizerNodeWithGC;\n\n/**\n * The state maintained for messages that are received when a channel isn't yet loaded.\n * @internal\n */\nexport interface IPendingMessagesState {\n\tmessageCollections: IRuntimeMessageCollection[];\n\tpendingCount: number;\n}\n\n/**\n * Context for an {@link IDataStore} like object.\n * @remarks\n * This context does NOT represent common information provided to all channels under a specific parent.\n * Each implementation of {@link IFluidDataStoreChannel} will receive its own instance of this context that contains specifically the data it needs.\n *\n * This layout is temporary, as {@link IFluidParentContext} and {@link IFluidDataStoreContext} will converge.\n * Therefore the semantics of these two interfaces is not really distinct.\n *\n * @privateRemarks\n * In addition to the use for datastores via IFluidDataStoreContext, this is\n * partially implemented by ContainerRuntime to provide context to the ChannelCollection.\n *\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidParentContext\n\textends IProvideFluidHandleContext,\n\t\tPartial<IProvideFluidDataStoreRegistry> {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treadonly options: Record<string | number, any>;\n\treadonly clientId: string | undefined;\n\treadonly connected: boolean;\n\t/**\n\t * Indicates if the parent context is readonly. If isReadOnly is true, the consumer of\n\t * the context should also consider themselves readonly.\n\t */\n\treadonly isReadOnly?: () => boolean;\n\t/**\n\t * Minimum version of the FF runtime that is required to collaborate on new documents.\n\t * Consumed by {@link @fluidframework/container-runtime#FluidDataStoreContext}.\n\t * See {@link @fluidframework/container-runtime#LoadContainerRuntimeParams.minVersionForCollab} for more details.\n\t */\n\treadonly minVersionForCollab: MinimumVersionForCollab;\n\treadonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;\n\treadonly storage: IRuntimeStorageService;\n\treadonly baseLogger: ITelemetryBaseLogger;\n\treadonly clientDetails: IClientDetails;\n\treadonly idCompressor?: IIdCompressor;\n\t/**\n\t * Represents the loading group to which the data store belongs to. Please refer to this readme for more context.\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}\n\t */\n\treadonly loadingGroupId?: string;\n\t/**\n\t * Indicates the attachment state of the data store to a host service.\n\t */\n\treadonly attachState: AttachState;\n\n\treadonly containerRuntime: IContainerRuntimeBase;\n\n\t/**\n\t * Ambient services provided with the context\n\t */\n\treadonly scope: FluidObject;\n\n\t/**\n\t * @deprecated this functionality has been removed.\n\t */\n\treadonly gcThrowOnTombstoneUsage: boolean;\n\t/**\n\t * @deprecated this functionality has been removed.\n\t */\n\treadonly gcTombstoneEnforcementAllowed: boolean;\n\n\t/**\n\t * Returns the current quorum.\n\t */\n\tgetQuorum(): IQuorumClients;\n\n\t/**\n\t * Returns the current audience.\n\t */\n\tgetAudience(): IAudience;\n\n\t/**\n\t * Submits the message to be sent to other clients.\n\t * @param type - Type of the message.\n\t * @param content - Content of the message.\n\t * @param localOpMetadata - The local metadata associated with the message. This is kept locally and not sent to\n\t * the server. This will be sent back when this message is received back from the server. This is also sent if\n\t * we are asked to resubmit the message.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\tsubmitMessage(type: string, content: any, localOpMetadata: unknown): void;\n\n\t/**\n\t * Submits the signal to be sent to other clients.\n\t * @param type - Type of the signal.\n\t * @param content - Content of the signal. Should be an {@link IEnvelope} with `contents` that is a JSON\n\t * serializable object or primitive.\n\t * @param targetClientId - When specified, the signal is only sent to the provided client id.\n\t */\n\tsubmitSignal: (type: string, content: unknown, targetClientId?: string) => void;\n\n\t/**\n\t * Called to make the data store locally visible in the container. This happens automatically for root data stores\n\t * when they are marked as root. For non-root data stores, this happens when their handle is added to a visible DDS.\n\t */\n\tmakeLocallyVisible(): void;\n\n\t/**\n\t * Get an absolute url to the container based on the provided relativeUrl.\n\t * Returns undefined if the container or data store isn't attached to storage.\n\t * @param relativeUrl - A relative request within the container\n\t */\n\tgetAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n\tgetCreateChildSummarizerNodeFn(\n\t\t/**\n\t\t * Initial id or path part of this node\n\t\t */\n\t\tid: string,\n\t\t/**\n\t\t * Information needed to create the node.\n\t\t * If it is from a base summary, it will assert that a summary has been seen.\n\t\t * Attach information if it is created from an attach op.\n\t\t * If it is local, it will throw unsupported errors on calls to summarize.\n\t\t */\n\t\tcreateParam: CreateChildSummarizerNodeParam,\n\t): CreateChildSummarizerNodeFn;\n\n\tdeleteChildSummarizerNode(id: string): void;\n\n\tuploadBlob(\n\t\tblob: ArrayBufferLike,\n\t\tsignal?: AbortSignal,\n\t): Promise<IFluidHandleInternal<ArrayBufferLike>>;\n\n\t/**\n\t * Called by IFluidDataStoreChannel, indicates that a channel is dirty and needs to be part of the summary.\n\t * @param address - The address of the channel that is dirty.\n\t */\n\tsetChannelDirty(address: string): void;\n\n\t/**\n\t * Called when a new outbound reference is added to another node. This is used by garbage collection to identify\n\t * all references added in the system.\n\t *\n\t * @param fromPath - The absolute path of the node that added the reference.\n\t * @param toPath - The absolute path of the outbound node that is referenced.\n\t * @param messageTimestampMs - The timestamp of the message that added the reference.\n\t */\n\taddedGCOutboundRoute(fromPath: string, toPath: string, messageTimestampMs?: number): void;\n}\n\n/**\n * A path which selects a {@link (IFluidDataStoreFactory:interface)} within a hierarchial registry.\n * @remarks\n * Each string in the array is the \"identifier\" to pick a specific {@link NamedFluidDataStoreRegistryEntry2} within a {@link NamedFluidDataStoreRegistryEntries}.\n *\n * Due to some usages joining this array with \"/\", it is recommended to avoid using \"/\" in the strings.\n * @legacy @beta\n */\nexport type PackagePath = readonly string[];\n\n/**\n * Extension to {@link IFluidParentContext} specifically for {@link IDataStore}s.\n *\n * @remarks\n * This context is provided to the implementation of {@link IFluidDataStoreChannel} which powers the datastore.\n *\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidDataStoreContext extends IFluidParentContext {\n\treadonly id: string;\n\t/**\n\t * A data store created by a client, is a local data store for that client. Also, when a detached container loads\n\t * from a snapshot, all the data stores are treated as local data stores because at that stage the container\n\t * still doesn't exists in storage and so the data store couldn't have been created by any other client.\n\t * Value of this never changes even after the data store is attached.\n\t * As implementer of data store runtime, you can use this property to check that this data store belongs to this\n\t * client and hence implement any scenario based on that.\n\t */\n\treadonly isLocalDataStore: boolean;\n\t/**\n\t * The {@link PackagePath} of the data store as per the package factory.\n\t * @remarks\n\t * This defines what {@link (IFluidDataStoreFactory:interface)} would be used to create the {@link IDataStore.entryPoint} of the {@link IDataStore}.\n\t */\n\treadonly packagePath: PackagePath;\n\treadonly baseSnapshot: ISnapshotTree | undefined;\n\n\t/**\n\t * @deprecated 0.16 Issue #1635, #3631\n\t */\n\t// Seems like this can be removed now; the issues mentioned in the @deprecated tag are about _createDataStoreWithProps\n\t// which we finally removed in FF 2.20 (https://github.com/microsoft/FluidFramework/pull/22996).\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treadonly createProps?: any;\n\n\t/**\n\t * @deprecated The functionality to get base GC details has been moved to summarizer node.\n\t *\n\t * Returns the GC details in the initial summary of this data store. This is used to initialize the data store\n\t * and its children with the GC details from the previous summary.\n\t */\n\tgetBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;\n\n\t/**\n\t * Synchronously creates a detached child data store.\n\t *\n\t * The `createChildDataStore` method allows for the synchronous creation of a detached child data store. This is particularly\n\t * useful in scenarios where immediate availability of the child data store is required, such as during the initialization\n\t * of a parent data store, or when creation is in response to synchronous user input.\n\t *\n\t * In order for this function to succeed:\n\t * 1. The parent data store's factory must also be an `IFluidDataStoreRegistry`.\n\t * 2. The parent data store's registry must include the same instance as the provided child factory.\n\t * 3. The parent data store's registry must synchronously provide the child factory via the `getSync` method.\n\t * 4. The child factory must implement the `createDataStore` method.\n\t *\n\t * These invariants ensure that the child data store can also be created by a remote client running the same code as this client.\n\t *\n\t * @param childFactory - The factory of the data store to be created.\n\t * @returns The created data store channel.\n\t */\n\tcreateChildDataStore?<T extends IFluidDataStoreFactory>(\n\t\tchildFactory: T,\n\t): ReturnType<Exclude<T[\"createDataStore\"], undefined>>;\n}\n\n/**\n * Internal extension to {@link IFluidDataStoreContext} for use across FluidFramework packages.\n *\n * @remarks\n * Important: this interface does cross layer boundaries and must follow `@legacy`\n * layer compatibility patterns.\n * This is meant to be a staging ground ahead of adding properties to {@link IFluidDataStoreContext}.\n *\n * @internal\n */\nexport interface FluidDataStoreContextInternal\n\textends IFluidDataStoreContext,\n\t\tContainerExtensionProvider {}\n\n/**\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidDataStoreContextDetached extends IFluidDataStoreContext {\n\t/**\n\t * Binds a runtime to the context.\n\t */\n\tattachRuntime(\n\t\tfactory: IProvideFluidDataStoreFactory,\n\t\tdataStoreRuntime: IFluidDataStoreChannel,\n\t): Promise<IDataStore>;\n}\n"]}
{"version":3,"file":"dataStoreContext.js","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkDH;;;GAGG;AACH,MAAM,CAAN,IAAY,SAcX;AAdD,WAAY,SAAS;IACpB;;;;;OAKG;IACH,mDAAS,CAAA;IAET;;;OAGG;IACH,mDAAS,CAAA;AACV,CAAC,EAdW,SAAS,KAAT,SAAS,QAcpB;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B;;OAEG;IACH,UAAU,EAAE,YAAY;IAExB;;;;OAIG;IACH,cAAc,EAAE,gBAAgB;IAEhC;;;;;;;;OAQG;IACH,eAAe,EAAE,iBAAiB;CAClC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { AttachState, IAudience } from \"@fluidframework/container-definitions\";\nimport type { IDeltaManager } from \"@fluidframework/container-definitions/internal\";\nimport type {\n\tFluidObject,\n\tIDisposable,\n\tIEvent,\n\tIEventProvider,\n\tIFluidHandle,\n\tIRequest,\n\tIResponse,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport type {\n\tIFluidHandleInternal,\n\tIProvideFluidHandleContext,\n} from \"@fluidframework/core-interfaces/internal\";\nimport type { IClientDetails, IQuorumClients } from \"@fluidframework/driver-definitions\";\nimport type {\n\tIDocumentMessage,\n\tISnapshotTree,\n\tISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport type { IIdCompressor } from \"@fluidframework/id-compressor\";\n\nimport type { MinimumVersionForCollab } from \"./compatibilityDefinitions.js\";\nimport type { ContainerExtensionProvider } from \"./containerExtensionProvider.js\";\nimport type {\n\tIFluidDataStoreFactory,\n\tIProvideFluidDataStoreFactory,\n} from \"./dataStoreFactory.js\";\nimport type { IProvideFluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nimport type {\n\tIGarbageCollectionData,\n\tIGarbageCollectionDetailsBase,\n} from \"./garbageCollectionDefinitions.js\";\nimport type {\n\tIInboundSignalMessage,\n\tIRuntimeMessageCollection,\n\tIRuntimeStorageService,\n} from \"./protocol.js\";\nimport type {\n\tCreateChildSummarizerNodeParam,\n\tISummarizerNodeWithGC,\n\tISummaryTreeWithStats,\n\tITelemetryContext,\n\tSummarizeInternalFn,\n} from \"./summary.js\";\n\n/**\n * Runtime flush mode handling\n * @legacy @beta\n */\nexport enum FlushMode {\n\t/**\n\t * In Immediate flush mode the runtime will immediately send all operations to the driver layer.\n\t *\n\t * @deprecated This option will be removed in the next major version and should not be used. Use {@link FlushMode.TurnBased} instead, which is the default.\n\t * See https://github.com/microsoft/FluidFramework/tree/main/packages/runtime/container-runtime/src/opLifecycle#how-batching-works\n\t */\n\tImmediate,\n\n\t/**\n\t * When in TurnBased flush mode the runtime will buffer operations in the current turn and send them as a single\n\t * batch at the end of the turn. The flush call on the runtime can be used to force send the current batch.\n\t */\n\tTurnBased,\n}\n\n/**\n * This tells the visibility state of a Fluid object. It basically tracks whether the object is not visible, visible\n * locally within the container only or visible globally to all clients.\n * @legacy @beta\n */\nexport const VisibilityState = {\n\t/**\n\t * Indicates that the object is not visible. This is the state when an object is first created.\n\t */\n\tNotVisible: \"NotVisible\",\n\n\t/**\n\t * Indicates that the object is visible locally within the container. This is the state when an object is attached\n\t * to the container's graph but the container itself isn't globally visible. The object's state goes from not\n\t * visible to locally visible.\n\t */\n\tLocallyVisible: \"LocallyVisible\",\n\n\t/**\n\t * Indicates that the object is visible globally to all clients. This is the state of an object in 2 scenarios:\n\t *\n\t * 1. It is attached to the container's graph when the container is globally visible. The object's state goes from\n\t * not visible to globally visible.\n\t *\n\t * 2. When a container becomes globally visible, all locally visible objects go from locally visible to globally\n\t * visible.\n\t */\n\tGloballyVisible: \"GloballyVisible\",\n};\n/**\n * @legacy @beta\n */\nexport type VisibilityState = (typeof VisibilityState)[keyof typeof VisibilityState];\n\n/**\n * @legacy @beta\n * @sealed\n */\nexport interface IContainerRuntimeBaseEvents extends IEvent {\n\t/**\n\t * Indicates the beginning of an incoming batch of ops\n\t * @param op - The first op in the batch. Can be inspected to learn about the sequence numbers relevant for this batch.\n\t */\n\t(event: \"batchBegin\", listener: (op: Omit<ISequencedDocumentMessage, \"contents\">) => void);\n\t/**\n\t * Indicates the end of an incoming batch of ops\n\t * @param error - If an error occurred while processing the batch, it is provided here.\n\t * @param op - The last op in the batch. Can be inspected to learn about the sequence numbers relevant for this batch.\n\t */\n\t(\n\t\tevent: \"batchEnd\",\n\t\tlistener: (error: unknown, op: Omit<ISequencedDocumentMessage, \"contents\">) => void,\n\t);\n\t/**\n\t * Indicates that an incoming op has been processed.\n\t * @param runtimeMessage - tells if op is runtime op. If it is, it was unpacked, i.e. its type and content\n\t * represent internal container runtime type / content. i.e. A grouped batch of N ops will result in N \"op\" events\n\t */\n\t(event: \"op\", listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void);\n\t(event: \"signal\", listener: (message: IInboundSignalMessage, local: boolean) => void);\n\t(event: \"dispose\", listener: () => void);\n\t/**\n\t * Fires when the container runtime enters or exits staging mode.\n\t * @param stagingModeInfo - An object describing the staging mode state.\n\t * If `inStagingMode` is true, the runtime has entered staging mode.\n\t * If false, it has exited staging mode, and `commit` indicates whether changes were committed or discarded.\n\t *\n\t * @remarks\n\t * This event is not emitted when the container is disposed while in staging mode.\n\t * If the container is disposed, staged changes are silently dropped.\n\t */\n\t(event: \"stagingModeChanged\", listener: (stagingModeInfo: StagingModeChangedEvent) => void);\n}\n\n/**\n * Encapsulates the return codes of the aliasing API.\n *\n * 'Success' - the datastore has been successfully aliased. It can now be used.\n *\n * 'Conflict' - there is already a datastore bound to the provided alias. To acquire it's entry point, use\n * the `IContainerRuntime.getAliasedDataStoreEntryPoint` function. The current datastore should be discarded\n * and will be garbage collected. The current datastore cannot be aliased to a different value.\n *\n * 'AlreadyAliased' - the datastore has already been previously bound to another alias name.\n * @legacy @beta\n */\nexport type AliasResult = \"Success\" | \"Conflict\" | \"AlreadyAliased\";\n\n/**\n * Exposes some functionality/features of a data store:\n *\n * - Handle to the data store's entryPoint\n *\n * - Fluid router for the data store\n *\n * - Can be assigned an alias\n *\n * @privateRemarks\n * TODO: These docs should define what a \"data store\" is, and not do so by just referencing \"data store\".\n *\n * @legacy @beta\n */\nexport interface IDataStore {\n\t/**\n\t * Attempt to assign an alias to the datastore.\n\t * If the operation succeeds, the datastore can be referenced\n\t * by the supplied alias and will not be garbage collected.\n\t *\n\t * @param alias - Given alias for this datastore.\n\t * @returns A promise with the {@link AliasResult}\n\t */\n\ttrySetAlias(alias: string): Promise<AliasResult>;\n\n\t/**\n\t * Exposes a handle to the root object / entryPoint of the data store. Use this as the primary way of interacting\n\t * with it.\n\t */\n\treadonly entryPoint: IFluidHandleInternal<FluidObject>;\n}\n\n/**\n * Controls for managing staged changes in staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n *\n * @see {@link IContainerRuntimeBase.enterStagingMode}\n *\n * @legacy @beta\n * @sealed\n */\nexport interface StageControls {\n\t/**\n\t * Exit staging mode and commit to any changes made while in staging mode.\n\t * This will cause them to be sent to the ordering service, and subsequent changes\n\t * made by this container will additionally flow freely to the ordering service.\n\t *\n\t * @remarks\n\t * Squash-rebase semantics during commit are not yet fully specified.\n\t */\n\treadonly commitChanges: () => void;\n\t/**\n\t * Exit staging mode and discard any changes made while in staging mode.\n\t *\n\t * @remarks\n\t * DDS rollback support may be incomplete — this may throw for some DDS implementations.\n\t */\n\treadonly discardChanges: () => void;\n}\n\n/**\n * A reduced set of functionality of {@link @fluidframework/container-runtime-definitions#IContainerRuntime} that a data store context/data store runtime will need.\n * @privateRemarks\n * TODO: this should be merged into IFluidDataStoreContext\n * @legacy @beta\n * @sealed\n */\nexport interface IContainerRuntimeBase extends IEventProvider<IContainerRuntimeBaseEvents> {\n\treadonly baseLogger: ITelemetryBaseLogger;\n\treadonly clientDetails: IClientDetails;\n\treadonly disposed: boolean;\n\n\t/**\n\t * Invokes the given callback and guarantees that all operations generated within the callback will be ordered\n\t * sequentially.\n\t *\n\t * If the callback throws an error, the container will close and the error will be logged.\n\t *\n\t * @remarks\n\t * `orderSequentially` may enter staging mode for the duration of the function. This is necessary for rolling back certain op types.\n\t */\n\torderSequentially(callback: () => void): void;\n\n\t/**\n\t * Submits a container runtime level signal to be sent to other clients.\n\t * @param type - Type of the signal.\n\t * @param content - Content of the signal. Should be a JSON serializable object or primitive.\n\t * @param targetClientId - When specified, the signal is only sent to the provided client id.\n\t */\n\tsubmitSignal: (type: string, content: unknown, targetClientId?: string) => void;\n\n\t/**\n\t * Creates a data store and returns an object that exposes a handle to the data store's entryPoint, and also serves\n\t * as the data store's router. The data store is not bound to a container, and in such state is not persisted to\n\t * storage (file). Storing the entryPoint handle (or any other handle inside the data store, e.g. for DDS) into an\n\t * already attached DDS (or non-attached DDS that will eventually get attached to storage) will result in this\n\t * store being attached to storage.\n\t * @param pkg - Package name of the data store factory\n\t * @param loadingGroupId - This represents the group of the datastore within a container or its snapshot.\n\t * When not specified the datastore will belong to a `default` group. Read more about it in this\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}\n\t */\n\tcreateDataStore(pkg: string | PackagePath, loadingGroupId?: string): Promise<IDataStore>;\n\n\t/**\n\t * Creates detached data store context. Only after context.attachRuntime() is called,\n\t * data store initialization is considered complete.\n\t * @param pkg - Package name of the data store factory\n\t * @param loadingGroupId - This represents the group of the datastore within a container or its snapshot.\n\t * When not specified the datastore will belong to a `default` group. Read more about it in this\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}.\n\t */\n\tcreateDetachedDataStore(\n\t\tpkg: readonly string[],\n\t\tloadingGroupId?: string,\n\t): IFluidDataStoreContextDetached;\n\n\t/**\n\t * Returns the aliased data store's entryPoint, given the alias.\n\t * @param alias - The alias for the data store.\n\t * @returns The data store's entry point ({@link @fluidframework/core-interfaces#IFluidHandle}) if it exists and is aliased.\n\t * Returns undefined if no data store has been assigned the given alias.\n\t */\n\tgetAliasedDataStoreEntryPoint(alias: string): Promise<IFluidHandle<FluidObject> | undefined>;\n\n\t/**\n\t * Get an absolute url for a provided container-relative request.\n\t * Returns undefined if the container or data store isn't attached to storage.\n\t * @param relativeUrl - A relative request within the container\n\t */\n\tgetAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n\tuploadBlob(\n\t\tblob: ArrayBufferLike,\n\t\tsignal?: AbortSignal,\n\t): Promise<IFluidHandle<ArrayBufferLike>>;\n\n\t/**\n\t * Returns the current quorum.\n\t */\n\tgetQuorum(): IQuorumClients;\n\n\t/**\n\t * Returns the current audience.\n\t */\n\tgetAudience(): IAudience;\n\n\t/**\n\t * Generates a new ID that is guaranteed to be unique across all sessions for this container.\n\t * It could be in compact form (non-negative integer, opportunistic), but it could also be UUID string.\n\t * UUIDs generated will have low entropy in groups and will compress well.\n\t * It can be leveraged anywhere in container where container unique IDs are required, i.e. any place\n\t * that uses uuid() and stores result in container is likely candidate to start leveraging this API.\n\t * If you always want to convert to string, instead of doing String(generateDocumentUniqueId()), consider\n\t * doing encodeCompactIdToString(generateDocumentUniqueId()).\n\t *\n\t * @see {@link @fluidframework/id-compressor#IIdCompressor.generateDocumentUniqueId}\n\t */\n\tgenerateDocumentUniqueId(): number | string;\n\n\t/**\n\t * Api to fetch the snapshot from the service for a loadingGroupIds.\n\t * @param loadingGroupIds - LoadingGroupId for which the snapshot is asked for.\n\t * @param pathParts - Parts of the path, which we want to extract from the snapshot tree.\n\t * @returns snapshotTree and the sequence number of the snapshot.\n\t */\n\tgetSnapshotForLoadingGroupId(\n\t\tloadingGroupIds: string[],\n\t\tpathParts: string[],\n\t): Promise<{ snapshotTree: ISnapshotTree; sequenceNumber: number }>;\n\n\t/**\n\t * Enter Staging Mode, such that ops submitted to the ContainerRuntime will not be sent to the ordering service.\n\t * To exit Staging Mode, call either discardChanges or commitChanges on the Stage Controls returned from this method.\n\t *\n\t * @remarks\n\t * Known limitations:\n\t * - DDS rollback support may be incomplete — {@link StageControls.discardChanges} may throw for some DDS implementations.\n\t * - Squash-rebase semantics during {@link StageControls.commitChanges} are not yet fully specified.\n\t *\n\t * @returns Controls for committing or discarding staged changes.\n\t */\n\tenterStagingMode(): StageControls;\n\n\t/**\n\t * If true, the ContainerRuntime is not submitting any new ops to the ordering service.\n\t * Ops submitted to the ContainerRuntime while in Staging Mode will be queued in the PendingStateManager,\n\t * either to be discarded or committed later (via the Stage Controls returned from enterStagingMode).\n\t * @see {@link IContainerRuntimeBase.enterStagingMode}\n\t */\n\treadonly inStagingMode: boolean;\n}\n\n/**\n * These policies can be set by the author of the data store via its data store runtime to influence behaviors.\n *\n * @remarks\n * Policies allow data store authors to define specific behaviors or constraints for their data stores.\n * These settings can impact how the data store interacts with the runtime and other components.\n *\n * @legacy @beta\n */\nexport interface IFluidDataStorePolicies {\n\t/**\n\t * When set to true, the data store will appear readonly while in staging mode.\n\t *\n\t * @remarks\n\t * In staging mode, operations are held locally until committed, so consensus-based operations\n\t * (e.g., `ConsensusRegisterCollection`, `ConsensusQueue`, `TaskManager`) won't resolve their promises until\n\t * staging mode exits. Set this to `true` for data stores that depend on consensus acknowledgments\n\t * to prevent modifications that would leave the data store in an unresponsive state.\n\t *\n\t * This provides a best-effort readonly appearance, but no strict enforcement.\n\t *\n\t * @see {@link IContainerRuntimeBase.enterStagingMode}\n\t */\n\treadonly readonlyInStagingMode: boolean;\n}\n\n/**\n * Minimal interface a data store runtime needs to provide for IFluidDataStoreContext to bind to control.\n *\n * Functionality include attach, snapshot, op/signal processing, request routes, expose an entryPoint,\n * and connection state notifications\n * @legacy @beta\n */\nexport interface IFluidDataStoreChannel extends IDisposable {\n\t/**\n\t * Optional policies that the data store channel may adhere to that the data store context should know about.\n\t * These policies influence the behavior of the data store, such as its readonly state in specific modes.\n\t */\n\treadonly policies?: IFluidDataStorePolicies;\n\n\t/**\n\t * Makes the data store channel visible in the container. Also, runs through its graph and attaches all\n\t * bound handles that represent its dependencies in the container's graph.\n\t */\n\tmakeVisibleAndAttachGraph(): void;\n\n\t/**\n\t * Synchronously retrieves the summary used as part of the initial summary message\n\t */\n\tgetAttachSummary(telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;\n\n\t/**\n\t * Synchronously retrieves GC Data (representing the outbound routes present) for the initial state of the DataStore\n\t */\n\tgetAttachGCData(telemetryContext?: ITelemetryContext): IGarbageCollectionData;\n\n\t/**\n\t * Process messages for this channel. The messages here are contiguous messages in a batch.\n\t * @param messageCollection - The collection of messages to process.\n\t */\n\tprocessMessages(messageCollection: IRuntimeMessageCollection): void;\n\n\t/**\n\t * Processes the signal.\n\t */\n\tprocessSignal(message: IInboundSignalMessage, local: boolean): void;\n\n\t/**\n\t * Generates a summary for the channel.\n\t * Introduced with summarizerNode - will be required in a future release.\n\t * @param fullTree - true to bypass optimizations and force a full summary tree.\n\t * @param trackState - This tells whether we should track state from this summary.\n\t * @param telemetryContext - summary data passed through the layers for telemetry purposes\n\t */\n\tsummarize(\n\t\tfullTree?: boolean,\n\t\ttrackState?: boolean,\n\t\ttelemetryContext?: ITelemetryContext,\n\t): Promise<ISummaryTreeWithStats>;\n\n\t/**\n\t * Returns the data used for garbage collection. This includes a list of GC nodes that represent this context\n\t * including any of its children. Each node has a list of outbound routes to other GC nodes in the document.\n\t * @param fullGC - true to bypass optimizations and force full generation of GC data.\n\t */\n\tgetGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;\n\n\t/**\n\t * After GC has run, called to notify this channel of routes that are used in it.\n\t * @param usedRoutes - The routes that are used in this channel.\n\t */\n\tupdateUsedRoutes(usedRoutes: string[]): void;\n\n\t/**\n\t * Notifies this object about changes in the connection state.\n\t * @param value - New connection state.\n\t * @param clientId - ID of the client. It's old ID when in disconnected state and\n\t * it's new client ID when we are connecting or connected.\n\t */\n\tsetConnectionState(connected: boolean, clientId?: string): void;\n\n\t/**\n\t * Notifies this object about changes in the readonly state\n\t */\n\tnotifyReadOnlyState?(readonly: boolean): void;\n\n\t/**\n\t * Ask the DDS to resubmit a message. This can happen for several reasons, such as:\n\t *\n\t * - We reconnected and discovered the original message was never acked.\n\t * - The original message was submitted from a reentrant state that is impossible for other clients to interpret correctly\n\t * - The original message was never sent on the wire and subsequent ops have been inbounded\n\t * @param type - The type of the original message.\n\t * @param content - The content of the original message.\n\t * @param localOpMetadata - The local metadata associated with the original message.\n\t * @param squash - If true, the DDS should avoid resubmitting any \"unnecessary intermediate state\" created by this message.\n\t * This includes any content which this message created but has since been changed or removed by subsequent messages.\n\t * For example, if this message (call it A) inserts content into a DDS that a subsequent op (call it B) removes,\n\t * resubmission of this message (call it A') should avoid inserting that content, and resubmission of the subsequent op that removed it (B') would\n\t * account for the fact that A' never inserted content.\n\t *\n\t * @privateRemarks\n\t * See remarks about squashing contract on `CommitStagedChangesOptionsExperimental`.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treSubmit(type: string, content: any, localOpMetadata: unknown, squash: boolean): void;\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\tapplyStashedOp(content: any): Promise<unknown>;\n\n\t/**\n\t * Revert a local message.\n\t * @param type - The type of the original message.\n\t * @param content - The content of the original message.\n\t * @param localOpMetadata - The local metadata associated with the original message.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\trollback?(type: string, content: any, localOpMetadata: unknown): void;\n\n\t/**\n\t * Exposes a handle to the root object / entryPoint of the component. Use this as the primary way of interacting\n\t * with the component.\n\t */\n\treadonly entryPoint: IFluidHandleInternal<FluidObject>;\n\n\trequest(request: IRequest): Promise<IResponse>;\n\n\tsetAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;\n}\n\n/**\n * Describes a staging mode transition on the container runtime.\n * - `{ inStagingMode: true }` — the runtime has entered staging mode.\n *\n * - `{ inStagingMode: false, commit: boolean }` — the runtime has exited staging mode.\n * `commit` is `true` when staged changes were committed (not discarded), or `false` when they were discarded.\n *\n * @legacy @beta\n */\nexport type StagingModeChangedEvent =\n\t| { readonly inStagingMode: true }\n\t| { readonly inStagingMode: false; readonly commit: boolean };\n\n/**\n * @legacy @beta\n */\nexport type CreateChildSummarizerNodeFn = (\n\tsummarizeInternal: SummarizeInternalFn,\n\tgetGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>,\n\t/**\n\t * @deprecated The functionality to get base GC details has been moved to summarizer node.\n\t */\n\tgetBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>,\n) => ISummarizerNodeWithGC;\n\n/**\n * The state maintained for messages that are received when a channel isn't yet loaded.\n * @internal\n */\nexport interface IPendingMessagesState {\n\tmessageCollections: IRuntimeMessageCollection[];\n\tpendingCount: number;\n}\n\n/**\n * Context for an {@link IDataStore} like object.\n * @remarks\n * This context does NOT represent common information provided to all channels under a specific parent.\n * Each implementation of {@link IFluidDataStoreChannel} will receive its own instance of this context that contains specifically the data it needs.\n *\n * This layout is temporary, as {@link IFluidParentContext} and {@link IFluidDataStoreContext} will converge.\n * Therefore the semantics of these two interfaces is not really distinct.\n *\n * @privateRemarks\n * In addition to the use for datastores via IFluidDataStoreContext, this is\n * partially implemented by ContainerRuntime to provide context to the ChannelCollection.\n *\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidParentContext\n\textends IProvideFluidHandleContext,\n\t\tPartial<IProvideFluidDataStoreRegistry> {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treadonly options: Record<string | number, any>;\n\treadonly clientId: string | undefined;\n\treadonly connected: boolean;\n\t/**\n\t * Indicates if the parent context is readonly. If isReadOnly is true, the consumer of\n\t * the context should also consider themselves readonly.\n\t */\n\treadonly isReadOnly?: () => boolean;\n\t/**\n\t * Minimum version of the FF runtime that is required to collaborate on new documents.\n\t * Consumed by {@link @fluidframework/container-runtime#FluidDataStoreContext}.\n\t * See {@link @fluidframework/container-runtime#LoadContainerRuntimeParams.minVersionForCollab} for more details.\n\t */\n\treadonly minVersionForCollab: MinimumVersionForCollab;\n\treadonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;\n\treadonly storage: IRuntimeStorageService;\n\treadonly baseLogger: ITelemetryBaseLogger;\n\treadonly clientDetails: IClientDetails;\n\treadonly idCompressor?: IIdCompressor;\n\t/**\n\t * Represents the loading group to which the data store belongs to. Please refer to this readme for more context.\n\t * {@link https://github.com/microsoft/FluidFramework/blob/main/packages/runtime/container-runtime/README.md | README}\n\t */\n\treadonly loadingGroupId?: string;\n\t/**\n\t * Indicates the attachment state of the data store to a host service.\n\t */\n\treadonly attachState: AttachState;\n\n\treadonly containerRuntime: IContainerRuntimeBase;\n\n\t/**\n\t * Ambient services provided with the context\n\t */\n\treadonly scope: FluidObject;\n\n\t/**\n\t * @deprecated this functionality has been removed.\n\t */\n\treadonly gcThrowOnTombstoneUsage: boolean;\n\t/**\n\t * @deprecated this functionality has been removed.\n\t */\n\treadonly gcTombstoneEnforcementAllowed: boolean;\n\n\t/**\n\t * Returns the current quorum.\n\t */\n\tgetQuorum(): IQuorumClients;\n\n\t/**\n\t * Returns the current audience.\n\t */\n\tgetAudience(): IAudience;\n\n\t/**\n\t * Submits the message to be sent to other clients.\n\t * @param type - Type of the message.\n\t * @param content - Content of the message.\n\t * @param localOpMetadata - The local metadata associated with the message. This is kept locally and not sent to\n\t * the server. This will be sent back when this message is received back from the server. This is also sent if\n\t * we are asked to resubmit the message.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\tsubmitMessage(type: string, content: any, localOpMetadata: unknown): void;\n\n\t/**\n\t * Submits the signal to be sent to other clients.\n\t * @param type - Type of the signal.\n\t * @param content - Content of the signal. Should be an {@link IEnvelope} with `contents` that is a JSON\n\t * serializable object or primitive.\n\t * @param targetClientId - When specified, the signal is only sent to the provided client id.\n\t */\n\tsubmitSignal: (type: string, content: unknown, targetClientId?: string) => void;\n\n\t/**\n\t * Called to make the data store locally visible in the container. This happens automatically for root data stores\n\t * when they are marked as root. For non-root data stores, this happens when their handle is added to a visible DDS.\n\t */\n\tmakeLocallyVisible(): void;\n\n\t/**\n\t * Get an absolute url to the container based on the provided relativeUrl.\n\t * Returns undefined if the container or data store isn't attached to storage.\n\t * @param relativeUrl - A relative request within the container\n\t */\n\tgetAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;\n\n\tgetCreateChildSummarizerNodeFn(\n\t\t/**\n\t\t * Initial id or path part of this node\n\t\t */\n\t\tid: string,\n\t\t/**\n\t\t * Information needed to create the node.\n\t\t * If it is from a base summary, it will assert that a summary has been seen.\n\t\t * Attach information if it is created from an attach op.\n\t\t * If it is local, it will throw unsupported errors on calls to summarize.\n\t\t */\n\t\tcreateParam: CreateChildSummarizerNodeParam,\n\t): CreateChildSummarizerNodeFn;\n\n\tdeleteChildSummarizerNode(id: string): void;\n\n\tuploadBlob(\n\t\tblob: ArrayBufferLike,\n\t\tsignal?: AbortSignal,\n\t): Promise<IFluidHandleInternal<ArrayBufferLike>>;\n\n\t/**\n\t * Called by IFluidDataStoreChannel, indicates that a channel is dirty and needs to be part of the summary.\n\t * @param address - The address of the channel that is dirty.\n\t */\n\tsetChannelDirty(address: string): void;\n\n\t/**\n\t * Called when a new outbound reference is added to another node. This is used by garbage collection to identify\n\t * all references added in the system.\n\t *\n\t * @param fromPath - The absolute path of the node that added the reference.\n\t * @param toPath - The absolute path of the outbound node that is referenced.\n\t * @param messageTimestampMs - The timestamp of the message that added the reference.\n\t */\n\taddedGCOutboundRoute(fromPath: string, toPath: string, messageTimestampMs?: number): void;\n}\n\n/**\n * A path which selects a {@link (IFluidDataStoreFactory:interface)} within a hierarchial registry.\n * @remarks\n * Each string in the array is the \"identifier\" to pick a specific {@link NamedFluidDataStoreRegistryEntry2} within a {@link NamedFluidDataStoreRegistryEntries}.\n *\n * Due to some usages joining this array with \"/\", it is recommended to avoid using \"/\" in the strings.\n * @legacy @beta\n */\nexport type PackagePath = readonly string[];\n\n/**\n * Extension to {@link IFluidParentContext} specifically for {@link IDataStore}s.\n *\n * @remarks\n * This context is provided to the implementation of {@link IFluidDataStoreChannel} which powers the datastore.\n *\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidDataStoreContext extends IFluidParentContext {\n\treadonly id: string;\n\t/**\n\t * A data store created by a client, is a local data store for that client. Also, when a detached container loads\n\t * from a snapshot, all the data stores are treated as local data stores because at that stage the container\n\t * still doesn't exists in storage and so the data store couldn't have been created by any other client.\n\t * Value of this never changes even after the data store is attached.\n\t * As implementer of data store runtime, you can use this property to check that this data store belongs to this\n\t * client and hence implement any scenario based on that.\n\t */\n\treadonly isLocalDataStore: boolean;\n\t/**\n\t * The {@link PackagePath} of the data store as per the package factory.\n\t * @remarks\n\t * This defines what {@link (IFluidDataStoreFactory:interface)} would be used to create the {@link IDataStore.entryPoint} of the {@link IDataStore}.\n\t */\n\treadonly packagePath: PackagePath;\n\treadonly baseSnapshot: ISnapshotTree | undefined;\n\n\t/**\n\t * @deprecated 0.16 Issue #1635, #3631\n\t */\n\t// Seems like this can be removed now; the issues mentioned in the @deprecated tag are about _createDataStoreWithProps\n\t// which we finally removed in FF 2.20 (https://github.com/microsoft/FluidFramework/pull/22996).\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO (#28746): breaking change\n\treadonly createProps?: any;\n\n\t/**\n\t * @deprecated The functionality to get base GC details has been moved to summarizer node.\n\t *\n\t * Returns the GC details in the initial summary of this data store. This is used to initialize the data store\n\t * and its children with the GC details from the previous summary.\n\t */\n\tgetBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;\n\n\t/**\n\t * Synchronously creates a detached child data store.\n\t *\n\t * The `createChildDataStore` method allows for the synchronous creation of a detached child data store. This is particularly\n\t * useful in scenarios where immediate availability of the child data store is required, such as during the initialization\n\t * of a parent data store, or when creation is in response to synchronous user input.\n\t *\n\t * In order for this function to succeed:\n\t * 1. The parent data store's factory must also be an `IFluidDataStoreRegistry`.\n\t * 2. The parent data store's registry must include the same instance as the provided child factory.\n\t * 3. The parent data store's registry must synchronously provide the child factory via the `getSync` method.\n\t * 4. The child factory must implement the `createDataStore` method.\n\t *\n\t * These invariants ensure that the child data store can also be created by a remote client running the same code as this client.\n\t *\n\t * @param childFactory - The factory of the data store to be created.\n\t * @returns The created data store channel.\n\t */\n\tcreateChildDataStore?<T extends IFluidDataStoreFactory>(\n\t\tchildFactory: T,\n\t): ReturnType<Exclude<T[\"createDataStore\"], undefined>>;\n}\n\n/**\n * Internal extension to {@link IFluidDataStoreContext} for use across FluidFramework packages.\n *\n * @remarks\n * Important: this interface does cross layer boundaries and must follow `@legacy`\n * layer compatibility patterns.\n * This is meant to be a staging ground ahead of adding properties to {@link IFluidDataStoreContext}.\n *\n * @internal\n */\nexport interface FluidDataStoreContextInternal\n\textends IFluidDataStoreContext,\n\t\tContainerExtensionProvider {}\n\n/**\n * @legacy @beta\n * @sealed\n */\nexport interface IFluidDataStoreContextDetached extends IFluidDataStoreContext {\n\t/**\n\t * Binds a runtime to the context.\n\t */\n\tattachRuntime(\n\t\tfactory: IProvideFluidDataStoreFactory,\n\t\tdataStoreRuntime: IFluidDataStoreChannel,\n\t): Promise<IDataStore>;\n}\n"]}

@@ -7,3 +7,3 @@ /*!

export type { ContainerExtensionId, ContainerExtensionProvider, ContainerExtensionExpectations, ExtensionCompatibilityDetails, UnknownExtensionInstantiation, } from "./containerExtensionProvider.js";
export type { AliasResult, CreateChildSummarizerNodeFn, FluidDataStoreContextInternal, IContainerRuntimeBase, IContainerRuntimeBaseEvents, IDataStore, IFluidDataStoreChannel, IFluidDataStorePolicies, IFluidDataStoreContext, IFluidParentContext, IFluidDataStoreContextDetached, IPendingMessagesState, PackagePath, } from "./dataStoreContext.js";
export type { AliasResult, CreateChildSummarizerNodeFn, FluidDataStoreContextInternal, IContainerRuntimeBase, IContainerRuntimeBaseEvents, IDataStore, IFluidDataStoreChannel, IFluidDataStorePolicies, IFluidDataStoreContext, IFluidParentContext, IFluidDataStoreContextDetached, IPendingMessagesState, PackagePath, StageControls, StagingModeChangedEvent, } from "./dataStoreContext.js";
export { FlushMode, VisibilityState } from "./dataStoreContext.js";

@@ -10,0 +10,0 @@ export type { IProvideFluidDataStoreFactory } from "./dataStoreFactory.js";

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACX,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,GAC7B,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACX,WAAW,EACX,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,2BAA2B,EAC3B,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,qBAAqB,EACrB,WAAW,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EACX,2BAA2B,EAC3B,8BAA8B,EAC9B,kCAAkC,EAClC,gCAAgC,EAChC,iCAAiC,GACjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EACX,sBAAsB,EACtB,6BAA6B,GAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACN,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,GACT,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACX,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,GACrB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACX,8BAA8B,EAC9B,sCAAsC,EACtC,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,GACzB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,EACN,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,aAAa,GACb,MAAM,kBAAkB,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACX,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,GAC7B,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACX,WAAW,EACX,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,2BAA2B,EAC3B,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,uBAAuB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EACX,2BAA2B,EAC3B,8BAA8B,EAC9B,kCAAkC,EAClC,gCAAgC,EAChC,iCAAiC,GACjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EACX,sBAAsB,EACtB,6BAA6B,GAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACN,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,GACT,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACX,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,GACrB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACX,8BAA8B,EAC9B,sCAAsC,EACtC,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,GACzB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,EACN,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,aAAa,GACb,MAAM,kBAAkB,CAAC"}

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+BH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQ/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAKjE,OAAO,EACN,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,GACT,MAAM,mCAAmC,CAAC;AAY3C,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,GACrB,MAAM,qCAAqC,CAAC;AAgB7C,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,GACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAMN,aAAa,GACb,MAAM,kBAAkB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type {\n\tAttributionInfo,\n\tAttributionKey,\n\tDetachedAttributionKey,\n\tLocalAttributionKey,\n\tOpAttributionKey,\n} from \"./attribution.js\";\nexport type {\n\tContainerExtensionId,\n\tContainerExtensionProvider,\n\tContainerExtensionExpectations,\n\tExtensionCompatibilityDetails,\n\tUnknownExtensionInstantiation,\n} from \"./containerExtensionProvider.js\";\nexport type {\n\tAliasResult,\n\tCreateChildSummarizerNodeFn,\n\tFluidDataStoreContextInternal,\n\tIContainerRuntimeBase,\n\tIContainerRuntimeBaseEvents,\n\tIDataStore,\n\tIFluidDataStoreChannel,\n\tIFluidDataStorePolicies,\n\tIFluidDataStoreContext,\n\tIFluidParentContext,\n\tIFluidDataStoreContextDetached,\n\tIPendingMessagesState,\n\tPackagePath,\n} from \"./dataStoreContext.js\";\nexport { FlushMode, VisibilityState } from \"./dataStoreContext.js\";\nexport type { IProvideFluidDataStoreFactory } from \"./dataStoreFactory.js\";\nexport { IFluidDataStoreFactory } from \"./dataStoreFactory.js\";\nexport type {\n\tFluidDataStoreRegistryEntry,\n\tIProvideFluidDataStoreRegistry,\n\tNamedFluidDataStoreRegistryEntries,\n\tNamedFluidDataStoreRegistryEntry,\n\tNamedFluidDataStoreRegistryEntry2,\n} from \"./dataStoreRegistry.js\";\nexport { IFluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nexport type {\n\tIGarbageCollectionData,\n\tIGarbageCollectionDetailsBase,\n} from \"./garbageCollectionDefinitions.js\";\nexport {\n\tgcBlobPrefix,\n\tgcDataBlobKey,\n\tgcDeletedBlobKey,\n\tgcTombstoneBlobKey,\n\tgcTreeKey,\n} from \"./garbageCollectionDefinitions.js\";\nexport type {\n\tFluidDataStoreMessage,\n\tIAttachMessage,\n\tIEnvelope,\n\tIInboundSignalMessage,\n\tInboundAttachMessage,\n\tIRuntimeMessageCollection,\n\tIRuntimeMessagesContent,\n\tISequencedMessageEnvelope,\n\tIRuntimeStorageService,\n} from \"./protocol.js\";\nexport {\n\tencodeHandlesInContainerRuntime,\n\tnotifiesReadOnlyState,\n} from \"./runtimeLayerCompatFeatureNames.js\";\nexport type {\n\tCreateChildSummarizerNodeParam,\n\tIExperimentalIncrementalSummaryContext,\n\tISummarizeInternalResult,\n\tISummarizeResult,\n\tISummarizerNode,\n\tISummarizerNodeConfig,\n\tISummarizerNodeConfigWithGC,\n\tISummarizerNodeWithGC,\n\tISummaryStats,\n\tISummaryTreeWithStats,\n\tITelemetryContext,\n\tITelemetryContextExt,\n\tSummarizeInternalFn,\n} from \"./summary.js\";\nexport {\n\tblobCountPropertyName,\n\tchannelsTreeName,\n\tCreateSummarizerNodeSource,\n\tcurrentSummarizeStepPrefix,\n\tcurrentSummarizeStepPropertyName,\n\ttotalBlobSizePropertyName,\n} from \"./summary.js\";\nexport type { MinimumVersionForCollab } from \"./compatibilityDefinitions.js\";\n\nexport {\n\ttype ContainerRuntimeBaseAlpha,\n\ttype StageControlsAlpha,\n\ttype CommitStagedChangesOptionsInternal,\n\ttype IContainerRuntimeBaseInternal,\n\ttype StageControlsInternal,\n\tasLegacyAlpha,\n} from \"./stagingMode.js\";\n"]}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQ/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAKjE,OAAO,EACN,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,GACT,MAAM,mCAAmC,CAAC;AAY3C,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,GACrB,MAAM,qCAAqC,CAAC;AAgB7C,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,GACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAMN,aAAa,GACb,MAAM,kBAAkB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type {\n\tAttributionInfo,\n\tAttributionKey,\n\tDetachedAttributionKey,\n\tLocalAttributionKey,\n\tOpAttributionKey,\n} from \"./attribution.js\";\nexport type {\n\tContainerExtensionId,\n\tContainerExtensionProvider,\n\tContainerExtensionExpectations,\n\tExtensionCompatibilityDetails,\n\tUnknownExtensionInstantiation,\n} from \"./containerExtensionProvider.js\";\nexport type {\n\tAliasResult,\n\tCreateChildSummarizerNodeFn,\n\tFluidDataStoreContextInternal,\n\tIContainerRuntimeBase,\n\tIContainerRuntimeBaseEvents,\n\tIDataStore,\n\tIFluidDataStoreChannel,\n\tIFluidDataStorePolicies,\n\tIFluidDataStoreContext,\n\tIFluidParentContext,\n\tIFluidDataStoreContextDetached,\n\tIPendingMessagesState,\n\tPackagePath,\n\tStageControls,\n\tStagingModeChangedEvent,\n} from \"./dataStoreContext.js\";\nexport { FlushMode, VisibilityState } from \"./dataStoreContext.js\";\nexport type { IProvideFluidDataStoreFactory } from \"./dataStoreFactory.js\";\nexport { IFluidDataStoreFactory } from \"./dataStoreFactory.js\";\nexport type {\n\tFluidDataStoreRegistryEntry,\n\tIProvideFluidDataStoreRegistry,\n\tNamedFluidDataStoreRegistryEntries,\n\tNamedFluidDataStoreRegistryEntry,\n\tNamedFluidDataStoreRegistryEntry2,\n} from \"./dataStoreRegistry.js\";\nexport { IFluidDataStoreRegistry } from \"./dataStoreRegistry.js\";\nexport type {\n\tIGarbageCollectionData,\n\tIGarbageCollectionDetailsBase,\n} from \"./garbageCollectionDefinitions.js\";\nexport {\n\tgcBlobPrefix,\n\tgcDataBlobKey,\n\tgcDeletedBlobKey,\n\tgcTombstoneBlobKey,\n\tgcTreeKey,\n} from \"./garbageCollectionDefinitions.js\";\nexport type {\n\tFluidDataStoreMessage,\n\tIAttachMessage,\n\tIEnvelope,\n\tIInboundSignalMessage,\n\tInboundAttachMessage,\n\tIRuntimeMessageCollection,\n\tIRuntimeMessagesContent,\n\tISequencedMessageEnvelope,\n\tIRuntimeStorageService,\n} from \"./protocol.js\";\nexport {\n\tencodeHandlesInContainerRuntime,\n\tnotifiesReadOnlyState,\n} from \"./runtimeLayerCompatFeatureNames.js\";\nexport type {\n\tCreateChildSummarizerNodeParam,\n\tIExperimentalIncrementalSummaryContext,\n\tISummarizeInternalResult,\n\tISummarizeResult,\n\tISummarizerNode,\n\tISummarizerNodeConfig,\n\tISummarizerNodeConfigWithGC,\n\tISummarizerNodeWithGC,\n\tISummaryStats,\n\tISummaryTreeWithStats,\n\tITelemetryContext,\n\tITelemetryContextExt,\n\tSummarizeInternalFn,\n} from \"./summary.js\";\nexport {\n\tblobCountPropertyName,\n\tchannelsTreeName,\n\tCreateSummarizerNodeSource,\n\tcurrentSummarizeStepPrefix,\n\tcurrentSummarizeStepPropertyName,\n\ttotalBlobSizePropertyName,\n} from \"./summary.js\";\nexport type { MinimumVersionForCollab } from \"./compatibilityDefinitions.js\";\n\nexport {\n\ttype ContainerRuntimeBaseAlpha,\n\ttype StageControlsAlpha,\n\ttype CommitStagedChangesOptionsInternal,\n\ttype IContainerRuntimeBaseInternal,\n\ttype StageControlsInternal,\n\tasLegacyAlpha,\n} from \"./stagingMode.js\";\n"]}

@@ -64,2 +64,4 @@ /*!

PackagePath,
StageControls,
StagingModeChangedEvent,
SummarizeInternalFn,

@@ -66,0 +68,0 @@ VisibilityState

@@ -64,2 +64,4 @@ /*!

PackagePath,
StageControls,
StagingModeChangedEvent,
SummarizeInternalFn,

@@ -66,0 +68,0 @@ VisibilityState,

@@ -5,3 +5,3 @@ /*!

*/
import type { IContainerRuntimeBase } from "./dataStoreContext.js";
import type { IContainerRuntimeBase, StageControls } from "./dataStoreContext.js";
/**

@@ -34,3 +34,3 @@ * Options for committing staged changes in experimental staging mode.

*/
export interface StageControlsInternal extends StageControlsAlpha {
export interface StageControlsInternal extends StageControls {
/**

@@ -45,26 +45,7 @@ * Exit staging mode and commit to any changes made while in staging mode.

/**
* Controls for managing staged changes in alpha staging mode.
*
* Provides methods to either commit or discard changes made while in staging mode.
*
* @legacy @alpha
* @sealed
*/
export interface StageControlsAlpha {
/**
* Exit staging mode and commit to any changes made while in staging mode.
* This will cause them to be sent to the ordering service, and subsequent changes
* made by this container will additionally flow freely to the ordering service.
*/
readonly commitChanges: () => void;
/**
* Exit staging mode and discard any changes made while in staging mode.
*/
readonly discardChanges: () => void;
}
/**
* Experimental extension of {@link IContainerRuntimeBase} to support staging mode.
* Internal extension of {@link IContainerRuntimeBase} whose {@link IContainerRuntimeBaseInternal.enterStagingMode}
* returns {@link StageControlsInternal} (which exposes internal commit options such as squash)
* @internal
*/
export interface IContainerRuntimeBaseInternal extends ContainerRuntimeBaseAlpha {
export interface IContainerRuntimeBaseInternal extends IContainerRuntimeBase {
/**

@@ -77,17 +58,21 @@ * Enters staging mode, allowing changes to be staged before being committed or discarded.

/**
* Alpha interface for container runtime base supporting staging mode.
* Controls for managing staged changes in alpha staging mode.
*
* Provides methods to either commit or discard changes made while in staging mode.
*
* @deprecated Use {@link StageControls} (beta) instead.
* @legacy @alpha
* @sealed
*/
export interface StageControlsAlpha extends StageControls {
}
/**
* Alpha extension of {@link IContainerRuntimeBase} that exposes alpha-level APIs.
*
* @remarks Use {@link asLegacyAlpha} to obtain an instance from an {@link IContainerRuntimeBase}.
*
* @legacy @alpha
* @sealed
*/
export interface ContainerRuntimeBaseAlpha extends IContainerRuntimeBase {
/**
* Enters staging mode, allowing changes to be staged before being committed or discarded.
* @returns Controls for committing or discarding staged changes.
*/
enterStagingMode(): StageControlsAlpha;
/**
* Indicates whether the container is currently in staging mode.
*/
readonly inStagingMode: boolean;
}

@@ -94,0 +79,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"stagingMode.d.ts","sourceRoot":"","sources":["../src/stagingMode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IAClD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAChE;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kCAAkC,CAAC,KAAK,IAAI,CAAC;CACxF;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;IACnC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC/E;;;OAGG;IACH,gBAAgB,IAAI,qBAAqB,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;IACvE;;;OAGG;IACH,gBAAgB,IAAI,kBAAkB,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,yBAAyB,CAEpF"}
{"version":3,"file":"stagingMode.d.ts","sourceRoot":"","sources":["../src/stagingMode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAElF;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IAClD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC3D;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kCAAkC,CAAC,KAAK,IAAI,CAAC;CACxF;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC3E;;;OAGG;IACH,gBAAgB,IAAI,qBAAqB,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;CAAG;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;CAAG;AAE3E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,yBAAyB,CAEpF"}

@@ -1,1 +0,1 @@

{"version":3,"file":"stagingMode.js","sourceRoot":"","sources":["../src/stagingMode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6FH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAA2B;IACxD,OAAO,IAAiC,CAAC;AAC1C,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IContainerRuntimeBase } from \"./dataStoreContext.js\";\n\n/**\n * Options for committing staged changes in experimental staging mode.\n * @internal\n */\nexport interface CommitStagedChangesOptionsInternal {\n\t/**\n\t * If true, intermediate states created by changes made while in staging mode will be \"squashed\" out of the\n\t * ops which were created during staging mode.\n\t * Defaults to false.\n\t * @remarks\n\t * The squash parameter is analogous to `git squash` but differs in a notable way: ops created by a client exiting staging mode\n\t * are not necessarily coalesced into a single op or something like it.\n\t * It still does have the desirable property that \"unnecessary changes\" (such as inserting some content then removing it) will\n\t * be removed from the set of submitted ops, which means it helps reduce network traffic and the chance of unwanted data being\n\t * persisted--even if only temporarily--in the document.\n\t *\n\t * By not attempting to reduce the set of changes to a single op a la `git squash`, we can better preserve the ordering of\n\t * changes that remote clients see such that they better align with the client which submitted the changes.\n\t */\n\tsquash?: boolean;\n}\n\n/**\n * Controls for managing staged changes in experimental staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n * @internal\n */\nexport interface StageControlsInternal extends StageControlsAlpha {\n\t/**\n\t * Exit staging mode and commit to any changes made while in staging mode.\n\t * This will cause them to be sent to the ordering service, and subsequent changes\n\t * made by this container will additionally flow freely to the ordering service.\n\t * @param options - Options when committing changes.\n\t */\n\treadonly commitChanges: (options?: Partial<CommitStagedChangesOptionsInternal>) => void;\n}\n\n/**\n * Controls for managing staged changes in alpha staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n *\n * @legacy @alpha\n * @sealed\n */\nexport interface StageControlsAlpha {\n\t/**\n\t * Exit staging mode and commit to any changes made while in staging mode.\n\t * This will cause them to be sent to the ordering service, and subsequent changes\n\t * made by this container will additionally flow freely to the ordering service.\n\t */\n\treadonly commitChanges: () => void;\n\t/**\n\t * Exit staging mode and discard any changes made while in staging mode.\n\t */\n\treadonly discardChanges: () => void;\n}\n\n/**\n * Experimental extension of {@link IContainerRuntimeBase} to support staging mode.\n * @internal\n */\nexport interface IContainerRuntimeBaseInternal extends ContainerRuntimeBaseAlpha {\n\t/**\n\t * Enters staging mode, allowing changes to be staged before being committed or discarded.\n\t * @returns Controls for committing or discarding staged changes.\n\t */\n\tenterStagingMode(): StageControlsInternal;\n}\n\n/**\n * Alpha interface for container runtime base supporting staging mode.\n *\n * @legacy @alpha\n * @sealed\n */\nexport interface ContainerRuntimeBaseAlpha extends IContainerRuntimeBase {\n\t/**\n\t * Enters staging mode, allowing changes to be staged before being committed or discarded.\n\t * @returns Controls for committing or discarding staged changes.\n\t */\n\tenterStagingMode(): StageControlsAlpha;\n\t/**\n\t * Indicates whether the container is currently in staging mode.\n\t */\n\treadonly inStagingMode: boolean;\n}\n\n/**\n * Converts types to their alpha counterparts to expose alpha functionality.\n * @legacy @alpha\n * @sealed\n */\nexport function asLegacyAlpha(base: IContainerRuntimeBase): ContainerRuntimeBaseAlpha {\n\treturn base as ContainerRuntimeBaseAlpha;\n}\n"]}
{"version":3,"file":"stagingMode.js","sourceRoot":"","sources":["../src/stagingMode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4EH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAA2B;IACxD,OAAO,IAAiC,CAAC;AAC1C,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { IContainerRuntimeBase, StageControls } from \"./dataStoreContext.js\";\n\n/**\n * Options for committing staged changes in experimental staging mode.\n * @internal\n */\nexport interface CommitStagedChangesOptionsInternal {\n\t/**\n\t * If true, intermediate states created by changes made while in staging mode will be \"squashed\" out of the\n\t * ops which were created during staging mode.\n\t * Defaults to false.\n\t * @remarks\n\t * The squash parameter is analogous to `git squash` but differs in a notable way: ops created by a client exiting staging mode\n\t * are not necessarily coalesced into a single op or something like it.\n\t * It still does have the desirable property that \"unnecessary changes\" (such as inserting some content then removing it) will\n\t * be removed from the set of submitted ops, which means it helps reduce network traffic and the chance of unwanted data being\n\t * persisted--even if only temporarily--in the document.\n\t *\n\t * By not attempting to reduce the set of changes to a single op a la `git squash`, we can better preserve the ordering of\n\t * changes that remote clients see such that they better align with the client which submitted the changes.\n\t */\n\tsquash?: boolean;\n}\n\n/**\n * Controls for managing staged changes in experimental staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n * @internal\n */\nexport interface StageControlsInternal extends StageControls {\n\t/**\n\t * Exit staging mode and commit to any changes made while in staging mode.\n\t * This will cause them to be sent to the ordering service, and subsequent changes\n\t * made by this container will additionally flow freely to the ordering service.\n\t * @param options - Options when committing changes.\n\t */\n\treadonly commitChanges: (options?: Partial<CommitStagedChangesOptionsInternal>) => void;\n}\n\n/**\n * Internal extension of {@link IContainerRuntimeBase} whose {@link IContainerRuntimeBaseInternal.enterStagingMode}\n * returns {@link StageControlsInternal} (which exposes internal commit options such as squash)\n * @internal\n */\nexport interface IContainerRuntimeBaseInternal extends IContainerRuntimeBase {\n\t/**\n\t * Enters staging mode, allowing changes to be staged before being committed or discarded.\n\t * @returns Controls for committing or discarding staged changes.\n\t */\n\tenterStagingMode(): StageControlsInternal;\n}\n\n/**\n * Controls for managing staged changes in alpha staging mode.\n *\n * Provides methods to either commit or discard changes made while in staging mode.\n *\n * @deprecated Use {@link StageControls} (beta) instead.\n * @legacy @alpha\n * @sealed\n */\nexport interface StageControlsAlpha extends StageControls {}\n\n/**\n * Alpha extension of {@link IContainerRuntimeBase} that exposes alpha-level APIs.\n *\n * @remarks Use {@link asLegacyAlpha} to obtain an instance from an {@link IContainerRuntimeBase}.\n *\n * @legacy @alpha\n * @sealed\n */\nexport interface ContainerRuntimeBaseAlpha extends IContainerRuntimeBase {}\n\n/**\n * Converts types to their alpha counterparts to expose alpha functionality.\n * @legacy @alpha\n * @sealed\n */\nexport function asLegacyAlpha(base: IContainerRuntimeBase): ContainerRuntimeBaseAlpha {\n\treturn base as ContainerRuntimeBaseAlpha;\n}\n"]}
{
"name": "@fluidframework/runtime-definitions",
"version": "2.93.0",
"version": "2.100.0",
"description": "Fluid Runtime definitions",

@@ -70,8 +70,8 @@ "homepage": "https://fluidframework.com",

"dependencies": {
"@fluid-internal/client-utils": "~2.93.0",
"@fluidframework/container-definitions": "~2.93.0",
"@fluidframework/core-interfaces": "~2.93.0",
"@fluidframework/driver-definitions": "~2.93.0",
"@fluidframework/id-compressor": "~2.93.0",
"@fluidframework/telemetry-utils": "~2.93.0"
"@fluid-internal/client-utils": "~2.100.0",
"@fluidframework/container-definitions": "~2.100.0",
"@fluidframework/core-interfaces": "~2.100.0",
"@fluidframework/driver-definitions": "~2.100.0",
"@fluidframework/id-compressor": "~2.100.0",
"@fluidframework/telemetry-utils": "~2.100.0"
},

@@ -81,5 +81,5 @@ "devDependencies": {

"@biomejs/biome": "~2.4.5",
"@fluid-tools/build-cli": "^0.64.0",
"@fluid-tools/build-cli": "^0.65.0",
"@fluidframework/build-common": "^2.0.3",
"@fluidframework/build-tools": "^0.64.0",
"@fluidframework/build-tools": "^0.65.0",
"@fluidframework/eslint-config-fluid": "^9.0.0",

@@ -86,0 +86,0 @@ "@fluidframework/runtime-definitions-previous": "npm:@fluidframework/runtime-definitions@2.92.0",

@@ -135,2 +135,13 @@ /*!

(event: "dispose", listener: () => void);
/**
* Fires when the container runtime enters or exits staging mode.
* @param stagingModeInfo - An object describing the staging mode state.
* If `inStagingMode` is true, the runtime has entered staging mode.
* If false, it has exited staging mode, and `commit` indicates whether changes were committed or discarded.
*
* @remarks
* This event is not emitted when the container is disposed while in staging mode.
* If the container is disposed, staged changes are silently dropped.
*/
(event: "stagingModeChanged", listener: (stagingModeInfo: StagingModeChangedEvent) => void);
}

@@ -185,2 +196,31 @@

/**
* Controls for managing staged changes in staging mode.
*
* Provides methods to either commit or discard changes made while in staging mode.
*
* @see {@link IContainerRuntimeBase.enterStagingMode}
*
* @legacy @beta
* @sealed
*/
export interface StageControls {
/**
* Exit staging mode and commit to any changes made while in staging mode.
* This will cause them to be sent to the ordering service, and subsequent changes
* made by this container will additionally flow freely to the ordering service.
*
* @remarks
* Squash-rebase semantics during commit are not yet fully specified.
*/
readonly commitChanges: () => void;
/**
* Exit staging mode and discard any changes made while in staging mode.
*
* @remarks
* DDS rollback support may be incomplete — this may throw for some DDS implementations.
*/
readonly discardChanges: () => void;
}
/**
* A reduced set of functionality of {@link @fluidframework/container-runtime-definitions#IContainerRuntime} that a data store context/data store runtime will need.

@@ -295,2 +335,23 @@ * @privateRemarks

): Promise<{ snapshotTree: ISnapshotTree; sequenceNumber: number }>;
/**
* Enter Staging Mode, such that ops submitted to the ContainerRuntime will not be sent to the ordering service.
* To exit Staging Mode, call either discardChanges or commitChanges on the Stage Controls returned from this method.
*
* @remarks
* Known limitations:
* - DDS rollback support may be incomplete — {@link StageControls.discardChanges} may throw for some DDS implementations.
* - Squash-rebase semantics during {@link StageControls.commitChanges} are not yet fully specified.
*
* @returns Controls for committing or discarding staged changes.
*/
enterStagingMode(): StageControls;
/**
* If true, the ContainerRuntime is not submitting any new ops to the ordering service.
* Ops submitted to the ContainerRuntime while in Staging Mode will be queued in the PendingStateManager,
* either to be discarded or committed later (via the Stage Controls returned from enterStagingMode).
* @see {@link IContainerRuntimeBase.enterStagingMode}
*/
readonly inStagingMode: boolean;
}

@@ -316,2 +377,6 @@

* to prevent modifications that would leave the data store in an unresponsive state.
*
* This provides a best-effort readonly appearance, but no strict enforcement.
*
* @see {@link IContainerRuntimeBase.enterStagingMode}
*/

@@ -446,4 +511,17 @@ readonly readonlyInStagingMode: boolean;

/**
* Describes a staging mode transition on the container runtime.
* - `{ inStagingMode: true }` — the runtime has entered staging mode.
*
* - `{ inStagingMode: false, commit: boolean }` — the runtime has exited staging mode.
* `commit` is `true` when staged changes were committed (not discarded), or `false` when they were discarded.
*
* @legacy @beta
*/
export type StagingModeChangedEvent =
| { readonly inStagingMode: true }
| { readonly inStagingMode: false; readonly commit: boolean };
/**
* @legacy @beta
*/
export type CreateChildSummarizerNodeFn = (

@@ -450,0 +528,0 @@ summarizeInternal: SummarizeInternalFn,

@@ -34,2 +34,4 @@ /*!

PackagePath,
StageControls,
StagingModeChangedEvent,
} from "./dataStoreContext.js";

@@ -36,0 +38,0 @@ export { FlushMode, VisibilityState } from "./dataStoreContext.js";

@@ -6,3 +6,3 @@ /*!

import type { IContainerRuntimeBase } from "./dataStoreContext.js";
import type { IContainerRuntimeBase, StageControls } from "./dataStoreContext.js";

@@ -37,3 +37,3 @@ /**

*/
export interface StageControlsInternal extends StageControlsAlpha {
export interface StageControlsInternal extends StageControls {
/**

@@ -49,27 +49,7 @@ * Exit staging mode and commit to any changes made while in staging mode.

/**
* Controls for managing staged changes in alpha staging mode.
*
* Provides methods to either commit or discard changes made while in staging mode.
*
* @legacy @alpha
* @sealed
*/
export interface StageControlsAlpha {
/**
* Exit staging mode and commit to any changes made while in staging mode.
* This will cause them to be sent to the ordering service, and subsequent changes
* made by this container will additionally flow freely to the ordering service.
*/
readonly commitChanges: () => void;
/**
* Exit staging mode and discard any changes made while in staging mode.
*/
readonly discardChanges: () => void;
}
/**
* Experimental extension of {@link IContainerRuntimeBase} to support staging mode.
* Internal extension of {@link IContainerRuntimeBase} whose {@link IContainerRuntimeBaseInternal.enterStagingMode}
* returns {@link StageControlsInternal} (which exposes internal commit options such as squash)
* @internal
*/
export interface IContainerRuntimeBaseInternal extends ContainerRuntimeBaseAlpha {
export interface IContainerRuntimeBaseInternal extends IContainerRuntimeBase {
/**

@@ -83,20 +63,23 @@ * Enters staging mode, allowing changes to be staged before being committed or discarded.

/**
* Alpha interface for container runtime base supporting staging mode.
* Controls for managing staged changes in alpha staging mode.
*
* Provides methods to either commit or discard changes made while in staging mode.
*
* @deprecated Use {@link StageControls} (beta) instead.
* @legacy @alpha
* @sealed
*/
export interface ContainerRuntimeBaseAlpha extends IContainerRuntimeBase {
/**
* Enters staging mode, allowing changes to be staged before being committed or discarded.
* @returns Controls for committing or discarding staged changes.
*/
enterStagingMode(): StageControlsAlpha;
/**
* Indicates whether the container is currently in staging mode.
*/
readonly inStagingMode: boolean;
}
export interface StageControlsAlpha extends StageControls {}
/**
* Alpha extension of {@link IContainerRuntimeBase} that exposes alpha-level APIs.
*
* @remarks Use {@link asLegacyAlpha} to obtain an instance from an {@link IContainerRuntimeBase}.
*
* @legacy @alpha
* @sealed
*/
export interface ContainerRuntimeBaseAlpha extends IContainerRuntimeBase {}
/**
* Converts types to their alpha counterparts to expose alpha functionality.

@@ -103,0 +86,0 @@ * @legacy @alpha