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 +95 -0
- package/api-report/fluid-framework.alpha.api.md +63 -24
- 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
|
|
@@ -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
|
-
// @
|
|
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
|
-
// @
|
|
1596
|
+
// @beta
|
|
1592
1597
|
export function snapshotSchemaCompatibility(options: SnapshotSchemaCompatibilityOptions): void;
|
|
1593
1598
|
|
|
1594
|
-
// @
|
|
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
|
-
|
|
1852
|
-
} | {
|
|
1873
|
+
}) | (WithValue<TFailureValue> & {
|
|
1853
1874
|
rollback: true;
|
|
1854
|
-
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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.
|
|
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.
|
|
61
|
-
"@fluidframework/container-loader": "~2.
|
|
62
|
-
"@fluidframework/core-interfaces": "~2.
|
|
63
|
-
"@fluidframework/core-utils": "~2.
|
|
64
|
-
"@fluidframework/driver-definitions": "~2.
|
|
65
|
-
"@fluidframework/fluid-static": "~2.
|
|
66
|
-
"@fluidframework/map": "~2.
|
|
67
|
-
"@fluidframework/runtime-utils": "~2.
|
|
68
|
-
"@fluidframework/sequence": "~2.
|
|
69
|
-
"@fluidframework/shared-object-base": "~2.
|
|
70
|
-
"@fluidframework/tree": "~2.
|
|
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.
|
|
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": {
|