fluid-framework 2.0.0-dev-rc.1.0.0.228517 → 2.0.0-dev-rc.1.0.0.232845

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,25 +1,30 @@
1
- # @fluidframework/cell
1
+ # fluid-framework
2
2
 
3
- The `SharedCell` Distributed Data Structure (DDS) stores a single, shared value that can be edited or deleted.
3
+ The `fluid-framework` package bundles a collection of Fluid Framework client libraries for easy use when paired with a corresponding service client package (e.g. `@fluidframework/azure-client`, `@fluidframework/tinylicious-client`, or `@fluid-experimental/osdp-client (BETA)`).
4
4
 
5
- <!-- AUTO-GENERATED-CONTENT:START (README_INSTALLATION_SECTION:includeHeading=TRUE) -->
5
+ ## Contents
6
6
 
7
- <!-- prettier-ignore-start -->
8
- <!-- NOTE: This section is automatically generated using @fluid-tools/markdown-magic. Do not update these generated contents directly. -->
7
+ The `fluid-framework` package consists primarily of two portions: the `IFluidContainer` and a selection of distributed data structures (DDSes).
9
8
 
10
- ## Installation
9
+ ### IFluidContainer
11
10
 
12
- To get started, install the package by running the following command:
11
+ The **[IFluidContainer][]** interface is one of the types returned by calls to `createContainer()` and `getContainer()` on the service clients such as `AzureClient`.
12
+ It includes functionality to retrieve the Fluid data contained within, as well as to inspect the state of the collaboration session connection.
13
13
 
14
- ```bash
15
- npm i fluid-framework
16
- ```
14
+ ### DDS packages
17
15
 
18
- <!-- prettier-ignore-end -->
16
+ You'll use one or more DDS data structures in your container to model your collaborative data.
17
+ The `fluid-framework` package offers the following data structures:
19
18
 
20
- <!-- AUTO-GENERATED-CONTENT:END -->
19
+ 1. **[SharedTree][]**
20
+ 1. **[SharedMap][]**, a map-like data structure for storing key/value pair data
21
+ - Note: as of version 2.0, `SharedMap` is deprecated. Please use `SharedTree` instead.
21
22
 
22
- <!-- AUTO-GENERATED-CONTENT:START (README_DEPENDENCY_GUIDELINES_SECTION:includeHeading=TRUE) -->
23
+ ## Tutorial
24
+
25
+ Check out the [Hello World tutorial](https://fluidframework.com/docs/start/tutorial/) using `fluid-framework`.
26
+
27
+ <!-- AUTO-GENERATED-CONTENT:START (LIBRARY_PACKAGE_README:scripts=FALSE) -->
23
28
 
24
29
  <!-- prettier-ignore-start -->
25
30
  <!-- NOTE: This section is automatically generated using @fluid-tools/markdown-magic. Do not update these generated contents directly. -->
@@ -30,28 +35,17 @@ When taking a dependency on a Fluid Framework library, we recommend using a `^`
30
35
  While Fluid Framework libraries may use different ranges with interdependencies between other Fluid Framework libraries,
31
36
  library consumers should always prefer `^`.
32
37
 
33
- <!-- prettier-ignore-end -->
34
-
35
- <!-- AUTO-GENERATED-CONTENT:END -->
36
-
37
- <!-- AUTO-GENERATED-CONTENT:START (README_API_DOCS_SECTION:includeHeading=TRUE) -->
38
+ ## Installation
38
39
 
39
- <!-- prettier-ignore-start -->
40
+ To get started, install the package by running the following command:
40
41
 
41
- <!-- This section is automatically generated. To update it, make the appropriate changes to docs/md-magic.config.js or the embedded content, then run 'npm run build:md-magic' in the docs folder. -->
42
+ ```bash
43
+ npm i fluid-framework
44
+ ```
42
45
 
43
46
  ## API Documentation
44
47
 
45
- API documentation for **@fluidframework/cell** is available at <https://fluidframework.com/docs/api/v1/cell>.
46
-
47
- <!-- prettier-ignore-end -->
48
-
49
- <!-- AUTO-GENERATED-CONTENT:END -->
50
-
51
- <!-- AUTO-GENERATED-CONTENT:START (README_CONTRIBUTION_GUIDELINES_SECTION:includeHeading=TRUE) -->
52
-
53
- <!-- prettier-ignore-start -->
54
- <!-- NOTE: This section is automatically generated using @fluid-tools/markdown-magic. Do not update these generated contents directly. -->
48
+ API documentation for **fluid-framework** is available at <https://fluidframework.com/docs/apis/fluid-framework>.
55
49
 
56
50
  ## Contribution Guidelines
57
51
 
@@ -71,15 +65,6 @@ This project may contain Microsoft trademarks or logos for Microsoft projects, p
71
65
  Use of these trademarks or logos must follow Microsoft’s [Trademark & Brand Guidelines](https://www.microsoft.com/trademarks).
72
66
  Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
73
67
 
74
- <!-- prettier-ignore-end -->
75
-
76
- <!-- AUTO-GENERATED-CONTENT:END -->
77
-
78
- <!-- AUTO-GENERATED-CONTENT:START (README_HELP_SECTION:includeHeading=TRUE) -->
79
-
80
- <!-- prettier-ignore-start -->
81
- <!-- NOTE: This section is automatically generated using @fluid-tools/markdown-magic. Do not update these generated contents directly. -->
82
-
83
68
  ## Help
84
69
 
85
70
  Not finding what you're looking for in this README? Check out our [GitHub
@@ -90,15 +75,6 @@ issue](https://github.com/microsoft/FluidFramework/wiki/Submitting-Bugs-and-Feat
90
75
 
91
76
  Thank you!
92
77
 
93
- <!-- prettier-ignore-end -->
94
-
95
- <!-- AUTO-GENERATED-CONTENT:END -->
96
-
97
- <!-- AUTO-GENERATED-CONTENT:START (README_TRADEMARK_SECTION:includeHeading=TRUE) -->
98
-
99
- <!-- prettier-ignore-start -->
100
- <!-- NOTE: This section is automatically generated using @fluid-tools/markdown-magic. Do not update these generated contents directly. -->
101
-
102
78
  ## Trademark
103
79
 
104
80
  This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services.
@@ -110,3 +86,9 @@ Use of Microsoft trademarks or logos in modified versions of this project must n
110
86
  <!-- prettier-ignore-end -->
111
87
 
112
88
  <!-- AUTO-GENERATED-CONTENT:END -->
89
+
90
+ <!-- Links -->
91
+
92
+ [ifluidcontainer]: https://fluidframework.com/docs/api/v2/fluid-framework/ifluidcontainer-interface
93
+ [sharedmap]: https://fluidframework.com/docs/data-structures/map/
94
+ [sharedtree]: https://fluidframework.com/docs/data-structures/tree/
@@ -1,7 +1,14 @@
1
1
  {
2
2
  "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
3
  "extends": "../../../common/build/build-common/api-extractor-base.json",
4
- "bundledPackages": ["@fluidframework/map", "@fluidframework/tree"],
4
+ "bundledPackages": [
5
+ "@fluidframework/container-definitions",
6
+ "@fluidframework/container-loader",
7
+ "@fluidframework/driver-definitions",
8
+ "@fluidframework/fluid-static",
9
+ "@fluidframework/map",
10
+ "@fluidframework/tree"
11
+ ],
5
12
  "messages": {
6
13
  "extractorMessageReporting": {
7
14
  // TODO: Add missing documentation and remove this rule override
@@ -4,43 +4,28 @@
4
4
 
5
5
  ```ts
6
6
 
7
- import { AttachState } from '@fluidframework/container-definitions';
8
- import { ConnectionState } from '@fluidframework/container-loader';
9
- import { ContainerErrorType } from '@fluidframework/container-definitions';
10
- import { ContainerSchema } from '@fluidframework/fluid-static';
11
- import { DataObjectClass } from '@fluidframework/fluid-static';
12
- import { DriverErrorType } from '@fluidframework/driver-definitions';
13
7
  import { FluidObject } from '@fluidframework/core-interfaces';
14
8
  import { IChannel } from '@fluidframework/datastore-definitions';
15
9
  import { IChannelAttributes } from '@fluidframework/datastore-definitions';
16
10
  import { IChannelFactory } from '@fluidframework/datastore-definitions';
17
11
  import { IChannelServices } from '@fluidframework/datastore-definitions';
18
12
  import { IChannelStorageService } from '@fluidframework/datastore-definitions';
19
- import { IConnection } from '@fluidframework/fluid-static';
20
- import { ICriticalContainerError } from '@fluidframework/container-definitions';
13
+ import { IErrorBase } from '@fluidframework/core-interfaces';
14
+ import { IEvent } from '@fluidframework/core-interfaces';
15
+ import { IEventProvider } from '@fluidframework/core-interfaces';
21
16
  import { IEventThisPlaceHolder } from '@fluidframework/core-interfaces';
22
17
  import { IExperimentalIncrementalSummaryContext } from '@fluidframework/runtime-definitions';
23
- import { IFluidContainer } from '@fluidframework/fluid-static';
24
- import { IFluidContainerEvents } from '@fluidframework/fluid-static';
25
18
  import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
26
19
  import { IFluidHandle } from '@fluidframework/core-interfaces';
27
20
  import { IFluidLoadable } from '@fluidframework/core-interfaces';
28
21
  import { IFluidSerializer } from '@fluidframework/shared-object-base';
29
22
  import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
30
- import { IMember } from '@fluidframework/fluid-static';
31
23
  import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
32
- import { IServiceAudience } from '@fluidframework/fluid-static';
33
- import { IServiceAudienceEvents } from '@fluidframework/fluid-static';
34
24
  import { ISharedObject } from '@fluidframework/shared-object-base';
35
25
  import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
36
26
  import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
37
27
  import { ITelemetryContext } from '@fluidframework/runtime-definitions';
38
- import { LoadableObjectClass } from '@fluidframework/fluid-static';
39
- import { LoadableObjectClassRecord } from '@fluidframework/fluid-static';
40
- import { LoadableObjectCtor } from '@fluidframework/fluid-static';
41
- import { MemberChangedListener } from '@fluidframework/fluid-static';
42
28
  import { SharedObject } from '@fluidframework/shared-object-base';
43
- import { SharedObjectClass } from '@fluidframework/fluid-static';
44
29
 
45
30
  // @public
46
31
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
@@ -51,35 +36,88 @@ export type ApplyKind<T, Kind extends FieldKind> = Kind extends FieldKind.Requir
51
36
  // @public
52
37
  export type ArrayToUnion<T extends readonly unknown[]> = T extends readonly (infer TValue)[] ? TValue : never;
53
38
 
54
- export { AttachState }
55
-
56
39
  // @public
57
- export interface CheckoutEvents {
58
- afterBatch(): void;
59
- revertible(revertible: Revertible): void;
40
+ export enum AttachState {
41
+ Attached = "Attached",
42
+ Attaching = "Attaching",
43
+ Detached = "Detached"
60
44
  }
61
45
 
62
- export { ConnectionState }
46
+ // @public (undocumented)
47
+ export enum ConnectionState {
48
+ CatchingUp = 1,
49
+ Connected = 2,
50
+ Disconnected = 0,
51
+ EstablishingConnection = 3
52
+ }
63
53
 
64
- export { ContainerErrorType }
54
+ // @public
55
+ export namespace ConnectionStateType {
56
+ export type CatchingUp = 1;
57
+ export type Connected = 2;
58
+ export type Disconnected = 0;
59
+ export type EstablishingConnection = 3;
60
+ }
65
61
 
66
- export { ContainerSchema }
62
+ // @public
63
+ export type ConnectionStateType = ConnectionStateType.Disconnected | ConnectionStateType.EstablishingConnection | ConnectionStateType.CatchingUp | ConnectionStateType.Connected;
67
64
 
68
65
  // @public
69
- export const create: unique symbol;
66
+ export type ContainerAttachProps<T = unknown> = T;
67
+
68
+ // @alpha
69
+ export const ContainerErrorTypes: {
70
+ readonly clientSessionExpiredError: "clientSessionExpiredError";
71
+ readonly genericError: "genericError";
72
+ readonly throttlingError: "throttlingError";
73
+ readonly dataCorruptionError: "dataCorruptionError";
74
+ readonly dataProcessingError: "dataProcessingError";
75
+ readonly usageError: "usageError";
76
+ };
70
77
 
71
- export { DataObjectClass }
78
+ // @alpha (undocumented)
79
+ export type ContainerErrorTypes = (typeof ContainerErrorTypes)[keyof typeof ContainerErrorTypes];
72
80
 
73
81
  // @public
74
- export enum DiscardResult {
75
- Failure = 1,
76
- Success = 0
82
+ export interface ContainerSchema {
83
+ dynamicObjectTypes?: LoadableObjectClass<any>[];
84
+ initialObjects: LoadableObjectClassRecord;
77
85
  }
78
86
 
87
+ // @public
88
+ export type DataObjectClass<T extends IFluidLoadable> = {
89
+ readonly factory: {
90
+ IFluidDataStoreFactory: DataObjectClass<T>["factory"];
91
+ };
92
+ } & LoadableObjectCtor<T>;
93
+
79
94
  // @public
80
95
  export const disposeSymbol: unique symbol;
81
96
 
82
- export { DriverErrorType }
97
+ // @public
98
+ export const DriverErrorTypes: {
99
+ readonly genericNetworkError: "genericNetworkError";
100
+ readonly authorizationError: "authorizationError";
101
+ readonly fileNotFoundOrAccessDeniedError: "fileNotFoundOrAccessDeniedError";
102
+ readonly offlineError: "offlineError";
103
+ readonly unsupportedClientProtocolVersion: "unsupportedClientProtocolVersion";
104
+ readonly writeError: "writeError";
105
+ readonly fetchFailure: "fetchFailure";
106
+ readonly fetchTokenError: "fetchTokenError";
107
+ readonly incorrectServerResponse: "incorrectServerResponse";
108
+ readonly fileOverwrittenInStorage: "fileOverwrittenInStorage";
109
+ readonly deltaStreamConnectionForbidden: "deltaStreamConnectionForbidden";
110
+ readonly locationRedirection: "locationRedirection";
111
+ readonly fluidInvalidSchema: "fluidInvalidSchema";
112
+ readonly fileIsLocked: "fileIsLocked";
113
+ readonly outOfStorageError: "outOfStorageError";
114
+ readonly genericError: "genericError";
115
+ readonly throttlingError: "throttlingError";
116
+ readonly usageError: "usageError";
117
+ };
118
+
119
+ // @public (undocumented)
120
+ export type DriverErrorTypes = (typeof DriverErrorTypes)[keyof typeof DriverErrorTypes];
83
121
 
84
122
  // @public
85
123
  export type Events<E> = {
@@ -111,20 +149,48 @@ export type FlexList<Item = unknown> = readonly LazyItem<Item>[];
111
149
  // @public
112
150
  export type FlexListToUnion<TList extends FlexList> = ExtractItemType<ArrayToUnion<TList>>;
113
151
 
114
- export { IConnection }
152
+ // @public
153
+ export interface IConnection {
154
+ id: string;
155
+ mode: "write" | "read";
156
+ }
115
157
 
116
- export { ICriticalContainerError }
158
+ // @public
159
+ export type ICriticalContainerError = IErrorBase;
117
160
 
118
161
  // @public
119
162
  export interface IDisposable {
120
163
  [disposeSymbol](): void;
121
164
  }
122
165
 
123
- export { IFluidContainer }
166
+ // @public @sealed
167
+ export interface IFluidContainer<TContainerSchema extends ContainerSchema = ContainerSchema> extends IEventProvider<IFluidContainerEvents> {
168
+ attach(props?: ContainerAttachProps): Promise<string>;
169
+ readonly attachState: AttachState;
170
+ connect(): void;
171
+ readonly connectionState: ConnectionStateType;
172
+ create<T extends IFluidLoadable>(objectClass: LoadableObjectClass<T>): Promise<T>;
173
+ disconnect(): void;
174
+ dispose(): void;
175
+ readonly disposed: boolean;
176
+ readonly initialObjects: InitialObjects<TContainerSchema>;
177
+ readonly isDirty: boolean;
178
+ }
124
179
 
125
- export { IFluidContainerEvents }
180
+ // @public @sealed
181
+ export interface IFluidContainerEvents extends IEvent {
182
+ (event: "connected", listener: () => void): void;
183
+ (event: "disconnected", listener: () => void): void;
184
+ (event: "saved", listener: () => void): void;
185
+ (event: "dirty", listener: () => void): void;
186
+ (event: "disposed", listener: (error?: ICriticalContainerError) => void): any;
187
+ }
126
188
 
127
- export { IMember }
189
+ // @public
190
+ export interface IMember {
191
+ connections: IConnection[];
192
+ userId: string;
193
+ }
128
194
 
129
195
  // @public
130
196
  export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
@@ -132,6 +198,11 @@ export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
132
198
  // @public
133
199
  export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
134
200
 
201
+ // @public
202
+ export type InitialObjects<T extends ContainerSchema> = {
203
+ [K in keyof T["initialObjects"]]: T["initialObjects"][K] extends LoadableObjectClass<infer TChannel> ? TChannel : never;
204
+ };
205
+
135
206
  // @public
136
207
  export type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
137
208
  readonly [Property in keyof T]: InsertableTreeFieldFromImplicitField<T[Property]>;
@@ -148,9 +219,21 @@ export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
148
219
  implicitlyConstructable: true;
149
220
  } ? NodeBuilderData<T> : never) | Unhydrated<NodeFromSchema<T>>;
150
221
 
151
- export { IServiceAudience }
222
+ // @public
223
+ export interface IServiceAudience<M extends IMember> extends IEventProvider<IServiceAudienceEvents<M>> {
224
+ getMembers(): Map<string, M>;
225
+ getMyself(): Myself<M> | undefined;
226
+ }
152
227
 
153
- export { IServiceAudienceEvents }
228
+ // @public
229
+ export interface IServiceAudienceEvents<M extends IMember> extends IEvent {
230
+ // @eventProperty
231
+ (event: "membersChanged", listener: () => void): void;
232
+ // @eventProperty
233
+ (event: "memberAdded", listener: MemberChangedListener<M>): void;
234
+ // @eventProperty
235
+ (event: "memberRemoved", listener: MemberChangedListener<M>): void;
236
+ }
154
237
 
155
238
  // @public
156
239
  export type IsEvent<Event> = Event extends (...args: any[]) => any ? true : false;
@@ -173,8 +256,7 @@ export interface ISubscribable<E extends Events<E>> {
173
256
  }
174
257
 
175
258
  // @public
176
- export class IterableTreeListContent<T> implements Iterable<T> {
177
- static [create]<T>(content: Iterable<T>): IterableTreeListContent<T>;
259
+ export class IterableTreeArrayContent<T> implements Iterable<T> {
178
260
  [Symbol.iterator](): Iterator<T>;
179
261
  }
180
262
 
@@ -192,17 +274,26 @@ export interface IValueChanged {
192
274
  // @public
193
275
  export type LazyItem<Item = unknown> = Item | (() => Item);
194
276
 
195
- export { LoadableObjectClass }
277
+ // @public
278
+ export type LoadableObjectClass<T extends IFluidLoadable> = DataObjectClass<T> | SharedObjectClass<T>;
196
279
 
197
- export { LoadableObjectClassRecord }
280
+ // @public
281
+ export type LoadableObjectClassRecord = Record<string, LoadableObjectClass<any>>;
198
282
 
199
- export { LoadableObjectCtor }
283
+ // @public
284
+ export type LoadableObjectCtor<T extends IFluidLoadable> = new (...args: any[]) => T;
200
285
 
201
286
  // @public
202
287
  export interface MakeNominal {
203
288
  }
204
289
 
205
- export { MemberChangedListener }
290
+ // @public
291
+ export type MemberChangedListener<M extends IMember> = (clientId: string, member: M) => void;
292
+
293
+ // @public
294
+ export type Myself<M extends IMember = IMember> = M & {
295
+ currentConnection: string;
296
+ };
206
297
 
207
298
  // @public
208
299
  export type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
@@ -228,30 +319,6 @@ export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
228
319
  readonly [P in symbol | string]: P extends K ? T : never;
229
320
  };
230
321
 
231
- // @public
232
- export interface Revertible {
233
- discard(): DiscardResult;
234
- readonly kind: RevertibleKind;
235
- readonly origin: {
236
- readonly isLocal: boolean;
237
- };
238
- revert(): RevertResult;
239
- }
240
-
241
- // @public
242
- export enum RevertibleKind {
243
- Default = 0,
244
- Rebase = 3,
245
- Redo = 2,
246
- Undo = 1
247
- }
248
-
249
- // @public
250
- export enum RevertResult {
251
- Failure = 1,
252
- Success = 0
253
- }
254
-
255
322
  // @public @sealed
256
323
  export class SchemaFactory<TScope extends string = string, TName extends number | string = string> {
257
324
  constructor(scope: TScope);
@@ -306,7 +373,10 @@ export class SharedMap extends SharedObject<ISharedMapEvents> implements IShared
306
373
  values(): IterableIterator<any>;
307
374
  }
308
375
 
309
- export { SharedObjectClass }
376
+ // @public
377
+ export type SharedObjectClass<T extends IFluidLoadable> = {
378
+ readonly getFactory: () => IChannelFactory;
379
+ } & LoadableObjectCtor<T>;
310
380
 
311
381
  // @public
312
382
  export class SharedTree implements ITree {
@@ -348,19 +418,19 @@ export interface TreeApi {
348
418
  }
349
419
 
350
420
  // @public
351
- export interface TreeArrayNode<T extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeNode, TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<T>, InsertableTreeNodeFromImplicitAllowedTypes<T>, TreeArrayNode> {
421
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeNode, TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
352
422
  }
353
423
 
354
424
  // @public
355
425
  export const TreeArrayNode: {
356
- inline: <T>(content: Iterable<T>) => IterableTreeListContent<T>;
426
+ spread: <T>(content: Iterable<T>) => IterableTreeArrayContent<T>;
357
427
  };
358
428
 
359
429
  // @public
360
430
  export interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
361
- insertAt(index: number, ...value: (TNew | IterableTreeListContent<TNew>)[]): void;
362
- insertAtEnd(...value: (TNew | IterableTreeListContent<TNew>)[]): void;
363
- insertAtStart(...value: (TNew | IterableTreeListContent<TNew>)[]): void;
431
+ insertAt(index: number, ...value: (TNew | IterableTreeArrayContent<TNew>)[]): void;
432
+ insertAtEnd(...value: (TNew | IterableTreeArrayContent<TNew>)[]): void;
433
+ insertAtStart(...value: (TNew | IterableTreeArrayContent<TNew>)[]): void;
364
434
  moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
365
435
  moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
366
436
  moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;
@@ -393,13 +463,9 @@ export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = Fie
393
463
  export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
394
464
 
395
465
  // @public
396
- export interface TreeMapNode<T extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeMapNodeBase<TreeNodeFromImplicitAllowedTypes<T>, InsertableTreeNodeFromImplicitAllowedTypes<T>> {
397
- }
398
-
399
- // @public
400
- export interface TreeMapNodeBase<TOut, TIn = TOut> extends ReadonlyMap<string, TOut>, TreeNode {
466
+ export interface TreeMapNode<T extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends ReadonlyMap<string, TreeNodeFromImplicitAllowedTypes<T>>, TreeNode {
401
467
  delete(key: string): void;
402
- set(key: string, value: TIn | undefined): void;
468
+ set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypes<T> | undefined): void;
403
469
  }
404
470
 
405
471
  // @public
@@ -450,10 +516,15 @@ export enum TreeStatus {
450
516
 
451
517
  // @public
452
518
  export interface TreeView<in out TRoot> extends IDisposable {
453
- readonly events: ISubscribable<CheckoutEvents>;
519
+ readonly events: ISubscribable<TreeViewEvents>;
454
520
  readonly root: TRoot;
455
521
  }
456
522
 
523
+ // @public
524
+ export interface TreeViewEvents {
525
+ afterBatch(): void;
526
+ }
527
+
457
528
  // @public
458
529
  export const type: unique symbol;
459
530