fluid-framework 2.83.0 → 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
@@ -1561,9 +1569,6 @@ export interface SimpleRecordNodeSchema<Type extends SchemaType = SchemaType, ou
1561
1569
  readonly simpleAllowedTypes: ReadonlyMap<string, SimpleAllowedTypeAttributes<Type>>;
1562
1570
  }
1563
1571
 
1564
- // @alpha
1565
- export type SimpleTreeIndex<TKey extends TreeIndexKey, TValue> = TreeIndex<TKey, TValue>;
1566
-
1567
1572
  // @alpha @sealed
1568
1573
  export interface SimpleTreeSchema<Type extends SchemaType = SchemaType> {
1569
1574
  readonly definitions: ReadonlyMap<string, SimpleNodeSchema<Type>>;
@@ -1575,7 +1580,7 @@ export function singletonSchema<TScope extends string, TName extends string | nu
1575
1580
  readonly value: TName;
1576
1581
  }, Record<string, never>, true, Record<string, never>, undefined>;
1577
1582
 
1578
- // @alpha @input
1583
+ // @beta @input
1579
1584
  export interface SnapshotFileSystem {
1580
1585
  join(parentPath: string, childPath: string): string;
1581
1586
  mkdirSync(dir: string, options: {
@@ -1588,10 +1593,10 @@ export interface SnapshotFileSystem {
1588
1593
  }): void;
1589
1594
  }
1590
1595
 
1591
- // @alpha
1596
+ // @beta
1592
1597
  export function snapshotSchemaCompatibility(options: SnapshotSchemaCompatibilityOptions): void;
1593
1598
 
1594
- // @alpha @input
1599
+ // @beta @input
1595
1600
  export interface SnapshotSchemaCompatibilityOptions {
1596
1601
  readonly fileSystem: SnapshotFileSystem;
1597
1602
  readonly minVersionForCollaboration: string;
@@ -1842,17 +1847,32 @@ export interface Tagged<V, T extends string = string> {
1842
1847
  // @public
1843
1848
  export type TelemetryBaseEventPropertyType = string | number | boolean | undefined;
1844
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
+
1845
1867
  // @alpha
1846
1868
  export function trackDirtyNodes(view: TreeViewAlpha<ImplicitFieldSchema>, dirty: DirtyTreeMap): () => void;
1847
1869
 
1848
1870
  // @alpha
1849
- export type TransactionCallbackStatus<TSuccessValue, TFailureValue> = ({
1871
+ export type TransactionCallbackStatus<TSuccessValue, TFailureValue> = ((WithValue<TSuccessValue> & {
1850
1872
  rollback?: false;
1851
- value: TSuccessValue;
1852
- } | {
1873
+ }) | (WithValue<TFailureValue> & {
1853
1874
  rollback: true;
1854
- value: TFailureValue;
1855
- }) & {
1875
+ })) & {
1856
1876
  preconditionsOnRevert?: readonly TransactionConstraintAlpha[];
1857
1877
  };
1858
1878
 
@@ -1862,6 +1882,11 @@ export type TransactionConstraint = NodeInDocumentConstraint;
1862
1882
  // @alpha @sealed
1863
1883
  export type TransactionConstraintAlpha = TransactionConstraint | NoChangeConstraint;
1864
1884
 
1885
+ // @alpha @sealed
1886
+ export type TransactionLabels = Set<unknown> & {
1887
+ tree?: LabelTree;
1888
+ };
1889
+
1865
1890
  // @alpha
1866
1891
  export type TransactionResult = Omit<TransactionResultSuccess<unknown>, "value"> | Omit<TransactionResultFailed<unknown>, "value">;
1867
1892
 
@@ -1869,15 +1894,13 @@ export type TransactionResult = Omit<TransactionResultSuccess<unknown>, "value">
1869
1894
  export type TransactionResultExt<TSuccessValue, TFailureValue> = TransactionResultSuccess<TSuccessValue> | TransactionResultFailed<TFailureValue>;
1870
1895
 
1871
1896
  // @alpha
1872
- export interface TransactionResultFailed<TFailureValue> {
1897
+ export interface TransactionResultFailed<TFailureValue> extends WithValue<TFailureValue> {
1873
1898
  success: false;
1874
- value: TFailureValue;
1875
1899
  }
1876
1900
 
1877
1901
  // @alpha
1878
- export interface TransactionResultSuccess<TSuccessValue> {
1902
+ export interface TransactionResultSuccess<TSuccessValue> extends WithValue<TSuccessValue> {
1879
1903
  success: true;
1880
- value: TSuccessValue;
1881
1904
  }
1882
1905
 
1883
1906
  // @public
@@ -1894,9 +1917,11 @@ export const Tree: Tree;
1894
1917
 
1895
1918
  // @alpha @sealed
1896
1919
  export interface TreeAlpha {
1920
+ // @deprecated
1897
1921
  branch(node: TreeNode): TreeBranchAlpha | undefined;
1898
1922
  child(node: TreeNode, key: string | number): TreeNode | TreeLeafValue | undefined;
1899
1923
  children(node: TreeNode): Iterable<[propertyKey: string | number, child: TreeNode | TreeLeafValue]>;
1924
+ context(node: TreeNode): TreeContextAlpha;
1900
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>;
1901
1926
  exportCompressed(tree: TreeNode | TreeLeafValue, options: {
1902
1927
  idCompressor?: IIdCompressor_2;
@@ -1969,7 +1994,7 @@ export interface TreeBranch extends IDisposable {
1969
1994
  }
1970
1995
 
1971
1996
  // @alpha @sealed
1972
- export interface TreeBranchAlpha extends TreeBranch {
1997
+ export interface TreeBranchAlpha extends TreeBranch, TreeContextAlpha {
1973
1998
  applyChange(change: JsonCompatibleReadOnly): void;
1974
1999
  readonly events: Listenable<TreeBranchEvents>;
1975
2000
  // (undocumented)
@@ -2010,6 +2035,15 @@ export enum TreeCompressionStrategy {
2010
2035
  Uncompressed = 1
2011
2036
  }
2012
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
+
2013
2047
  // @beta @input
2014
2048
  export interface TreeEncodingOptions<TKeyOptions = KeyEncodingOptions> {
2015
2049
  readonly keys?: TKeyOptions;
@@ -2027,13 +2061,13 @@ export interface TreeIdentifierUtils {
2027
2061
  shorten(branch: TreeBranch, nodeIdentifier: string): number | undefined;
2028
2062
  }
2029
2063
 
2030
- // @alpha
2031
- export interface TreeIndex<TKey extends TreeIndexKey, TValue> extends ReadonlyMap<TKey, TValue> {
2064
+ // @alpha @sealed
2065
+ export interface TreeIndex<TKey, TValue> extends ReadonlyMap<TKey, TValue> {
2032
2066
  dispose(): void;
2033
2067
  }
2034
2068
 
2035
2069
  // @alpha
2036
- export type TreeIndexKey = number | string | boolean | IFluidHandle | null;
2070
+ export type TreeIndexKey = TreeLeafValue;
2037
2071
 
2038
2072
  // @alpha
2039
2073
  export type TreeIndexNodes<TNode> = readonly [first: TNode, ...rest: TNode[]];
@@ -2307,4 +2341,9 @@ export interface WithType<out TName extends string = string, out TKind extends N
2307
2341
  get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, TreeNode, never, boolean, TInfo>;
2308
2342
  }
2309
2343
 
2344
+ // @alpha
2345
+ export interface WithValue<TValue> {
2346
+ value: TValue;
2347
+ }
2348
+
2310
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.83.0",
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.83.0",
61
- "@fluidframework/container-loader": "~2.83.0",
62
- "@fluidframework/core-interfaces": "~2.83.0",
63
- "@fluidframework/core-utils": "~2.83.0",
64
- "@fluidframework/driver-definitions": "~2.83.0",
65
- "@fluidframework/fluid-static": "~2.83.0",
66
- "@fluidframework/map": "~2.83.0",
67
- "@fluidframework/runtime-utils": "~2.83.0",
68
- "@fluidframework/sequence": "~2.83.0",
69
- "@fluidframework/shared-object-base": "~2.83.0",
70
- "@fluidframework/tree": "~2.83.0"
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.83.0",
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": {