fluid-framework 2.90.0-378676 → 2.90.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,100 @@
1
1
  # fluid-framework
2
2
 
3
+ ## 2.90.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add alpha TextAsTree domain for collaboratively editable text ([#26568](https://github.com/microsoft/FluidFramework/pull/26568)) [06736bd81de](https://github.com/microsoft/FluidFramework/commit/06736bd81dea4c8e44cb13304f471a7b1bca42bd)
8
+
9
+ A newly exported `TextAsTree` alpha namespace has been added with an initial version of collaboratively editable text.
10
+ Users of SharedTree can add `TextAsTree.Tree` nodes to their tree to experiment with it.
11
+
12
+ - Added new TreeAlpha.context(node) API ([#26432](https://github.com/microsoft/FluidFramework/pull/26432)) [ffa62f45e2c](https://github.com/microsoft/FluidFramework/commit/ffa62f45e2ca6c6106c67ed94f69359336823516)
13
+
14
+ This release introduces a node-scoped context that works for both hydrated and [unhydrated](https://fluidframework.com/docs/api/fluid-framework/unhydrated-typealias) [TreeNodes](https://fluidframework.com/docs/api/fluid-framework/treenode-class).
15
+ The new `TreeContextAlpha` interface exposes `runTransaction` / `runTransactionAsync` methods and an `isBranch()` type guard.
16
+ `TreeBranchAlpha` now extends `TreeContextAlpha`, so you can keep using branch APIs when available.
17
+
18
+ #### Migration
19
+
20
+ If you previously used `TreeAlpha.branch(node)` to discover a branch, switch to `TreeAlpha.context(node)` and check `isBranch()`:
21
+
22
+ ```ts
23
+ import { TreeAlpha } from "@fluidframework/tree/alpha";
24
+
25
+ const context = TreeAlpha.context(node);
26
+ if (context.isBranch()) {
27
+ // Same branch APIs as before
28
+ context.fork();
29
+ }
30
+ ```
31
+
32
+ `TreeAlpha.branch(node)` is now deprecated.
33
+ Prefer the context API above.
34
+
35
+ #### New transaction entry point
36
+
37
+ You can now run transactions from a node context, regardless of whether the node is hydrated:
38
+
39
+ ```ts
40
+ // A synchronous transaction without a return value
41
+ const context = TreeAlpha.context(node);
42
+ context.runTransaction(() => {
43
+ node.count += 1;
44
+ });
45
+ ```
46
+
47
+ ```ts
48
+ // An asynchronous transaction with a return value
49
+ const context = TreeAlpha.context(node);
50
+ const result = await context.runTransactionAsync(async () => {
51
+ await doWork(node);
52
+ return { value: node.foo };
53
+ });
54
+ ```
55
+
56
+ - Promote checkSchemaCompatibilitySnapshots to beta ([#26288](https://github.com/microsoft/FluidFramework/pull/26288)) [eb4ef62672d](https://github.com/microsoft/FluidFramework/commit/eb4ef62672d33f6a903e3726b58d1f65c24d9150)
57
+
58
+ [`checkSchemaCompatibilitySnapshots`](https://fluidframework.com/docs/api/fluid-framework#checkschemacompatibilitysnapshots-function) has been promoted to `@beta`.
59
+ It is recommended that all SharedTree applications use this API to write schema compatibility tests.
60
+
61
+ Usage should look something like:
62
+
63
+ ```typescript
64
+ import fs from "node:fs";
65
+ import path from "node:path";
66
+
67
+ import { snapshotSchemaCompatibility } from "@fluidframework/tree/beta";
68
+
69
+ // The TreeViewConfiguration the application uses, which contains the application's schema.
70
+ import { treeViewConfiguration } from "./schema.js";
71
+ // The next version of the application which will be released.
72
+ import { packageVersion } from "./version.js";
73
+
74
+ // Provide some way to run the check in "update" mode when updating snapshots is intended.
75
+ const regenerateSnapshots = process.argv.includes("--snapshot");
76
+
77
+ // Setup the actual test. In this case using Mocha syntax.
78
+ describe("schema", () => {
79
+ it("schema compatibility", () => {
80
+ // Select a path to save the snapshots in.
81
+ // This will depend on how your application organizes its test data.
82
+ const snapshotDirectory = path.join(
83
+ import.meta.dirname,
84
+ "../../../src/test/snapshotCompatibilityCheckerExample/schema-snapshots",
85
+ );
86
+ snapshotSchemaCompatibility({
87
+ snapshotDirectory,
88
+ fileSystem: { ...fs, ...path },
89
+ version: packageVersion,
90
+ minVersionForCollaboration: "2.0.0",
91
+ schema: treeViewConfiguration,
92
+ mode: regenerateSnapshots ? "update" : "assert",
93
+ });
94
+ });
95
+ });
96
+ ```
97
+
3
98
  ## 2.83.0
4
99
 
5
100
  ### Minor Changes
@@ -258,16 +258,16 @@ export type CreateIndependentTreeAlphaOptions = ForestOptions & ((IndependentVie
258
258
  export function createIndependentTreeBeta<const TSchema extends ImplicitFieldSchema>(options?: ForestOptions): ViewableTree;
259
259
 
260
260
  // @alpha
261
- export function createSimpleTreeIndex<TFieldSchema extends ImplicitFieldSchema, TKey extends TreeIndexKey, TValue>(view: TreeView<TFieldSchema>, indexer: (schema: TreeNodeSchema) => string | undefined, getValue: (nodes: TreeIndexNodes<TreeNode>) => TValue, isKeyValid: (key: TreeIndexKey) => key is TKey): SimpleTreeIndex<TKey, TValue>;
261
+ export function createTreeIndex<TFieldSchema extends ImplicitFieldSchema, TKey extends TreeIndexKey, TValue>(view: TreeView<TFieldSchema>, indexer: (schema: TreeNodeSchema) => string | undefined, getValue: (nodes: TreeIndexNodes<TreeNode>) => TValue, isKeyValid: (key: TreeIndexKey) => key is TKey): TreeIndex<TKey, TValue>;
262
262
 
263
263
  // @alpha
264
- export function createSimpleTreeIndex<TFieldSchema extends ImplicitFieldSchema, TKey extends TreeIndexKey, TValue, TSchema extends TreeNodeSchema>(view: TreeView<TFieldSchema>, indexer: (schema: TSchema) => string | undefined, getValue: (nodes: TreeIndexNodes<NodeFromSchema<TSchema>>) => TValue, isKeyValid: (key: TreeIndexKey) => key is TKey, indexableSchema: readonly TSchema[]): SimpleTreeIndex<TKey, TValue>;
264
+ export function createTreeIndex<TFieldSchema extends ImplicitFieldSchema, TKey extends TreeIndexKey, TValue, TSchema extends TreeNodeSchema>(view: TreeView<TFieldSchema>, indexer: (schema: TSchema) => string | undefined, getValue: (nodes: TreeIndexNodes<NodeFromSchema<TSchema>>) => TValue, isKeyValid: (key: TreeIndexKey) => key is TKey, indexableSchema: readonly TSchema[]): TreeIndex<TKey, TValue>;
265
265
 
266
266
  // @alpha
267
- export function createSimpleTreeIndex<TFieldSchema extends ImplicitFieldSchema, TKey extends TreeIndexKey, TValue>(view: TreeView<TFieldSchema>, indexer: Map<TreeNodeSchema, string>, getValue: (nodes: TreeIndexNodes<TreeNode>) => TValue, isKeyValid: (key: TreeIndexKey) => key is TKey): SimpleTreeIndex<TKey, TValue>;
267
+ export function createTreeIndex<TFieldSchema extends ImplicitFieldSchema, TKey extends TreeIndexKey, TValue>(view: TreeView<TFieldSchema>, indexer: Map<TreeNodeSchema, string>, getValue: (nodes: TreeIndexNodes<TreeNode>) => TValue, isKeyValid: (key: TreeIndexKey) => key is TKey): TreeIndex<TKey, TValue>;
268
268
 
269
269
  // @alpha
270
- export function createSimpleTreeIndex<TFieldSchema extends ImplicitFieldSchema, TKey extends TreeIndexKey, TValue, TSchema extends TreeNodeSchema>(view: TreeView<TFieldSchema>, indexer: Map<TreeNodeSchema, string>, getValue: (nodes: TreeIndexNodes<NodeFromSchema<TSchema>>) => TValue, isKeyValid: (key: TreeIndexKey) => key is TKey, indexableSchema: readonly TSchema[]): SimpleTreeIndex<TKey, TValue>;
270
+ export function createTreeIndex<TFieldSchema extends ImplicitFieldSchema, TKey extends TreeIndexKey, TValue, TSchema extends TreeNodeSchema>(view: TreeView<TFieldSchema>, indexer: Map<TreeNodeSchema, string>, getValue: (nodes: TreeIndexNodes<NodeFromSchema<TSchema>>) => TValue, isKeyValid: (key: TreeIndexKey) => key is TKey, indexableSchema: readonly TSchema[]): TreeIndex<TKey, TValue>;
271
271
 
272
272
  // @alpha
273
273
  export function decodeSchemaCompatibilitySnapshot(encodedSchema: JsonCompatibleReadOnly, validator?: FormatValidator): SimpleTreeSchema;
@@ -533,7 +533,7 @@ export interface IConnection {
533
533
  export type ICriticalContainerError = IErrorBase;
534
534
 
535
535
  // @alpha
536
- export type IdentifierIndex = SimpleTreeIndex<string, TreeNode>;
536
+ export type IdentifierIndex = TreeIndex<string, TreeNode>;
537
537
 
538
538
  // @public @sealed
539
539
  export interface IDisposable {
@@ -1060,6 +1060,12 @@ export enum KeyEncodingOptions {
1060
1060
  usePropertyKeys = "usePropertyKeys"
1061
1061
  }
1062
1062
 
1063
+ // @alpha @sealed
1064
+ export interface LabelTree {
1065
+ label: unknown;
1066
+ sublabels: LabelTree[];
1067
+ }
1068
+
1063
1069
  // @public
1064
1070
  export type LazyItem<Item = unknown> = Item | (() => Item);
1065
1071
 
@@ -1084,6 +1090,7 @@ export interface LocalChangeMetadata extends CommitMetadata {
1084
1090
  getRevertible(onDisposed?: (revertible: RevertibleAlpha) => void): RevertibleAlpha | undefined;
1085
1091
  readonly isLocal: true;
1086
1092
  readonly label?: unknown;
1093
+ readonly labels: TransactionLabels;
1087
1094
  }
1088
1095
 
1089
1096
  // @public @sealed
@@ -1265,6 +1272,7 @@ export interface RemoteChangeMetadata extends CommitMetadata {
1265
1272
  readonly getRevertible?: undefined;
1266
1273
  readonly isLocal: false;
1267
1274
  readonly label?: undefined;
1275
+ readonly labels: TransactionLabels;
1268
1276
  }
1269
1277
 
1270
1278
  // @alpha
@@ -1488,7 +1496,6 @@ export interface SharedTreeFormatOptions {
1488
1496
 
1489
1497
  // @alpha @input
1490
1498
  export interface SharedTreeOptions extends SharedTreeOptionsBeta, Partial<CodecWriteOptions>, Partial<SharedTreeFormatOptions> {
1491
- readonly enableDetachedRootEditing?: boolean;
1492
1499
  readonly enableSharedBranches?: boolean;
1493
1500
  shouldEncodeIncrementally?: IncrementalEncodingPolicy;
1494
1501
  }
@@ -1562,9 +1569,6 @@ export interface SimpleRecordNodeSchema<Type extends SchemaType = SchemaType, ou
1562
1569
  readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes<Type>>;
1563
1570
  }
1564
1571
 
1565
- // @alpha
1566
- export type SimpleTreeIndex<TKey extends TreeIndexKey, TValue> = TreeIndex<TKey, TValue>;
1567
-
1568
1572
  // @alpha @sealed
1569
1573
  export interface SimpleTreeSchema<Type extends SchemaType = SchemaType> {
1570
1574
  readonly definitions: ReadonlyMap<string, SimpleNodeSchema<Type>>;
@@ -1576,7 +1580,7 @@ export function singletonSchema<TScope extends string, TName extends string | nu
1576
1580
  readonly value: TName;
1577
1581
  }, Record<string, never>, true, Record<string, never>, undefined>;
1578
1582
 
1579
- // @alpha @input
1583
+ // @beta @input
1580
1584
  export interface SnapshotFileSystem {
1581
1585
  join(parentPath: string, childPath: string): string;
1582
1586
  mkdirSync(dir: string, options: {
@@ -1589,10 +1593,10 @@ export interface SnapshotFileSystem {
1589
1593
  }): void;
1590
1594
  }
1591
1595
 
1592
- // @alpha
1596
+ // @beta
1593
1597
  export function snapshotSchemaCompatibility(options: SnapshotSchemaCompatibilityOptions): void;
1594
1598
 
1595
- // @alpha @input
1599
+ // @beta @input
1596
1600
  export interface SnapshotSchemaCompatibilityOptions {
1597
1601
  readonly fileSystem: SnapshotFileSystem;
1598
1602
  readonly minVersionForCollaboration: string;
@@ -1843,17 +1847,32 @@ export interface Tagged<V, T extends string = string> {
1843
1847
  // @public
1844
1848
  export type TelemetryBaseEventPropertyType = string | number | boolean | undefined;
1845
1849
 
1850
+ // @alpha
1851
+ export namespace TextAsTree {
1852
+ export interface Members {
1853
+ characterCount(): number;
1854
+ characters(): Iterable<string>;
1855
+ charactersCopy(): string[];
1856
+ fullString(): string;
1857
+ insertAt(index: number, additionalCharacters: string): void;
1858
+ removeRange(startIndex: number | undefined, endIndex: number | undefined): void;
1859
+ }
1860
+ export interface Statics {
1861
+ fromString(value: string): Tree;
1862
+ }
1863
+ const Tree: Statics & TreeNodeSchema<"com.fluidframework.text.Text", NodeKind, Members & TreeNode & WithType<"com.fluidframework.text.Text", NodeKind, unknown>, never, false>;
1864
+ export type Tree = Members & TreeNode & WithType<"com.fluidframework.text.Text">;
1865
+ }
1866
+
1846
1867
  // @alpha
1847
1868
  export function trackDirtyNodes(view: TreeViewAlpha<ImplicitFieldSchema>, dirty: DirtyTreeMap): () => void;
1848
1869
 
1849
1870
  // @alpha
1850
- export type TransactionCallbackStatus<TSuccessValue, TFailureValue> = ({
1871
+ export type TransactionCallbackStatus<TSuccessValue, TFailureValue> = ((WithValue<TSuccessValue> & {
1851
1872
  rollback?: false;
1852
- value: TSuccessValue;
1853
- } | {
1873
+ }) | (WithValue<TFailureValue> & {
1854
1874
  rollback: true;
1855
- value: TFailureValue;
1856
- }) & {
1875
+ })) & {
1857
1876
  preconditionsOnRevert?: readonly TransactionConstraintAlpha[];
1858
1877
  };
1859
1878
 
@@ -1863,6 +1882,11 @@ export type TransactionConstraint = NodeInDocumentConstraint;
1863
1882
  // @alpha @sealed
1864
1883
  export type TransactionConstraintAlpha = TransactionConstraint | NoChangeConstraint;
1865
1884
 
1885
+ // @alpha @sealed
1886
+ export type TransactionLabels = Set<unknown> & {
1887
+ tree?: LabelTree;
1888
+ };
1889
+
1866
1890
  // @alpha
1867
1891
  export type TransactionResult = Omit<TransactionResultSuccess<unknown>, "value"> | Omit<TransactionResultFailed<unknown>, "value">;
1868
1892
 
@@ -1870,15 +1894,13 @@ export type TransactionResult = Omit<TransactionResultSuccess<unknown>, "value">
1870
1894
  export type TransactionResultExt<TSuccessValue, TFailureValue> = TransactionResultSuccess<TSuccessValue> | TransactionResultFailed<TFailureValue>;
1871
1895
 
1872
1896
  // @alpha
1873
- export interface TransactionResultFailed<TFailureValue> {
1897
+ export interface TransactionResultFailed<TFailureValue> extends WithValue<TFailureValue> {
1874
1898
  success: false;
1875
- value: TFailureValue;
1876
1899
  }
1877
1900
 
1878
1901
  // @alpha
1879
- export interface TransactionResultSuccess<TSuccessValue> {
1902
+ export interface TransactionResultSuccess<TSuccessValue> extends WithValue<TSuccessValue> {
1880
1903
  success: true;
1881
- value: TSuccessValue;
1882
1904
  }
1883
1905
 
1884
1906
  // @public
@@ -1895,9 +1917,11 @@ export const Tree: Tree;
1895
1917
 
1896
1918
  // @alpha @sealed
1897
1919
  export interface TreeAlpha {
1920
+ // @deprecated
1898
1921
  branch(node: TreeNode): TreeBranchAlpha | undefined;
1899
1922
  child(node: TreeNode, key: string | number): TreeNode | TreeLeafValue | undefined;
1900
1923
  children(node: TreeNode): Iterable<[propertyKey: string | number, child: TreeNode | TreeLeafValue]>;
1924
+ context(node: TreeNode): TreeContextAlpha;
1901
1925
  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>;
1902
1926
  exportCompressed(tree: TreeNode | TreeLeafValue, options: {
1903
1927
  idCompressor?: IIdCompressor_2;
@@ -1970,7 +1994,7 @@ export interface TreeBranch extends IDisposable {
1970
1994
  }
1971
1995
 
1972
1996
  // @alpha @sealed
1973
- export interface TreeBranchAlpha extends TreeBranch {
1997
+ export interface TreeBranchAlpha extends TreeBranch, TreeContextAlpha {
1974
1998
  applyChange(change: JsonCompatibleReadOnly): void;
1975
1999
  readonly events: Listenable<TreeBranchEvents>;
1976
2000
  // (undocumented)
@@ -2011,6 +2035,15 @@ export enum TreeCompressionStrategy {
2011
2035
  Uncompressed = 1
2012
2036
  }
2013
2037
 
2038
+ // @alpha
2039
+ export interface TreeContextAlpha {
2040
+ isBranch(): this is TreeBranchAlpha;
2041
+ runTransaction<TValue>(transaction: () => WithValue<TValue>, params?: RunTransactionParams): TransactionResultExt<TValue, TValue>;
2042
+ runTransaction(transaction: () => void, params?: RunTransactionParams): TransactionResult;
2043
+ runTransactionAsync<TValue>(transaction: () => Promise<WithValue<TValue>>, params?: RunTransactionParams): Promise<TransactionResultExt<TValue, TValue>>;
2044
+ runTransactionAsync(transaction: () => Promise<void>, params?: RunTransactionParams): Promise<TransactionResult>;
2045
+ }
2046
+
2014
2047
  // @beta @input
2015
2048
  export interface TreeEncodingOptions<TKeyOptions = KeyEncodingOptions> {
2016
2049
  readonly keys?: TKeyOptions;
@@ -2028,13 +2061,13 @@ export interface TreeIdentifierUtils {
2028
2061
  shorten(branch: TreeBranch, nodeIdentifier: string): number | undefined;
2029
2062
  }
2030
2063
 
2031
- // @alpha
2032
- export interface TreeIndex<TKey extends TreeIndexKey, TValue> extends ReadonlyMap<TKey, TValue> {
2064
+ // @alpha @sealed
2065
+ export interface TreeIndex<TKey, TValue> extends ReadonlyMap<TKey, TValue> {
2033
2066
  dispose(): void;
2034
2067
  }
2035
2068
 
2036
2069
  // @alpha
2037
- export type TreeIndexKey = number | string | boolean | IFluidHandle | null;
2070
+ export type TreeIndexKey = TreeLeafValue;
2038
2071
 
2039
2072
  // @alpha
2040
2073
  export type TreeIndexNodes<TNode> = readonly [first: TNode, ...rest: TNode[]];
@@ -2308,4 +2341,9 @@ export interface WithType<out TName extends string = string, out TKind extends N
2308
2341
  get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode, never, boolean, TInfo>;
2309
2342
  }
2310
2343
 
2344
+ // @alpha
2345
+ export interface WithValue<TValue> {
2346
+ value: TValue;
2347
+ }
2348
+
2311
2349
  ```
@@ -964,6 +964,36 @@ export function singletonSchema<TScope extends string, TName extends string | nu
964
964
  readonly value: TName;
965
965
  }, Record<string, never>, true, Record<string, never>, undefined>;
966
966
 
967
+ // @beta @input
968
+ export interface SnapshotFileSystem {
969
+ join(parentPath: string, childPath: string): string;
970
+ mkdirSync(dir: string, options: {
971
+ recursive: true;
972
+ }): void;
973
+ readdirSync(dir: string): readonly string[];
974
+ readFileSync(file: string, encoding: "utf8"): string;
975
+ writeFileSync(file: string, data: string, options: {
976
+ encoding: "utf8";
977
+ }): void;
978
+ }
979
+
980
+ // @beta
981
+ export function snapshotSchemaCompatibility(options: SnapshotSchemaCompatibilityOptions): void;
982
+
983
+ // @beta @input
984
+ export interface SnapshotSchemaCompatibilityOptions {
985
+ readonly fileSystem: SnapshotFileSystem;
986
+ readonly minVersionForCollaboration: string;
987
+ readonly mode: "assert" | "update";
988
+ readonly rejectSchemaChangesWithNoVersionChange?: true;
989
+ readonly rejectVersionsWithNoSchemaChange?: true;
990
+ readonly schema: TreeViewConfiguration;
991
+ readonly snapshotDirectory: string;
992
+ readonly snapshotUnchangedVersions?: true;
993
+ readonly version: string;
994
+ readonly versionComparer?: (a: string, b: string) => number;
995
+ }
996
+
967
997
  // @beta @system
968
998
  export namespace System_TableSchema {
969
999
  // @sealed @system
@@ -853,7 +853,7 @@ export interface ISharedObjectEvents extends IErrorEvent {
853
853
  export interface ISharedSegmentSequence<T extends ISegment> extends ISharedObject<ISharedSegmentSequenceEvents>, MergeTreeRevertibleDriver {
854
854
  annotateAdjustRange(start: number, end: number, adjust: MapLike<AdjustParams>): void;
855
855
  annotateRange(start: number, end: number, props: PropertySet): void;
856
- createLocalReferencePosition(segment: T, offset: number, refType: ReferenceType, properties: PropertySet | undefined, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean): LocalReferencePosition;
856
+ createLocalReferencePosition(segment: T | "start" | "end", offset: number | undefined, refType: ReferenceType, properties: PropertySet | undefined, slidingPreference?: SlidingPreference, canSlideToEndpoint?: boolean): LocalReferencePosition;
857
857
  getContainingSegment(pos: number): {
858
858
  segment: T | undefined;
859
859
  offset: number | undefined;
@@ -1324,6 +1324,36 @@ export function singletonSchema<TScope extends string, TName extends string | nu
1324
1324
  readonly value: TName;
1325
1325
  }, Record<string, never>, true, Record<string, never>, undefined>;
1326
1326
 
1327
+ // @beta @input
1328
+ export interface SnapshotFileSystem {
1329
+ join(parentPath: string, childPath: string): string;
1330
+ mkdirSync(dir: string, options: {
1331
+ recursive: true;
1332
+ }): void;
1333
+ readdirSync(dir: string): readonly string[];
1334
+ readFileSync(file: string, encoding: "utf8"): string;
1335
+ writeFileSync(file: string, data: string, options: {
1336
+ encoding: "utf8";
1337
+ }): void;
1338
+ }
1339
+
1340
+ // @beta
1341
+ export function snapshotSchemaCompatibility(options: SnapshotSchemaCompatibilityOptions): void;
1342
+
1343
+ // @beta @input
1344
+ export interface SnapshotSchemaCompatibilityOptions {
1345
+ readonly fileSystem: SnapshotFileSystem;
1346
+ readonly minVersionForCollaboration: string;
1347
+ readonly mode: "assert" | "update";
1348
+ readonly rejectSchemaChangesWithNoVersionChange?: true;
1349
+ readonly rejectVersionsWithNoSchemaChange?: true;
1350
+ readonly schema: TreeViewConfiguration;
1351
+ readonly snapshotDirectory: string;
1352
+ readonly snapshotUnchangedVersions?: true;
1353
+ readonly version: string;
1354
+ readonly versionComparer?: (a: string, b: string) => number;
1355
+ }
1356
+
1327
1357
  // @beta @system
1328
1358
  export namespace System_TableSchema {
1329
1359
  // @sealed @system
package/dist/alpha.d.ts CHANGED
@@ -171,6 +171,8 @@ export {
171
171
  SchemaStaticsBeta,
172
172
  SchemaUpgrade,
173
173
  SharedTreeOptionsBeta,
174
+ SnapshotFileSystem,
175
+ SnapshotSchemaCompatibilityOptions,
174
176
  System_TableSchema,
175
177
  TableSchema,
176
178
  TreeBeta,
@@ -189,7 +191,8 @@ export {
189
191
  configuredSharedTreeBeta,
190
192
  createIndependentTreeBeta,
191
193
  enumFromStrings,
192
- singletonSchema,
194
+ singletonSchema,
195
+ snapshotSchemaCompatibility,
193
196
  // #endregion
194
197
 
195
198
  // #region @alpha APIs
@@ -243,6 +246,7 @@ export {
243
246
  JsonSchemaType,
244
247
  JsonStringKeyPatternProperties,
245
248
  JsonTreeSchema,
249
+ LabelTree,
246
250
  LocalChangeMetadata,
247
251
  MapNodeCustomizableSchema,
248
252
  MapNodeCustomizableSchemaUnsafe,
@@ -276,12 +280,11 @@ export {
276
280
  SimpleObjectFieldSchema,
277
281
  SimpleObjectNodeSchema,
278
282
  SimpleRecordNodeSchema,
279
- SimpleTreeIndex,
280
283
  SimpleTreeSchema,
281
- SnapshotFileSystem,
282
- SnapshotSchemaCompatibilityOptions,
284
+ TextAsTree,
283
285
  TransactionCallbackStatus,
284
286
  TransactionConstraintAlpha,
287
+ TransactionLabels,
285
288
  TransactionResult,
286
289
  TransactionResultExt,
287
290
  TransactionResultFailed,
@@ -291,6 +294,7 @@ export {
291
294
  TreeBranchEvents,
292
295
  TreeBranchFork,
293
296
  TreeCompressionStrategy,
297
+ TreeContextAlpha,
294
298
  TreeIdentifierUtils,
295
299
  TreeIndex,
296
300
  TreeIndexKey,
@@ -306,6 +310,7 @@ export {
306
310
  VerboseTreeNode,
307
311
  ViewContent,
308
312
  VoidTransactionCallbackStatus,
313
+ WithValue,
309
314
  allowUnused,
310
315
  asAlpha,
311
316
  asTreeViewAlpha,
@@ -318,7 +323,7 @@ export {
318
323
  createArrayInsertionAnchor,
319
324
  createIdentifierIndex,
320
325
  createIndependentTreeAlpha,
321
- createSimpleTreeIndex,
326
+ createTreeIndex,
322
327
  decodeSchemaCompatibilitySnapshot,
323
328
  encodeSchemaCompatibilitySnapshot,
324
329
  eraseSchemaDetails,
@@ -341,7 +346,6 @@ export {
341
346
  replaceConciseTreeHandles,
342
347
  replaceHandles,
343
348
  replaceVerboseTreeHandles,
344
- snapshotSchemaCompatibility,
345
349
  trackDirtyNodes
346
350
  // #endregion
347
351
  } from "./index.js";
package/dist/beta.d.ts CHANGED
@@ -171,6 +171,8 @@ export {
171
171
  SchemaStaticsBeta,
172
172
  SchemaUpgrade,
173
173
  SharedTreeOptionsBeta,
174
+ SnapshotFileSystem,
175
+ SnapshotSchemaCompatibilityOptions,
174
176
  System_TableSchema,
175
177
  TableSchema,
176
178
  TreeBeta,
@@ -189,6 +191,7 @@ export {
189
191
  configuredSharedTreeBeta,
190
192
  createIndependentTreeBeta,
191
193
  enumFromStrings,
192
- singletonSchema
194
+ singletonSchema,
195
+ snapshotSchemaCompatibility
193
196
  // #endregion
194
197
  } from "./index.js";
package/dist/legacy.d.ts CHANGED
@@ -178,6 +178,8 @@ export {
178
178
  SchemaStaticsBeta,
179
179
  SchemaUpgrade,
180
180
  SharedTreeOptionsBeta,
181
+ SnapshotFileSystem,
182
+ SnapshotSchemaCompatibilityOptions,
181
183
  System_TableSchema,
182
184
  TableSchema,
183
185
  TreeBeta,
@@ -196,7 +198,8 @@ export {
196
198
  configuredSharedTreeBeta,
197
199
  createIndependentTreeBeta,
198
200
  enumFromStrings,
199
- singletonSchema,
201
+ singletonSchema,
202
+ snapshotSchemaCompatibility,
200
203
  // #endregion
201
204
 
202
205
  // #region @legacyBeta APIs
package/lib/alpha.d.ts CHANGED
@@ -171,6 +171,8 @@ export {
171
171
  SchemaStaticsBeta,
172
172
  SchemaUpgrade,
173
173
  SharedTreeOptionsBeta,
174
+ SnapshotFileSystem,
175
+ SnapshotSchemaCompatibilityOptions,
174
176
  System_TableSchema,
175
177
  TableSchema,
176
178
  TreeBeta,
@@ -189,7 +191,8 @@ export {
189
191
  configuredSharedTreeBeta,
190
192
  createIndependentTreeBeta,
191
193
  enumFromStrings,
192
- singletonSchema,
194
+ singletonSchema,
195
+ snapshotSchemaCompatibility,
193
196
  // #endregion
194
197
 
195
198
  // #region @alpha APIs
@@ -243,6 +246,7 @@ export {
243
246
  JsonSchemaType,
244
247
  JsonStringKeyPatternProperties,
245
248
  JsonTreeSchema,
249
+ LabelTree,
246
250
  LocalChangeMetadata,
247
251
  MapNodeCustomizableSchema,
248
252
  MapNodeCustomizableSchemaUnsafe,
@@ -276,12 +280,11 @@ export {
276
280
  SimpleObjectFieldSchema,
277
281
  SimpleObjectNodeSchema,
278
282
  SimpleRecordNodeSchema,
279
- SimpleTreeIndex,
280
283
  SimpleTreeSchema,
281
- SnapshotFileSystem,
282
- SnapshotSchemaCompatibilityOptions,
284
+ TextAsTree,
283
285
  TransactionCallbackStatus,
284
286
  TransactionConstraintAlpha,
287
+ TransactionLabels,
285
288
  TransactionResult,
286
289
  TransactionResultExt,
287
290
  TransactionResultFailed,
@@ -291,6 +294,7 @@ export {
291
294
  TreeBranchEvents,
292
295
  TreeBranchFork,
293
296
  TreeCompressionStrategy,
297
+ TreeContextAlpha,
294
298
  TreeIdentifierUtils,
295
299
  TreeIndex,
296
300
  TreeIndexKey,
@@ -306,6 +310,7 @@ export {
306
310
  VerboseTreeNode,
307
311
  ViewContent,
308
312
  VoidTransactionCallbackStatus,
313
+ WithValue,
309
314
  allowUnused,
310
315
  asAlpha,
311
316
  asTreeViewAlpha,
@@ -318,7 +323,7 @@ export {
318
323
  createArrayInsertionAnchor,
319
324
  createIdentifierIndex,
320
325
  createIndependentTreeAlpha,
321
- createSimpleTreeIndex,
326
+ createTreeIndex,
322
327
  decodeSchemaCompatibilitySnapshot,
323
328
  encodeSchemaCompatibilitySnapshot,
324
329
  eraseSchemaDetails,
@@ -341,7 +346,6 @@ export {
341
346
  replaceConciseTreeHandles,
342
347
  replaceHandles,
343
348
  replaceVerboseTreeHandles,
344
- snapshotSchemaCompatibility,
345
349
  trackDirtyNodes
346
350
  // #endregion
347
351
  } from "./index.js";
package/lib/beta.d.ts CHANGED
@@ -171,6 +171,8 @@ export {
171
171
  SchemaStaticsBeta,
172
172
  SchemaUpgrade,
173
173
  SharedTreeOptionsBeta,
174
+ SnapshotFileSystem,
175
+ SnapshotSchemaCompatibilityOptions,
174
176
  System_TableSchema,
175
177
  TableSchema,
176
178
  TreeBeta,
@@ -189,6 +191,7 @@ export {
189
191
  configuredSharedTreeBeta,
190
192
  createIndependentTreeBeta,
191
193
  enumFromStrings,
192
- singletonSchema
194
+ singletonSchema,
195
+ snapshotSchemaCompatibility
193
196
  // #endregion
194
197
  } from "./index.js";
package/lib/legacy.d.ts CHANGED
@@ -178,6 +178,8 @@ export {
178
178
  SchemaStaticsBeta,
179
179
  SchemaUpgrade,
180
180
  SharedTreeOptionsBeta,
181
+ SnapshotFileSystem,
182
+ SnapshotSchemaCompatibilityOptions,
181
183
  System_TableSchema,
182
184
  TableSchema,
183
185
  TreeBeta,
@@ -196,7 +198,8 @@ export {
196
198
  configuredSharedTreeBeta,
197
199
  createIndependentTreeBeta,
198
200
  enumFromStrings,
199
- singletonSchema,
201
+ singletonSchema,
202
+ snapshotSchemaCompatibility,
200
203
  // #endregion
201
204
 
202
205
  // #region @legacyBeta APIs
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluid-framework",
3
- "version": "2.90.0-378676",
3
+ "version": "2.90.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.90.0-378676",
61
- "@fluidframework/container-loader": "2.90.0-378676",
62
- "@fluidframework/core-interfaces": "2.90.0-378676",
63
- "@fluidframework/core-utils": "2.90.0-378676",
64
- "@fluidframework/driver-definitions": "2.90.0-378676",
65
- "@fluidframework/fluid-static": "2.90.0-378676",
66
- "@fluidframework/map": "2.90.0-378676",
67
- "@fluidframework/runtime-utils": "2.90.0-378676",
68
- "@fluidframework/sequence": "2.90.0-378676",
69
- "@fluidframework/shared-object-base": "2.90.0-378676",
70
- "@fluidframework/tree": "2.90.0-378676"
60
+ "@fluidframework/container-definitions": "~2.90.0",
61
+ "@fluidframework/container-loader": "~2.90.0",
62
+ "@fluidframework/core-interfaces": "~2.90.0",
63
+ "@fluidframework/core-utils": "~2.90.0",
64
+ "@fluidframework/driver-definitions": "~2.90.0",
65
+ "@fluidframework/fluid-static": "~2.90.0",
66
+ "@fluidframework/map": "~2.90.0",
67
+ "@fluidframework/runtime-utils": "~2.90.0",
68
+ "@fluidframework/sequence": "~2.90.0",
69
+ "@fluidframework/shared-object-base": "~2.90.0",
70
+ "@fluidframework/tree": "~2.90.0"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@arethetypeswrong/cli": "^0.18.2",
@@ -75,14 +75,14 @@
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.90.0-378676",
78
+ "@fluidframework/eslint-config-fluid": "~2.90.0",
79
79
  "@microsoft/api-extractor": "7.52.11",
80
80
  "@types/node": "~20.19.30",
81
81
  "concurrently": "^9.2.1",
82
82
  "copyfiles": "^2.4.1",
83
83
  "eslint": "~9.39.1",
84
84
  "jiti": "^2.6.1",
85
- "rimraf": "^6.1.2",
85
+ "rimraf": "^6.1.3",
86
86
  "typescript": "~5.4.5"
87
87
  },
88
88
  "fluidBuild": {