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 +95 -0
- package/api-report/fluid-framework.alpha.api.md +63 -25
- package/api-report/fluid-framework.beta.api.md +30 -0
- package/api-report/fluid-framework.legacy.beta.api.md +31 -1
- package/dist/alpha.d.ts +10 -6
- package/dist/beta.d.ts +4 -1
- package/dist/legacy.d.ts +4 -1
- package/lib/alpha.d.ts +10 -6
- package/lib/beta.d.ts +4 -1
- package/lib/legacy.d.ts +4 -1
- package/package.json +14 -14
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
-
// @
|
|
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
|
-
// @
|
|
1596
|
+
// @beta
|
|
1593
1597
|
export function snapshotSchemaCompatibility(options: SnapshotSchemaCompatibilityOptions): void;
|
|
1594
1598
|
|
|
1595
|
-
// @
|
|
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
|
-
|
|
1853
|
-
} | {
|
|
1873
|
+
}) | (WithValue<TFailureValue> & {
|
|
1854
1874
|
rollback: true;
|
|
1855
|
-
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
85
|
+
"rimraf": "^6.1.3",
|
|
86
86
|
"typescript": "~5.4.5"
|
|
87
87
|
},
|
|
88
88
|
"fluidBuild": {
|