From 30144e5f36a5d16899b592a603598ace1bbd9b04 Mon Sep 17 00:00:00 2001 From: Scott Norton Date: Mon, 1 Jun 2026 13:49:47 +0000 Subject: [PATCH] Remove deprecated CompatibilityMode APIs --- .changeset/happy-states-work.md | 16 ++++ .../api-report/fluid-static.alpha.api.md | 3 - .../api-report/fluid-static.beta.api.md | 3 - .../fluid-static.legacy.beta.api.md | 12 --- .../fluid-static.legacy.public.api.md | 3 - .../api-report/fluid-static.public.api.md | 3 - packages/framework/fluid-static/package.json | 7 +- packages/framework/fluid-static/src/index.ts | 6 +- .../validateFluidStaticPrevious.generated.ts | 2 + .../fluid-static/src/treeRootDataObject.ts | 76 +--------------- packages/framework/fluid-static/src/types.ts | 15 --- packages/framework/fluid-static/src/utils.ts | 29 +----- .../api-report/azure-client.beta.api.md | 17 ---- .../azure-client.legacy.beta.api.md | 17 ---- .../azure-client.legacy.public.api.md | 17 ---- .../api-report/azure-client.public.api.md | 17 ---- .../service-clients/azure-client/package.json | 7 +- .../azure-client/src/AzureClient.ts | 91 ++----------------- .../service-clients/azure-client/src/index.ts | 3 - .../validateAzureClientPrevious.generated.ts | 2 + .../tinylicious-client.alpha.api.md | 12 --- .../api-report/tinylicious-client.beta.api.md | 12 --- .../tinylicious-client.public.api.md | 12 --- .../tinylicious-client/package.json | 7 +- .../src/TinyliciousClient.ts | 58 +----------- .../tinylicious-client/src/index.ts | 3 - ...dateTinyliciousClientPrevious.generated.ts | 2 + 27 files changed, 61 insertions(+), 391 deletions(-) create mode 100644 .changeset/happy-states-work.md diff --git a/.changeset/happy-states-work.md b/.changeset/happy-states-work.md new file mode 100644 index 000000000000..4d4213e02c83 --- /dev/null +++ b/.changeset/happy-states-work.md @@ -0,0 +1,16 @@ +--- +"@fluidframework/fluid-static": minor +"@fluidframework/azure-client": minor +"@fluidframework/tinylicious-client": minor +"__section": legacy +--- + +Remove deprecated CompatibilityMode APIs + +Deprecated `CompatibilityMode` exports and overloads have been removed from `@fluidframework/fluid-static`, `@fluidframework/azure-client`, and `@fluidframework/tinylicious-client`. + +Use `MinimumVersionForCollab` SemVer strings instead: + +- Pass `minVersionForCollaboration` to `createTreeContainerRuntimeFactory`. +- Pass a `MinimumVersionForCollab` argument to `AzureClient.createContainer`, `AzureClient.getContainer`, `AzureClient.viewContainerVersion`, `TinyliciousClient.createContainer`, and `TinyliciousClient.getContainer`. +- Replace legacy mode values `"1"` and `"2"` with `"1.0.0"` and `"2.0.0"`. diff --git a/packages/framework/fluid-static/api-report/fluid-static.alpha.api.md b/packages/framework/fluid-static/api-report/fluid-static.alpha.api.md index b43e5f026aa4..5a9f4ea407c3 100644 --- a/packages/framework/fluid-static/api-report/fluid-static.alpha.api.md +++ b/packages/framework/fluid-static/api-report/fluid-static.alpha.api.md @@ -4,9 +4,6 @@ ```ts -// @public @deprecated -export type CompatibilityMode = "1" | "2"; - // @public export type ContainerAttachProps = T; diff --git a/packages/framework/fluid-static/api-report/fluid-static.beta.api.md b/packages/framework/fluid-static/api-report/fluid-static.beta.api.md index a3076610f0d6..1dac5114184d 100644 --- a/packages/framework/fluid-static/api-report/fluid-static.beta.api.md +++ b/packages/framework/fluid-static/api-report/fluid-static.beta.api.md @@ -4,9 +4,6 @@ ```ts -// @public @deprecated -export type CompatibilityMode = "1" | "2"; - // @public export type ContainerAttachProps = T; diff --git a/packages/framework/fluid-static/api-report/fluid-static.legacy.beta.api.md b/packages/framework/fluid-static/api-report/fluid-static.legacy.beta.api.md index 959739f03b3d..6cdb75f2d193 100644 --- a/packages/framework/fluid-static/api-report/fluid-static.legacy.beta.api.md +++ b/packages/framework/fluid-static/api-report/fluid-static.legacy.beta.api.md @@ -4,9 +4,6 @@ ```ts -// @public @deprecated -export type CompatibilityMode = "1" | "2"; - // @public export type ContainerAttachProps = T; @@ -24,15 +21,6 @@ export function createTreeContainerRuntimeFactory(props: { readonly runtimeOptionOverrides?: Partial; }): IRuntimeFactory; -// @beta @deprecated @legacy -export function createTreeContainerRuntimeFactory(props: { - readonly schema: TreeContainerSchema; - readonly compatibilityMode: CompatibilityMode; - readonly rootDataStoreRegistry?: IFluidDataStoreRegistry; - readonly runtimeOptionOverrides?: Partial; - readonly minVersionForCollabOverride?: MinimumVersionForCollab; -}): IRuntimeFactory; - // @public export const getPresence: (fluidContainer: IFluidContainer) => Presence; diff --git a/packages/framework/fluid-static/api-report/fluid-static.legacy.public.api.md b/packages/framework/fluid-static/api-report/fluid-static.legacy.public.api.md index 0467bd8f6778..3a8f1dace0d1 100644 --- a/packages/framework/fluid-static/api-report/fluid-static.legacy.public.api.md +++ b/packages/framework/fluid-static/api-report/fluid-static.legacy.public.api.md @@ -4,9 +4,6 @@ ```ts -// @public @deprecated -export type CompatibilityMode = "1" | "2"; - // @public export type ContainerAttachProps = T; diff --git a/packages/framework/fluid-static/api-report/fluid-static.public.api.md b/packages/framework/fluid-static/api-report/fluid-static.public.api.md index 0467bd8f6778..3a8f1dace0d1 100644 --- a/packages/framework/fluid-static/api-report/fluid-static.public.api.md +++ b/packages/framework/fluid-static/api-report/fluid-static.public.api.md @@ -4,9 +4,6 @@ ```ts -// @public @deprecated -export type CompatibilityMode = "1" | "2"; - // @public export type ContainerAttachProps = T; diff --git a/packages/framework/fluid-static/package.json b/packages/framework/fluid-static/package.json index 7784dda230b9..2051747ca8f8 100644 --- a/packages/framework/fluid-static/package.json +++ b/packages/framework/fluid-static/package.json @@ -171,7 +171,12 @@ "typescript": "~5.4.5" }, "typeValidation": { - "broken": {}, + "broken": { + "TypeAlias_CompatibilityMode": { + "forwardCompat": false, + "backCompat": false + } + }, "entrypoint": "public" } } diff --git a/packages/framework/fluid-static/src/index.ts b/packages/framework/fluid-static/src/index.ts index 725829a0cedd..a160cfbfa905 100644 --- a/packages/framework/fluid-static/src/index.ts +++ b/packages/framework/fluid-static/src/index.ts @@ -22,7 +22,6 @@ export { createDOProviderContainerRuntimeFactory } from "./rootDataObject.js"; export { createServiceAudience } from "./serviceAudience.js"; export { createTreeContainerRuntimeFactory } from "./treeRootDataObject.js"; export type { - CompatibilityMode, ContainerSchema, ContainerAttachProps, IConnection, @@ -33,7 +32,4 @@ export type { Myself, TreeContainerSchema, } from "./types.js"; -export { - isTreeContainerSchema, - resolveCompatibilityModeToMinVersionForCollab, -} from "./utils.js"; +export { isTreeContainerSchema } from "./utils.js"; diff --git a/packages/framework/fluid-static/src/test/types/validateFluidStaticPrevious.generated.ts b/packages/framework/fluid-static/src/test/types/validateFluidStaticPrevious.generated.ts index fec9ae071af4..6eafebb05710 100644 --- a/packages/framework/fluid-static/src/test/types/validateFluidStaticPrevious.generated.ts +++ b/packages/framework/fluid-static/src/test/types/validateFluidStaticPrevious.generated.ts @@ -132,6 +132,7 @@ declare type current_as_old_for_Interface_IServiceAudienceEvents = requireAssign * typeValidation.broken: * "TypeAlias_CompatibilityMode": {"forwardCompat": false} */ +// @ts-expect-error compatibility expected to be broken declare type old_as_current_for_TypeAlias_CompatibilityMode = requireAssignableTo, TypeOnly> /* @@ -141,6 +142,7 @@ declare type old_as_current_for_TypeAlias_CompatibilityMode = requireAssignableT * typeValidation.broken: * "TypeAlias_CompatibilityMode": {"backCompat": false} */ +// @ts-expect-error compatibility expected to be broken declare type current_as_old_for_TypeAlias_CompatibilityMode = requireAssignableTo, TypeOnly> /* diff --git a/packages/framework/fluid-static/src/treeRootDataObject.ts b/packages/framework/fluid-static/src/treeRootDataObject.ts index 56eae2cec1f4..4c137204bb5f 100644 --- a/packages/framework/fluid-static/src/treeRootDataObject.ts +++ b/packages/framework/fluid-static/src/treeRootDataObject.ts @@ -33,8 +33,6 @@ import type { SharedObjectKind } from "@fluidframework/shared-object-base/intern import { defaultRuntimeOptionsForMinVersion } from "./compatibilityConfiguration.js"; import type { - // eslint-disable-next-line import-x/no-deprecated - CompatibilityMode, IRootDataObject, IStaticEntryPoint, LoadableObjectKind, @@ -48,7 +46,6 @@ import { isSharedObjectKind, makeFluidObject, parseDataObjectsFromSharedObjects, - resolveCompatibilityModeToMinVersionForCollab, } from "./utils.js"; /** @@ -225,80 +222,15 @@ export function createTreeContainerRuntimeFactory(props: { readonly runtimeOptionOverrides?: Partial; }): IRuntimeFactory; -/** - * Creates an {@link @fluidframework/aqueduct#IRuntimeFactory} which constructs containers - * with an entry point containing single tree-based root data object. - * - * @remarks - * The entry point is opaque to caller. - * The root data object's registry and shared objects are configured based on the provided - * SharedTree and optional data store registry. - * - * @deprecated Pass `minVersionForCollaboration` directly instead of using `compatibilityMode`. - * - * @legacy @beta - */ -export function createTreeContainerRuntimeFactory(props: { - /** - * The schema for the container. - */ - readonly schema: TreeContainerSchema; - - /** - * Legacy compatibility mode for the container. - */ - // eslint-disable-next-line import-x/no-deprecated - readonly compatibilityMode: CompatibilityMode; - /** - * Optional registry of data stores to pass to the DataObject factory. - * If not provided, one will be created based on the schema. - */ - readonly rootDataStoreRegistry?: IFluidDataStoreRegistry; - /** - * Optional overrides for the container runtime options. - * If not provided, only the default options for the given compatibilityMode will be used. - */ - readonly runtimeOptionOverrides?: Partial; - /** - * Optional override for minimum version for collaboration. - * @remarks - * If not provided, the default for the given compatibilityMode will be used. - * Rather than defining this, omit `compatibilityMode` and pass `minVersionForCollaboration` directly. - */ - readonly minVersionForCollabOverride?: MinimumVersionForCollab; -}): IRuntimeFactory; - // Implementation export function createTreeContainerRuntimeFactory(props: { readonly schema: TreeContainerSchema; - // eslint-disable-next-line import-x/no-deprecated - readonly compatibilityMode?: CompatibilityMode; - readonly minVersionForCollaboration?: MinimumVersionForCollab; + readonly minVersionForCollaboration: MinimumVersionForCollab; readonly rootDataStoreRegistry?: IFluidDataStoreRegistry; readonly runtimeOptionOverrides?: Partial; - readonly minVersionForCollabOverride?: MinimumVersionForCollab; }): IRuntimeFactory { - const { - compatibilityMode, - minVersionForCollaboration, - minVersionForCollabOverride, - rootDataStoreRegistry, - runtimeOptionOverrides, - schema, - } = props; - - let minVersionForCollab: MinimumVersionForCollab; - if (minVersionForCollaboration !== undefined) { - minVersionForCollab = minVersionForCollaboration; - } else if (compatibilityMode === undefined) { - throw new Error( - "Either minVersionForCollaboration or compatibilityMode (deprecated) must be provided.", - ); - } else { - minVersionForCollab = - minVersionForCollabOverride ?? - resolveCompatibilityModeToMinVersionForCollab(compatibilityMode); - } + const { minVersionForCollaboration, rootDataStoreRegistry, runtimeOptionOverrides, schema } = + props; const [registryEntries, sharedObjects] = parseDataObjectsFromSharedObjects(schema); const registry = rootDataStoreRegistry ?? new FluidDataStoreRegistry(registryEntries); @@ -307,7 +239,7 @@ export function createTreeContainerRuntimeFactory(props: { new TreeRootDataObjectFactory(sharedObjects, registry), { runtimeOptions: runtimeOptionOverrides, - minVersionForCollab, + minVersionForCollab: minVersionForCollaboration, }, ); } diff --git a/packages/framework/fluid-static/src/types.ts b/packages/framework/fluid-static/src/types.ts index b4a1c44b26a4..431b7285597b 100644 --- a/packages/framework/fluid-static/src/types.ts +++ b/packages/framework/fluid-static/src/types.ts @@ -17,21 +17,6 @@ import type { } from "@fluidframework/shared-object-base/internal"; import type { ITree } from "@fluidframework/tree"; -/** - * Determines the set of runtime options that Fluid Framework will use when running. - * In "1" mode we support full interop between 2.x clients and 1.x clients, - * while in "2" mode we only support interop between 2.x clients. - * - * @deprecated Specify the minimum Fluid Framework version directly via the - * `minVersionForCollab` parameter, which accepts a - * {@link @fluidframework/runtime-definitions#MinimumVersionForCollab} SemVer string. The - * legacy mode "1" is equivalent to `minVersionForCollab: "1.0.0"`; mode "2" is - * equivalent to `"2.0.0"`. - * - * @public - */ -export type CompatibilityMode = "1" | "2"; - /** * A mapping of string identifiers to instantiated `DataObject`s or `SharedObject`s. */ diff --git a/packages/framework/fluid-static/src/utils.ts b/packages/framework/fluid-static/src/utils.ts index 76f5ae1fe1a9..096230d3d19c 100644 --- a/packages/framework/fluid-static/src/utils.ts +++ b/packages/framework/fluid-static/src/utils.ts @@ -12,20 +12,13 @@ import type { } from "@fluidframework/datastore-definitions/internal"; import type { IFluidDataStoreContext, - MinimumVersionForCollab, NamedFluidDataStoreRegistryEntry, } from "@fluidframework/runtime-definitions/internal"; import type { ISharedObjectKind } from "@fluidframework/shared-object-base/internal"; import { UsageError } from "@fluidframework/telemetry-utils/internal"; import { SharedTreeFactoryType } from "@fluidframework/tree/internal"; -import type { - // eslint-disable-next-line import-x/no-deprecated - CompatibilityMode, - ContainerSchema, - LoadableObjectKind, - TreeContainerSchema, -} from "./types.js"; +import type { ContainerSchema, LoadableObjectKind, TreeContainerSchema } from "./types.js"; /** * Runtime check to determine if an object is a {@link DataObjectKind}. @@ -147,26 +140,6 @@ export function makeFluidObject< return Object.defineProperty(object, providerKey, { value: object }) as T; } -/** - * Resolves the `compatibilityMode` input — either a `MinimumVersionForCollab` - * SemVer string or a legacy `CompatibilityMode` value — into a precise - * `MinimumVersionForCollab`. - * - * TODO: AB#73679: This can be removed when the deprecated CompatibilityMode is removed - * - * @internal - */ -export function resolveCompatibilityModeToMinVersionForCollab( - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: MinimumVersionForCollab | CompatibilityMode, -): MinimumVersionForCollab { - return compatibilityMode === "1" - ? "1.0.0" - : compatibilityMode === "2" - ? "2.0.0" - : compatibilityMode; -} - /** * Determines if the provided schema is a valid tree-based container schema. * @internal diff --git a/packages/service-clients/azure-client/api-report/azure-client.beta.api.md b/packages/service-clients/azure-client/api-report/azure-client.beta.api.md index 85b633ce69b8..6531edce7e6b 100644 --- a/packages/service-clients/azure-client/api-report/azure-client.beta.api.md +++ b/packages/service-clients/azure-client/api-report/azure-client.beta.api.md @@ -11,28 +11,14 @@ export class AzureClient { container: IFluidContainer; services: AzureContainerServices; }>; - // @deprecated - createContainer(containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; getContainer(id: string, containerSchema: TContainerSchema, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; services: AzureContainerServices; }>; - // @deprecated - getContainer(id: string, containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; getContainerVersions(id: string, options?: AzureGetVersionsOptions): Promise; viewContainerVersion(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; }>; - // @deprecated - viewContainerVersion(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - }>; } // @public @@ -87,9 +73,6 @@ export interface AzureRemoteConnectionConfig extends AzureConnectionConfig { type: "remote"; } -// @public @deprecated -export type CompatibilityMode = "1" | "2"; - // @public export type IAzureAudience = IServiceAudience; diff --git a/packages/service-clients/azure-client/api-report/azure-client.legacy.beta.api.md b/packages/service-clients/azure-client/api-report/azure-client.legacy.beta.api.md index 85b633ce69b8..6531edce7e6b 100644 --- a/packages/service-clients/azure-client/api-report/azure-client.legacy.beta.api.md +++ b/packages/service-clients/azure-client/api-report/azure-client.legacy.beta.api.md @@ -11,28 +11,14 @@ export class AzureClient { container: IFluidContainer; services: AzureContainerServices; }>; - // @deprecated - createContainer(containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; getContainer(id: string, containerSchema: TContainerSchema, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; services: AzureContainerServices; }>; - // @deprecated - getContainer(id: string, containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; getContainerVersions(id: string, options?: AzureGetVersionsOptions): Promise; viewContainerVersion(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; }>; - // @deprecated - viewContainerVersion(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - }>; } // @public @@ -87,9 +73,6 @@ export interface AzureRemoteConnectionConfig extends AzureConnectionConfig { type: "remote"; } -// @public @deprecated -export type CompatibilityMode = "1" | "2"; - // @public export type IAzureAudience = IServiceAudience; diff --git a/packages/service-clients/azure-client/api-report/azure-client.legacy.public.api.md b/packages/service-clients/azure-client/api-report/azure-client.legacy.public.api.md index 086c53aadfe6..8ff2bdcfd47a 100644 --- a/packages/service-clients/azure-client/api-report/azure-client.legacy.public.api.md +++ b/packages/service-clients/azure-client/api-report/azure-client.legacy.public.api.md @@ -11,28 +11,14 @@ export class AzureClient { container: IFluidContainer; services: AzureContainerServices; }>; - // @deprecated - createContainer(containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; getContainer(id: string, containerSchema: TContainerSchema, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; services: AzureContainerServices; }>; - // @deprecated - getContainer(id: string, containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; getContainerVersions(id: string, options?: AzureGetVersionsOptions): Promise; viewContainerVersion(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; }>; - // @deprecated - viewContainerVersion(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - }>; } // @public @@ -87,9 +73,6 @@ export interface AzureRemoteConnectionConfig extends AzureConnectionConfig { type: "remote"; } -// @public @deprecated -export type CompatibilityMode = "1" | "2"; - // @public export type IAzureAudience = IServiceAudience; diff --git a/packages/service-clients/azure-client/api-report/azure-client.public.api.md b/packages/service-clients/azure-client/api-report/azure-client.public.api.md index 086c53aadfe6..8ff2bdcfd47a 100644 --- a/packages/service-clients/azure-client/api-report/azure-client.public.api.md +++ b/packages/service-clients/azure-client/api-report/azure-client.public.api.md @@ -11,28 +11,14 @@ export class AzureClient { container: IFluidContainer; services: AzureContainerServices; }>; - // @deprecated - createContainer(containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; getContainer(id: string, containerSchema: TContainerSchema, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; services: AzureContainerServices; }>; - // @deprecated - getContainer(id: string, containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; getContainerVersions(id: string, options?: AzureGetVersionsOptions): Promise; viewContainerVersion(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; }>; - // @deprecated - viewContainerVersion(id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - }>; } // @public @@ -87,9 +73,6 @@ export interface AzureRemoteConnectionConfig extends AzureConnectionConfig { type: "remote"; } -// @public @deprecated -export type CompatibilityMode = "1" | "2"; - // @public export type IAzureAudience = IServiceAudience; diff --git a/packages/service-clients/azure-client/package.json b/packages/service-clients/azure-client/package.json index d1098ec9ce26..4898711b88ab 100644 --- a/packages/service-clients/azure-client/package.json +++ b/packages/service-clients/azure-client/package.json @@ -130,7 +130,12 @@ "uuid": "^11.1.0" }, "typeValidation": { - "broken": {}, + "broken": { + "TypeAlias_CompatibilityMode": { + "forwardCompat": false, + "backCompat": false + } + }, "entrypoint": "legacy" } } diff --git a/packages/service-clients/azure-client/src/AzureClient.ts b/packages/service-clients/azure-client/src/AzureClient.ts index e73322103e50..39bfe7cdc8b7 100644 --- a/packages/service-clients/azure-client/src/AzureClient.ts +++ b/packages/service-clients/azure-client/src/AzureClient.ts @@ -26,17 +26,11 @@ import type { IUrlResolver, } from "@fluidframework/driver-definitions/internal"; import { applyStorageCompression } from "@fluidframework/driver-utils/internal"; -import type { - ContainerSchema, - IFluidContainer, - // eslint-disable-next-line import-x/no-deprecated - CompatibilityMode, -} from "@fluidframework/fluid-static"; +import type { ContainerSchema, IFluidContainer } from "@fluidframework/fluid-static"; import { createDOProviderContainerRuntimeFactory, createFluidContainer, createServiceAudience, - resolveCompatibilityModeToMinVersionForCollab, } from "@fluidframework/fluid-static/internal"; import { RouterliciousDocumentServiceFactory } from "@fluidframework/routerlicious-driver/internal"; import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions"; @@ -152,33 +146,14 @@ export class AzureClient { container: IFluidContainer; services: AzureContainerServices; }>; - /** - * Creates a new detached container instance in the Azure Fluid Relay. - * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container. - * This does not normally need to be specified explicitly. - * @param containerSchema - Container schema for the new container. - * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value. - * @returns New detached container instance along with associated services. - * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `"2.0.0"`) instead. The legacy - * values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively. - */ - public async createContainer( - containerSchema: TContainerSchema, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: CompatibilityMode, - ): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; public async createContainer( containerSchema: TContainerSchema, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: MinimumVersionForCollab | CompatibilityMode, + minVersionForCollab: MinimumVersionForCollab, ): Promise<{ container: IFluidContainer; services: AzureContainerServices; }> { - const loaderProps = this.getLoaderProps(containerSchema, compatibilityMode); + const loaderProps = this.getLoaderProps(containerSchema, minVersionForCollab); const container = await createDetachedContainer({ ...loaderProps, @@ -214,36 +189,15 @@ export class AzureClient { container: IFluidContainer; services: AzureContainerServices; }>; - /** - * Accesses the existing container given its unique ID in the Azure Fluid Relay. - * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container. - * (normally not explicitly specified.) - * @param id - Unique ID of the container in Azure Fluid Relay. - * @param containerSchema - Container schema used to access data objects in the container. - * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value. - * @returns Existing container instance along with associated services. - * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `"2.0.0"`) instead. The legacy - * values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively. - */ - public async getContainer( - id: string, - containerSchema: TContainerSchema, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: CompatibilityMode, - ): Promise<{ - container: IFluidContainer; - services: AzureContainerServices; - }>; public async getContainer( id: string, containerSchema: TContainerSchema, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: MinimumVersionForCollab | CompatibilityMode, + minVersionForCollab: MinimumVersionForCollab, ): Promise<{ container: IFluidContainer; services: AzureContainerServices; }> { - const loaderProps = this.getLoaderProps(containerSchema, compatibilityMode); + const loaderProps = this.getLoaderProps(containerSchema, minVersionForCollab); const url = new URL(this.connectionConfig.endpoint); url.searchParams.append("storage", encodeURIComponent(this.connectionConfig.endpoint)); url.searchParams.append( @@ -282,37 +236,15 @@ export class AzureClient { ): Promise<{ container: IFluidContainer; }>; - /** - * Load a specific version of a container for viewing only. - * @typeparam TContainerSchema - Used to infer the the type of 'initialObjects' in the returned container. - * (normally not explicitly specified.) - * @param id - Unique ID of the source container in Azure Fluid Relay. - * @param containerSchema - Container schema used to access data objects in the container. - * @param version - Unique version of the source container in Azure Fluid Relay. - * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value. - * @returns Loaded container instance at the specified version. - * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `"2.0.0"`) instead. The legacy - * values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively. - */ - public async viewContainerVersion( - id: string, - containerSchema: TContainerSchema, - version: AzureContainerVersion, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: CompatibilityMode, - ): Promise<{ - container: IFluidContainer; - }>; public async viewContainerVersion( id: string, containerSchema: TContainerSchema, version: AzureContainerVersion, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: MinimumVersionForCollab | CompatibilityMode, + minVersionForCollab: MinimumVersionForCollab, ): Promise<{ container: IFluidContainer; }> { - const loaderProps = this.getLoaderProps(containerSchema, compatibilityMode); + const loaderProps = this.getLoaderProps(containerSchema, minVersionForCollab); const url = new URL(this.connectionConfig.endpoint); url.searchParams.append("storage", encodeURIComponent(this.connectionConfig.endpoint)); url.searchParams.append( @@ -377,19 +309,16 @@ export class AzureClient { private getLoaderProps( schema: ContainerSchema, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: MinimumVersionForCollab | CompatibilityMode, + minVersionForCollab: MinimumVersionForCollab, ): ILoaderProps { - const minVersionForCollaboration = - resolveCompatibilityModeToMinVersionForCollab(compatibilityMode); const runtimeFactory = this.createContainerRuntimeFactory ? this.createContainerRuntimeFactory({ schema, - minVersionForCollaboration, + minVersionForCollaboration: minVersionForCollab, }) : createDOProviderContainerRuntimeFactory({ schema, - minVersionForCollaboration, + minVersionForCollaboration: minVersionForCollab, }); const load = async (): Promise => { diff --git a/packages/service-clients/azure-client/src/index.ts b/packages/service-clients/azure-client/src/index.ts index 50f0c5380a6a..7e11e30340a0 100644 --- a/packages/service-clients/azure-client/src/index.ts +++ b/packages/service-clients/azure-client/src/index.ts @@ -33,6 +33,3 @@ export type { ITelemetryBaseEvent, ITelemetryBaseLogger, } from "@fluidframework/core-interfaces"; - -// Re-export so developers have access to parameter types for createContainer/getContainer without pulling in fluid-static -export type { CompatibilityMode } from "@fluidframework/fluid-static"; diff --git a/packages/service-clients/azure-client/src/test/types/validateAzureClientPrevious.generated.ts b/packages/service-clients/azure-client/src/test/types/validateAzureClientPrevious.generated.ts index 40d4c2f75efc..380039cfa7e2 100644 --- a/packages/service-clients/azure-client/src/test/types/validateAzureClientPrevious.generated.ts +++ b/packages/service-clients/azure-client/src/test/types/validateAzureClientPrevious.generated.ts @@ -303,6 +303,7 @@ declare type current_as_old_for_TypeAlias_AzureConnectionConfigType = requireAss * typeValidation.broken: * "TypeAlias_CompatibilityMode": {"forwardCompat": false} */ +// @ts-expect-error compatibility expected to be broken declare type old_as_current_for_TypeAlias_CompatibilityMode = requireAssignableTo, TypeOnly> /* @@ -312,6 +313,7 @@ declare type old_as_current_for_TypeAlias_CompatibilityMode = requireAssignableT * typeValidation.broken: * "TypeAlias_CompatibilityMode": {"backCompat": false} */ +// @ts-expect-error compatibility expected to be broken declare type current_as_old_for_TypeAlias_CompatibilityMode = requireAssignableTo, TypeOnly> /* diff --git a/packages/service-clients/tinylicious-client/api-report/tinylicious-client.alpha.api.md b/packages/service-clients/tinylicious-client/api-report/tinylicious-client.alpha.api.md index 05fbf2875875..d2f5c043ae06 100644 --- a/packages/service-clients/tinylicious-client/api-report/tinylicious-client.alpha.api.md +++ b/packages/service-clients/tinylicious-client/api-report/tinylicious-client.alpha.api.md @@ -4,8 +4,6 @@ ```ts -export { CompatibilityMode } - // @public @sealed export type ITinyliciousAudience = IServiceAudience; @@ -16,20 +14,10 @@ export class TinyliciousClient { container: IFluidContainer; services: TinyliciousContainerServices; }>; - // @deprecated - createContainer(containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: TinyliciousContainerServices; - }>; getContainer(id: string, containerSchema: TContainerSchema, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; services: TinyliciousContainerServices; }>; - // @deprecated - getContainer(id: string, containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: TinyliciousContainerServices; - }>; } // @public @sealed diff --git a/packages/service-clients/tinylicious-client/api-report/tinylicious-client.beta.api.md b/packages/service-clients/tinylicious-client/api-report/tinylicious-client.beta.api.md index 0c44007d5449..5b8fea11efc9 100644 --- a/packages/service-clients/tinylicious-client/api-report/tinylicious-client.beta.api.md +++ b/packages/service-clients/tinylicious-client/api-report/tinylicious-client.beta.api.md @@ -4,8 +4,6 @@ ```ts -export { CompatibilityMode } - // @public @sealed export type ITinyliciousAudience = IServiceAudience; @@ -16,20 +14,10 @@ export class TinyliciousClient { container: IFluidContainer; services: TinyliciousContainerServices; }>; - // @deprecated - createContainer(containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: TinyliciousContainerServices; - }>; getContainer(id: string, containerSchema: TContainerSchema, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; services: TinyliciousContainerServices; }>; - // @deprecated - getContainer(id: string, containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: TinyliciousContainerServices; - }>; } // @public @sealed diff --git a/packages/service-clients/tinylicious-client/api-report/tinylicious-client.public.api.md b/packages/service-clients/tinylicious-client/api-report/tinylicious-client.public.api.md index 359643136b38..b81ad53a1326 100644 --- a/packages/service-clients/tinylicious-client/api-report/tinylicious-client.public.api.md +++ b/packages/service-clients/tinylicious-client/api-report/tinylicious-client.public.api.md @@ -4,8 +4,6 @@ ```ts -export { CompatibilityMode } - // @public @sealed export type ITinyliciousAudience = IServiceAudience; @@ -16,20 +14,10 @@ export class TinyliciousClient { container: IFluidContainer; services: TinyliciousContainerServices; }>; - // @deprecated - createContainer(containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: TinyliciousContainerServices; - }>; getContainer(id: string, containerSchema: TContainerSchema, minVersionForCollab: MinimumVersionForCollab): Promise<{ container: IFluidContainer; services: TinyliciousContainerServices; }>; - // @deprecated - getContainer(id: string, containerSchema: TContainerSchema, compatibilityMode: CompatibilityMode): Promise<{ - container: IFluidContainer; - services: TinyliciousContainerServices; - }>; } // @public @sealed diff --git a/packages/service-clients/tinylicious-client/package.json b/packages/service-clients/tinylicious-client/package.json index 83f855e28ac9..19bdf4bd0eaf 100644 --- a/packages/service-clients/tinylicious-client/package.json +++ b/packages/service-clients/tinylicious-client/package.json @@ -124,7 +124,12 @@ "typescript": "~5.4.5" }, "typeValidation": { - "broken": {}, + "broken": { + "TypeAlias_CompatibilityMode": { + "forwardCompat": false, + "backCompat": false + } + }, "entrypoint": "beta" } } diff --git a/packages/service-clients/tinylicious-client/src/TinyliciousClient.ts b/packages/service-clients/tinylicious-client/src/TinyliciousClient.ts index 72dad521d164..50a7a7662451 100644 --- a/packages/service-clients/tinylicious-client/src/TinyliciousClient.ts +++ b/packages/service-clients/tinylicious-client/src/TinyliciousClient.ts @@ -19,17 +19,11 @@ import type { IDocumentServiceFactory, IUrlResolver, } from "@fluidframework/driver-definitions/internal"; -import type { - ContainerSchema, - IFluidContainer, - // eslint-disable-next-line import-x/no-deprecated - CompatibilityMode, -} from "@fluidframework/fluid-static"; +import type { ContainerSchema, IFluidContainer } from "@fluidframework/fluid-static"; import { createDOProviderContainerRuntimeFactory, createFluidContainer, createServiceAudience, - resolveCompatibilityModeToMinVersionForCollab, } from "@fluidframework/fluid-static/internal"; import { RouterliciousDocumentServiceFactory } from "@fluidframework/routerlicious-driver/internal"; import type { MinimumVersionForCollab } from "@fluidframework/runtime-definitions"; @@ -86,34 +80,14 @@ export class TinyliciousClient { container: IFluidContainer; services: TinyliciousContainerServices; }>; - /** - * Creates a new detached container instance in Tinylicious server. - * @param containerSchema - Container schema for the new container. - * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value. - * @returns New detached container instance along with associated services. - * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `"2.0.0"`) instead. The legacy - * values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively. - */ public async createContainer( containerSchema: TContainerSchema, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: CompatibilityMode, - ): Promise<{ - container: IFluidContainer; - services: TinyliciousContainerServices; - }>; - public async createContainer( - containerSchema: TContainerSchema, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: MinimumVersionForCollab | CompatibilityMode, + minVersionForCollab: MinimumVersionForCollab, ): Promise<{ container: IFluidContainer; services: TinyliciousContainerServices; }> { - const loaderProps = this.getLoaderProps( - containerSchema, - resolveCompatibilityModeToMinVersionForCollab(compatibilityMode), - ); + const loaderProps = this.getLoaderProps(containerSchema, minVersionForCollab); // We're not actually using the code proposal (our code loader always loads the same module // regardless of the proposal), but the Container will only give us a NullRuntime if there's @@ -166,37 +140,15 @@ export class TinyliciousClient { container: IFluidContainer; services: TinyliciousContainerServices; }>; - /** - * Accesses the existing container given its unique ID in the tinylicious server. - * @param id - Unique ID of the container. - * @param containerSchema - Container schema used to access data objects in the container. - * @param compatibilityMode - Legacy {@link @fluidframework/fluid-static#CompatibilityMode} value. - * @returns Existing container instance along with associated services. - * @deprecated Pass a `MinimumVersionForCollab` SemVer string (e.g. `"2.0.0"`) instead. The legacy - * values `"1"` and `"2"` correspond to `"1.0.0"` and `"2.0.0"` respectively. - */ - public async getContainer( - id: string, - containerSchema: TContainerSchema, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: CompatibilityMode, - ): Promise<{ - container: IFluidContainer; - services: TinyliciousContainerServices; - }>; public async getContainer( id: string, containerSchema: TContainerSchema, - // eslint-disable-next-line import-x/no-deprecated - compatibilityMode: MinimumVersionForCollab | CompatibilityMode, + minVersionForCollab: MinimumVersionForCollab, ): Promise<{ container: IFluidContainer; services: TinyliciousContainerServices; }> { - const loaderProps = this.getLoaderProps( - containerSchema, - resolveCompatibilityModeToMinVersionForCollab(compatibilityMode), - ); + const loaderProps = this.getLoaderProps(containerSchema, minVersionForCollab); const container = await loadExistingContainer({ ...loaderProps, request: { url: id } }); const fluidContainer = await createFluidContainer({ container, diff --git a/packages/service-clients/tinylicious-client/src/index.ts b/packages/service-clients/tinylicious-client/src/index.ts index a01183146377..ffdc44559fdb 100644 --- a/packages/service-clients/tinylicious-client/src/index.ts +++ b/packages/service-clients/tinylicious-client/src/index.ts @@ -23,6 +23,3 @@ export { type TinyliciousUser, } from "./interfaces.js"; export { TinyliciousClient } from "./TinyliciousClient.js"; - -// Re-export so developers have access to parameter types for createContainer/getContainer without pulling in fluid-static -export type { CompatibilityMode } from "@fluidframework/fluid-static"; diff --git a/packages/service-clients/tinylicious-client/src/test/types/validateTinyliciousClientPrevious.generated.ts b/packages/service-clients/tinylicious-client/src/test/types/validateTinyliciousClientPrevious.generated.ts index 1fc19c6cd004..041b5277b29f 100644 --- a/packages/service-clients/tinylicious-client/src/test/types/validateTinyliciousClientPrevious.generated.ts +++ b/packages/service-clients/tinylicious-client/src/test/types/validateTinyliciousClientPrevious.generated.ts @@ -87,6 +87,7 @@ declare type current_as_old_for_Interface_TinyliciousUser = requireAssignableTo< * typeValidation.broken: * "TypeAlias_CompatibilityMode": {"forwardCompat": false} */ +// @ts-expect-error compatibility expected to be broken declare type old_as_current_for_TypeAlias_CompatibilityMode = requireAssignableTo, TypeOnly> /* @@ -96,6 +97,7 @@ declare type old_as_current_for_TypeAlias_CompatibilityMode = requireAssignableT * typeValidation.broken: * "TypeAlias_CompatibilityMode": {"backCompat": false} */ +// @ts-expect-error compatibility expected to be broken declare type current_as_old_for_TypeAlias_CompatibilityMode = requireAssignableTo, TypeOnly> /*