fluid-framework 2.81.1 → 2.82.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,130 @@
1
1
  # fluid-framework
2
2
 
3
+ ## 2.82.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Promote MinimumVersionForCollab to beta ([#26342](https://github.com/microsoft/FluidFramework/pull/26342)) [2bb53c5c3f1](https://github.com/microsoft/FluidFramework/commit/2bb53c5c3f1aa9e3232d4a1f1e4a6a32d09248eb)
8
+
9
+ Promotes the [MinimumVersionForCollab](https://fluidframework.com/docs/api/runtime-definitions/minimumversionforcollab-typealias) type to beta, and adds option to [configuredSharedTreeBeta](https://fluidframework.com/docs/api/fluid-framework#configuredsharedtreebeta-function) for specifying it when creating a new `SharedTree`.
10
+
11
+ This allows users to opt into new features and optimizations that are only available when certain minimum version thresholds are guaranteed.
12
+ For more details, see [FluidClientVersion](https://fluidframework.com/docs/api/fluid-framework#fluidclientversion-variable)
13
+
14
+ #### Example usage
15
+
16
+ ```typescript
17
+ // Configure SharedTree DDS to limit the features it requires of collaborators and future document users to only those available in version `2.80.0` and later, overriding the `MinimumVersionForCollab` provided by the runtime (default: "2.0.0").
18
+ // Edits made to this DDS by this client might cause clients older than the specified version to be unable to open the document and/or error out of collaboration sessions.
19
+ const SharedTree = configuredSharedTreeBeta({
20
+ minVersionForCollab: FluidClientVersion.v2_80,
21
+ });
22
+ ```
23
+
24
+ - Add "push" as alias for insertAtEnd on TreeArrayNode ([#26260](https://github.com/microsoft/FluidFramework/pull/26260)) [e2ed71b014d](https://github.com/microsoft/FluidFramework/commit/e2ed71b014d44762e433841cada4667dd501e9c1)
25
+
26
+ Adds `push` as an alias to make the API more intuitive and reduce friction for both `LLM`-generated code and developers familiar with JavaScript array semantics.
27
+
28
+ #### Usage
29
+
30
+ ```typescript
31
+ import { TreeArrayNode } from "@fluidframework/tree";
32
+
33
+ // `inventory` is a TreeArrayNode from your schema.
34
+ inventory.push({ name: "Apples", quantity: 3 });
35
+
36
+ // Insert multiple items in one call.
37
+ inventory.push(
38
+ TreeArrayNode.spread([
39
+ { name: "Oranges", quantity: 2 },
40
+ { name: "Bananas", quantity: 5 },
41
+ ]),
42
+ );
43
+ ```
44
+
45
+ - Promote TableSchema APIs to beta ([#26339](https://github.com/microsoft/FluidFramework/pull/26339)) [36a625a3058](https://github.com/microsoft/FluidFramework/commit/36a625a305878a267d2010ace377ff0d80d3367d)
46
+
47
+ Promotes the `SharedTree` [TableSchema](https://fluidframework.com/docs/api/fluid-framework/tableschema-namespace) from alpha to beta.
48
+ These APIs can now be imported via `@fluidframework/tree/beta`.
49
+ Documents from before this are not supported with the beta version of the schema to ensure orphan cell invariants can be guaranteed.
50
+
51
+ - Fix bug in multi-step move of array elements ([#26344](https://github.com/microsoft/FluidFramework/pull/26344)) [1bca56c3fb2](https://github.com/microsoft/FluidFramework/commit/1bca56c3fb2ade3ad876e8761366053e5295490b)
52
+
53
+ A multi-step move can be authored by moving the same array element multiple times within the scope of a single transaction.
54
+ Such multi-step would lead to errors in the following scenarios:
55
+ - Reverting a multi-step move would fail with error code 0x92a on the peer attempting the revert, thus putting the peer in a broken read-only state without corrupting the document.
56
+ - If the set of pending edits generated by a peer included an edit with a multi-step move, followed by further edits to any of the moved items, reconciling these edits with concurrent edits sequenced earlier could lead to a document corruption with error code 0x9c7.
57
+
58
+ These operations are now safe.
59
+
60
+ - Adds optional "label" parameter to runTransaction for grouping changes ([#25938](https://github.com/microsoft/FluidFramework/pull/25938)) [cca4db29c72](https://github.com/microsoft/FluidFramework/commit/cca4db29c722aca3fbfa5c0b45a852cd8499a17a)
61
+
62
+ Transaction labels can be used to group multiple changes for undo/redo, where groups of changes with the same label can be undone together. When multiple labels are used in nested transactions, only the outermost label will be used.
63
+
64
+ The following example demonstrates how to implement label-based undo/redo grouping. It listens to the `changed` event on the checkout to collect all commits with the same label into a group. When `undoLatestGroup()` is called, all transactions in that group are reverted together with a single operation.
65
+
66
+ ```typescript
67
+ interface LabeledGroup {
68
+ label: unknown;
69
+ revertibles: { revert(): void }[];
70
+ }
71
+
72
+ const undoGroups: LabeledGroup[] = [];
73
+
74
+ // The callback on the "changed" event can be used to group the commits.
75
+ view.checkout.events.on("changed", (meta, getRevertible) => {
76
+ // Only process local edits, not remote changes or Undo/Redo operations
77
+ if (getRevertible !== undefined && meta.kind === CommitKind.Default) {
78
+ const label = meta.label;
79
+ const revertible = getRevertible();
80
+
81
+ // Check if the latest group contains the same label.
82
+ const latestGroup = undoGroups[undoGroups.length - 1];
83
+ if (
84
+ label !== undefined &&
85
+ latestGroup !== undefined &&
86
+ label === latestGroup.label
87
+ ) {
88
+ latestGroup.revertibles.push(revertible);
89
+ } else {
90
+ undoGroups.push({ label, revertibles: [revertible] });
91
+ }
92
+ }
93
+ });
94
+
95
+ const undoLatestGroup = () => {
96
+ const latestGroup =
97
+ undoGroups.pop() ?? fail("There are currently no undo groups.");
98
+ for (const revertible of latestGroup.revertibles.reverse()) {
99
+ revertible.revert();
100
+ }
101
+ };
102
+
103
+ // Group multiple transactions with the same label
104
+ view.runTransaction(
105
+ () => {
106
+ view.root.content = 1;
107
+ },
108
+ { label: "EditGroup" },
109
+ );
110
+ view.runTransaction(
111
+ () => {
112
+ view.root.content = 2;
113
+ },
114
+ { label: "EditGroup" },
115
+ );
116
+ view.runTransaction(
117
+ () => {
118
+ view.root.content = 3;
119
+ },
120
+ { label: "EditGroup" },
121
+ );
122
+
123
+ // This would undo all three transactions together.
124
+ undoLatestGroup();
125
+ // view.root.content is now back to 0 (the initial state).
126
+ ```
127
+
3
128
  ## 2.81.0
4
129
 
5
130
  ### Minor Changes
@@ -114,6 +114,11 @@ export const ArrayNodeSchema: {
114
114
  readonly [Symbol.hasInstance]: (value: TreeNodeSchema) => value is ArrayNodeSchema;
115
115
  };
116
116
 
117
+ // @alpha @sealed
118
+ export interface ArrayPlaceAnchor {
119
+ get index(): number;
120
+ }
121
+
117
122
  // @alpha
118
123
  export function asAlpha<TSchema extends ImplicitFieldSchema>(view: TreeView<TSchema>): TreeViewAlpha<TSchema>;
119
124
 
@@ -160,12 +165,16 @@ export function cloneWithReplacements(root: unknown, rootKey: string, replacer:
160
165
  export type CodecName = string;
161
166
 
162
167
  // @alpha @input
163
- export interface CodecWriteOptions extends ICodecOptions {
168
+ export interface CodecWriteOptions extends ICodecOptions, CodecWriteOptionsBeta {
164
169
  readonly allowPossiblyIncompatibleWriteVersionOverrides?: boolean;
165
- readonly minVersionForCollab: MinimumVersionForCollab;
166
170
  readonly writeVersionOverrides?: ReadonlyMap<CodecName, FormatVersion>;
167
171
  }
168
172
 
173
+ // @beta @input
174
+ export interface CodecWriteOptionsBeta {
175
+ readonly minVersionForCollab: MinimumVersionForCollab;
176
+ }
177
+
169
178
  // @public
170
179
  export enum CommitKind {
171
180
  Default = 0,
@@ -231,19 +240,22 @@ export interface ContainerSchema {
231
240
  // @alpha
232
241
  export const contentSchemaSymbol: unique symbol;
233
242
 
243
+ // @alpha
244
+ export function createArrayInsertionAnchor(node: TreeArrayNode, currentIndex: number): ArrayPlaceAnchor;
245
+
234
246
  // @alpha
235
247
  export function createIdentifierIndex<TSchema extends ImplicitFieldSchema>(view: TreeView<TSchema>): IdentifierIndex;
236
248
 
237
249
  // @alpha
238
- export function createIndependentTreeAlpha<const TSchema extends ImplicitFieldSchema>(options?: ForestOptions & (({
239
- idCompressor?: IIdCompressor_2 | undefined;
240
- } & {
241
- content?: undefined;
250
+ export function createIndependentTreeAlpha<const TSchema extends ImplicitFieldSchema>(options?: CreateIndependentTreeAlphaOptions): ViewableTree & Pick<ITreeAlpha, "exportVerbose" | "exportSimpleSchema">;
251
+
252
+ // @alpha
253
+ export type CreateIndependentTreeAlphaOptions = ForestOptions & ((IndependentViewOptions & {
254
+ content?: never;
242
255
  }) | (ICodecOptions & {
243
256
  content: ViewContent;
244
- } & {
245
- idCompressor?: undefined;
246
- }))): ViewableTree & Pick<ITreeAlpha, "exportVerbose" | "exportSimpleSchema">;
257
+ idCompressor?: never;
258
+ }));
247
259
 
248
260
  // @beta
249
261
  export function createIndependentTreeBeta<const TSchema extends ImplicitFieldSchema>(options?: ForestOptions): ViewableTree;
@@ -316,6 +328,17 @@ export function evaluateLazySchema<T extends TreeNodeSchema>(value: LazyItem<T>)
316
328
  // @alpha
317
329
  export function exportCompatibilitySchemaSnapshot(config: Pick<TreeViewConfiguration, "schema">): JsonCompatibleReadOnly;
318
330
 
331
+ // @alpha
332
+ export namespace ExtensibleSchemaUnion {
333
+ export function extensibleSchemaUnion<const T extends readonly TreeNodeSchema[], const TScope extends string, const TName extends string>(types: T, inputSchemaFactory: SchemaFactoryBeta<TScope>, name: TName): Statics<T> & TreeNodeSchemaCore_2<ScopedSchemaName_2<`com.fluidframework.extensibleSchemaUnion<${TScope}>`, TName>, NodeKind_2, false, unknown, never, unknown> & (new (data: InternalTreeNode_2) => Members<TreeNodeFromImplicitAllowedTypes<T>> & TreeNode_2 & WithType_2<ScopedSchemaName_2<`com.fluidframework.extensibleSchemaUnion<${TScope}>`, TName>, NodeKind_2, unknown>);
334
+ export interface Members<T> {
335
+ readonly child: T | undefined;
336
+ }
337
+ export interface Statics<T extends readonly TreeNodeSchema[]> {
338
+ create<TThis extends TreeNodeSchema>(this: TThis, child: TreeNodeFromImplicitAllowedTypes<T>): TreeFieldFromImplicitField<TThis>;
339
+ }
340
+ }
341
+
319
342
  // @public @system
320
343
  type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
321
344
 
@@ -779,9 +802,12 @@ export const incrementalSummaryHint: unique symbol;
779
802
  export function independentInitializedView<const TSchema extends ImplicitFieldSchema>(config: TreeViewConfiguration<TSchema>, options: ForestOptions & ICodecOptions, content: ViewContent): TreeViewAlpha<TSchema>;
780
803
 
781
804
  // @alpha
782
- export function independentView<const TSchema extends ImplicitFieldSchema>(config: TreeViewConfiguration<TSchema>, options?: ForestOptions & {
783
- idCompressor?: IIdCompressor_2 | undefined;
784
- }): TreeViewAlpha<TSchema>;
805
+ export function independentView<const TSchema extends ImplicitFieldSchema>(config: TreeViewConfiguration<TSchema>, options?: IndependentViewOptions): TreeViewAlpha<TSchema>;
806
+
807
+ // @alpha @input
808
+ export interface IndependentViewOptions extends ForestOptions, Partial<CodecWriteOptions> {
809
+ idCompressor?: IIdCompressor | undefined;
810
+ }
785
811
 
786
812
  // @public
787
813
  export type InitialObjects<T extends ContainerSchema> = {
@@ -1059,6 +1085,7 @@ export interface LocalChangeMetadata extends CommitMetadata {
1059
1085
  getChange(): JsonCompatibleReadOnly;
1060
1086
  getRevertible(onDisposed?: (revertible: RevertibleAlpha) => void): RevertibleAlpha | undefined;
1061
1087
  readonly isLocal: true;
1088
+ readonly label?: unknown;
1062
1089
  }
1063
1090
 
1064
1091
  // @public @sealed
@@ -1239,6 +1266,7 @@ export interface RemoteChangeMetadata extends CommitMetadata {
1239
1266
  readonly getChange?: undefined;
1240
1267
  readonly getRevertible?: undefined;
1241
1268
  readonly isLocal: false;
1269
+ readonly label?: undefined;
1242
1270
  }
1243
1271
 
1244
1272
  // @alpha
@@ -1314,6 +1342,7 @@ export interface RunTransaction {
1314
1342
 
1315
1343
  // @alpha @input
1316
1344
  export interface RunTransactionParams {
1345
+ readonly label?: unknown;
1317
1346
  readonly preconditions?: readonly TransactionConstraintAlpha[];
1318
1347
  }
1319
1348
 
@@ -1477,7 +1506,7 @@ export interface SharedTreeOptions extends SharedTreeOptionsBeta, Partial<CodecW
1477
1506
  }
1478
1507
 
1479
1508
  // @beta @input
1480
- export type SharedTreeOptionsBeta = ForestOptions;
1509
+ export type SharedTreeOptionsBeta = ForestOptions & Partial<CodecWriteOptionsBeta>;
1481
1510
 
1482
1511
  // @alpha @sealed
1483
1512
  export interface SimpleAllowedTypeAttributes<out Type extends SchemaType = SchemaType> {
@@ -1572,14 +1601,14 @@ export interface SnapshotFileSystem {
1572
1601
  }): void;
1573
1602
  }
1574
1603
 
1575
- // @alpha @system
1604
+ // @beta @system
1576
1605
  export namespace System_TableSchema {
1577
1606
  // @sealed @system
1578
1607
  export type ColumnSchemaBase<TUserScope extends string = string, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes, TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema> = ReturnType<typeof createColumnSchema<TUserScope, TCellSchema, TPropsSchema>>;
1579
1608
  // @system
1580
1609
  export type CreateColumnOptionsBase<TUserScope extends string = string, TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
1581
1610
  // @system
1582
- export function createColumnSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Column">, NodeKind.Object, TreeNode & TableSchema.Column<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Column">, NodeKind, unknown>, object & {
1611
+ export function createColumnSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Column">, NodeKind.Object, TreeNode & TableSchema.Column<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Column">, NodeKind, unknown>, object & {
1583
1612
  readonly id?: string | undefined;
1584
1613
  } & (FieldHasDefault<TPropsSchema> extends true ? {
1585
1614
  props?: InsertableTreeFieldFromImplicitField<TPropsSchema> | undefined;
@@ -1591,10 +1620,10 @@ export namespace System_TableSchema {
1591
1620
  }>;
1592
1621
  // @system
1593
1622
  export type CreateRowOptionsBase<TUserScope extends string = string, TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
1594
- // @sealed
1595
- export function createRowSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, cellSchema: TCellSchema, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row">, NodeKind.Object, TreeNode & TableSchema.Row<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row">, NodeKind, unknown>, object & {
1623
+ // @system
1624
+ export function createRowSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, cellSchema: TCellSchema, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row">, NodeKind.Object, TreeNode & TableSchema.Row<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row">, NodeKind, unknown>, object & {
1596
1625
  readonly id?: string | undefined;
1597
- readonly cells: (InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>> | undefined) & InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>>;
1626
+ readonly cells: (InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>> | undefined) & InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>>;
1598
1627
  } & (FieldHasDefault<TPropsSchema> extends true ? {
1599
1628
  props?: InsertableTreeFieldFromImplicitField<TPropsSchema> | undefined;
1600
1629
  } : {
@@ -1602,12 +1631,12 @@ export namespace System_TableSchema {
1602
1631
  }), true, {
1603
1632
  readonly props: TPropsSchema;
1604
1633
  readonly id: FieldSchema_2<FieldKind_2.Identifier, LeafSchema_2<"string", string>, unknown>;
1605
- readonly cells: FieldSchema_2<FieldKind_2.Required, TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>, unknown>;
1634
+ readonly cells: FieldSchema_2<FieldKind_2.Required, TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>, unknown>;
1606
1635
  }>;
1607
1636
  // @system
1608
1637
  export function createTableSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TColumnSchema extends ColumnSchemaBase<TUserScope, TCellSchema>, const TRowSchema extends RowSchemaBase<TUserScope, TCellSchema>>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, _cellSchema: TCellSchema, columnSchema: TColumnSchema, rowSchema: TRowSchema): {
1609
- create<TThis extends new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot">, NodeKind, unknown>>(this: TThis, initialContents?: TableSchema.TableFactoryMethodParameters<TUserScope, TCellSchema, TColumnSchema, TRowSchema> | undefined): InstanceType<TThis>;
1610
- } & (new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot">, NodeKind, unknown>) & TreeNodeSchemaCore<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot"> & string, NodeKind, false, unknown, never, unknown> & (new (data: InternalTreeNode) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot">, NodeKind, unknown> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot"> & string, NodeKind, unknown>);
1638
+ create<TThis extends new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot">, NodeKind, unknown>>(this: TThis, initialContents?: TableSchema.TableFactoryMethodParameters<TUserScope, TCellSchema, TColumnSchema, TRowSchema> | undefined): InstanceType<TThis>;
1639
+ } & (new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot">, NodeKind, unknown>) & TreeNodeSchemaCore<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot"> & string, NodeKind, false, unknown, never, unknown> & (new (data: InternalTreeNode) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot">, NodeKind, unknown> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot"> & string, NodeKind, unknown>);
1611
1640
  // @system
1612
1641
  export type DefaultPropsType = ReturnType<typeof SchemaFactory.optional<[]>>;
1613
1642
  // @system
@@ -1718,7 +1747,7 @@ export namespace System_Unsafe {
1718
1747
  export type TreeObjectNodeUnsafe<T extends RestrictiveStringRecord<ImplicitFieldSchemaUnsafe>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object, T>;
1719
1748
  }
1720
1749
 
1721
- // @alpha
1750
+ // @beta
1722
1751
  export namespace TableSchema {
1723
1752
  // @input
1724
1753
  export interface CellKey<TColumn extends ImplicitAllowedTypes, TRow extends ImplicitAllowedTypes> {
@@ -1866,14 +1895,14 @@ export interface TreeAlpha {
1866
1895
  children(node: TreeNode): Iterable<[propertyKey: string | number, child: TreeNode | TreeLeafValue]>;
1867
1896
  create<const TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema>(schema: UnsafeUnknownSchema extends TSchema ? ImplicitFieldSchema : TSchema & ImplicitFieldSchema, data: InsertableField<TSchema>): Unhydrated<TSchema extends ImplicitFieldSchema ? TreeFieldFromImplicitField<TSchema> : TreeNode | TreeLeafValue | undefined>;
1868
1897
  exportCompressed(tree: TreeNode | TreeLeafValue, options: {
1869
- idCompressor?: IIdCompressor;
1898
+ idCompressor?: IIdCompressor_2;
1870
1899
  } & Pick<CodecWriteOptions, "minVersionForCollab">): JsonCompatible<IFluidHandle>;
1871
1900
  exportConcise(node: TreeNode | TreeLeafValue, options?: TreeEncodingOptions): ConciseTree;
1872
1901
  exportConcise(node: TreeNode | TreeLeafValue | undefined, options?: TreeEncodingOptions): ConciseTree | undefined;
1873
1902
  exportVerbose(node: TreeNode | TreeLeafValue, options?: TreeEncodingOptions): VerboseTree;
1874
1903
  readonly identifier: TreeIdentifierUtils;
1875
1904
  importCompressed<const TSchema extends ImplicitFieldSchema>(schema: TSchema, compressedData: JsonCompatible<IFluidHandle>, options: {
1876
- idCompressor?: IIdCompressor;
1905
+ idCompressor?: IIdCompressor_2;
1877
1906
  } & ICodecOptions): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
1878
1907
  importConcise<const TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema>(schema: UnsafeUnknownSchema extends TSchema ? ImplicitFieldSchema : TSchema & ImplicitFieldSchema, data: ConciseTree | undefined): Unhydrated<TSchema extends ImplicitFieldSchema ? TreeFieldFromImplicitField<TSchema> : TreeNode | TreeLeafValue | undefined>;
1879
1908
  importVerbose<const TSchema extends ImplicitFieldSchema>(schema: TSchema, data: VerboseTree | undefined, options?: TreeParsingOptions): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
@@ -1903,6 +1932,7 @@ export interface TreeArrayNode<TAllowedTypes extends System_Unsafe.ImplicitAllow
1903
1932
  moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
1904
1933
  moveToStart(sourceIndex: number): void;
1905
1934
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
1935
+ push(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
1906
1936
  removeAt(index: number): void;
1907
1937
  removeRange(start?: number, end?: number): void;
1908
1938
  values(): IterableIterator<T>;
@@ -1943,12 +1973,14 @@ export interface TreeBranchAlpha extends TreeBranch {
1943
1973
  hasRootSchema<TSchema extends ImplicitFieldSchema>(schema: TSchema): this is TreeViewAlpha<TSchema>;
1944
1974
  runTransaction<TSuccessValue, TFailureValue>(transaction: () => TransactionCallbackStatus<TSuccessValue, TFailureValue>, params?: RunTransactionParams): TransactionResultExt<TSuccessValue, TFailureValue>;
1945
1975
  runTransaction(transaction: () => VoidTransactionCallbackStatus | void, params?: RunTransactionParams): TransactionResult;
1976
+ runTransactionAsync<TSuccessValue, TFailureValue>(transaction: () => Promise<TransactionCallbackStatus<TSuccessValue, TFailureValue>>, params?: RunTransactionParams): Promise<TransactionResultExt<TSuccessValue, TFailureValue>>;
1977
+ runTransactionAsync(transaction: () => Promise<VoidTransactionCallbackStatus | void>, params?: RunTransactionParams): Promise<TransactionResult>;
1946
1978
  }
1947
1979
 
1948
1980
  // @alpha @sealed
1949
1981
  export interface TreeBranchEvents extends Omit<TreeViewEvents, "commitApplied"> {
1950
1982
  changed(data: ChangeMetadata, getRevertible?: RevertibleAlphaFactory): void;
1951
- commitApplied(data: CommitMetadata, getRevertible?: RevertibleAlphaFactory): void;
1983
+ commitApplied(data: ChangeMetadata, getRevertible?: RevertibleAlphaFactory): void;
1952
1984
  }
1953
1985
 
1954
1986
  // @alpha @sealed
@@ -2256,7 +2288,7 @@ export interface ViewableTree {
2256
2288
 
2257
2289
  // @alpha
2258
2290
  export interface ViewContent {
2259
- readonly idCompressor: IIdCompressor_2;
2291
+ readonly idCompressor: IIdCompressor;
2260
2292
  readonly schema: JsonCompatible;
2261
2293
  readonly tree: JsonCompatible<IFluidHandle>;
2262
2294
  }
@@ -96,6 +96,11 @@ export enum AttachState {
96
96
  Detached = "Detached"
97
97
  }
98
98
 
99
+ // @beta @input
100
+ export interface CodecWriteOptionsBeta {
101
+ readonly minVersionForCollab: MinimumVersionForCollab;
102
+ }
103
+
99
104
  // @public
100
105
  export enum CommitKind {
101
106
  Default = 0,
@@ -934,7 +939,7 @@ export interface SharedObjectKind<out TSharedObject = unknown> extends ErasedTyp
934
939
  export const SharedTree: SharedObjectKind<ITree>;
935
940
 
936
941
  // @beta @input
937
- export type SharedTreeOptionsBeta = ForestOptions;
942
+ export type SharedTreeOptionsBeta = ForestOptions & Partial<CodecWriteOptionsBeta>;
938
943
 
939
944
  // @public @sealed @system
940
945
  export interface SimpleNodeSchemaBase<out TNodeKind extends NodeKind, out TCustomMetadata = unknown> {
@@ -947,6 +952,69 @@ export function singletonSchema<TScope extends string, TName extends string | nu
947
952
  readonly value: TName;
948
953
  }, Record<string, never>, true, Record<string, never>, undefined>;
949
954
 
955
+ // @beta @system
956
+ export namespace System_TableSchema {
957
+ // @sealed @system
958
+ export type ColumnSchemaBase<TUserScope extends string = string, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes, TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema> = ReturnType<typeof createColumnSchema<TUserScope, TCellSchema, TPropsSchema>>;
959
+ // @system
960
+ export type CreateColumnOptionsBase<TUserScope extends string = string, TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
961
+ // @system
962
+ export function createColumnSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Column">, NodeKind.Object, TreeNode & TableSchema.Column<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Column">, NodeKind, unknown>, object & {
963
+ readonly id?: string | undefined;
964
+ } & (FieldHasDefault<TPropsSchema> extends true ? {
965
+ props?: InsertableTreeFieldFromImplicitField<TPropsSchema> | undefined;
966
+ } : {
967
+ props: InsertableTreeFieldFromImplicitField<TPropsSchema>;
968
+ }), true, {
969
+ readonly props: TPropsSchema;
970
+ readonly id: FieldSchema_2<FieldKind_2.Identifier, LeafSchema_2<"string", string>, unknown>;
971
+ }>;
972
+ // @system
973
+ export type CreateRowOptionsBase<TUserScope extends string = string, TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
974
+ // @system
975
+ export function createRowSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, cellSchema: TCellSchema, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row">, NodeKind.Object, TreeNode & TableSchema.Row<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row">, NodeKind, unknown>, object & {
976
+ readonly id?: string | undefined;
977
+ readonly cells: (InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>> | undefined) & InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>>;
978
+ } & (FieldHasDefault<TPropsSchema> extends true ? {
979
+ props?: InsertableTreeFieldFromImplicitField<TPropsSchema> | undefined;
980
+ } : {
981
+ props: InsertableTreeFieldFromImplicitField<TPropsSchema>;
982
+ }), true, {
983
+ readonly props: TPropsSchema;
984
+ readonly id: FieldSchema_2<FieldKind_2.Identifier, LeafSchema_2<"string", string>, unknown>;
985
+ readonly cells: FieldSchema_2<FieldKind_2.Required, TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>, unknown>;
986
+ }>;
987
+ // @system
988
+ export function createTableSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TColumnSchema extends ColumnSchemaBase<TUserScope, TCellSchema>, const TRowSchema extends RowSchemaBase<TUserScope, TCellSchema>>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, _cellSchema: TCellSchema, columnSchema: TColumnSchema, rowSchema: TRowSchema): {
989
+ create<TThis extends new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot">, NodeKind, unknown>>(this: TThis, initialContents?: TableSchema.TableFactoryMethodParameters<TUserScope, TCellSchema, TColumnSchema, TRowSchema> | undefined): InstanceType<TThis>;
990
+ } & (new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot">, NodeKind, unknown>) & TreeNodeSchemaCore<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot"> & string, NodeKind, false, unknown, never, unknown> & (new (data: InternalTreeNode) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot">, NodeKind, unknown> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot"> & string, NodeKind, unknown>);
991
+ // @system
992
+ export type DefaultPropsType = ReturnType<typeof SchemaFactory.optional<[]>>;
993
+ // @system
994
+ export interface OptionsWithCellSchema<TCellSchema extends ImplicitAllowedTypes> {
995
+ readonly cell: TCellSchema;
996
+ }
997
+ // @system
998
+ export interface OptionsWithSchemaFactory<TSchemaFactory extends SchemaFactoryBeta> {
999
+ readonly schemaFactory: TSchemaFactory;
1000
+ }
1001
+ // @system
1002
+ export type RearrangeableList<TItemSchema extends ImplicitAllowedTypes> = TreeNode & readonly TreeNodeFromImplicitAllowedTypes<TItemSchema>[] & {
1003
+ moveToEnd(sourceIndex: number): void;
1004
+ moveToStart(sourceIndex: number): void;
1005
+ moveToIndex(sourceIndex: number, destinationIndex: number): void;
1006
+ moveRangeToEnd(startIndex: number, endIndex: number): void;
1007
+ moveRangeToStart(startIndex: number, endIndex: number): void;
1008
+ moveRangeToIndex(startIndex: number, endIndex: number, destinationIndex: number): void;
1009
+ };
1010
+ // @sealed @system
1011
+ export type RowSchemaBase<TUserScope extends string = string, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes, TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema> = ReturnType<typeof createRowSchema<TUserScope, TCellSchema, TPropsSchema>>;
1012
+ // @system
1013
+ export type TableFactoryOptionsBase<TUserScope extends string = string, TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
1014
+ // @sealed @system
1015
+ export type TableSchemaBase<TUserScope extends string, TCellSchema extends ImplicitAllowedTypes, TColumnSchema extends ColumnSchemaBase<TUserScope, TCellSchema>, TRowSchema extends RowSchemaBase<TUserScope, TCellSchema>> = ReturnType<typeof createTableSchema<TUserScope, TCellSchema, TColumnSchema, TRowSchema>>;
1016
+ }
1017
+
950
1018
  // @public @system
951
1019
  export namespace System_Unsafe {
952
1020
  // @system
@@ -1030,6 +1098,86 @@ export namespace System_Unsafe {
1030
1098
  export type TreeObjectNodeUnsafe<T extends RestrictiveStringRecord<ImplicitFieldSchemaUnsafe>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object, T>;
1031
1099
  }
1032
1100
 
1101
+ // @beta
1102
+ export namespace TableSchema {
1103
+ // @input
1104
+ export interface CellKey<TColumn extends ImplicitAllowedTypes, TRow extends ImplicitAllowedTypes> {
1105
+ readonly column: string | number | TreeNodeFromImplicitAllowedTypes<TColumn>;
1106
+ readonly row: string | number | TreeNodeFromImplicitAllowedTypes<TRow>;
1107
+ }
1108
+ // @sealed
1109
+ export interface Column<TCell extends ImplicitAllowedTypes, TProps extends ImplicitFieldSchema = ImplicitFieldSchema> {
1110
+ readonly id: string;
1111
+ get props(): TreeFieldFromImplicitField<TProps>;
1112
+ set props(value: InsertableTreeFieldFromImplicitField<TProps>);
1113
+ }
1114
+ export function column<const TUserScope extends string, const TCell extends ImplicitAllowedTypes>(params: System_TableSchema.CreateColumnOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell>): System_TableSchema.ColumnSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>;
1115
+ export function column<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TProps extends ImplicitFieldSchema>(params: System_TableSchema.CreateColumnOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1116
+ readonly props: TProps;
1117
+ }): System_TableSchema.ColumnSchemaBase<TUserScope, TCell, TProps>;
1118
+ // @input
1119
+ export interface InsertColumnsParameters<TColumn extends ImplicitAllowedTypes> {
1120
+ readonly columns: InsertableTreeNodeFromImplicitAllowedTypes<TColumn>[];
1121
+ readonly index?: number | undefined;
1122
+ }
1123
+ // @input
1124
+ export interface InsertRowsParameters<TRow extends ImplicitAllowedTypes> {
1125
+ readonly index?: number | undefined;
1126
+ readonly rows: InsertableTreeNodeFromImplicitAllowedTypes<TRow>[];
1127
+ }
1128
+ // @sealed
1129
+ export interface Row<TCell extends ImplicitAllowedTypes, TProps extends ImplicitFieldSchema = ImplicitFieldSchema> {
1130
+ readonly id: string;
1131
+ get props(): TreeFieldFromImplicitField<TProps>;
1132
+ set props(value: InsertableTreeFieldFromImplicitField<TProps>);
1133
+ }
1134
+ export function row<const TUserScope extends string, const TCell extends ImplicitAllowedTypes>(params: System_TableSchema.CreateRowOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell>): System_TableSchema.RowSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>;
1135
+ export function row<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TProps extends ImplicitFieldSchema>(params: System_TableSchema.CreateRowOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1136
+ readonly props: TProps;
1137
+ }): System_TableSchema.RowSchemaBase<TUserScope, TCell, TProps>;
1138
+ // @input
1139
+ export interface SetCellParameters<TCell extends ImplicitAllowedTypes, TColumn extends ImplicitAllowedTypes, TRow extends ImplicitAllowedTypes> {
1140
+ readonly cell: InsertableTreeNodeFromImplicitAllowedTypes<TCell>;
1141
+ readonly key: CellKey<TColumn, TRow>;
1142
+ }
1143
+ // @sealed
1144
+ export interface Table<TUserScope extends string, TCell extends ImplicitAllowedTypes, TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>, TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>> {
1145
+ readonly columns: System_TableSchema.RearrangeableList<TColumn>;
1146
+ getCell(key: CellKey<TColumn, TRow>): TreeNodeFromImplicitAllowedTypes<TCell> | undefined;
1147
+ getColumn(id: string): TreeNodeFromImplicitAllowedTypes<TColumn> | undefined;
1148
+ getColumn(index: number): TreeNodeFromImplicitAllowedTypes<TColumn> | undefined;
1149
+ getRow(id: string): TreeNodeFromImplicitAllowedTypes<TRow> | undefined;
1150
+ getRow(index: number): TreeNodeFromImplicitAllowedTypes<TRow> | undefined;
1151
+ insertColumns(params: InsertColumnsParameters<TColumn>): TreeNodeFromImplicitAllowedTypes<TColumn>[];
1152
+ insertRows(params: InsertRowsParameters<TRow>): TreeNodeFromImplicitAllowedTypes<TRow>[];
1153
+ removeCell(key: CellKey<TColumn, TRow>): TreeNodeFromImplicitAllowedTypes<TCell> | undefined;
1154
+ removeColumns(index?: number | undefined, count?: number | undefined): TreeNodeFromImplicitAllowedTypes<TColumn>[];
1155
+ removeColumns(columns: readonly TreeNodeFromImplicitAllowedTypes<TColumn>[]): TreeNodeFromImplicitAllowedTypes<TColumn>[];
1156
+ removeColumns(columns: readonly string[]): TreeNodeFromImplicitAllowedTypes<TColumn>[];
1157
+ removeRows(index?: number | undefined, count?: number | undefined): TreeNodeFromImplicitAllowedTypes<TRow>[];
1158
+ removeRows(rows: readonly TreeNodeFromImplicitAllowedTypes<TRow>[]): TreeNodeFromImplicitAllowedTypes<TRow>[];
1159
+ removeRows(rows: readonly string[]): TreeNodeFromImplicitAllowedTypes<TRow>[];
1160
+ readonly rows: System_TableSchema.RearrangeableList<TRow>;
1161
+ setCell(params: SetCellParameters<TCell, TColumn, TRow>): void;
1162
+ }
1163
+ export function table<const TUserScope extends string, const TCell extends ImplicitAllowedTypes>(params: System_TableSchema.TableFactoryOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell>): System_TableSchema.TableSchemaBase<TUserScope, TCell, System_TableSchema.ColumnSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>, System_TableSchema.RowSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>>;
1164
+ export function table<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>>(params: System_TableSchema.TableFactoryOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1165
+ readonly column: TColumn;
1166
+ }): System_TableSchema.TableSchemaBase<TUserScope, TCell, TColumn, System_TableSchema.RowSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>>;
1167
+ export function table<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>>(params: System_TableSchema.TableFactoryOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1168
+ readonly row: TRow;
1169
+ }): System_TableSchema.TableSchemaBase<TUserScope, TCell, System_TableSchema.ColumnSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>, TRow>;
1170
+ export function table<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>, const TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>>(params: System_TableSchema.TableFactoryOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1171
+ readonly column: TColumn;
1172
+ readonly row: TRow;
1173
+ }): System_TableSchema.TableSchemaBase<TUserScope, TCell, TColumn, TRow>;
1174
+ // @input
1175
+ export interface TableFactoryMethodParameters<TUserScope extends string, TCell extends ImplicitAllowedTypes, TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>, TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>> {
1176
+ readonly columns?: Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TColumn>> | undefined;
1177
+ readonly rows?: Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TRow>> | undefined;
1178
+ }
1179
+ }
1180
+
1033
1181
  // @public
1034
1182
  export interface Tagged<V, T extends string = string> {
1035
1183
  // (undocumented)
@@ -1073,6 +1221,7 @@ export interface TreeArrayNode<TAllowedTypes extends System_Unsafe.ImplicitAllow
1073
1221
  moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
1074
1222
  moveToStart(sourceIndex: number): void;
1075
1223
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
1224
+ push(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
1076
1225
  removeAt(index: number): void;
1077
1226
  removeRange(start?: number, end?: number): void;
1078
1227
  values(): IterableIterator<T>;
@@ -96,6 +96,11 @@ export enum AttachState {
96
96
  Detached = "Detached"
97
97
  }
98
98
 
99
+ // @beta @input
100
+ export interface CodecWriteOptionsBeta {
101
+ readonly minVersionForCollab: MinimumVersionForCollab;
102
+ }
103
+
99
104
  // @public
100
105
  export enum CommitKind {
101
106
  Default = 0,
@@ -1292,7 +1297,7 @@ export type SharedStringSegment = TextSegment | Marker;
1292
1297
  export const SharedTree: SharedObjectKind<ITree>;
1293
1298
 
1294
1299
  // @beta @input
1295
- export type SharedTreeOptionsBeta = ForestOptions;
1300
+ export type SharedTreeOptionsBeta = ForestOptions & Partial<CodecWriteOptionsBeta>;
1296
1301
 
1297
1302
  export { Side }
1298
1303
 
@@ -1307,6 +1312,69 @@ export function singletonSchema<TScope extends string, TName extends string | nu
1307
1312
  readonly value: TName;
1308
1313
  }, Record<string, never>, true, Record<string, never>, undefined>;
1309
1314
 
1315
+ // @beta @system
1316
+ export namespace System_TableSchema {
1317
+ // @sealed @system
1318
+ export type ColumnSchemaBase<TUserScope extends string = string, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes, TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema> = ReturnType<typeof createColumnSchema<TUserScope, TCellSchema, TPropsSchema>>;
1319
+ // @system
1320
+ export type CreateColumnOptionsBase<TUserScope extends string = string, TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
1321
+ // @system
1322
+ export function createColumnSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Column">, NodeKind.Object, TreeNode & TableSchema.Column<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Column">, NodeKind, unknown>, object & {
1323
+ readonly id?: string | undefined;
1324
+ } & (FieldHasDefault<TPropsSchema> extends true ? {
1325
+ props?: InsertableTreeFieldFromImplicitField<TPropsSchema> | undefined;
1326
+ } : {
1327
+ props: InsertableTreeFieldFromImplicitField<TPropsSchema>;
1328
+ }), true, {
1329
+ readonly props: TPropsSchema;
1330
+ readonly id: FieldSchema_2<FieldKind_2.Identifier, LeafSchema_2<"string", string>, unknown>;
1331
+ }>;
1332
+ // @system
1333
+ export type CreateRowOptionsBase<TUserScope extends string = string, TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
1334
+ // @system
1335
+ export function createRowSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TPropsSchema extends ImplicitFieldSchema>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, cellSchema: TCellSchema, propsSchema: TPropsSchema): TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row">, NodeKind.Object, TreeNode & TableSchema.Row<TCellSchema, TPropsSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row">, NodeKind, unknown>, object & {
1336
+ readonly id?: string | undefined;
1337
+ readonly cells: (InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>> | undefined) & InsertableTypedNode_2<TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>>;
1338
+ } & (FieldHasDefault<TPropsSchema> extends true ? {
1339
+ props?: InsertableTreeFieldFromImplicitField<TPropsSchema> | undefined;
1340
+ } : {
1341
+ props: InsertableTreeFieldFromImplicitField<TPropsSchema>;
1342
+ }), true, {
1343
+ readonly props: TPropsSchema;
1344
+ readonly id: FieldSchema_2<FieldKind_2.Identifier, LeafSchema_2<"string", string>, unknown>;
1345
+ readonly cells: FieldSchema_2<FieldKind_2.Required, TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>, unknown>;
1346
+ }>;
1347
+ // @system
1348
+ export function createTableSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TColumnSchema extends ColumnSchemaBase<TUserScope, TCellSchema>, const TRowSchema extends RowSchemaBase<TUserScope, TCellSchema>>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, _cellSchema: TCellSchema, columnSchema: TColumnSchema, rowSchema: TRowSchema): {
1349
+ create<TThis extends new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot">, NodeKind, unknown>>(this: TThis, initialContents?: TableSchema.TableFactoryMethodParameters<TUserScope, TCellSchema, TColumnSchema, TRowSchema> | undefined): InstanceType<TThis>;
1350
+ } & (new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot">, NodeKind, unknown>) & TreeNodeSchemaCore<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot"> & string, NodeKind, false, unknown, never, unknown> & (new (data: InternalTreeNode) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot">, NodeKind, unknown> & WithType<ScopedSchemaName<`com.fluidframework.tableV2<${TUserScope}>`, "TableRoot"> & string, NodeKind, unknown>);
1351
+ // @system
1352
+ export type DefaultPropsType = ReturnType<typeof SchemaFactory.optional<[]>>;
1353
+ // @system
1354
+ export interface OptionsWithCellSchema<TCellSchema extends ImplicitAllowedTypes> {
1355
+ readonly cell: TCellSchema;
1356
+ }
1357
+ // @system
1358
+ export interface OptionsWithSchemaFactory<TSchemaFactory extends SchemaFactoryBeta> {
1359
+ readonly schemaFactory: TSchemaFactory;
1360
+ }
1361
+ // @system
1362
+ export type RearrangeableList<TItemSchema extends ImplicitAllowedTypes> = TreeNode & readonly TreeNodeFromImplicitAllowedTypes<TItemSchema>[] & {
1363
+ moveToEnd(sourceIndex: number): void;
1364
+ moveToStart(sourceIndex: number): void;
1365
+ moveToIndex(sourceIndex: number, destinationIndex: number): void;
1366
+ moveRangeToEnd(startIndex: number, endIndex: number): void;
1367
+ moveRangeToStart(startIndex: number, endIndex: number): void;
1368
+ moveRangeToIndex(startIndex: number, endIndex: number, destinationIndex: number): void;
1369
+ };
1370
+ // @sealed @system
1371
+ export type RowSchemaBase<TUserScope extends string = string, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes, TPropsSchema extends ImplicitFieldSchema = ImplicitFieldSchema> = ReturnType<typeof createRowSchema<TUserScope, TCellSchema, TPropsSchema>>;
1372
+ // @system
1373
+ export type TableFactoryOptionsBase<TUserScope extends string = string, TSchemaFactory extends SchemaFactoryBeta<TUserScope> = SchemaFactoryBeta<TUserScope>, TCellSchema extends ImplicitAllowedTypes = ImplicitAllowedTypes> = OptionsWithSchemaFactory<TSchemaFactory> & OptionsWithCellSchema<TCellSchema>;
1374
+ // @sealed @system
1375
+ export type TableSchemaBase<TUserScope extends string, TCellSchema extends ImplicitAllowedTypes, TColumnSchema extends ColumnSchemaBase<TUserScope, TCellSchema>, TRowSchema extends RowSchemaBase<TUserScope, TCellSchema>> = ReturnType<typeof createTableSchema<TUserScope, TCellSchema, TColumnSchema, TRowSchema>>;
1376
+ }
1377
+
1310
1378
  // @public @system
1311
1379
  export namespace System_Unsafe {
1312
1380
  // @system
@@ -1390,6 +1458,86 @@ export namespace System_Unsafe {
1390
1458
  export type TreeObjectNodeUnsafe<T extends RestrictiveStringRecord<ImplicitFieldSchemaUnsafe>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object, T>;
1391
1459
  }
1392
1460
 
1461
+ // @beta
1462
+ export namespace TableSchema {
1463
+ // @input
1464
+ export interface CellKey<TColumn extends ImplicitAllowedTypes, TRow extends ImplicitAllowedTypes> {
1465
+ readonly column: string | number | TreeNodeFromImplicitAllowedTypes<TColumn>;
1466
+ readonly row: string | number | TreeNodeFromImplicitAllowedTypes<TRow>;
1467
+ }
1468
+ // @sealed
1469
+ export interface Column<TCell extends ImplicitAllowedTypes, TProps extends ImplicitFieldSchema = ImplicitFieldSchema> {
1470
+ readonly id: string;
1471
+ get props(): TreeFieldFromImplicitField<TProps>;
1472
+ set props(value: InsertableTreeFieldFromImplicitField<TProps>);
1473
+ }
1474
+ export function column<const TUserScope extends string, const TCell extends ImplicitAllowedTypes>(params: System_TableSchema.CreateColumnOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell>): System_TableSchema.ColumnSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>;
1475
+ export function column<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TProps extends ImplicitFieldSchema>(params: System_TableSchema.CreateColumnOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1476
+ readonly props: TProps;
1477
+ }): System_TableSchema.ColumnSchemaBase<TUserScope, TCell, TProps>;
1478
+ // @input
1479
+ export interface InsertColumnsParameters<TColumn extends ImplicitAllowedTypes> {
1480
+ readonly columns: InsertableTreeNodeFromImplicitAllowedTypes<TColumn>[];
1481
+ readonly index?: number | undefined;
1482
+ }
1483
+ // @input
1484
+ export interface InsertRowsParameters<TRow extends ImplicitAllowedTypes> {
1485
+ readonly index?: number | undefined;
1486
+ readonly rows: InsertableTreeNodeFromImplicitAllowedTypes<TRow>[];
1487
+ }
1488
+ // @sealed
1489
+ export interface Row<TCell extends ImplicitAllowedTypes, TProps extends ImplicitFieldSchema = ImplicitFieldSchema> {
1490
+ readonly id: string;
1491
+ get props(): TreeFieldFromImplicitField<TProps>;
1492
+ set props(value: InsertableTreeFieldFromImplicitField<TProps>);
1493
+ }
1494
+ export function row<const TUserScope extends string, const TCell extends ImplicitAllowedTypes>(params: System_TableSchema.CreateRowOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell>): System_TableSchema.RowSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>;
1495
+ export function row<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TProps extends ImplicitFieldSchema>(params: System_TableSchema.CreateRowOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1496
+ readonly props: TProps;
1497
+ }): System_TableSchema.RowSchemaBase<TUserScope, TCell, TProps>;
1498
+ // @input
1499
+ export interface SetCellParameters<TCell extends ImplicitAllowedTypes, TColumn extends ImplicitAllowedTypes, TRow extends ImplicitAllowedTypes> {
1500
+ readonly cell: InsertableTreeNodeFromImplicitAllowedTypes<TCell>;
1501
+ readonly key: CellKey<TColumn, TRow>;
1502
+ }
1503
+ // @sealed
1504
+ export interface Table<TUserScope extends string, TCell extends ImplicitAllowedTypes, TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>, TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>> {
1505
+ readonly columns: System_TableSchema.RearrangeableList<TColumn>;
1506
+ getCell(key: CellKey<TColumn, TRow>): TreeNodeFromImplicitAllowedTypes<TCell> | undefined;
1507
+ getColumn(id: string): TreeNodeFromImplicitAllowedTypes<TColumn> | undefined;
1508
+ getColumn(index: number): TreeNodeFromImplicitAllowedTypes<TColumn> | undefined;
1509
+ getRow(id: string): TreeNodeFromImplicitAllowedTypes<TRow> | undefined;
1510
+ getRow(index: number): TreeNodeFromImplicitAllowedTypes<TRow> | undefined;
1511
+ insertColumns(params: InsertColumnsParameters<TColumn>): TreeNodeFromImplicitAllowedTypes<TColumn>[];
1512
+ insertRows(params: InsertRowsParameters<TRow>): TreeNodeFromImplicitAllowedTypes<TRow>[];
1513
+ removeCell(key: CellKey<TColumn, TRow>): TreeNodeFromImplicitAllowedTypes<TCell> | undefined;
1514
+ removeColumns(index?: number | undefined, count?: number | undefined): TreeNodeFromImplicitAllowedTypes<TColumn>[];
1515
+ removeColumns(columns: readonly TreeNodeFromImplicitAllowedTypes<TColumn>[]): TreeNodeFromImplicitAllowedTypes<TColumn>[];
1516
+ removeColumns(columns: readonly string[]): TreeNodeFromImplicitAllowedTypes<TColumn>[];
1517
+ removeRows(index?: number | undefined, count?: number | undefined): TreeNodeFromImplicitAllowedTypes<TRow>[];
1518
+ removeRows(rows: readonly TreeNodeFromImplicitAllowedTypes<TRow>[]): TreeNodeFromImplicitAllowedTypes<TRow>[];
1519
+ removeRows(rows: readonly string[]): TreeNodeFromImplicitAllowedTypes<TRow>[];
1520
+ readonly rows: System_TableSchema.RearrangeableList<TRow>;
1521
+ setCell(params: SetCellParameters<TCell, TColumn, TRow>): void;
1522
+ }
1523
+ export function table<const TUserScope extends string, const TCell extends ImplicitAllowedTypes>(params: System_TableSchema.TableFactoryOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell>): System_TableSchema.TableSchemaBase<TUserScope, TCell, System_TableSchema.ColumnSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>, System_TableSchema.RowSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>>;
1524
+ export function table<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>>(params: System_TableSchema.TableFactoryOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1525
+ readonly column: TColumn;
1526
+ }): System_TableSchema.TableSchemaBase<TUserScope, TCell, TColumn, System_TableSchema.RowSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>>;
1527
+ export function table<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>>(params: System_TableSchema.TableFactoryOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1528
+ readonly row: TRow;
1529
+ }): System_TableSchema.TableSchemaBase<TUserScope, TCell, System_TableSchema.ColumnSchemaBase<TUserScope, TCell, System_TableSchema.DefaultPropsType>, TRow>;
1530
+ export function table<const TUserScope extends string, const TCell extends ImplicitAllowedTypes, const TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>, const TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>>(params: System_TableSchema.TableFactoryOptionsBase<TUserScope, SchemaFactoryBeta<TUserScope>, TCell> & {
1531
+ readonly column: TColumn;
1532
+ readonly row: TRow;
1533
+ }): System_TableSchema.TableSchemaBase<TUserScope, TCell, TColumn, TRow>;
1534
+ // @input
1535
+ export interface TableFactoryMethodParameters<TUserScope extends string, TCell extends ImplicitAllowedTypes, TColumn extends System_TableSchema.ColumnSchemaBase<TUserScope, TCell>, TRow extends System_TableSchema.RowSchemaBase<TUserScope, TCell>> {
1536
+ readonly columns?: Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TColumn>> | undefined;
1537
+ readonly rows?: Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TRow>> | undefined;
1538
+ }
1539
+ }
1540
+
1393
1541
  // @public
1394
1542
  export interface Tagged<V, T extends string = string> {
1395
1543
  // (undocumented)
@@ -1433,6 +1581,7 @@ export interface TreeArrayNode<TAllowedTypes extends System_Unsafe.ImplicitAllow
1433
1581
  moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
1434
1582
  moveToStart(sourceIndex: number): void;
1435
1583
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
1584
+ push(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
1436
1585
  removeAt(index: number): void;
1437
1586
  removeRange(start?: number, end?: number): void;
1438
1587
  values(): IterableIterator<T>;
@@ -890,6 +890,7 @@ export interface TreeArrayNode<TAllowedTypes extends System_Unsafe.ImplicitAllow
890
890
  moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
891
891
  moveToStart(sourceIndex: number): void;
892
892
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
893
+ push(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
893
894
  removeAt(index: number): void;
894
895
  removeRange(start?: number, end?: number): void;
895
896
  values(): IterableIterator<T>;
@@ -856,6 +856,7 @@ export interface TreeArrayNode<TAllowedTypes extends System_Unsafe.ImplicitAllow
856
856
  moveToIndex(destinationGap: number, sourceIndex: number, source: TMoveFrom): void;
857
857
  moveToStart(sourceIndex: number): void;
858
858
  moveToStart(sourceIndex: number, source: TMoveFrom): void;
859
+ push(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
859
860
  removeAt(index: number): void;
860
861
  removeRange(start?: number, end?: number): void;
861
862
  values(): IterableIterator<T>;
package/dist/alpha.d.ts CHANGED
@@ -149,6 +149,7 @@ export {
149
149
  AnnotatedAllowedTypeUnsafe,
150
150
  AnnotatedAllowedTypes,
151
151
  AnnotatedAllowedTypesUnsafe,
152
+ CodecWriteOptionsBeta,
152
153
  ConciseTree,
153
154
  ErasedBaseType,
154
155
  FixRecursiveArraySchema,
@@ -169,6 +170,8 @@ export {
169
170
  SchemaStaticsBeta,
170
171
  SchemaUpgrade,
171
172
  SharedTreeOptionsBeta,
173
+ System_TableSchema,
174
+ TableSchema,
172
175
  TreeBeta,
173
176
  TreeBranch,
174
177
  TreeChangeEventsBeta,
@@ -194,12 +197,15 @@ export {
194
197
  ArrayNodeCustomizableSchemaUnsafe,
195
198
  ArrayNodePojoEmulationSchema,
196
199
  ArrayNodeSchema,
200
+ ArrayPlaceAnchor,
197
201
  BranchableTree,
198
202
  ChangeMetadata,
199
203
  CodecName,
200
204
  CodecWriteOptions,
205
+ CreateIndependentTreeAlphaOptions,
201
206
  DirtyTreeMap,
202
207
  DirtyTreeStatus,
208
+ ExtensibleSchemaUnion,
203
209
  FactoryContent,
204
210
  FactoryContentObject,
205
211
  FieldPropsAlpha,
@@ -215,6 +221,7 @@ export {
215
221
  ITreeAlpha,
216
222
  IdentifierIndex,
217
223
  IncrementalEncodingPolicy,
224
+ IndependentViewOptions,
218
225
  Insertable,
219
226
  InsertableContent,
220
227
  InsertableField,
@@ -273,8 +280,6 @@ export {
273
280
  SimpleTreeIndex,
274
281
  SimpleTreeSchema,
275
282
  SnapshotFileSystem,
276
- System_TableSchema,
277
- TableSchema,
278
283
  TransactionCallbackStatus,
279
284
  TransactionConstraintAlpha,
280
285
  TransactionResult,
@@ -311,6 +316,7 @@ export {
311
316
  configuredSharedTree,
312
317
  configuredSharedTreeAlpha,
313
318
  contentSchemaSymbol,
319
+ createArrayInsertionAnchor,
314
320
  createIdentifierIndex,
315
321
  createIndependentTreeAlpha,
316
322
  createSimpleTreeIndex,
package/dist/beta.d.ts CHANGED
@@ -149,6 +149,7 @@ export {
149
149
  AnnotatedAllowedTypeUnsafe,
150
150
  AnnotatedAllowedTypes,
151
151
  AnnotatedAllowedTypesUnsafe,
152
+ CodecWriteOptionsBeta,
152
153
  ConciseTree,
153
154
  ErasedBaseType,
154
155
  FixRecursiveArraySchema,
@@ -169,6 +170,8 @@ export {
169
170
  SchemaStaticsBeta,
170
171
  SchemaUpgrade,
171
172
  SharedTreeOptionsBeta,
173
+ System_TableSchema,
174
+ TableSchema,
172
175
  TreeBeta,
173
176
  TreeBranch,
174
177
  TreeChangeEventsBeta,
package/dist/legacy.d.ts CHANGED
@@ -156,6 +156,7 @@ export {
156
156
  AnnotatedAllowedTypeUnsafe,
157
157
  AnnotatedAllowedTypes,
158
158
  AnnotatedAllowedTypesUnsafe,
159
+ CodecWriteOptionsBeta,
159
160
  ConciseTree,
160
161
  ErasedBaseType,
161
162
  FixRecursiveArraySchema,
@@ -176,6 +177,8 @@ export {
176
177
  SchemaStaticsBeta,
177
178
  SchemaUpgrade,
178
179
  SharedTreeOptionsBeta,
180
+ System_TableSchema,
181
+ TableSchema,
179
182
  TreeBeta,
180
183
  TreeBranch,
181
184
  TreeChangeEventsBeta,
package/eslint.config.mts CHANGED
@@ -6,17 +6,6 @@
6
6
  import type { Linter } from "eslint";
7
7
  import { strict } from "../../../common/build/eslint-config-fluid/flat.mts";
8
8
 
9
- const config: Linter.Config[] = [
10
- ...strict,
11
- {
12
- files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"],
13
- languageOptions: {
14
- parserOptions: {
15
- projectService: false,
16
- project: ["./tsconfig.json"],
17
- },
18
- },
19
- },
20
- ];
9
+ const config: Linter.Config[] = [...strict];
21
10
 
22
11
  export default config;
package/lib/alpha.d.ts CHANGED
@@ -149,6 +149,7 @@ export {
149
149
  AnnotatedAllowedTypeUnsafe,
150
150
  AnnotatedAllowedTypes,
151
151
  AnnotatedAllowedTypesUnsafe,
152
+ CodecWriteOptionsBeta,
152
153
  ConciseTree,
153
154
  ErasedBaseType,
154
155
  FixRecursiveArraySchema,
@@ -169,6 +170,8 @@ export {
169
170
  SchemaStaticsBeta,
170
171
  SchemaUpgrade,
171
172
  SharedTreeOptionsBeta,
173
+ System_TableSchema,
174
+ TableSchema,
172
175
  TreeBeta,
173
176
  TreeBranch,
174
177
  TreeChangeEventsBeta,
@@ -194,12 +197,15 @@ export {
194
197
  ArrayNodeCustomizableSchemaUnsafe,
195
198
  ArrayNodePojoEmulationSchema,
196
199
  ArrayNodeSchema,
200
+ ArrayPlaceAnchor,
197
201
  BranchableTree,
198
202
  ChangeMetadata,
199
203
  CodecName,
200
204
  CodecWriteOptions,
205
+ CreateIndependentTreeAlphaOptions,
201
206
  DirtyTreeMap,
202
207
  DirtyTreeStatus,
208
+ ExtensibleSchemaUnion,
203
209
  FactoryContent,
204
210
  FactoryContentObject,
205
211
  FieldPropsAlpha,
@@ -215,6 +221,7 @@ export {
215
221
  ITreeAlpha,
216
222
  IdentifierIndex,
217
223
  IncrementalEncodingPolicy,
224
+ IndependentViewOptions,
218
225
  Insertable,
219
226
  InsertableContent,
220
227
  InsertableField,
@@ -273,8 +280,6 @@ export {
273
280
  SimpleTreeIndex,
274
281
  SimpleTreeSchema,
275
282
  SnapshotFileSystem,
276
- System_TableSchema,
277
- TableSchema,
278
283
  TransactionCallbackStatus,
279
284
  TransactionConstraintAlpha,
280
285
  TransactionResult,
@@ -311,6 +316,7 @@ export {
311
316
  configuredSharedTree,
312
317
  configuredSharedTreeAlpha,
313
318
  contentSchemaSymbol,
319
+ createArrayInsertionAnchor,
314
320
  createIdentifierIndex,
315
321
  createIndependentTreeAlpha,
316
322
  createSimpleTreeIndex,
package/lib/beta.d.ts CHANGED
@@ -149,6 +149,7 @@ export {
149
149
  AnnotatedAllowedTypeUnsafe,
150
150
  AnnotatedAllowedTypes,
151
151
  AnnotatedAllowedTypesUnsafe,
152
+ CodecWriteOptionsBeta,
152
153
  ConciseTree,
153
154
  ErasedBaseType,
154
155
  FixRecursiveArraySchema,
@@ -169,6 +170,8 @@ export {
169
170
  SchemaStaticsBeta,
170
171
  SchemaUpgrade,
171
172
  SharedTreeOptionsBeta,
173
+ System_TableSchema,
174
+ TableSchema,
172
175
  TreeBeta,
173
176
  TreeBranch,
174
177
  TreeChangeEventsBeta,
package/lib/legacy.d.ts CHANGED
@@ -156,6 +156,7 @@ export {
156
156
  AnnotatedAllowedTypeUnsafe,
157
157
  AnnotatedAllowedTypes,
158
158
  AnnotatedAllowedTypesUnsafe,
159
+ CodecWriteOptionsBeta,
159
160
  ConciseTree,
160
161
  ErasedBaseType,
161
162
  FixRecursiveArraySchema,
@@ -176,6 +177,8 @@ export {
176
177
  SchemaStaticsBeta,
177
178
  SchemaUpgrade,
178
179
  SharedTreeOptionsBeta,
180
+ System_TableSchema,
181
+ TableSchema,
179
182
  TreeBeta,
180
183
  TreeBranch,
181
184
  TreeChangeEventsBeta,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluid-framework",
3
- "version": "2.81.1",
3
+ "version": "2.82.0",
4
4
  "description": "The main entry point into Fluid Framework public packages",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -57,17 +57,17 @@
57
57
  "main": "lib/index.js",
58
58
  "types": "lib/public.d.ts",
59
59
  "dependencies": {
60
- "@fluidframework/container-definitions": "~2.81.1",
61
- "@fluidframework/container-loader": "~2.81.1",
62
- "@fluidframework/core-interfaces": "~2.81.1",
63
- "@fluidframework/core-utils": "~2.81.1",
64
- "@fluidframework/driver-definitions": "~2.81.1",
65
- "@fluidframework/fluid-static": "~2.81.1",
66
- "@fluidframework/map": "~2.81.1",
67
- "@fluidframework/runtime-utils": "~2.81.1",
68
- "@fluidframework/sequence": "~2.81.1",
69
- "@fluidframework/shared-object-base": "~2.81.1",
70
- "@fluidframework/tree": "~2.81.1"
60
+ "@fluidframework/container-definitions": "~2.82.0",
61
+ "@fluidframework/container-loader": "~2.82.0",
62
+ "@fluidframework/core-interfaces": "~2.82.0",
63
+ "@fluidframework/core-utils": "~2.82.0",
64
+ "@fluidframework/driver-definitions": "~2.82.0",
65
+ "@fluidframework/fluid-static": "~2.82.0",
66
+ "@fluidframework/map": "~2.82.0",
67
+ "@fluidframework/runtime-utils": "~2.82.0",
68
+ "@fluidframework/sequence": "~2.82.0",
69
+ "@fluidframework/shared-object-base": "~2.82.0",
70
+ "@fluidframework/tree": "~2.82.0"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@arethetypeswrong/cli": "^0.18.2",
@@ -75,9 +75,9 @@
75
75
  "@fluid-tools/build-cli": "^0.63.0",
76
76
  "@fluidframework/build-common": "^2.0.3",
77
77
  "@fluidframework/build-tools": "^0.63.0",
78
- "@fluidframework/eslint-config-fluid": "~2.81.1",
78
+ "@fluidframework/eslint-config-fluid": "~2.82.0",
79
79
  "@microsoft/api-extractor": "7.52.11",
80
- "@types/node": "^18.19.0",
80
+ "@types/node": "~20.19.30",
81
81
  "concurrently": "^9.2.1",
82
82
  "copyfiles": "^2.4.1",
83
83
  "eslint": "~9.39.1",
package/biome.jsonc DELETED
@@ -1,4 +0,0 @@
1
- {
2
- "$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
3
- "extends": ["../../../biome.jsonc"]
4
- }