fluid-framework 2.74.0-368706 → 2.74.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,16 @@
1
1
  # fluid-framework
2
2
 
3
+ ## 2.74.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Fixed bug in sending of revert edits after an aborted transaction ([#25978](https://github.com/microsoft/FluidFramework/pull/25978)) [93ec6c77dab](https://github.com/microsoft/FluidFramework/commit/93ec6c77dab27bd65c2b04862f578ac3876b2cbe)
8
+
9
+ Aborting a transaction used to put the tree in a state that would trigger an assert when sending some undo/redo edits to peers.
10
+ This would prevent some undo/redo edits from being sent and would put the tree in a broken state that prevented any further edits.
11
+ This issue could not have caused document corruption, so reopening the document was a possible remedy.
12
+ Aborting a transaction no longer puts the tree in such a state, so it is safe to perform undo/redo edits after that.
13
+
3
14
  ## 2.73.0
4
15
 
5
16
  ### Minor Changes
@@ -141,6 +141,15 @@ export interface BranchableTree extends ViewableTree {
141
141
  rebase(branch: TreeBranchFork): void;
142
142
  }
143
143
 
144
+ // @alpha @sealed
145
+ export type ChangeMetadata = CommitMetadata & ({
146
+ readonly isLocal: true;
147
+ getChange(): JsonCompatibleReadOnly;
148
+ } | {
149
+ readonly isLocal: false;
150
+ readonly getChange?: undefined;
151
+ });
152
+
144
153
  // @alpha
145
154
  export function checkCompatibility(viewWhichCreatedStoredSchema: TreeViewConfiguration, view: TreeViewConfiguration): Omit<SchemaCompatibilityStatus, "canInitialize">;
146
155
 
@@ -293,6 +302,12 @@ export abstract class ErasedType<out Name = unknown> {
293
302
  protected abstract brand(dummy: never): Name;
294
303
  }
295
304
 
305
+ // @alpha
306
+ export function eraseSchemaDetails<TNode, ExtraSchemaProperties = unknown>(): <T extends ExtraSchemaProperties & TreeNodeSchema<string, NodeKind, TNode & TreeNode>>(schema: T) => ExtraSchemaProperties & TreeNodeSchema<T["identifier"], NodeKind, TNode & TreeNode & WithType<T["identifier"]>, never, false>;
307
+
308
+ // @alpha
309
+ export function eraseSchemaDetailsSubclassable<TNode, ExtraSchemaProperties = unknown>(): <T extends ExtraSchemaProperties & TreeNodeSchemaClass<string, NodeKind, TNode & TreeNode>>(schema: T) => ExtraSchemaProperties & TreeNodeSchemaClass<T["identifier"], NodeKind, TNode & TreeNode & WithType<T["identifier"]>, never, false>;
310
+
296
311
  // @alpha
297
312
  export function evaluateLazySchema<T extends TreeNodeSchema>(value: LazyItem<T>): T;
298
313
 
@@ -1420,7 +1435,6 @@ export interface SharedTreeFormatOptions {
1420
1435
 
1421
1436
  // @alpha @input
1422
1437
  export interface SharedTreeOptions extends SharedTreeOptionsBeta, Partial<CodecWriteOptions>, Partial<SharedTreeFormatOptions> {
1423
- readonly enableDetachedRootEditing?: boolean;
1424
1438
  readonly enableSharedBranches?: boolean;
1425
1439
  shouldEncodeIncrementally?: IncrementalEncodingPolicy;
1426
1440
  }
@@ -1541,20 +1555,9 @@ export namespace System_TableSchema {
1541
1555
  readonly cells: FieldSchema_2<FieldKind_2.Required, TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row.cells">, NodeKind.Record, TreeRecordNode<TCellSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Row.cells">, NodeKind.Record, unknown>, RecordNodeInsertableData_2<TCellSchema>, true, TCellSchema, undefined, unknown>, unknown>;
1542
1556
  }>;
1543
1557
  // @system
1544
- export function createTableSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TColumnSchema extends ColumnSchemaBase<TUserScope, TCellSchema>, const TRowSchema extends RowSchemaBase<TUserScope, TCellSchema>>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, _cellSchema: TCellSchema, columnSchema: TColumnSchema, rowSchema: TRowSchema): TreeNodeSchemaCore_2<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot">, NodeKind.Object, false, {
1545
- readonly table: FieldSchema_2<FieldKind_2.Required, TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table">, NodeKind.Object, TreeObjectNode_2< {
1546
- readonly rows: TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.rows">, NodeKind.Array, TreeArrayNode<TRowSchema, [TRowSchema] extends [ImplicitAllowedTypes] ? TreeNodeFromImplicitAllowedTypes<TRowSchema> : TreeNodeFromImplicitAllowedTypes<ImplicitAllowedTypes>, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema> : never, ReadonlyArrayNode_2<TreeNode | TreeLeafValue_2>> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.rows">, NodeKind.Array, unknown>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema>>, true, TRowSchema, undefined>;
1547
- readonly columns: TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.columns">, NodeKind.Array, TreeArrayNode<TColumnSchema, [TColumnSchema] extends [ImplicitAllowedTypes] ? TreeNodeFromImplicitAllowedTypes<TColumnSchema> : TreeNodeFromImplicitAllowedTypes<ImplicitAllowedTypes>, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema> : never, ReadonlyArrayNode_2<TreeNode | TreeLeafValue_2>> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.columns">, NodeKind.Array, unknown>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema>>, true, TColumnSchema, undefined>;
1548
- }, ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table">>, object & {
1549
- readonly rows: (InsertableTypedNode_2<TreeNodeSchemaCore_2<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.rows">, NodeKind.Array, true, TRowSchema, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema>>, unknown> & (new (data?: InternalTreeNode | Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema>> | undefined) => TreeArrayNode<TRowSchema, [TRowSchema] extends [ImplicitAllowedTypes] ? TreeNodeFromImplicitAllowedTypes<TRowSchema> : TreeNodeFromImplicitAllowedTypes<ImplicitAllowedTypes>, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema> : never, ReadonlyArrayNode_2<TreeNode | TreeLeafValue_2>> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.rows">, NodeKind.Array, unknown>)> | undefined) & InsertableTypedNode_2<TreeNodeSchemaCore_2<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.rows">, NodeKind.Array, true, TRowSchema, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema>>, unknown> & (new (data?: InternalTreeNode | Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema>> | undefined) => TreeArrayNode<TRowSchema, [TRowSchema] extends [ImplicitAllowedTypes] ? TreeNodeFromImplicitAllowedTypes<TRowSchema> : TreeNodeFromImplicitAllowedTypes<ImplicitAllowedTypes>, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema> : never, ReadonlyArrayNode_2<TreeNode | TreeLeafValue_2>> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.rows">, NodeKind.Array, unknown>)>;
1550
- readonly columns: (InsertableTypedNode_2<TreeNodeSchemaCore_2<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.columns">, NodeKind.Array, true, TColumnSchema, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema>>, unknown> & (new (data?: InternalTreeNode | Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema>> | undefined) => TreeArrayNode<TColumnSchema, [TColumnSchema] extends [ImplicitAllowedTypes] ? TreeNodeFromImplicitAllowedTypes<TColumnSchema> : TreeNodeFromImplicitAllowedTypes<ImplicitAllowedTypes>, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema> : never, ReadonlyArrayNode_2<TreeNode | TreeLeafValue_2>> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.columns">, NodeKind.Array, unknown>)> | undefined) & InsertableTypedNode_2<TreeNodeSchemaCore_2<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.columns">, NodeKind.Array, true, TColumnSchema, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema>>, unknown> & (new (data?: InternalTreeNode | Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema>> | undefined) => TreeArrayNode<TColumnSchema, [TColumnSchema] extends [ImplicitAllowedTypes] ? TreeNodeFromImplicitAllowedTypes<TColumnSchema> : TreeNodeFromImplicitAllowedTypes<ImplicitAllowedTypes>, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema> : never, ReadonlyArrayNode_2<TreeNode | TreeLeafValue_2>> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.columns">, NodeKind.Array, unknown>)>;
1551
- }, true, {
1552
- readonly rows: TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.rows">, NodeKind.Array, TreeArrayNode<TRowSchema, [TRowSchema] extends [ImplicitAllowedTypes] ? TreeNodeFromImplicitAllowedTypes<TRowSchema> : TreeNodeFromImplicitAllowedTypes<ImplicitAllowedTypes>, [TRowSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema> : never, ReadonlyArrayNode_2<TreeNode | TreeLeafValue_2>> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.rows">, NodeKind.Array, unknown>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TRowSchema>>, true, TRowSchema, undefined>;
1553
- readonly columns: TreeNodeSchemaClass<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.columns">, NodeKind.Array, TreeArrayNode<TColumnSchema, [TColumnSchema] extends [ImplicitAllowedTypes] ? TreeNodeFromImplicitAllowedTypes<TColumnSchema> : TreeNodeFromImplicitAllowedTypes<ImplicitAllowedTypes>, [TColumnSchema] extends [ImplicitAllowedTypes] ? InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema> : never, ReadonlyArrayNode_2<TreeNode | TreeLeafValue_2>> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "Table.columns">, NodeKind.Array, unknown>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<TColumnSchema>>, true, TColumnSchema, undefined>;
1554
- }, never, unknown>, unknown>;
1555
- }, never, unknown> & (new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot">, NodeKind, unknown>) & {
1558
+ export function createTableSchema<const TUserScope extends string, const TCellSchema extends ImplicitAllowedTypes, const TColumnSchema extends ColumnSchemaBase<TUserScope, TCellSchema>, const TRowSchema extends RowSchemaBase<TUserScope, TCellSchema>>(inputSchemaFactory: SchemaFactoryBeta<TUserScope>, _cellSchema: TCellSchema, columnSchema: TColumnSchema, rowSchema: TRowSchema): {
1556
1559
  create<TThis extends new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot">, NodeKind, unknown>>(this: TThis, initialContents?: TableSchema.TableFactoryMethodParameters<TUserScope, TCellSchema, TColumnSchema, TRowSchema> | undefined): InstanceType<TThis>;
1557
- };
1560
+ } & (new (data?: InternalTreeNode | undefined) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot">, NodeKind, unknown>) & TreeNodeSchemaCore<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot"> & string, NodeKind, false, unknown, never, unknown> & (new (data: InternalTreeNode) => TreeNode & TableSchema.Table<TUserScope, TCellSchema, TColumnSchema, TRowSchema> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot">, NodeKind, unknown> & WithType<ScopedSchemaName<`com.fluidframework.table<${TUserScope}>`, "TableRoot"> & string, NodeKind, unknown>);
1558
1561
  // @system
1559
1562
  export type DefaultPropsType = ReturnType<typeof SchemaFactory.optional<[]>>;
1560
1563
  // @system
@@ -1880,6 +1883,7 @@ export interface TreeBranch extends IDisposable {
1880
1883
 
1881
1884
  // @alpha @sealed
1882
1885
  export interface TreeBranchAlpha extends TreeBranch {
1886
+ applyChange(change: JsonCompatibleReadOnly): void;
1883
1887
  readonly events: Listenable<TreeBranchEvents>;
1884
1888
  // (undocumented)
1885
1889
  fork(): TreeBranchAlpha;
@@ -1890,7 +1894,7 @@ export interface TreeBranchAlpha extends TreeBranch {
1890
1894
 
1891
1895
  // @alpha @sealed
1892
1896
  export interface TreeBranchEvents extends Omit<TreeViewEvents, "commitApplied"> {
1893
- changed(data: CommitMetadata, getRevertible?: RevertibleAlphaFactory): void;
1897
+ changed(data: ChangeMetadata, getRevertible?: RevertibleAlphaFactory): void;
1894
1898
  commitApplied(data: CommitMetadata, getRevertible?: RevertibleAlphaFactory): void;
1895
1899
  }
1896
1900
 
package/dist/alpha.d.ts CHANGED
@@ -195,6 +195,7 @@ export {
195
195
  ArrayNodePojoEmulationSchema,
196
196
  ArrayNodeSchema,
197
197
  BranchableTree,
198
+ ChangeMetadata,
198
199
  CodecWriteOptions,
199
200
  DirtyTreeMap,
200
201
  DirtyTreeStatus,
@@ -306,6 +307,8 @@ export {
306
307
  createSimpleTreeIndex,
307
308
  decodeSchemaCompatibilitySnapshot,
308
309
  encodeSchemaCompatibilitySnapshot,
310
+ eraseSchemaDetails,
311
+ eraseSchemaDetailsSubclassable,
309
312
  evaluateLazySchema,
310
313
  exportCompatibilitySchemaSnapshot,
311
314
  extractPersistedSchema,
@@ -0,0 +1,22 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * GENERATED FILE - DO NOT EDIT DIRECTLY.
4
+ * To regenerate: pnpm tsx scripts/generate-flat-eslint-configs.ts --typescript
5
+ */
6
+ import type { Linter } from "eslint";
7
+ import { strict } from "../../../common/build/eslint-config-fluid/flat.mts";
8
+
9
+ const config: Linter.Config[] = [
10
+ ...strict,
11
+ {
12
+ files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"],
13
+ languageOptions: {
14
+ parserOptions: {
15
+ projectService: false,
16
+ project: ["./tsconfig.json"],
17
+ },
18
+ },
19
+ },
20
+ ];
21
+
22
+ export default config;
package/lib/alpha.d.ts CHANGED
@@ -195,6 +195,7 @@ export {
195
195
  ArrayNodePojoEmulationSchema,
196
196
  ArrayNodeSchema,
197
197
  BranchableTree,
198
+ ChangeMetadata,
198
199
  CodecWriteOptions,
199
200
  DirtyTreeMap,
200
201
  DirtyTreeStatus,
@@ -306,6 +307,8 @@ export {
306
307
  createSimpleTreeIndex,
307
308
  decodeSchemaCompatibilitySnapshot,
308
309
  encodeSchemaCompatibilitySnapshot,
310
+ eraseSchemaDetails,
311
+ eraseSchemaDetailsSubclassable,
309
312
  evaluateLazySchema,
310
313
  exportCompatibilitySchemaSnapshot,
311
314
  extractPersistedSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluid-framework",
3
- "version": "2.74.0-368706",
3
+ "version": "2.74.0",
4
4
  "description": "The main entry point into Fluid Framework public packages",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -57,30 +57,31 @@
57
57
  "main": "lib/index.js",
58
58
  "types": "lib/public.d.ts",
59
59
  "dependencies": {
60
- "@fluidframework/container-definitions": "2.74.0-368706",
61
- "@fluidframework/container-loader": "2.74.0-368706",
62
- "@fluidframework/core-interfaces": "2.74.0-368706",
63
- "@fluidframework/core-utils": "2.74.0-368706",
64
- "@fluidframework/driver-definitions": "2.74.0-368706",
65
- "@fluidframework/fluid-static": "2.74.0-368706",
66
- "@fluidframework/map": "2.74.0-368706",
67
- "@fluidframework/runtime-utils": "2.74.0-368706",
68
- "@fluidframework/sequence": "2.74.0-368706",
69
- "@fluidframework/shared-object-base": "2.74.0-368706",
70
- "@fluidframework/tree": "2.74.0-368706"
60
+ "@fluidframework/container-definitions": "~2.74.0",
61
+ "@fluidframework/container-loader": "~2.74.0",
62
+ "@fluidframework/core-interfaces": "~2.74.0",
63
+ "@fluidframework/core-utils": "~2.74.0",
64
+ "@fluidframework/driver-definitions": "~2.74.0",
65
+ "@fluidframework/fluid-static": "~2.74.0",
66
+ "@fluidframework/map": "~2.74.0",
67
+ "@fluidframework/runtime-utils": "~2.74.0",
68
+ "@fluidframework/sequence": "~2.74.0",
69
+ "@fluidframework/shared-object-base": "~2.74.0",
70
+ "@fluidframework/tree": "~2.74.0"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@arethetypeswrong/cli": "^0.17.1",
74
74
  "@biomejs/biome": "~1.9.3",
75
- "@fluid-tools/build-cli": "^0.60.0",
75
+ "@fluid-tools/build-cli": "^0.61.0",
76
76
  "@fluidframework/build-common": "^2.0.3",
77
- "@fluidframework/build-tools": "^0.60.0",
78
- "@fluidframework/eslint-config-fluid": "2.74.0-368706",
77
+ "@fluidframework/build-tools": "^0.61.0",
78
+ "@fluidframework/eslint-config-fluid": "~2.74.0",
79
79
  "@microsoft/api-extractor": "7.52.11",
80
80
  "@types/node": "^18.19.0",
81
81
  "concurrently": "^8.2.1",
82
82
  "copyfiles": "^2.4.1",
83
83
  "eslint": "~8.57.1",
84
+ "jiti": "^2.6.1",
84
85
  "rimraf": "^4.4.0",
85
86
  "typescript": "~5.4.5"
86
87
  },