@fluidframework/tree 2.0.0-dev-rc.5.0.0.267932 → 2.0.0-dev-rc.5.0.0.268409

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.
Files changed (115) hide show
  1. package/api-report/tree.alpha.api.md +483 -0
  2. package/api-report/tree.beta.api.md +480 -0
  3. package/api-report/tree.public.api.md +480 -0
  4. package/dist/beta.d.ts +0 -2
  5. package/dist/core/revertible/revertible.d.ts +1 -2
  6. package/dist/core/revertible/revertible.d.ts.map +1 -1
  7. package/dist/core/revertible/revertible.js +0 -1
  8. package/dist/core/revertible/revertible.js.map +1 -1
  9. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +5 -1
  10. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  11. package/dist/feature-libraries/flex-tree/flexTreeTypes.js +4 -0
  12. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  13. package/dist/feature-libraries/flex-tree/index.d.ts +1 -1
  14. package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
  15. package/dist/feature-libraries/flex-tree/index.js +2 -1
  16. package/dist/feature-libraries/flex-tree/index.js.map +1 -1
  17. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  18. package/dist/feature-libraries/flex-tree/lazyField.js +2 -25
  19. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  20. package/dist/feature-libraries/flex-tree/utilities.d.ts +11 -0
  21. package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  22. package/dist/feature-libraries/flex-tree/utilities.js +25 -1
  23. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  24. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
  25. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  26. package/dist/feature-libraries/sequence-field/compose.js +1 -1
  27. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  28. package/dist/packageVersion.d.ts +1 -1
  29. package/dist/packageVersion.js +1 -1
  30. package/dist/packageVersion.js.map +1 -1
  31. package/dist/public.d.ts +0 -2
  32. package/dist/shared-tree/schematizingTreeView.d.ts +2 -3
  33. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  34. package/dist/shared-tree/schematizingTreeView.js +1 -1
  35. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  36. package/dist/shared-tree/treeApi.d.ts +9 -9
  37. package/dist/shared-tree/treeApi.d.ts.map +1 -1
  38. package/dist/shared-tree/treeApi.js.map +1 -1
  39. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  40. package/dist/shared-tree/treeCheckout.js +1 -2
  41. package/dist/shared-tree/treeCheckout.js.map +1 -1
  42. package/dist/simple-tree/rawNode.d.ts.map +1 -1
  43. package/dist/simple-tree/rawNode.js +1 -2
  44. package/dist/simple-tree/rawNode.js.map +1 -1
  45. package/dist/simple-tree/tree.d.ts +1 -2
  46. package/dist/simple-tree/tree.d.ts.map +1 -1
  47. package/dist/simple-tree/tree.js.map +1 -1
  48. package/dist/util/utils.d.ts +7 -3
  49. package/dist/util/utils.d.ts.map +1 -1
  50. package/dist/util/utils.js +1 -1
  51. package/dist/util/utils.js.map +1 -1
  52. package/lib/beta.d.ts +0 -2
  53. package/lib/core/revertible/revertible.d.ts +1 -2
  54. package/lib/core/revertible/revertible.d.ts.map +1 -1
  55. package/lib/core/revertible/revertible.js +0 -1
  56. package/lib/core/revertible/revertible.js.map +1 -1
  57. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +5 -1
  58. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  59. package/lib/feature-libraries/flex-tree/flexTreeTypes.js +4 -0
  60. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  61. package/lib/feature-libraries/flex-tree/index.d.ts +1 -1
  62. package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
  63. package/lib/feature-libraries/flex-tree/index.js +1 -1
  64. package/lib/feature-libraries/flex-tree/index.js.map +1 -1
  65. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  66. package/lib/feature-libraries/flex-tree/lazyField.js +1 -24
  67. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  68. package/lib/feature-libraries/flex-tree/utilities.d.ts +11 -0
  69. package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
  70. package/lib/feature-libraries/flex-tree/utilities.js +23 -0
  71. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  72. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1 -1
  73. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  74. package/lib/feature-libraries/sequence-field/compose.js +1 -1
  75. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  76. package/lib/packageVersion.d.ts +1 -1
  77. package/lib/packageVersion.js +1 -1
  78. package/lib/packageVersion.js.map +1 -1
  79. package/lib/public.d.ts +0 -2
  80. package/lib/shared-tree/schematizingTreeView.d.ts +2 -3
  81. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  82. package/lib/shared-tree/schematizingTreeView.js +1 -1
  83. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  84. package/lib/shared-tree/treeApi.d.ts +9 -9
  85. package/lib/shared-tree/treeApi.d.ts.map +1 -1
  86. package/lib/shared-tree/treeApi.js.map +1 -1
  87. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  88. package/lib/shared-tree/treeCheckout.js +1 -2
  89. package/lib/shared-tree/treeCheckout.js.map +1 -1
  90. package/lib/simple-tree/rawNode.d.ts.map +1 -1
  91. package/lib/simple-tree/rawNode.js +2 -3
  92. package/lib/simple-tree/rawNode.js.map +1 -1
  93. package/lib/simple-tree/tree.d.ts +1 -2
  94. package/lib/simple-tree/tree.d.ts.map +1 -1
  95. package/lib/simple-tree/tree.js.map +1 -1
  96. package/lib/util/utils.d.ts +7 -3
  97. package/lib/util/utils.d.ts.map +1 -1
  98. package/lib/util/utils.js +1 -1
  99. package/lib/util/utils.js.map +1 -1
  100. package/package.json +22 -22
  101. package/src/core/revertible/revertible.ts +1 -3
  102. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +5 -0
  103. package/src/feature-libraries/flex-tree/index.ts +1 -1
  104. package/src/feature-libraries/flex-tree/lazyField.ts +1 -25
  105. package/src/feature-libraries/flex-tree/utilities.ts +24 -0
  106. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1 -1
  107. package/src/feature-libraries/sequence-field/compose.ts +1 -1
  108. package/src/packageVersion.ts +1 -1
  109. package/src/shared-tree/schematizingTreeView.ts +2 -2
  110. package/src/shared-tree/treeApi.ts +11 -11
  111. package/src/shared-tree/treeCheckout.ts +1 -2
  112. package/src/simple-tree/rawNode.ts +1 -2
  113. package/src/simple-tree/tree.ts +1 -2
  114. package/src/util/utils.ts +7 -3
  115. package/api-report/tree.api.md +0 -2142
@@ -0,0 +1,483 @@
1
+ ## Alpha API Report File for "@fluidframework/tree"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ import { ErasedType } from '@fluidframework/core-interfaces';
8
+ import { IDisposable as IDisposable_2 } from '@fluidframework/core-interfaces';
9
+ import { IFluidHandle } from '@fluidframework/core-interfaces';
10
+ import { IFluidLoadable } from '@fluidframework/core-interfaces';
11
+ import { ISharedObject } from '@fluidframework/shared-object-base/internal';
12
+ import { ISharedObjectKind } from '@fluidframework/shared-object-base/internal';
13
+ import { SessionSpaceCompressedId } from '@fluidframework/id-compressor';
14
+ import { SharedObjectKind } from '@fluidframework/shared-object-base';
15
+ import { StableId } from '@fluidframework/id-compressor';
16
+ import type { Static } from '@sinclair/typebox';
17
+ import type { TSchema } from '@sinclair/typebox';
18
+
19
+ // @public
20
+ export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
21
+
22
+ // @public
23
+ export type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
24
+ [FieldKind.Required]: T;
25
+ [FieldKind.Optional]: T | undefined;
26
+ [FieldKind.Identifier]: DefaultsAreOptional extends true ? T | undefined : T;
27
+ }[Kind];
28
+
29
+ // @public
30
+ export enum CommitKind {
31
+ Default = 0,
32
+ Redo = 2,
33
+ Undo = 1
34
+ }
35
+
36
+ // @public
37
+ export interface CommitMetadata {
38
+ readonly isLocal: boolean;
39
+ readonly kind: CommitKind;
40
+ }
41
+
42
+ // @public
43
+ export interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider"> {
44
+ }
45
+
46
+ // @public
47
+ export type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
48
+
49
+ // @public
50
+ export enum FieldKind {
51
+ Identifier = 2,
52
+ Optional = 0,
53
+ Required = 1
54
+ }
55
+
56
+ // @public
57
+ export interface FieldProps {
58
+ readonly defaultProvider?: DefaultProvider;
59
+ readonly key?: string;
60
+ }
61
+
62
+ // @public @sealed
63
+ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types extends ImplicitAllowedTypes = ImplicitAllowedTypes> {
64
+ readonly allowedTypes: Types;
65
+ get allowedTypeSet(): ReadonlySet<TreeNodeSchema>;
66
+ readonly kind: Kind;
67
+ readonly props?: FieldProps | undefined;
68
+ protected _typeCheck?: MakeNominal;
69
+ }
70
+
71
+ // @public
72
+ export interface FieldSchemaUnsafe<out Kind extends FieldKind, out Types extends Unenforced<ImplicitAllowedTypes>> extends FieldSchema<Kind, any> {
73
+ readonly allowedTypes: Types;
74
+ readonly allowedTypeSet: ReadonlySet<TreeNodeSchema>;
75
+ readonly kind: Kind;
76
+ }
77
+
78
+ // @public
79
+ export type FlexList<Item = unknown> = readonly LazyItem<Item>[];
80
+
81
+ // @public
82
+ export type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
83
+
84
+ // @public
85
+ export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
86
+
87
+ // @public
88
+ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
89
+
90
+ // @public
91
+ export type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
92
+ readonly [Property in keyof T]: InsertableTreeFieldFromImplicitField<T[Property]>;
93
+ };
94
+
95
+ // @public
96
+ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
97
+ readonly [Property in keyof T]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
98
+ };
99
+
100
+ // @public
101
+ export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
102
+
103
+ // @public
104
+ export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
105
+
106
+ // @public
107
+ export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
108
+
109
+ // @public
110
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
111
+
112
+ // @public
113
+ export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
114
+ implicitlyConstructable: true;
115
+ } ? NodeBuilderData<T> : never) | Unhydrated<NodeFromSchema<T>>;
116
+
117
+ // @public
118
+ export type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = Unhydrated<NodeFromSchemaUnsafe<T>> | (T extends {
119
+ implicitlyConstructable: true;
120
+ } ? NodeBuilderDataUnsafe<T> : never);
121
+
122
+ // @public
123
+ export interface InternalTreeNode extends ErasedType<"@fluidframework/tree.InternalTreeNode"> {
124
+ }
125
+
126
+ // @public
127
+ export type IsListener<TListener> = TListener extends (...args: any[]) => void ? true : false;
128
+
129
+ // @public
130
+ export class IterableTreeArrayContent<T> implements Iterable<T> {
131
+ [Symbol.iterator](): Iterator<T>;
132
+ }
133
+
134
+ // @public
135
+ export interface ITree extends IFluidLoadable {
136
+ schematize<TRoot extends ImplicitFieldSchema>(config: TreeConfiguration<TRoot>): TreeView<TRoot>;
137
+ }
138
+
139
+ // @public
140
+ export interface ITreeConfigurationOptions {
141
+ enableSchemaValidation?: boolean;
142
+ }
143
+
144
+ // @public
145
+ export type LazyItem<Item = unknown> = Item | (() => Item);
146
+
147
+ // @public
148
+ export interface Listenable<TListeners extends object> {
149
+ on<K extends keyof Listeners<TListeners>>(eventName: K, listener: TListeners[K]): Off;
150
+ }
151
+
152
+ // @public
153
+ export type Listeners<T extends object> = {
154
+ [P in (string | symbol) & keyof T as IsListener<T[P]> extends true ? P : never]: T[P];
155
+ };
156
+
157
+ // @public
158
+ export interface MakeNominal {
159
+ }
160
+
161
+ // @public
162
+ export type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
163
+
164
+ // @public
165
+ export type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
166
+
167
+ // @public
168
+ export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
169
+
170
+ // @public
171
+ export type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
172
+
173
+ // @public
174
+ export interface NodeInDocumentConstraint {
175
+ // (undocumented)
176
+ readonly node: TreeNode;
177
+ // (undocumented)
178
+ readonly type: "nodeInDocument";
179
+ }
180
+
181
+ // @public
182
+ export enum NodeKind {
183
+ Array = 1,
184
+ Leaf = 3,
185
+ Map = 0,
186
+ Object = 2
187
+ }
188
+
189
+ // @public
190
+ export type ObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
191
+ -readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]>;
192
+ };
193
+
194
+ // @public
195
+ export type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
196
+ -readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
197
+ };
198
+
199
+ // @public
200
+ export type Off = () => void;
201
+
202
+ export { Range_2 as Range }
203
+
204
+ export { Required_2 as Required }
205
+
206
+ // @public
207
+ export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
208
+ readonly [P in symbol | string]: P extends K ? T : never;
209
+ };
210
+
211
+ // @public
212
+ export interface Revertible {
213
+ dispose(): void;
214
+ revert(): void;
215
+ revert(dispose: boolean): void;
216
+ readonly status: RevertibleStatus;
217
+ }
218
+
219
+ // @public
220
+ export type RevertibleFactory = (onRevertibleDisposed?: (revertible: Revertible) => void) => Revertible;
221
+
222
+ // @public
223
+ export enum RevertibleStatus {
224
+ Disposed = 1,
225
+ Valid = 0
226
+ }
227
+
228
+ // @public
229
+ export const rollback: unique symbol;
230
+
231
+ // @public
232
+ export interface RunTransaction {
233
+ <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
234
+ <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
235
+ <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
236
+ <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
237
+ <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
238
+ <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
239
+ <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
240
+ <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
241
+ <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
242
+ <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
243
+ <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
244
+ <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
245
+ readonly rollback: typeof rollback;
246
+ }
247
+
248
+ // @public @sealed
249
+ export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
250
+ constructor(scope: TScope);
251
+ array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
252
+ array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
253
+ arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>>, {
254
+ [Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
255
+ }, false, T>;
256
+ readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
257
+ readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
258
+ get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
259
+ map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>>, Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T>]>, true, T>;
260
+ map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>>, Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T>]>, true, T>;
261
+ mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>>, {
262
+ [Symbol.iterator](): Iterator<[
263
+ string,
264
+ InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>
265
+ ]>;
266
+ }, false, T>;
267
+ readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
268
+ readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
269
+ object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
270
+ objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecordUnsafe<T>, false, T>;
271
+ optional<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchema<FieldKind.Optional, T>;
272
+ optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
273
+ required<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchema<FieldKind.Required, T>;
274
+ requiredRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Required, T>;
275
+ // (undocumented)
276
+ readonly scope: TScope;
277
+ readonly string: TreeNodeSchema<"com.fluidframework.leaf.string", NodeKind.Leaf, string, string>;
278
+ }
279
+
280
+ // @public
281
+ export interface SchemaIncompatible {
282
+ readonly canUpgrade: boolean;
283
+ }
284
+
285
+ // @public
286
+ export type ScopedSchemaName<TScope extends string | undefined, TName extends number | string> = TScope extends undefined ? `${TName}` : `${TScope}.${TName}`;
287
+
288
+ // @alpha
289
+ export const SharedTree: ISharedObjectKind<ITree> & SharedObjectKind<ITree>;
290
+
291
+ // @public
292
+ export type TransactionConstraint = NodeInDocumentConstraint;
293
+
294
+ // @public
295
+ export const Tree: TreeApi;
296
+
297
+ // @public
298
+ export interface TreeApi extends TreeNodeApi {
299
+ contains(node: TreeNode, other: TreeNode): boolean;
300
+ readonly runTransaction: RunTransaction;
301
+ }
302
+
303
+ // @public
304
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
305
+ }
306
+
307
+ // @public
308
+ export const TreeArrayNode: {
309
+ spread: <T>(content: Iterable<T>) => IterableTreeArrayContent<T>;
310
+ };
311
+
312
+ // @public
313
+ export interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
314
+ insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
315
+ insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
316
+ insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
317
+ moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
318
+ moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
319
+ moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;
320
+ moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
321
+ moveRangeToStart(sourceStart: number, sourceEnd: number): void;
322
+ moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
323
+ moveToEnd(sourceIndex: number): void;
324
+ moveToEnd(sourceIndex: number, source: TMoveFrom): void;
325
+ moveToIndex(index: number, sourceIndex: number): void;
326
+ moveToIndex(index: number, sourceIndex: number, source: TMoveFrom): void;
327
+ moveToStart(sourceIndex: number): void;
328
+ moveToStart(sourceIndex: number, source: TMoveFrom): void;
329
+ removeAt(index: number): void;
330
+ removeRange(start?: number, end?: number): void;
331
+ }
332
+
333
+ // @public
334
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
335
+ }
336
+
337
+ // @public
338
+ export interface TreeChangeEvents {
339
+ nodeChanged(): void;
340
+ treeChanged(): void;
341
+ }
342
+
343
+ // @public
344
+ export class TreeConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> {
345
+ constructor(schema: TSchema, initialTree: () => InsertableTreeFieldFromImplicitField<TSchema>, options?: ITreeConfigurationOptions);
346
+ // (undocumented)
347
+ readonly initialTree: () => InsertableTreeFieldFromImplicitField<TSchema>;
348
+ readonly options: Required<ITreeConfigurationOptions>;
349
+ // (undocumented)
350
+ readonly schema: TSchema;
351
+ }
352
+
353
+ // @public
354
+ export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
355
+
356
+ // @public
357
+ export type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
358
+
359
+ // @public
360
+ export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
361
+
362
+ // @public
363
+ export interface TreeMapNode<T extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends ReadonlyMap<string, TreeNodeFromImplicitAllowedTypes<T>>, TreeNode {
364
+ delete(key: string): void;
365
+ entries(): IterableIterator<[string, TreeNodeFromImplicitAllowedTypes<T>]>;
366
+ forEach(callbackfn: (value: TreeNodeFromImplicitAllowedTypes<T>, key: string, map: ReadonlyMap<string, TreeNodeFromImplicitAllowedTypes<T>>) => void, thisArg?: any): void;
367
+ keys(): IterableIterator<string>;
368
+ set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypes<T> | undefined): void;
369
+ values(): IterableIterator<TreeNodeFromImplicitAllowedTypes<T>>;
370
+ }
371
+
372
+ // @public
373
+ export interface TreeMapNodeUnsafe<T extends Unenforced<ImplicitAllowedTypes>> extends ReadonlyMap<string, TreeNodeFromImplicitAllowedTypesUnsafe<T>>, TreeNode {
374
+ delete(key: string): void;
375
+ set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T> | undefined): void;
376
+ }
377
+
378
+ // @public
379
+ export abstract class TreeNode implements WithType {
380
+ abstract get [type](): string;
381
+ protected constructor();
382
+ }
383
+
384
+ // @public
385
+ export interface TreeNodeApi {
386
+ is<TSchema extends ImplicitAllowedTypes>(value: unknown, schema: TSchema): value is TreeNodeFromImplicitAllowedTypes<TSchema>;
387
+ key(node: TreeNode): string | number;
388
+ on<K extends keyof TreeChangeEvents>(node: TreeNode, eventName: K, listener: TreeChangeEvents[K]): () => void;
389
+ parent(node: TreeNode): TreeNode | undefined;
390
+ schema<T extends TreeNode | TreeLeafValue>(node: T): TreeNodeSchema<string, NodeKind, unknown, T>;
391
+ shortId(node: TreeNode): number | string | undefined;
392
+ readonly status: (node: TreeNode) => TreeStatus;
393
+ }
394
+
395
+ // @public
396
+ export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
397
+
398
+ // @public
399
+ export type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
400
+
401
+ // @public
402
+ export type TreeNodeSchema<Name extends string = string, Kind extends NodeKind = NodeKind, TNode = unknown, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
403
+
404
+ // @public
405
+ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
406
+ // @sealed
407
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
408
+ }
409
+
410
+ // @public
411
+ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
412
+ // (undocumented)
413
+ readonly identifier: Name;
414
+ readonly implicitlyConstructable: ImplicitlyConstructable;
415
+ readonly info: Info;
416
+ // (undocumented)
417
+ readonly kind: Kind;
418
+ }
419
+
420
+ // @public
421
+ export interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
422
+ // (undocumented)
423
+ create(data: TInsertable): TNode;
424
+ }
425
+
426
+ // @public
427
+ export type TreeObjectNode<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName>;
428
+
429
+ // @public
430
+ export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName>;
431
+
432
+ // @public
433
+ export enum TreeStatus {
434
+ Deleted = 2,
435
+ InDocument = 0,
436
+ New = 3,
437
+ Removed = 1
438
+ }
439
+
440
+ // @public
441
+ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable_2 {
442
+ readonly error?: SchemaIncompatible;
443
+ readonly events: Listenable<TreeViewEvents>;
444
+ get root(): TreeFieldFromImplicitField<TSchema>;
445
+ set root(newRoot: InsertableTreeFieldFromImplicitField<TSchema>);
446
+ upgradeSchema(): void;
447
+ }
448
+
449
+ // @public
450
+ export interface TreeViewEvents {
451
+ afterBatch(): void;
452
+ commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
453
+ rootChanged(): void;
454
+ }
455
+
456
+ // @public
457
+ export const type: unique symbol;
458
+
459
+ // @public
460
+ export type Unenforced<_DesiredExtendsConstraint> = unknown;
461
+
462
+ // @public
463
+ export type Unhydrated<T> = T;
464
+
465
+ // @public
466
+ export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"]>, {
467
+ [NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
468
+ [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
469
+ [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
470
+ }[T["kind"]], false, {
471
+ [NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
472
+ [NodeKind.Array]: ImplicitAllowedTypes;
473
+ [NodeKind.Map]: ImplicitAllowedTypes;
474
+ }[T["kind"]]>> = true;
475
+
476
+ // @public
477
+ export interface WithType<TName extends string = string> {
478
+ get [type](): TName;
479
+ }
480
+
481
+ // (No @packageDocumentation comment for this package)
482
+
483
+ ```