From 603790bbfd1d1ea769bd9b834454720abe012880 Mon Sep 17 00:00:00 2001 From: "Craig Macomber (Microsoft)" <42876482+CraigMacomber@users.noreply.github.com> Date: Wed, 27 May 2026 18:19:28 +0000 Subject: [PATCH 1/2] Remove deprecated ConsensusQueueClass export --- .../ordered-collection.legacy.beta.api.md | 7 +------ packages/dds/ordered-collection/package.json | 13 ++++++++++++- .../src/consensusOrderedCollectionFactory.ts | 8 ++++---- .../dds/ordered-collection/src/consensusQueue.ts | 2 -- packages/dds/ordered-collection/src/index.ts | 1 - .../src/test/consensusOrderedCollection.spec.ts | 15 ++++++--------- ...validateOrderedCollectionPrevious.generated.ts | 4 ++++ 7 files changed, 27 insertions(+), 23 deletions(-) diff --git a/packages/dds/ordered-collection/api-report/ordered-collection.legacy.beta.api.md b/packages/dds/ordered-collection/api-report/ordered-collection.legacy.beta.api.md index dcdbc6a47d0a..72b9aac22777 100644 --- a/packages/dds/ordered-collection/api-report/ordered-collection.legacy.beta.api.md +++ b/packages/dds/ordered-collection/api-report/ordered-collection.legacy.beta.api.md @@ -40,12 +40,7 @@ export class ConsensusOrderedCollection extends SharedObject> & SharedObjectKind>; // @beta @deprecated @legacy -export type ConsensusQueue = ConsensusQueueClass; - -// @beta @deprecated @legacy -export class ConsensusQueueClass extends ConsensusOrderedCollection { - constructor(id: string, runtime: IFluidDataStoreRuntime, attributes: IChannelAttributes); -} +export type ConsensusQueue = IConsensusOrderedCollection; // @beta @legacy (undocumented) export enum ConsensusResult { diff --git a/packages/dds/ordered-collection/package.json b/packages/dds/ordered-collection/package.json index c3011c7be3c5..022aef6b3932 100644 --- a/packages/dds/ordered-collection/package.json +++ b/packages/dds/ordered-collection/package.json @@ -164,7 +164,18 @@ "typescript": "~5.4.5" }, "typeValidation": { - "broken": {}, + "broken": { + "Class_ConsensusQueueClass": { + "forwardCompat": false, + "backCompat": false + }, + "TypeAlias_ConsensusQueue": { + "backCompat": false + }, + "ClassStatics_ConsensusQueueClass": { + "backCompat": false + } + }, "entrypoint": "legacy" } } diff --git a/packages/dds/ordered-collection/src/consensusOrderedCollectionFactory.ts b/packages/dds/ordered-collection/src/consensusOrderedCollectionFactory.ts index 0dc83875a1fc..f1900ced0955 100644 --- a/packages/dds/ordered-collection/src/consensusOrderedCollectionFactory.ts +++ b/packages/dds/ordered-collection/src/consensusOrderedCollectionFactory.ts @@ -67,16 +67,16 @@ export class ConsensusQueueFactory implements IConsensusOrderedCollectionFactory } /** - * {@inheritDoc ConsensusQueueClass} + * Shared object kind for queue-shaped ordered collections. * @legacy @beta */ export const ConsensusQueue = createSharedObjectKind(ConsensusQueueFactory); /** - * {@inheritDoc ConsensusQueueClass} + * {@inheritDoc IConsensusOrderedCollection} * @deprecated Use {@link IConsensusOrderedCollection} for typing instead. This type alias will be removed in a future release. * @legacy @beta */ // TODO: #22835 Use undefined instead of any (breaking change) -// eslint-disable-next-line @typescript-eslint/no-explicit-any, import-x/no-deprecated -export type ConsensusQueue = ConsensusQueueClass; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type ConsensusQueue = IConsensusOrderedCollection; diff --git a/packages/dds/ordered-collection/src/consensusQueue.ts b/packages/dds/ordered-collection/src/consensusQueue.ts index 006ff51e02b7..f5eff1e69f13 100644 --- a/packages/dds/ordered-collection/src/consensusQueue.ts +++ b/packages/dds/ordered-collection/src/consensusQueue.ts @@ -33,8 +33,6 @@ class SnapshotableQueue extends SnapshotableArray implements IOrderedColle * Implementation of a consensus stack * * An derived type of ConsensusOrderedCollection with a queue as the backing data and order. - * @deprecated Use the `ConsensusQueue` singleton and {@link IConsensusOrderedCollection} for typing. This implementation class will be removed in a future release. - * @legacy @beta */ // TODO: #22835 Use undefined instead of any (breaking change) // eslint-disable-next-line @typescript-eslint/no-explicit-any, import-x/no-deprecated diff --git a/packages/dds/ordered-collection/src/index.ts b/packages/dds/ordered-collection/src/index.ts index a9928471bd51..4a9c59d02f9e 100644 --- a/packages/dds/ordered-collection/src/index.ts +++ b/packages/dds/ordered-collection/src/index.ts @@ -14,7 +14,6 @@ export { } from "./interfaces.js"; export { ConsensusQueueFactory, ConsensusQueue } from "./consensusOrderedCollectionFactory.js"; export { ConsensusOrderedCollection } from "./consensusOrderedCollection.js"; -export { ConsensusQueueClass } from "./consensusQueue.js"; export { acquireAndComplete, waitAcquireAndComplete, diff --git a/packages/dds/ordered-collection/src/test/consensusOrderedCollection.spec.ts b/packages/dds/ordered-collection/src/test/consensusOrderedCollection.spec.ts index f8fc6d08b455..0dda470e16d8 100644 --- a/packages/dds/ordered-collection/src/test/consensusOrderedCollection.spec.ts +++ b/packages/dds/ordered-collection/src/test/consensusOrderedCollection.spec.ts @@ -17,10 +17,7 @@ import { } from "@fluidframework/test-runtime-utils/internal"; import { ConsensusOrderedCollection } from "../consensusOrderedCollection.js"; -import { - ConsensusQueueFactory, - type ConsensusQueue, -} from "../consensusOrderedCollectionFactory.js"; +import { ConsensusQueueFactory } from "../consensusOrderedCollectionFactory.js"; import { ConsensusQueueClass } from "../consensusQueue.js"; import { ConsensusResult, type IConsensusOrderedCollection } from "../interfaces.js"; import { @@ -41,7 +38,7 @@ class TestConsensusQueue extends ConsensusQueueClass { function createConnectedCollection( id: string, runtimeFactory: MockContainerRuntimeFactory, -): ConsensusQueue { +): ConsensusQueueClass { const dataStoreRuntime = new MockFluidDataStoreRuntime(); runtimeFactory.createContainerRuntime(dataStoreRuntime); const services: IChannelServices = { @@ -52,12 +49,12 @@ function createConnectedCollection( const factory = new ConsensusQueueFactory(); const testCollection = factory.create(dataStoreRuntime, id); testCollection.connect(services); - return testCollection as ConsensusQueue; + return testCollection as ConsensusQueueClass; } -function createLocalCollection(id: string): ConsensusQueue { +function createLocalCollection(id: string): ConsensusQueueClass { const factory = new ConsensusQueueFactory(); - return factory.create(new MockFluidDataStoreRuntime(), id) as ConsensusQueue; + return factory.create(new MockFluidDataStoreRuntime(), id) as ConsensusQueueClass; } function createCollectionForReconnection( @@ -155,7 +152,7 @@ describe("ConsensusOrderedCollection", () => { const acquiredValue = (await removeItem()) as IFluidHandleInternal; assert.strictEqual(acquiredValue.absolutePath, handle.absolutePath); - const dataStore = (await handle.get()) as ConsensusQueue; + const dataStore = (await handle.get()) as ConsensusQueueClass; assert.strictEqual(dataStore.handle.absolutePath, testCollection.handle.absolutePath); assert.strictEqual(await removeItem(), undefined); diff --git a/packages/dds/ordered-collection/src/test/types/validateOrderedCollectionPrevious.generated.ts b/packages/dds/ordered-collection/src/test/types/validateOrderedCollectionPrevious.generated.ts index bdeb8ba8dc1d..27238cd688da 100644 --- a/packages/dds/ordered-collection/src/test/types/validateOrderedCollectionPrevious.generated.ts +++ b/packages/dds/ordered-collection/src/test/types/validateOrderedCollectionPrevious.generated.ts @@ -42,6 +42,7 @@ declare type current_as_old_for_Class_ConsensusOrderedCollection = requireAssign * typeValidation.broken: * "Class_ConsensusQueueClass": {"forwardCompat": false} */ +// @ts-expect-error compatibility expected to be broken declare type old_as_current_for_Class_ConsensusQueueClass = requireAssignableTo, TypeOnly> /* @@ -51,6 +52,7 @@ declare type old_as_current_for_Class_ConsensusQueueClass = requireAssignableTo< * typeValidation.broken: * "Class_ConsensusQueueClass": {"backCompat": false} */ +// @ts-expect-error compatibility expected to be broken declare type current_as_old_for_Class_ConsensusQueueClass = requireAssignableTo, TypeOnly> /* @@ -69,6 +71,7 @@ declare type current_as_old_for_ClassStatics_ConsensusOrderedCollection = requir * typeValidation.broken: * "ClassStatics_ConsensusQueueClass": {"backCompat": false} */ +// @ts-expect-error compatibility expected to be broken declare type current_as_old_for_ClassStatics_ConsensusQueueClass = requireAssignableTo, TypeOnly> /* @@ -195,6 +198,7 @@ declare type old_as_current_for_TypeAlias_ConsensusQueue = requireAssignableTo, TypeOnly> /* From c6eefafc0d80c2f9753ff2a369ad4c861017594c Mon Sep 17 00:00:00 2001 From: "Craig Macomber (Microsoft)" <42876482+CraigMacomber@users.noreply.github.com> Date: Wed, 27 May 2026 18:25:34 +0000 Subject: [PATCH 2/2] Add changeset --- .changeset/fine-areas-chew.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/fine-areas-chew.md diff --git a/.changeset/fine-areas-chew.md b/.changeset/fine-areas-chew.md new file mode 100644 index 000000000000..62249cd03877 --- /dev/null +++ b/.changeset/fine-areas-chew.md @@ -0,0 +1,9 @@ +--- +"@fluidframework/ordered-collection": minor +"__section": breaking +--- +Remove deprecated ConsensusQueueClass export + +The deprecated legacy beta export of `ConsensusQueueClass` has been removed: +Use the `ConsensusQueue` singleton (which implements `ISharedObjectKind`) instead. +The deprecated legacy beta export of the `ConsensusQueue` type now points to `IConsensusOrderedCollection`.