Skip to content

DDS Migration Shim #23729

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 62 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
e0542bf
Add migration shim WIP
CraigMacomber Jan 29, 2025
a645b53
Support nested handles, start generic adapter
CraigMacomber Jan 29, 2025
ac9d64f
proxy map
CraigMacomber Jan 31, 2025
d2bddbd
remove copied API reports
CraigMacomber Jan 31, 2025
41cb50c
Finish roughing out generic and map to tree adapters
CraigMacomber Feb 1, 2025
f5c33cc
Allow eager and explicit migration
CraigMacomber Feb 1, 2025
5108a02
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Feb 3, 2025
ff32f37
merge assert
CraigMacomber Feb 3, 2025
a34812b
Fix package lock merge
CraigMacomber Feb 3, 2025
a18b790
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Feb 4, 2025
c92d1dc
Get kernel tree building
CraigMacomber Feb 4, 2025
f9a9f69
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Feb 4, 2025
d19458e
progress on tree
CraigMacomber Feb 13, 2025
01dc252
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Feb 13, 2025
9e95090
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Feb 14, 2025
d062917
fix more build
CraigMacomber Feb 14, 2025
3d8c9da
Fix most tests
CraigMacomber Feb 14, 2025
2a0e56c
fix shim build
CraigMacomber Feb 14, 2025
5fdd404
Fix exports and tags
CraigMacomber Feb 14, 2025
3fb2029
Get adapter building and tests
CraigMacomber Feb 14, 2025
cc79f7b
shim progress
CraigMacomber Feb 14, 2025
6601401
Fix localOpMetadata handeling
CraigMacomber Feb 15, 2025
e88c491
init refactor
CraigMacomber Feb 15, 2025
6c5aa0e
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Feb 19, 2025
41b9b59
Make build pass
CraigMacomber Feb 19, 2025
fd47359
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Feb 19, 2025
776d48a
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Feb 27, 2025
9cbe85a
Fix merge
CraigMacomber Feb 27, 2025
3a43e3b
FIx deps from merge
CraigMacomber Feb 27, 2025
c792243
Migrate kernel from processCore to processMessagesCore
CraigMacomber Feb 27, 2025
f3e70a2
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Feb 28, 2025
efe5cef
Use FluidSerializableAsTree
CraigMacomber Feb 28, 2025
f01f103
Share convert
CraigMacomber Feb 28, 2025
f814e1f
Fix build
CraigMacomber Feb 28, 2025
78588e5
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Apr 4, 2025
afc26f1
Fix merge
CraigMacomber Apr 4, 2025
3ddabeb
fix loadCore
CraigMacomber Apr 4, 2025
73c51a5
Fix incremental summary, remove unneeded diffs, and fix test
CraigMacomber Apr 4, 2025
4ce1645
Fix build
CraigMacomber Apr 4, 2025
dc0ab5c
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Apr 4, 2025
b4d3758
fix package lock
CraigMacomber Apr 7, 2025
25e87bb
Summarize pending migration status
CraigMacomber Apr 9, 2025
0a09602
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Apr 9, 2025
2946549
fix merge
CraigMacomber Apr 9, 2025
4647ebd
Update for merge
CraigMacomber Apr 16, 2025
03b33fc
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Apr 17, 2025
835b9d6
Fix merge
CraigMacomber Apr 17, 2025
026a5de
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Apr 17, 2025
420fe9e
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber May 13, 2025
6638d77
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber May 13, 2025
cb9fe2d
fix deps
CraigMacomber May 13, 2025
828789e
Fix tree build
CraigMacomber May 13, 2025
4922618
Mostly fix build
CraigMacomber May 13, 2025
c5ab82c
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Jun 18, 2025
dc1d2b3
fix deps
CraigMacomber Jun 18, 2025
5d05ce6
Fix package version
CraigMacomber Jun 18, 2025
a1aa3bc
Update package version
CraigMacomber Jun 18, 2025
d4367d5
treeMap -> internal: fix build
CraigMacomber Jun 18, 2025
9a90651
Remove unneeded API changes
CraigMacomber Jun 18, 2025
d8162fc
fix map view
CraigMacomber Jun 18, 2025
5e69389
Fix metadata op test
CraigMacomber Jun 18, 2025
33530ac
Merge branch 'main' of https://github.com/microsoft/FluidFramework in…
CraigMacomber Jun 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PACKAGES.md
Original file line number Diff line number Diff line change
@@ -99,7 +99,7 @@ The dependencies between layers are enforced by the layer-check command._

| Packages | Layer Dependencies |
| --- | --- |
| - [@fluid-experimental/attributable-map](/experimental/dds/attributable-map)</br>- [@fluid-experimental/ot](/experimental/dds/ot/ot)</br>- [@fluid-experimental/sharejs-json1](/experimental/dds/ot/sharejs/json1)</br>- [@fluid-experimental/sequence-deprecated](/experimental/dds/sequence-deprecated)</br>- [@fluid-experimental/tree](/experimental/dds/tree)</br>- [@fluidframework/cell](/packages/dds/cell)</br>- [@fluidframework/counter](/packages/dds/counter)</br>- [@fluid-experimental/ink](/packages/dds/ink)</br>- [@fluid-private/legacy-dds](/packages/dds/legacy-dds) (private)</br>- [@fluidframework/map](/packages/dds/map)</br>- [@fluidframework/matrix](/packages/dds/matrix)</br>- [@fluidframework/merge-tree](/packages/dds/merge-tree)</br>- [@fluidframework/ordered-collection](/packages/dds/ordered-collection)</br>- [@fluid-experimental/pact-map](/packages/dds/pact-map)</br>- [@fluidframework/register-collection](/packages/dds/register-collection)</br>- [@fluidframework/sequence](/packages/dds/sequence)</br>- [@fluidframework/shared-object-base](/packages/dds/shared-object-base)</br>- [@fluidframework/shared-summary-block](/packages/dds/shared-summary-block)</br>- [@fluidframework/task-manager](/packages/dds/task-manager)</br>- [@fluidframework/tree](/packages/dds/tree)</br>- [@fluidframework/container-runtime](/packages/runtime/container-runtime)</br>- [@fluidframework/container-runtime-definitions](/packages/runtime/container-runtime-definitions)</br>- [@fluidframework/datastore](/packages/runtime/datastore)</br>- [@fluidframework/datastore-definitions](/packages/runtime/datastore-definitions)</br>- [@fluidframework/id-compressor](/packages/runtime/id-compressor)</br>- [@fluidframework/runtime-definitions](/packages/runtime/runtime-definitions)</br>- [@fluidframework/runtime-utils](/packages/runtime/runtime-utils) | - [Core-Interfaces](#Core-Interfaces)</br>- [Driver-Definitions](#Driver-Definitions)</br>- [Container-Definitions](#Container-Definitions)</br>- [Core-Utils](#Core-Utils)</br>- [Client-Utils](#Client-Utils)</br>- [Telemetry-Utils](#Telemetry-Utils)</br>- [Driver-Utils](#Driver-Utils)</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp; |
| - [@fluid-experimental/attributable-map](/experimental/dds/attributable-map)</br>- [@fluid-experimental/ot](/experimental/dds/ot/ot)</br>- [@fluid-experimental/sharejs-json1](/experimental/dds/ot/sharejs/json1)</br>- [@fluid-experimental/sequence-deprecated](/experimental/dds/sequence-deprecated)</br>- [@fluid-experimental/tree](/experimental/dds/tree)</br>- [@fluidframework/cell](/packages/dds/cell)</br>- [@fluidframework/counter](/packages/dds/counter)</br>- [@fluid-experimental/ink](/packages/dds/ink)</br>- [@fluid-private/legacy-dds](/packages/dds/legacy-dds) (private)</br>- [@fluidframework/map](/packages/dds/map)</br>- [@fluidframework/matrix](/packages/dds/matrix)</br>- [@fluidframework/merge-tree](/packages/dds/merge-tree)</br>- [@fluidframework/migration-shim](/packages/dds/migration-shim)</br>- [@fluidframework/ordered-collection](/packages/dds/ordered-collection)</br>- [@fluid-experimental/pact-map](/packages/dds/pact-map)</br>- [@fluidframework/register-collection](/packages/dds/register-collection)</br>- [@fluidframework/sequence](/packages/dds/sequence)</br>- [@fluidframework/shared-object-base](/packages/dds/shared-object-base)</br>- [@fluidframework/shared-summary-block](/packages/dds/shared-summary-block)</br>- [@fluidframework/task-manager](/packages/dds/task-manager)</br>- [@fluidframework/tree](/packages/dds/tree)</br>- [@fluidframework/container-runtime](/packages/runtime/container-runtime)</br>- [@fluidframework/container-runtime-definitions](/packages/runtime/container-runtime-definitions)</br>- [@fluidframework/datastore](/packages/runtime/datastore)</br>- [@fluidframework/datastore-definitions](/packages/runtime/datastore-definitions)</br>- [@fluidframework/id-compressor](/packages/runtime/id-compressor)</br>- [@fluidframework/runtime-definitions](/packages/runtime/runtime-definitions)</br>- [@fluidframework/runtime-utils](/packages/runtime/runtime-utils) | - [Core-Interfaces](#Core-Interfaces)</br>- [Driver-Definitions](#Driver-Definitions)</br>- [Container-Definitions](#Container-Definitions)</br>- [Core-Utils](#Core-Utils)</br>- [Client-Utils](#Client-Utils)</br>- [Telemetry-Utils](#Telemetry-Utils)</br>- [Driver-Utils](#Driver-Utils)</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp;</br>&nbsp; |

### Framework

1 change: 1 addition & 0 deletions feeds/internal-build.txt
Original file line number Diff line number Diff line change
@@ -59,6 +59,7 @@ fluid-framework
@fluidframework/register-collection
@fluid-experimental/pact-map
@fluidframework/ordered-collection
@fluidframework/migration-shim
@fluidframework/merge-tree
@fluidframework/matrix
@fluidframework/map
1 change: 1 addition & 0 deletions feeds/internal-test.txt
Original file line number Diff line number Diff line change
@@ -66,6 +66,7 @@ fluid-framework
@fluidframework/register-collection
@fluid-experimental/pact-map
@fluidframework/ordered-collection
@fluidframework/migration-shim
@fluidframework/merge-tree
@fluidframework/matrix
@fluidframework/map
1 change: 1 addition & 0 deletions feeds/public.txt
Original file line number Diff line number Diff line change
@@ -58,6 +58,7 @@ fluid-framework
@fluidframework/register-collection
@fluid-experimental/pact-map
@fluidframework/ordered-collection
@fluidframework/migration-shim
@fluidframework/merge-tree
@fluidframework/matrix
@fluidframework/map
27 changes: 18 additions & 9 deletions packages/dds/map/api-report/map.legacy.alpha.api.md
Original file line number Diff line number Diff line change
@@ -84,7 +84,11 @@ export interface ISharedDirectoryEvents extends ISharedObjectEvents {
}

// @alpha @sealed @legacy
export interface ISharedMap extends ISharedObject<ISharedMapEvents>, Map<string, any> {
export interface ISharedMap extends ISharedObject<ISharedMapEvents>, ISharedMapCore {
}

// @alpha @sealed @legacy @system
export interface ISharedMapCore extends Map<string, any> {
get<T = any>(key: string): T | undefined;
set<T = unknown>(key: string, value: T): this;
}
@@ -102,14 +106,19 @@ export interface IValueChanged {
}

// @alpha @sealed @legacy
export class MapFactory implements IChannelFactory<ISharedMap> {
static readonly Attributes: IChannelAttributes;
get attributes(): IChannelAttributes;
create(runtime: IFluidDataStoreRuntime, id: string): ISharedMap;
load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<ISharedMap>;
static readonly Type = "https://graph.microsoft.com/types/map";
get type(): string;
}
export const MapFactory: {
new (): {
readonly type: string;
readonly attributes: IChannelAttributes;
load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<ISharedMap & IChannel>;
create(runtime: IFluidDataStoreRuntime, id: string): ISharedMap & IChannel;
};
readonly Type: string;
readonly Attributes: IChannelAttributes;
};

// @alpha @sealed @legacy
export type MapFactory = InstanceType<typeof MapFactory>;

// @alpha @legacy
export const SharedDirectory: ISharedObjectKind<ISharedDirectory> & SharedObjectKind<ISharedDirectory>;
6 changes: 5 additions & 1 deletion packages/dds/map/package.json
Original file line number Diff line number Diff line change
@@ -174,7 +174,11 @@
"typescript": "~5.4.5"
},
"typeValidation": {
"broken": {},
"broken": {
"ClassStatics_MapFactory": {
"backCompat": false
}
},
"entrypoint": "legacy"
}
}
22 changes: 22 additions & 0 deletions packages/dds/map/src/index.ts
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@ export type {
ISharedMap,
ISharedMapEvents,
IValueChanged,
ISharedMapCore,
} from "./interfaces.js";
export { SharedMap } from "./mapFactory.js";
export { SharedDirectory } from "./directoryFactory.js";
@@ -37,3 +38,24 @@ export type {
IDirectoryNewStorageFormat,
IDirectoryDataObject,
} from "./directory.js";

// Internal
export type { ILocalValue } from "./localValues.js";
export type {
IMapClearLocalOpMetadata,
IMapKeyEditLocalOpMetadata,
IMapKeyAddLocalOpMetadata,
ISerializedValue,
} from "./internalInterfaces.js";
export {
type IMapOperation,
type IMapKeyOperation,
mapKernelFactory,
type MapLocalOpMetadata,
type MapKeyLocalOpMetadata,
} from "./mapKernel.js";
export type {
IMapClearOperation,
IMapDeleteOperation,
IMapSetOperation,
} from "./internalInterfaces.js";
22 changes: 21 additions & 1 deletion packages/dds/map/src/interfaces.ts
Original file line number Diff line number Diff line change
@@ -365,8 +365,28 @@ export interface ISharedMapEvents extends ISharedObjectEvents {
* @alpha
*/
// TODO: Use `unknown` instead (breaking change).
export interface ISharedMap extends ISharedObject<ISharedMapEvents>, ISharedMapCore {}

/**
* The SharedMap distributed data structure can be used to store key-value pairs.
*
* @remarks
* SharedMap provides the same API for setting and retrieving values that JavaScript developers are accustomed to with the
* {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map | Map} built-in object.
* However, the keys of a SharedMap must be strings, and the values must either be a JSON-serializable object or a
* {@link @fluidframework/datastore#FluidObjectHandle}.
*
* Note: unlike JavaScript maps, SharedMap does not make any guarantees regarding enumeration order.
*
* For more information, including example usages, see {@link https://fluidframework.com/docs/data-structures/map/}.
* @sealed
* @legacy
* @alpha
* @system
*/
// TODO: Use `unknown` instead (breaking change).
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export interface ISharedMap extends ISharedObject<ISharedMapEvents>, Map<string, any> {
export interface ISharedMapCore extends Map<string, any> {
/**
* Retrieves the given key from the map if it exists.
* @param key - Key to retrieve from
7 changes: 7 additions & 0 deletions packages/dds/map/src/internalInterfaces.ts
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@ import type { ILocalValue } from "./localValues.js";

/**
* Operation indicating a value should be set for a key.
* @internal
*/
export interface IMapSetOperation {
/**
@@ -27,6 +28,7 @@ export interface IMapSetOperation {

/**
* Operation indicating the map should be cleared.
* @internal
*/
export interface IMapClearOperation {
/**
@@ -37,6 +39,7 @@ export interface IMapClearOperation {

/**
* Operation indicating a key should be deleted from the map.
* @internal
*/
export interface IMapDeleteOperation {
/**
@@ -52,6 +55,7 @@ export interface IMapDeleteOperation {

/**
* Metadata for an local `edit` operation.
* @internal
*/
export interface IMapKeyEditLocalOpMetadata {
/**
@@ -72,6 +76,7 @@ export interface IMapKeyEditLocalOpMetadata {

/**
* Metadata for an local `add` operation.
* @internal
*/
export interface IMapKeyAddLocalOpMetadata {
/**
@@ -87,6 +92,7 @@ export interface IMapKeyAddLocalOpMetadata {

/**
* Metadata for an local `clear` operation.
* @internal
*/
export interface IMapClearLocalOpMetadata {
/**
@@ -155,6 +161,7 @@ export interface ISerializableValue {

/**
* Serialized {@link ISerializableValue} counterpart.
* @internal
*/
export interface ISerializedValue {
/**
1 change: 1 addition & 0 deletions packages/dds/map/src/localValues.ts
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@ import type { ISerializableValue, ISerializedValue } from "./internalInterfaces.

/**
* A local value to be stored in a container type Distributed Data Store (DDS).
* @internal
*/
export interface ILocalValue {
/**
Loading
Oops, something went wrong.
Loading
Oops, something went wrong.