From 273a203746f8264b51477208377be26c193926ad Mon Sep 17 00:00:00 2001 From: Jatin Garg Date: Mon, 4 Nov 2024 16:45:44 -0800 Subject: [PATCH] build(client): changelog generation for minor release --- .changeset/chubby-olives-say.md | 26 -- .changeset/clever-birds-wear.md | 34 -- .changeset/few-cobras-sing.md | 29 -- .changeset/floppy-forks-attack.md | 14 - .changeset/hot-falcons-grab.md | 14 - .changeset/lazy-onions-know.md | 60 --- .changeset/neat-lights-worry.md | 15 - .changeset/ninety-zoos-trade.md | 12 - .changeset/shiny-swans-relax.md | 122 ------ .changeset/shy-dots-prove.md | 66 ---- .changeset/stale-forks-tickle.md | 76 ---- .changeset/tough-crabs-check.md | 19 - .../packages/azure-local-service/CHANGELOG.md | 4 + .../packages/azure-service-utils/CHANGELOG.md | 4 + .../test/scenario-runner/CHANGELOG.md | 4 + examples/apps/ai-collab/CHANGELOG.md | 4 + examples/apps/attributable-map/CHANGELOG.md | 4 + .../apps/collaborative-textarea/CHANGELOG.md | 4 + examples/apps/contact-collection/CHANGELOG.md | 4 + examples/apps/data-object-grid/CHANGELOG.md | 4 + examples/apps/presence-tracker/CHANGELOG.md | 4 + examples/apps/task-selection/CHANGELOG.md | 4 + examples/apps/tree-cli-app/CHANGELOG.md | 3 + examples/apps/tree-comparison/CHANGELOG.md | 4 + .../bubblebench/baseline/CHANGELOG.md | 4 + .../bubblebench/common/CHANGELOG.md | 4 + .../experimental-tree/CHANGELOG.md | 4 + .../benchmarks/bubblebench/ot/CHANGELOG.md | 4 + .../bubblebench/shared-tree/CHANGELOG.md | 4 + .../CHANGELOG.md | 4 + examples/benchmarks/tablebench/CHANGELOG.md | 4 + .../app-insights-logger/CHANGELOG.md | 4 + examples/data-objects/canvas/CHANGELOG.md | 4 + examples/data-objects/clicker/CHANGELOG.md | 4 + examples/data-objects/codemirror/CHANGELOG.md | 4 + examples/data-objects/diceroller/CHANGELOG.md | 4 + .../data-objects/inventory-app/CHANGELOG.md | 4 + examples/data-objects/monaco/CHANGELOG.md | 4 + .../constellation-model/CHANGELOG.md | 4 + .../multiview/constellation-view/CHANGELOG.md | 4 + .../multiview/container/CHANGELOG.md | 4 + .../multiview/coordinate-model/CHANGELOG.md | 4 + .../multiview/interface/CHANGELOG.md | 4 + .../plot-coordinate-view/CHANGELOG.md | 4 + .../slider-coordinate-view/CHANGELOG.md | 4 + .../multiview/triangle-view/CHANGELOG.md | 4 + .../data-objects/prosemirror/CHANGELOG.md | 4 + examples/data-objects/smde/CHANGELOG.md | 4 + .../data-objects/table-document/CHANGELOG.md | 4 + examples/data-objects/todo/CHANGELOG.md | 4 + examples/data-objects/webflow/CHANGELOG.md | 4 + examples/external-data/CHANGELOG.md | 4 + .../external-controller/CHANGELOG.md | 4 + .../odsp-client/shared-tree-demo/CHANGELOG.md | 4 + examples/utils/bundle-size-tests/CHANGELOG.md | 4 + examples/utils/example-utils/CHANGELOG.md | 4 + examples/utils/migration-tools/CHANGELOG.md | 4 + .../utils/webpack-fluid-loader/CHANGELOG.md | 4 + .../live-schema-upgrade/CHANGELOG.md | 4 + .../same-container/CHANGELOG.md | 4 + .../separate-container/CHANGELOG.md | 4 + .../version-migration/tree-shim/CHANGELOG.md | 4 + .../container-views/CHANGELOG.md | 4 + .../external-views/CHANGELOG.md | 4 + .../view-framework-sampler/CHANGELOG.md | 4 + .../packages/property-changeset/CHANGELOG.md | 4 + .../packages/property-common/CHANGELOG.md | 4 + .../platform-dependent/CHANGELOG.md | 4 + .../packages/property-dds/CHANGELOG.md | 4 + .../packages/property-properties/CHANGELOG.md | 4 + .../dds/attributable-map/CHANGELOG.md | 4 + experimental/dds/ot/ot/CHANGELOG.md | 4 + .../dds/ot/sharejs/json1/CHANGELOG.md | 4 + .../dds/sequence-deprecated/CHANGELOG.md | 4 + experimental/dds/tree/CHANGELOG.md | 4 + .../framework/data-objects/CHANGELOG.md | 4 + .../framework/last-edited/CHANGELOG.md | 4 + .../framework/tree-react-api/CHANGELOG.md | 4 + packages/common/client-utils/CHANGELOG.md | 4 + .../common/container-definitions/CHANGELOG.md | 4 + packages/common/core-interfaces/CHANGELOG.md | 4 + packages/common/core-utils/CHANGELOG.md | 4 + .../common/driver-definitions/CHANGELOG.md | 4 + packages/dds/cell/CHANGELOG.md | 4 + packages/dds/counter/CHANGELOG.md | 4 + packages/dds/ink/CHANGELOG.md | 4 + packages/dds/map/CHANGELOG.md | 4 + packages/dds/matrix/CHANGELOG.md | 4 + packages/dds/merge-tree/CHANGELOG.md | 30 ++ packages/dds/ordered-collection/CHANGELOG.md | 4 + packages/dds/pact-map/CHANGELOG.md | 4 + packages/dds/register-collection/CHANGELOG.md | 4 + packages/dds/sequence/CHANGELOG.md | 4 + packages/dds/shared-object-base/CHANGELOG.md | 4 + .../dds/shared-summary-block/CHANGELOG.md | 4 + packages/dds/task-manager/CHANGELOG.md | 4 + packages/dds/test-dds-utils/CHANGELOG.md | 4 + packages/dds/tree/CHANGELOG.md | 371 ++++++++++++++++++ packages/drivers/debugger/CHANGELOG.md | 4 + packages/drivers/driver-base/CHANGELOG.md | 4 + .../drivers/driver-web-cache/CHANGELOG.md | 4 + packages/drivers/file-driver/CHANGELOG.md | 4 + packages/drivers/local-driver/CHANGELOG.md | 4 + .../odsp-driver-definitions/CHANGELOG.md | 4 + packages/drivers/odsp-driver/CHANGELOG.md | 4 + .../drivers/odsp-urlResolver/CHANGELOG.md | 4 + packages/drivers/replay-driver/CHANGELOG.md | 4 + .../drivers/routerlicious-driver/CHANGELOG.md | 4 + .../routerlicious-urlResolver/CHANGELOG.md | 4 + .../drivers/tinylicious-driver/CHANGELOG.md | 4 + .../framework/agent-scheduler/CHANGELOG.md | 4 + packages/framework/ai-collab/CHANGELOG.md | 4 + packages/framework/aqueduct/CHANGELOG.md | 4 + packages/framework/attributor/CHANGELOG.md | 4 + .../app-insights-logger/CHANGELOG.md | 4 + .../fluid-telemetry/CHANGELOG.md | 4 + .../framework/data-object-base/CHANGELOG.md | 4 + .../framework/dds-interceptions/CHANGELOG.md | 4 + .../framework/fluid-framework/CHANGELOG.md | 301 ++++++++++++++ packages/framework/fluid-static/CHANGELOG.md | 4 + .../oldest-client-observer/CHANGELOG.md | 4 + packages/framework/presence/CHANGELOG.md | 10 + .../framework/request-handler/CHANGELOG.md | 4 + packages/framework/synthesize/CHANGELOG.md | 4 + packages/framework/undo-redo/CHANGELOG.md | 4 + packages/loader/container-loader/CHANGELOG.md | 4 + packages/loader/driver-utils/CHANGELOG.md | 4 + .../loader/test-loader-utils/CHANGELOG.md | 4 + .../CHANGELOG.md | 4 + .../runtime/container-runtime/CHANGELOG.md | 18 + .../datastore-definitions/CHANGELOG.md | 18 + packages/runtime/datastore/CHANGELOG.md | 4 + packages/runtime/id-compressor/CHANGELOG.md | 4 + .../runtime/runtime-definitions/CHANGELOG.md | 18 + packages/runtime/runtime-utils/CHANGELOG.md | 4 + .../runtime/test-runtime-utils/CHANGELOG.md | 11 + .../service-clients/azure-client/CHANGELOG.md | 4 + .../azure-client/CHANGELOG.md | 4 + .../end-to-end-tests/odsp-client/CHANGELOG.md | 4 + .../service-clients/odsp-client/CHANGELOG.md | 4 + .../tinylicious-client/CHANGELOG.md | 4 + packages/test/functional-tests/CHANGELOG.md | 4 + packages/test/local-server-tests/CHANGELOG.md | 4 + packages/test/mocha-test-setup/CHANGELOG.md | 4 + packages/test/snapshots/CHANGELOG.md | 4 + .../test/stochastic-test-utils/CHANGELOG.md | 4 + .../test/test-driver-definitions/CHANGELOG.md | 4 + packages/test/test-drivers/CHANGELOG.md | 4 + .../test/test-end-to-end-tests/CHANGELOG.md | 4 + .../test/test-pairwise-generator/CHANGELOG.md | 4 + packages/test/test-service-load/CHANGELOG.md | 4 + packages/test/test-utils/CHANGELOG.md | 4 + packages/test/test-version-utils/CHANGELOG.md | 4 + .../changelog-generator-wrapper/CHANGELOG.md | 4 + .../devtools-browser-extension/CHANGELOG.md | 4 + .../tools/devtools/devtools-core/CHANGELOG.md | 4 + .../devtools/devtools-example/CHANGELOG.md | 4 + .../tools/devtools/devtools-view/CHANGELOG.md | 4 + packages/tools/devtools/devtools/CHANGELOG.md | 4 + packages/tools/fetch-tool/CHANGELOG.md | 4 + packages/tools/fluid-runner/CHANGELOG.md | 4 + packages/tools/replay-tool/CHANGELOG.md | 4 + packages/utils/odsp-doclib-utils/CHANGELOG.md | 4 + packages/utils/telemetry-utils/CHANGELOG.md | 4 + packages/utils/tool-utils/CHANGELOG.md | 4 + tools/markdown-magic/CHANGELOG.md | 4 + 166 files changed, 1360 insertions(+), 487 deletions(-) delete mode 100644 .changeset/chubby-olives-say.md delete mode 100644 .changeset/clever-birds-wear.md delete mode 100644 .changeset/few-cobras-sing.md delete mode 100644 .changeset/floppy-forks-attack.md delete mode 100644 .changeset/hot-falcons-grab.md delete mode 100644 .changeset/lazy-onions-know.md delete mode 100644 .changeset/neat-lights-worry.md delete mode 100644 .changeset/ninety-zoos-trade.md delete mode 100644 .changeset/shiny-swans-relax.md delete mode 100644 .changeset/shy-dots-prove.md delete mode 100644 .changeset/stale-forks-tickle.md delete mode 100644 .changeset/tough-crabs-check.md create mode 100644 examples/apps/tree-cli-app/CHANGELOG.md diff --git a/.changeset/chubby-olives-say.md b/.changeset/chubby-olives-say.md deleted file mode 100644 index b2349568d865..000000000000 --- a/.changeset/chubby-olives-say.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -"fluid-framework": minor -"@fluidframework/tree": minor ---- ---- -"section": tree -highlight: true ---- - -✨ New! Alpha APIs for tree data import and export - -A collection of new `@alpha` APIs for importing and exporting tree content and schema from SharedTrees has been added to `TreeAlpha`. -These include import and export APIs for `VerboseTree`, `ConciseTree` and compressed tree formats. - -`TreeAlpha.create` is also added to allow constructing trees with a more general API instead of having to use the schema constructor directly (since that doesn't handle polymorphic roots, or non-schema aware code). - -The function `independentInitializedView` has been added to provide a way to combine data from the existing `extractPersistedSchema` and new `TreeAlpha.exportCompressed` back into a `TreeView` in a way which can support safely importing data which could have been exported with a different schema. -This allows replicating the schema evolution process for Fluid documents stored in a service, but entirely locally without involving any collaboration services. -`independentView` has also been added, which is similar but handles the case of creating a new view without an existing schema or tree. - -Together these APIs address several use-cases: - -1. Using SharedTree as an in-memory non-collaborative datastore. -2. Importing and exporting data from a SharedTree to and from other services or storage locations (such as locally saved files). -3. Testing various scenarios without relying on a service. -4. Using SharedTree libraries for just the schema system and encode/decode support. diff --git a/.changeset/clever-birds-wear.md b/.changeset/clever-birds-wear.md deleted file mode 100644 index 6c3886990c6c..000000000000 --- a/.changeset/clever-birds-wear.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -"@fluidframework/merge-tree": minor -"@fluidframework/tree": minor -"fluid-framework": minor ---- ---- -"section": fix ---- - -Compilation no longer fails when building with TypeScript's libCheck option - -When compiling code using Fluid Framework with TypeScript's `libCheck` (meaning without [skipLibCheck](https://www.typescriptlang.org/tsconfig/#skipLibCheck)), two compile errors can be encountered: - -``` -> tsc - -node_modules/@fluidframework/merge-tree/lib/client.d.ts:124:18 - error TS2368: Type parameter name cannot be 'undefined'. - -124 walkSegments(handler: ISegmentAction, start?: number, end?: number, accum?: undefined, splitRange?: boolean): void; - ~~~~~~~~~ - -node_modules/@fluidframework/tree/lib/util/utils.d.ts:5:29 - error TS7016: Could not find a declaration file for module '@ungap/structured-clone'. 'node_modules/@ungap/structured-clone/esm/index.js' implicitly has an 'any' type. - Try `npm i --save-dev @types/ungap__structured-clone` if it exists or add a new declaration (.d.ts) file containing `declare module '@ungap/structured-clone';` - -5 import structuredClone from "@ungap/structured-clone"; - ~~~~~~~~~~~~~~~~~~~~~~~~~ -``` - -The first error impacts projects using TypeScript 5.5 or greater and either of the `fluid-framework` or `@fluidframework/merge-tree` packages. -The second error impacts projects using the `noImplicitAny` tsconfig setting and the `fluid-framework` or `@fluidframework/tree` packages. - -Both errors have been fixed. - -This should allow `libCheck` to be reenabled in any impacted projects. diff --git a/.changeset/few-cobras-sing.md b/.changeset/few-cobras-sing.md deleted file mode 100644 index 0e1e5e96d686..000000000000 --- a/.changeset/few-cobras-sing.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -"fluid-framework": minor -"@fluidframework/tree": minor ---- ---- -"section": tree ---- - -A `.schema` member has been added to the alpha enum schema APIs - -The return value from `@alpha` APIs `enumFromStrings` and `adaptEnum` now has a property named `schema` which can be used to include it in a parent schema. -This replaces the use of `typedObjectValues` which has been removed. - -Use of these APIs now look like: - -```typescript -const schemaFactory = new SchemaFactory("com.myApp"); -const Mode = enumFromStrings(schemaFactory, ["Fun", "Cool"]); -type Mode = NodeFromSchema<(typeof Mode.schema)[number]>; -class Parent extends schemaFactory.object("Parent", { mode: Mode.schema }) {} -``` - - -Previously, the last two lines would have been: - -```typescript -type Mode = NodeFromSchema<(typeof Mode)[keyof typeof Mode]>; // This no longer works -class Parent extends schemaFactory.object("Parent", { mode: typedObjectValues(Mode) }) {} // This no longer works -``` diff --git a/.changeset/floppy-forks-attack.md b/.changeset/floppy-forks-attack.md deleted file mode 100644 index 585576cc4883..000000000000 --- a/.changeset/floppy-forks-attack.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"fluid-framework": minor -"@fluidframework/tree": minor ---- ---- -"section": tree ---- - -TreeNodeSchemaClass now specifies its TNode as TreeNode - -`TreeNodeSchemaClass`'s `TNode` parameter was formerly `unknown` and has been improved to be the more specific `TreeNode | TreeLeafValue`. -This change further narrows this to `TreeNode`. - -`TreeNodeSchema`, which is more commonly used, still permits `TNode` of `TreeNode | TreeLeafValue`, so this change should have little impact on most code, but in some edge cases it can result in slightly more specific typing. diff --git a/.changeset/hot-falcons-grab.md b/.changeset/hot-falcons-grab.md deleted file mode 100644 index 85b1fec1f2c1..000000000000 --- a/.changeset/hot-falcons-grab.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@fluidframework/datastore-definitions": minor -"@fluidframework/runtime-definitions": minor ---- ---- -"section": other ---- - -The op event on IFluidDataStoreRuntimeEvents and IContainerRuntimeBaseEvents is emitted at a different time - -Previously, in versions 2.4 and below, the `op` event was emitted immediately after an op was processed and before the next op was processed. - -In versions 2.5.0 and beyond, the `op` event will be emitted after an op is processed, but it may not be immediate. In addition, other ops in a -batch may be processed before the op event is emitted for a particular op. diff --git a/.changeset/lazy-onions-know.md b/.changeset/lazy-onions-know.md deleted file mode 100644 index 8ad1a2beb69c..000000000000 --- a/.changeset/lazy-onions-know.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -"fluid-framework": minor -"@fluidframework/tree": minor ---- ---- -"section": tree ---- - -Array and Map nodes can now be explicitly constructed with undefined or no argument - -The input parameter to the constructor and `create` methods of Array and Map nodes is now optional. When the optional parameter is omitted, an empty map or array will be created. - -#### Examples - -```typescript -class Schema extends schemaFactory.array("x", schemaFactory.number) {} - -// Existing support -const _fromIterable: Schema = new Schema([]); - -// New -const _fromUndefined: Schema = new Schema(undefined); -const _fromNothing: Schema = new Schema(); -``` - -```typescript -class Schema extends schemaFactory.map("x", schemaFactory.number) {} - -// Existing support -const _fromIterable: Schema = new Schema([]); -const _fromObject: Schema = new Schema({}); - -// New -const _fromUndefined: Schema = new Schema(undefined); -const _fromNothing: Schema = new Schema(); -``` - -```typescript -const Schema = schemaFactory.array( schemaFactory.number); -type Schema = NodeFromSchema; - -// Existing support -const _fromIterable: Schema = Schema.create([]); - -// New -const _fromUndefined: Schema = Schema.create(undefined); -const _fromNothing: Schema = Schema.create(); -``` - -```typescript -const Schema = schemaFactory.map(schemaFactory.number); -type Schema = NodeFromSchema; -// Existing support -const _fromIterable: Schema = Schema.create([]); -const _fromObject: Schema = Schema.create({}); - -// New -const _fromUndefined: Schema = Schema.create(undefined); -const _fromNothing: Schema = Schema.create(); -``` diff --git a/.changeset/neat-lights-worry.md b/.changeset/neat-lights-worry.md deleted file mode 100644 index cd0d45aae776..000000000000 --- a/.changeset/neat-lights-worry.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@fluidframework/datastore-definitions": minor -"@fluidframework/runtime-definitions": minor -"@fluidframework/test-runtime-utils": minor ---- ---- -"section": deprecation ---- - -The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now deprecated - -The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now -deprecated. It has been replaced with a new function `processMessages`, which will be called to process multiple messages instead of a single one on the channel. This is part of a feature called "Op bunching", where contiguous ops of a given type and to a given data store / DDS are bunched and sent together for processing. - -Implementations of `IFluidDataStoreChannel` and `IDeltaHandler` must now also implement `processMessages`. For reference implementations, see `FluidDataStoreRuntime::processMessages` and `SharedObjectCore::attachDeltaHandler`. diff --git a/.changeset/ninety-zoos-trade.md b/.changeset/ninety-zoos-trade.md deleted file mode 100644 index 3a4ee73b7bea..000000000000 --- a/.changeset/ninety-zoos-trade.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@fluid-experimental/presence": minor ---- ---- -"section": feature ---- - -ISessionClient now exposes connectivity information - -1. `ISessionClient` has a new method, `getConnectionStatus()`, with two possible states: `Connected` and `Disconnected`. -2. `ISessionClient`'s `connectionId()` member has been renamed to `getConnectionId()` for consistency. -3. `IPresence` event `attendeeDisconnected` is now implemented. diff --git a/.changeset/shiny-swans-relax.md b/.changeset/shiny-swans-relax.md deleted file mode 100644 index 9567f5bf5e22..000000000000 --- a/.changeset/shiny-swans-relax.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -"fluid-framework": minor -"@fluidframework/tree": minor ---- ---- -"section": tree ---- - -Typing has been improved when an exact TypeScript type for a schema is not provided - -The Tree APIs are designed to be used in a strongly typed way, with the full TypeScript type for the schema always being provided. -Due to limitations of the TypeScript language, there was no practical way to prevent less descriptive types, like `TreeNodeSchema` or `ImplicitFieldSchema`, from being used where the type of a specific schema was intended. -Code which does this will encounter several issues with tree APIs, and this change fixes some of those issues. -This change mainly fixes that `NodeFromSchema` used to return `unknown` and now returns `TreeNode | TreeLeafValue`. - -This change by itself seems mostly harmless, as it just improves the precision of the typing in this one edge case. -Unfortunately, there are other typing bugs which complicate the situation, causing APIs for inserting data into the tree to also behave poorly when given non-specific types like `TreeNodeSchema`. -These APIs include cases like `TreeView.initialize`. - -This incorrectly allowed some usage like taking a type-erased schema and initial tree pair, creating a view of type `TreeView`, then initializing it. -With the typing being partly fixed, some unsafe inputs are still allowed when trying to initialize such a view, but some are now prevented. - -This use-case of modifying trees in code not that is not strongly typed by the exact schema was not intended to be supported. -Despite this, it did mostly work in some cases, and has some real use-cases (like tests looping over test data consisting of pairs of schema and initial trees). -To help mitigate the impact of this change, some experimental `@alpha` APIs have been introduced to help address these previously unsupported but somewhat working use-cases. - -Before this change: - -```typescript -import { TinyliciousClient } from "@fluidframework/tinylicious-client"; -import { - SchemaFactory, - SharedTree, - TreeViewConfiguration, - type TreeNodeSchema, -} from "fluid-framework"; - -// Create a ITree instance -const tinyliciousClient = new TinyliciousClient(); -const { container } = await tinyliciousClient.createContainer({ initialObjects: {} }, "2"); -const tree = await container.create(SharedTree); - -const schemaFactory = new SchemaFactory("demo"); - -// Bad: This loses the schema aware type information. `: TreeNodeSchema` should be omitted to preserve strong typing. -const schema: TreeNodeSchema = schemaFactory.array(schemaFactory.number); -const config = new TreeViewConfiguration({ schema }); - -// This view is typed as `TreeView`, which does not work well since it's missing the actual schema type information. -const view = tree.viewWith(config); -// Root is typed as `unknown` allowing invalid assignment operations. -view.root = "invalid"; -view.root = {}; -// Since all assignments are allowed, valid ones still work: -view.root = []; -``` - -After this change: - - -```typescript -// Root is now typed as `TreeNode | TreeLeafValue`, still allowing some invalid assignment operations. -// In the future this should be prevented as well, since the type of the setter in this case should be `never`. -view.root = "invalid"; -// This no longer compiles: -view.root = {}; -// This also no longer compiles despite being valid at runtime: -view.root = []; -``` - -For code that wants to continue using an unsafe API, which can result in runtime errors if the data does not follow the schema, a new alternative has been added to address this use-case. A special type `UnsafeUnknownSchema` can now be used to opt into allowing all valid trees to be provided. -Note that this leaves ensuring the data is in schema up to the user. -For now these adjusted APIs can be accessed by casting the view to `TreeViewAlpha`. -If stabilized, this option will be added to `TreeView` directly. - -```typescript -const viewAlpha = view as TreeViewAlpha; -viewAlpha.initialize([]); -viewAlpha.root = []; -``` - -Additionally, this seems to have negatively impacted co-recursive schema which declare a co-recursive array as the first schema in the co-recursive cycle. -Like the TypeScript language our schema system is built on, we don't guarantee exactly which recursive type will compile, but will do our best to ensure useful recursive schema can be created easily. -In this case a slight change may be required to some recursive schema to get them to compile again: - -For example this schema used to compile: - - -```typescript -class A extends sf.arrayRecursive("A", [() => B]) {} -{ - type _check = ValidateRecursiveSchema; -} -// Used to work, but breaks in this update. -class B extends sf.object("B", { x: A }) {} -``` - -But now you must use the recursive functions like `objectRecursive` for types which are co-recursive with an array in some cases. -In our example, it can be fixed as follows: - -```typescript -class A extends sf.arrayRecursive("A", [() => B]) {} -{ - type _check = ValidateRecursiveSchema; -} -// Fixed corecursive type, using "Recursive" method variant to declare schema. -class B extends sf.objectRecursive("B", { x: A }) {} -{ - type _check = ValidateRecursiveSchema; -} -``` - -Note: while the following pattern may still compile, we recommend using the previous pattern instead since the one below may break in the future. - -```typescript -class B extends sf.objectRecursive("B", { x: [() => A] }) {} -{ - type _check = ValidateRecursiveSchema; -} -// Works, for now, but not recommended. -class A extends sf.array("A", B) {} -``` diff --git a/.changeset/shy-dots-prove.md b/.changeset/shy-dots-prove.md deleted file mode 100644 index 57de56bfbc6a..000000000000 --- a/.changeset/shy-dots-prove.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -"fluid-framework": minor -"@fluidframework/tree": minor ---- ---- -"section": tree ---- - -The strictness of input tree types when inexact schemas are provided has been improved - -Consider the following code where the type of the schema is not exactly specified: - -```typescript -const schemaFactory = new SchemaFactory("com.myApp"); -class A extends schemaFactory.object("A", {}) {} -class B extends schemaFactory.array("B", schemaFactory.number) {} - -// Gives imprecise type (typeof A | typeof B)[]. The desired precise type here is [typeof A, typeof B]. -const schema = [A, B]; - -const config = new TreeViewConfiguration({ schema }); -const view = sharedTree.viewWith(config); - -// Does not compile since setter for root is typed `never` due to imprecise schema. -view.root = []; -``` - -The assignment of `view.root` is disallowed since a schema with type `(typeof A | typeof B)[]` could be any of: - -```typescript -const schema: (typeof A | typeof B)[] = [A]; -``` - -```typescript -const schema: (typeof A | typeof B)[] = [B]; -``` - -```typescript -const schema: (typeof A | typeof B)[] = [A, B]; -``` - -The attempted assignment is not compatible with all of these (specifically it is incompatible with the first one) so performing this assignment could make the tree out of schema and is thus disallowed. - -To avoid this ambiguity and capture the precise type of `[typeof A, typeof B]`, use one of the following patterns: - -```typescript -const schema = [A, B] as const; -const config = new TreeViewConfiguration({ schema }); -``` - -```typescript -const config = new TreeViewConfiguration({ schema: [A, B] }); -``` - -To help update existing code which accidentally depended on this bug, an `@alpha` API `unsafeArrayToTuple` has been added. -Many usages of this API will produce incorrectly typed outputs. -However, when given `AllowedTypes` arrays which should not contain any unions, but that were accidentally flattened to a single union, it can fix them: - -```typescript -// Gives imprecise type (typeof A | typeof B)[] -const schemaBad = [A, B]; -// Fixes the type to be [typeof A, typeof B] -const schema = unsafeArrayToTuple(schemaBad); - -const config = new TreeViewConfiguration({ schema }); -``` diff --git a/.changeset/stale-forks-tickle.md b/.changeset/stale-forks-tickle.md deleted file mode 100644 index e6a9da05db87..000000000000 --- a/.changeset/stale-forks-tickle.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -"@fluidframework/tree": minor ---- ---- -"section": tree ---- - -SharedTree branching API has been improved - -The alpha SharedTree branching API has been updated to be more accessible and intuitive. -The branching functions (`branch`, `merge`, `rebaseOnto`, etc.) are now directly available on the view object rather than a separate object. -In particular, `TreeViewAlpha` is now a `TreeBranch`, which exposes the methods to coordinate branches. - -The existing `TreeBranch` type has been renamed to `BranchableTree` and is now **deprecated**. - -See the `TreeBranch` interface for more details. - -The new API is used e.g. as follows: - -```typescript -const sf = new SchemaFactory("example"); -class StringArray extends sf.array("StringArray", sf.string) {} - -function example(view: TreeViewAlpha): void { - // Create a branch - const branch = view.fork(); - // Modify the branch rather than the main view - branch.root.insertAtEnd("new string"); - // `view` does not yet contain "new string" - // ... - // Later, merge the branch into the main view - view.merge(branch); - // `view` now contains "new string" -} -``` - -Here is the equivalent behavior with the previous API, for reference: - -```typescript -const sf = new SchemaFactory("example"); -class StringArray extends sf.array("StringArray", sf.string) {} - -function example(view: TreeViewAlpha): void { - // Get the branch for the view - const branch = getBranch(view); - const fork = branch.branch(); - // Modify the branch rather than the main view - fork.root.insertAtEnd("new string"); - // `view` does not yet contain "new string" - // ... - // Later, merge the branch into the main view - branch.merge(fork); - // `view` now contains "new string" -} -``` - -Additionally, there is a new API to acquire the branch from a node: - -```typescript -// All nodes that have been inserted into the tree belong to a branch - this retrieves that branch -const branch = TreeAlpha.branch(node); -``` - -To convert the branch object to a view with a known schema, use: - -```typescript -if (branch.hasRootSchema(MySchema)) { - const view = branch; // `branch` is now typed as a `TreeViewAlpha` -} -``` - -Use the following function to expose the alpha APIs on a `TreeView` that is not typed as a `TreeViewAlpha`: - -```typescript -const viewAlpha = asTreeViewAlpha(view); -``` diff --git a/.changeset/tough-crabs-check.md b/.changeset/tough-crabs-check.md deleted file mode 100644 index 85215b2ad971..000000000000 --- a/.changeset/tough-crabs-check.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@fluidframework/container-runtime": minor ---- ---- -"section": other ---- - -Signal telemetry events details - -Properties of `eventName`s beginning "fluid:telemetry:ContainerRuntime:Signal" are updated to use `details` for all event specific information. Additional per-event changes: -- SignalLatency: shorten names now that data is packed into details. Renames: - - `signalsSent` -> `sent` - - `signalsLost` -> `lost` - - `outOfOrderSignals` -> `outOfOrder` -- SignalLost/SignalOutOfOrder: rename `trackingSequenceNumber` to `expectedSequenceNumber` -- SignalOutOfOrder: rename `type` to `contentsType` and only emit it some of the time - -> [!IMPORTANT] -> Reminder: the naming and structure of telemetry events are not considered a part of the public API and may change at any time. diff --git a/azure/packages/azure-local-service/CHANGELOG.md b/azure/packages/azure-local-service/CHANGELOG.md index 5ee355a32dcf..34816bb686af 100644 --- a/azure/packages/azure-local-service/CHANGELOG.md +++ b/azure/packages/azure-local-service/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/azure-local-service +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/azure/packages/azure-service-utils/CHANGELOG.md b/azure/packages/azure-service-utils/CHANGELOG.md index 007b2a65c0d8..ccb2d4d99a93 100644 --- a/azure/packages/azure-service-utils/CHANGELOG.md +++ b/azure/packages/azure-service-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/azure-service-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/azure/packages/test/scenario-runner/CHANGELOG.md b/azure/packages/test/scenario-runner/CHANGELOG.md index 5d36beedda74..0132dcd1ee39 100644 --- a/azure/packages/test/scenario-runner/CHANGELOG.md +++ b/azure/packages/test/scenario-runner/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/azure-scenario-runner +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/apps/ai-collab/CHANGELOG.md b/examples/apps/ai-collab/CHANGELOG.md index 542c567d4866..93e3f1b3f97b 100644 --- a/examples/apps/ai-collab/CHANGELOG.md +++ b/examples/apps/ai-collab/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/ai-collab +## 2.5.0 + +Dependency updates only. + ## 2.4.0 New package. diff --git a/examples/apps/attributable-map/CHANGELOG.md b/examples/apps/attributable-map/CHANGELOG.md index 5e3917e89183..1a97c50b3ef3 100644 --- a/examples/apps/attributable-map/CHANGELOG.md +++ b/examples/apps/attributable-map/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/attributable-map +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/apps/collaborative-textarea/CHANGELOG.md b/examples/apps/collaborative-textarea/CHANGELOG.md index 78824bc3e98a..a1ac97f02a4b 100644 --- a/examples/apps/collaborative-textarea/CHANGELOG.md +++ b/examples/apps/collaborative-textarea/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/collaborative-textarea +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/apps/contact-collection/CHANGELOG.md b/examples/apps/contact-collection/CHANGELOG.md index 27cf5a549bb4..52dfc2c48d9d 100644 --- a/examples/apps/contact-collection/CHANGELOG.md +++ b/examples/apps/contact-collection/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/contact-collection +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/apps/data-object-grid/CHANGELOG.md b/examples/apps/data-object-grid/CHANGELOG.md index b35575967c8c..94dee54bbc02 100644 --- a/examples/apps/data-object-grid/CHANGELOG.md +++ b/examples/apps/data-object-grid/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/data-object-grid +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/apps/presence-tracker/CHANGELOG.md b/examples/apps/presence-tracker/CHANGELOG.md index 0f83e7db0c9f..a11ad3e60394 100644 --- a/examples/apps/presence-tracker/CHANGELOG.md +++ b/examples/apps/presence-tracker/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/presence-tracker +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/apps/task-selection/CHANGELOG.md b/examples/apps/task-selection/CHANGELOG.md index a31b598764c6..c20a071c9747 100644 --- a/examples/apps/task-selection/CHANGELOG.md +++ b/examples/apps/task-selection/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/task-selection +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/apps/tree-cli-app/CHANGELOG.md b/examples/apps/tree-cli-app/CHANGELOG.md new file mode 100644 index 000000000000..3e0f99d2bee2 --- /dev/null +++ b/examples/apps/tree-cli-app/CHANGELOG.md @@ -0,0 +1,3 @@ +# @fluid-example/tree-cli-app + +## 2.5.0 diff --git a/examples/apps/tree-comparison/CHANGELOG.md b/examples/apps/tree-comparison/CHANGELOG.md index c56e799f165e..c095845c9726 100644 --- a/examples/apps/tree-comparison/CHANGELOG.md +++ b/examples/apps/tree-comparison/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/tree-comparison +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/benchmarks/bubblebench/baseline/CHANGELOG.md b/examples/benchmarks/bubblebench/baseline/CHANGELOG.md index a676341cd47c..8d04203f7bce 100644 --- a/examples/benchmarks/bubblebench/baseline/CHANGELOG.md +++ b/examples/benchmarks/bubblebench/baseline/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/bubblebench-baseline +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/benchmarks/bubblebench/common/CHANGELOG.md b/examples/benchmarks/bubblebench/common/CHANGELOG.md index f55dd4c062b0..db5430c38dd9 100644 --- a/examples/benchmarks/bubblebench/common/CHANGELOG.md +++ b/examples/benchmarks/bubblebench/common/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/bubblebench-common +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/benchmarks/bubblebench/experimental-tree/CHANGELOG.md b/examples/benchmarks/bubblebench/experimental-tree/CHANGELOG.md index 28b4a3819d8b..68bde9666914 100644 --- a/examples/benchmarks/bubblebench/experimental-tree/CHANGELOG.md +++ b/examples/benchmarks/bubblebench/experimental-tree/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/bubblebench-experimental-tree +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/benchmarks/bubblebench/ot/CHANGELOG.md b/examples/benchmarks/bubblebench/ot/CHANGELOG.md index a9eeea6907e7..86ae14b936d9 100644 --- a/examples/benchmarks/bubblebench/ot/CHANGELOG.md +++ b/examples/benchmarks/bubblebench/ot/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/bubblebench-ot +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/benchmarks/bubblebench/shared-tree/CHANGELOG.md b/examples/benchmarks/bubblebench/shared-tree/CHANGELOG.md index af75dcaef4ee..6b937f01a55f 100644 --- a/examples/benchmarks/bubblebench/shared-tree/CHANGELOG.md +++ b/examples/benchmarks/bubblebench/shared-tree/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/bubblebench-simple-tree +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/benchmarks/odspsnapshotfetch-perftestapp/CHANGELOG.md b/examples/benchmarks/odspsnapshotfetch-perftestapp/CHANGELOG.md index a18d3d392771..5793567df058 100644 --- a/examples/benchmarks/odspsnapshotfetch-perftestapp/CHANGELOG.md +++ b/examples/benchmarks/odspsnapshotfetch-perftestapp/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/odspsnapshotfetch-perftestapp +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/benchmarks/tablebench/CHANGELOG.md b/examples/benchmarks/tablebench/CHANGELOG.md index 3c034729a0d7..e4c5186ce1be 100644 --- a/examples/benchmarks/tablebench/CHANGELOG.md +++ b/examples/benchmarks/tablebench/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/tablebench +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/client-logger/app-insights-logger/CHANGELOG.md b/examples/client-logger/app-insights-logger/CHANGELOG.md index 36ca75710753..a57d43172d44 100644 --- a/examples/client-logger/app-insights-logger/CHANGELOG.md +++ b/examples/client-logger/app-insights-logger/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/app-insights-logger +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/canvas/CHANGELOG.md b/examples/data-objects/canvas/CHANGELOG.md index a50520a09905..5c87a117102c 100644 --- a/examples/data-objects/canvas/CHANGELOG.md +++ b/examples/data-objects/canvas/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/canvas +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/clicker/CHANGELOG.md b/examples/data-objects/clicker/CHANGELOG.md index 0cfb77cfa586..7a50925cfa94 100644 --- a/examples/data-objects/clicker/CHANGELOG.md +++ b/examples/data-objects/clicker/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/clicker +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/codemirror/CHANGELOG.md b/examples/data-objects/codemirror/CHANGELOG.md index f0640a0b14fa..cb482cb28ec0 100644 --- a/examples/data-objects/codemirror/CHANGELOG.md +++ b/examples/data-objects/codemirror/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/codemirror +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/diceroller/CHANGELOG.md b/examples/data-objects/diceroller/CHANGELOG.md index 628d2ee62348..91c8b2c14c58 100644 --- a/examples/data-objects/diceroller/CHANGELOG.md +++ b/examples/data-objects/diceroller/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/diceroller +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/inventory-app/CHANGELOG.md b/examples/data-objects/inventory-app/CHANGELOG.md index 9369c3cdc261..f9e16a9c0a85 100644 --- a/examples/data-objects/inventory-app/CHANGELOG.md +++ b/examples/data-objects/inventory-app/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/inventory-app +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/monaco/CHANGELOG.md b/examples/data-objects/monaco/CHANGELOG.md index 23bb54000417..9d710ce4204b 100644 --- a/examples/data-objects/monaco/CHANGELOG.md +++ b/examples/data-objects/monaco/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/monaco +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/multiview/constellation-model/CHANGELOG.md b/examples/data-objects/multiview/constellation-model/CHANGELOG.md index 0f1b7a1981c3..e15ce0eaddcf 100644 --- a/examples/data-objects/multiview/constellation-model/CHANGELOG.md +++ b/examples/data-objects/multiview/constellation-model/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/multiview-constellation-model +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/multiview/constellation-view/CHANGELOG.md b/examples/data-objects/multiview/constellation-view/CHANGELOG.md index e4b5913f1a85..32d308022717 100644 --- a/examples/data-objects/multiview/constellation-view/CHANGELOG.md +++ b/examples/data-objects/multiview/constellation-view/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/multiview-constellation-view +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/multiview/container/CHANGELOG.md b/examples/data-objects/multiview/container/CHANGELOG.md index e09c994c6eef..a6fcbdbb4023 100644 --- a/examples/data-objects/multiview/container/CHANGELOG.md +++ b/examples/data-objects/multiview/container/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/multiview-container +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/multiview/coordinate-model/CHANGELOG.md b/examples/data-objects/multiview/coordinate-model/CHANGELOG.md index c580057fe553..2690d94bb2e5 100644 --- a/examples/data-objects/multiview/coordinate-model/CHANGELOG.md +++ b/examples/data-objects/multiview/coordinate-model/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/multiview-coordinate-model +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/multiview/interface/CHANGELOG.md b/examples/data-objects/multiview/interface/CHANGELOG.md index a36e3bc7c966..9f879bbc5903 100644 --- a/examples/data-objects/multiview/interface/CHANGELOG.md +++ b/examples/data-objects/multiview/interface/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/multiview-coordinate-interface +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/multiview/plot-coordinate-view/CHANGELOG.md b/examples/data-objects/multiview/plot-coordinate-view/CHANGELOG.md index c9a5815a2bb6..96d5307e8628 100644 --- a/examples/data-objects/multiview/plot-coordinate-view/CHANGELOG.md +++ b/examples/data-objects/multiview/plot-coordinate-view/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/multiview-plot-coordinate-view +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/multiview/slider-coordinate-view/CHANGELOG.md b/examples/data-objects/multiview/slider-coordinate-view/CHANGELOG.md index 6d349d625676..b58777b42d4a 100644 --- a/examples/data-objects/multiview/slider-coordinate-view/CHANGELOG.md +++ b/examples/data-objects/multiview/slider-coordinate-view/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/multiview-slider-coordinate-view +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/multiview/triangle-view/CHANGELOG.md b/examples/data-objects/multiview/triangle-view/CHANGELOG.md index 84044e3f1f50..1b850bb93a4a 100644 --- a/examples/data-objects/multiview/triangle-view/CHANGELOG.md +++ b/examples/data-objects/multiview/triangle-view/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/multiview-triangle-view +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/prosemirror/CHANGELOG.md b/examples/data-objects/prosemirror/CHANGELOG.md index eb26ee989196..da2060a965a7 100644 --- a/examples/data-objects/prosemirror/CHANGELOG.md +++ b/examples/data-objects/prosemirror/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/prosemirror +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/smde/CHANGELOG.md b/examples/data-objects/smde/CHANGELOG.md index 0c128797ea31..457f653c36cc 100644 --- a/examples/data-objects/smde/CHANGELOG.md +++ b/examples/data-objects/smde/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/smde +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/table-document/CHANGELOG.md b/examples/data-objects/table-document/CHANGELOG.md index 7529abaef118..0184e1c3cf78 100644 --- a/examples/data-objects/table-document/CHANGELOG.md +++ b/examples/data-objects/table-document/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/table-document +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/todo/CHANGELOG.md b/examples/data-objects/todo/CHANGELOG.md index d4fce2b627a3..20c6b5e5015e 100644 --- a/examples/data-objects/todo/CHANGELOG.md +++ b/examples/data-objects/todo/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/todo +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/data-objects/webflow/CHANGELOG.md b/examples/data-objects/webflow/CHANGELOG.md index fd802eb83c06..acffa8a720c1 100644 --- a/examples/data-objects/webflow/CHANGELOG.md +++ b/examples/data-objects/webflow/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/webflow +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/external-data/CHANGELOG.md b/examples/external-data/CHANGELOG.md index 0888490f96fb..6a57b46c4654 100644 --- a/examples/external-data/CHANGELOG.md +++ b/examples/external-data/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/app-integration-external-data +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/service-clients/azure-client/external-controller/CHANGELOG.md b/examples/service-clients/azure-client/external-controller/CHANGELOG.md index 3402c92de9dc..785434ddb965 100644 --- a/examples/service-clients/azure-client/external-controller/CHANGELOG.md +++ b/examples/service-clients/azure-client/external-controller/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/app-integration-external-controller +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/service-clients/odsp-client/shared-tree-demo/CHANGELOG.md b/examples/service-clients/odsp-client/shared-tree-demo/CHANGELOG.md index 0af13293d26c..0c4f35ba7868 100644 --- a/examples/service-clients/odsp-client/shared-tree-demo/CHANGELOG.md +++ b/examples/service-clients/odsp-client/shared-tree-demo/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/shared-tree-demo +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/utils/bundle-size-tests/CHANGELOG.md b/examples/utils/bundle-size-tests/CHANGELOG.md index 0eaee97c9c6c..1d5f72ab4ad3 100644 --- a/examples/utils/bundle-size-tests/CHANGELOG.md +++ b/examples/utils/bundle-size-tests/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/bundle-size-tests +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/utils/example-utils/CHANGELOG.md b/examples/utils/example-utils/CHANGELOG.md index 31b743fc807d..bd3e4fb1c62e 100644 --- a/examples/utils/example-utils/CHANGELOG.md +++ b/examples/utils/example-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/example-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/utils/migration-tools/CHANGELOG.md b/examples/utils/migration-tools/CHANGELOG.md index fc97941f81fa..4c4e22f88165 100644 --- a/examples/utils/migration-tools/CHANGELOG.md +++ b/examples/utils/migration-tools/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/migration-tools +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/utils/webpack-fluid-loader/CHANGELOG.md b/examples/utils/webpack-fluid-loader/CHANGELOG.md index 07d1ac6348f4..97a8fbe949c9 100644 --- a/examples/utils/webpack-fluid-loader/CHANGELOG.md +++ b/examples/utils/webpack-fluid-loader/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/webpack-fluid-loader +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/version-migration/live-schema-upgrade/CHANGELOG.md b/examples/version-migration/live-schema-upgrade/CHANGELOG.md index 80e80e9ab70c..e7eb0ddf8072 100644 --- a/examples/version-migration/live-schema-upgrade/CHANGELOG.md +++ b/examples/version-migration/live-schema-upgrade/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/app-integration-live-schema-upgrade +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/version-migration/same-container/CHANGELOG.md b/examples/version-migration/same-container/CHANGELOG.md index 71e0c34bfeb5..f6feaa73ac22 100644 --- a/examples/version-migration/same-container/CHANGELOG.md +++ b/examples/version-migration/same-container/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/version-migration-same-container +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/version-migration/separate-container/CHANGELOG.md b/examples/version-migration/separate-container/CHANGELOG.md index 1c8c8fb1afb5..33aac735d75c 100644 --- a/examples/version-migration/separate-container/CHANGELOG.md +++ b/examples/version-migration/separate-container/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/version-migration-separate-container +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/version-migration/tree-shim/CHANGELOG.md b/examples/version-migration/tree-shim/CHANGELOG.md index 3f64ea854d03..3e933c8bba90 100644 --- a/examples/version-migration/tree-shim/CHANGELOG.md +++ b/examples/version-migration/tree-shim/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/tree-comparison +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/view-integration/container-views/CHANGELOG.md b/examples/view-integration/container-views/CHANGELOG.md index fe822998e539..931099ae0fad 100644 --- a/examples/view-integration/container-views/CHANGELOG.md +++ b/examples/view-integration/container-views/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/app-integration-container-views +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/view-integration/external-views/CHANGELOG.md b/examples/view-integration/external-views/CHANGELOG.md index a44b03ec9bc4..ce6edf483627 100644 --- a/examples/view-integration/external-views/CHANGELOG.md +++ b/examples/view-integration/external-views/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/app-integration-external-views +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/examples/view-integration/view-framework-sampler/CHANGELOG.md b/examples/view-integration/view-framework-sampler/CHANGELOG.md index 154ea6b2b781..2e260d21b41b 100644 --- a/examples/view-integration/view-framework-sampler/CHANGELOG.md +++ b/examples/view-integration/view-framework-sampler/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/view-framework-sampler +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/PropertyDDS/packages/property-changeset/CHANGELOG.md b/experimental/PropertyDDS/packages/property-changeset/CHANGELOG.md index 5807b1631561..19d2e57e18d8 100644 --- a/experimental/PropertyDDS/packages/property-changeset/CHANGELOG.md +++ b/experimental/PropertyDDS/packages/property-changeset/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/property-changeset +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/PropertyDDS/packages/property-common/CHANGELOG.md b/experimental/PropertyDDS/packages/property-common/CHANGELOG.md index 306ab37ff643..30d966cb6f96 100644 --- a/experimental/PropertyDDS/packages/property-common/CHANGELOG.md +++ b/experimental/PropertyDDS/packages/property-common/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/property-common +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/PropertyDDS/packages/property-common/platform-dependent/CHANGELOG.md b/experimental/PropertyDDS/packages/property-common/platform-dependent/CHANGELOG.md index b74bd939fc41..3b2cd9cfcdf2 100644 --- a/experimental/PropertyDDS/packages/property-common/platform-dependent/CHANGELOG.md +++ b/experimental/PropertyDDS/packages/property-common/platform-dependent/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/platform-dependent +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/PropertyDDS/packages/property-dds/CHANGELOG.md b/experimental/PropertyDDS/packages/property-dds/CHANGELOG.md index f5c5dd0dc661..27b137ccd34c 100644 --- a/experimental/PropertyDDS/packages/property-dds/CHANGELOG.md +++ b/experimental/PropertyDDS/packages/property-dds/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/property-dds +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/PropertyDDS/packages/property-properties/CHANGELOG.md b/experimental/PropertyDDS/packages/property-properties/CHANGELOG.md index e1e10210db6f..b3484e86c7d4 100644 --- a/experimental/PropertyDDS/packages/property-properties/CHANGELOG.md +++ b/experimental/PropertyDDS/packages/property-properties/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/property-properties +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/dds/attributable-map/CHANGELOG.md b/experimental/dds/attributable-map/CHANGELOG.md index 78f841f185c9..e42ec3388924 100644 --- a/experimental/dds/attributable-map/CHANGELOG.md +++ b/experimental/dds/attributable-map/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/attributable-map +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/dds/ot/ot/CHANGELOG.md b/experimental/dds/ot/ot/CHANGELOG.md index f0962c0f17de..fa0fbfb3b2c9 100644 --- a/experimental/dds/ot/ot/CHANGELOG.md +++ b/experimental/dds/ot/ot/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/ot +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/dds/ot/sharejs/json1/CHANGELOG.md b/experimental/dds/ot/sharejs/json1/CHANGELOG.md index d2ca1bdf86f3..68f3b1028512 100644 --- a/experimental/dds/ot/sharejs/json1/CHANGELOG.md +++ b/experimental/dds/ot/sharejs/json1/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/sharejs-json1 +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/dds/sequence-deprecated/CHANGELOG.md b/experimental/dds/sequence-deprecated/CHANGELOG.md index 0dded5bbfbd2..8101f8d8a184 100644 --- a/experimental/dds/sequence-deprecated/CHANGELOG.md +++ b/experimental/dds/sequence-deprecated/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/sequence-deprecated +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/dds/tree/CHANGELOG.md b/experimental/dds/tree/CHANGELOG.md index 7cf429b56ee2..958290869a2a 100644 --- a/experimental/dds/tree/CHANGELOG.md +++ b/experimental/dds/tree/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/tree +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/framework/data-objects/CHANGELOG.md b/experimental/framework/data-objects/CHANGELOG.md index 4fb37ba11b9e..d4e6cb9c74ad 100644 --- a/experimental/framework/data-objects/CHANGELOG.md +++ b/experimental/framework/data-objects/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/data-objects +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/framework/last-edited/CHANGELOG.md b/experimental/framework/last-edited/CHANGELOG.md index 2ae662c72e11..a4aca10eb0eb 100644 --- a/experimental/framework/last-edited/CHANGELOG.md +++ b/experimental/framework/last-edited/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/last-edited +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/experimental/framework/tree-react-api/CHANGELOG.md b/experimental/framework/tree-react-api/CHANGELOG.md index 293370a9f803..7bfa963395eb 100644 --- a/experimental/framework/tree-react-api/CHANGELOG.md +++ b/experimental/framework/tree-react-api/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/tree-react-api +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/common/client-utils/CHANGELOG.md b/packages/common/client-utils/CHANGELOG.md index fe8ccb19e6bc..7ddfb3c27edb 100644 --- a/packages/common/client-utils/CHANGELOG.md +++ b/packages/common/client-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/client-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/common/container-definitions/CHANGELOG.md b/packages/common/container-definitions/CHANGELOG.md index 5d8bab1ed11d..fb17ffa96369 100644 --- a/packages/common/container-definitions/CHANGELOG.md +++ b/packages/common/container-definitions/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/container-definitions +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/common/core-interfaces/CHANGELOG.md b/packages/common/core-interfaces/CHANGELOG.md index fe6640c6d311..1663db9cf78b 100644 --- a/packages/common/core-interfaces/CHANGELOG.md +++ b/packages/common/core-interfaces/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/core-interfaces +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/common/core-utils/CHANGELOG.md b/packages/common/core-utils/CHANGELOG.md index cf4bfd26386c..0a23b0776dac 100644 --- a/packages/common/core-utils/CHANGELOG.md +++ b/packages/common/core-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/core-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/common/driver-definitions/CHANGELOG.md b/packages/common/driver-definitions/CHANGELOG.md index 1aeb13fd3807..ff5327f79e3a 100644 --- a/packages/common/driver-definitions/CHANGELOG.md +++ b/packages/common/driver-definitions/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/driver-definitions +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/cell/CHANGELOG.md b/packages/dds/cell/CHANGELOG.md index eb4544b47d1c..775a08dad358 100644 --- a/packages/dds/cell/CHANGELOG.md +++ b/packages/dds/cell/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/cell +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/counter/CHANGELOG.md b/packages/dds/counter/CHANGELOG.md index c35d24c93175..0fc3ebbc6ce5 100644 --- a/packages/dds/counter/CHANGELOG.md +++ b/packages/dds/counter/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/counter +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/ink/CHANGELOG.md b/packages/dds/ink/CHANGELOG.md index 452db61fd79f..3deb9b0ac26e 100644 --- a/packages/dds/ink/CHANGELOG.md +++ b/packages/dds/ink/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/ink +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/map/CHANGELOG.md b/packages/dds/map/CHANGELOG.md index 56ed436fe19e..d8f52a6f3f6e 100644 --- a/packages/dds/map/CHANGELOG.md +++ b/packages/dds/map/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/map +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/matrix/CHANGELOG.md b/packages/dds/matrix/CHANGELOG.md index 158cda2638b8..692375764d0d 100644 --- a/packages/dds/matrix/CHANGELOG.md +++ b/packages/dds/matrix/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/matrix +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/merge-tree/CHANGELOG.md b/packages/dds/merge-tree/CHANGELOG.md index a0ae154f5d5c..9c054108a401 100644 --- a/packages/dds/merge-tree/CHANGELOG.md +++ b/packages/dds/merge-tree/CHANGELOG.md @@ -1,5 +1,35 @@ # @fluidframework/merge-tree +## 2.5.0 + +### Minor Changes + +- Compilation no longer fails when building with TypeScript's libCheck option ([#22923](https://github.com/microsoft/FluidFramework/pull/22923)) [a1b4cdd45e](https://github.com/microsoft/FluidFramework/commit/a1b4cdd45ee9812e2598ab8d2854333d26a06eb4) + + When compiling code using Fluid Framework with TypeScript's `libCheck` (meaning without [skipLibCheck](https://www.typescriptlang.org/tsconfig/#skipLibCheck)), two compile errors can be encountered: + + ``` + > tsc + + node_modules/@fluidframework/merge-tree/lib/client.d.ts:124:18 - error TS2368: Type parameter name cannot be 'undefined'. + + 124 walkSegments(handler: ISegmentAction, start?: number, end?: number, accum?: undefined, splitRange?: boolean): void; + ~~~~~~~~~ + + node_modules/@fluidframework/tree/lib/util/utils.d.ts:5:29 - error TS7016: Could not find a declaration file for module '@ungap/structured-clone'. 'node_modules/@ungap/structured-clone/esm/index.js' implicitly has an 'any' type. + Try `npm i --save-dev @types/ungap__structured-clone` if it exists or add a new declaration (.d.ts) file containing `declare module '@ungap/structured-clone';` + + 5 import structuredClone from "@ungap/structured-clone"; + ~~~~~~~~~~~~~~~~~~~~~~~~~ + ``` + + The first error impacts projects using TypeScript 5.5 or greater and either of the `fluid-framework` or `@fluidframework/merge-tree` packages. + The second error impacts projects using the `noImplicitAny` tsconfig setting and the `fluid-framework` or `@fluidframework/tree` packages. + + Both errors have been fixed. + + This should allow `libCheck` to be reenabled in any impacted projects. + ## 2.4.0 ### Minor Changes diff --git a/packages/dds/ordered-collection/CHANGELOG.md b/packages/dds/ordered-collection/CHANGELOG.md index 011f77504962..3e1724b542f5 100644 --- a/packages/dds/ordered-collection/CHANGELOG.md +++ b/packages/dds/ordered-collection/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/ordered-collection +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/pact-map/CHANGELOG.md b/packages/dds/pact-map/CHANGELOG.md index 2477a69f5a2d..20a4ce7fe6ef 100644 --- a/packages/dds/pact-map/CHANGELOG.md +++ b/packages/dds/pact-map/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/pact-map +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/register-collection/CHANGELOG.md b/packages/dds/register-collection/CHANGELOG.md index 7f18eab2bbe1..b8f69ae265e2 100644 --- a/packages/dds/register-collection/CHANGELOG.md +++ b/packages/dds/register-collection/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/register-collection +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/sequence/CHANGELOG.md b/packages/dds/sequence/CHANGELOG.md index 77c1c974fca3..7b5657c0f927 100644 --- a/packages/dds/sequence/CHANGELOG.md +++ b/packages/dds/sequence/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/sequence +## 2.5.0 + +Dependency updates only. + ## 2.4.0 ### Minor Changes diff --git a/packages/dds/shared-object-base/CHANGELOG.md b/packages/dds/shared-object-base/CHANGELOG.md index a1be20497c8c..e38e56037a9b 100644 --- a/packages/dds/shared-object-base/CHANGELOG.md +++ b/packages/dds/shared-object-base/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/shared-object-base +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/shared-summary-block/CHANGELOG.md b/packages/dds/shared-summary-block/CHANGELOG.md index e18aa047521e..5f900b6b4ad5 100644 --- a/packages/dds/shared-summary-block/CHANGELOG.md +++ b/packages/dds/shared-summary-block/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/shared-summary-block +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/task-manager/CHANGELOG.md b/packages/dds/task-manager/CHANGELOG.md index 9bd67415b870..5d440bbbf7bd 100644 --- a/packages/dds/task-manager/CHANGELOG.md +++ b/packages/dds/task-manager/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/task-manager +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/test-dds-utils/CHANGELOG.md b/packages/dds/test-dds-utils/CHANGELOG.md index 73c0684a24a1..3fe1ad09176e 100644 --- a/packages/dds/test-dds-utils/CHANGELOG.md +++ b/packages/dds/test-dds-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-private/test-dds-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/dds/tree/CHANGELOG.md b/packages/dds/tree/CHANGELOG.md index 43e15e7ef53b..dbad25e0a64d 100644 --- a/packages/dds/tree/CHANGELOG.md +++ b/packages/dds/tree/CHANGELOG.md @@ -1,5 +1,376 @@ # @fluidframework/tree +## 2.5.0 + +### Minor Changes + +- ✨ New! Alpha APIs for tree data import and export ([#22566](https://github.com/microsoft/FluidFramework/pull/22566)) [18a23e8816](https://github.com/microsoft/FluidFramework/commit/18a23e8816467f2ed0c9d6d8637b70d99aa48b7a) + + A collection of new `@alpha` APIs for importing and exporting tree content and schema from SharedTrees has been added to `TreeAlpha`. + These include import and export APIs for `VerboseTree`, `ConciseTree` and compressed tree formats. + + `TreeAlpha.create` is also added to allow constructing trees with a more general API instead of having to use the schema constructor directly (since that doesn't handle polymorphic roots, or non-schema aware code). + + The function `independentInitializedView` has been added to provide a way to combine data from the existing `extractPersistedSchema` and new `TreeAlpha.exportCompressed` back into a `TreeView` in a way which can support safely importing data which could have been exported with a different schema. + This allows replicating the schema evolution process for Fluid documents stored in a service, but entirely locally without involving any collaboration services. + `independentView` has also been added, which is similar but handles the case of creating a new view without an existing schema or tree. + + Together these APIs address several use-cases: + + 1. Using SharedTree as an in-memory non-collaborative datastore. + 2. Importing and exporting data from a SharedTree to and from other services or storage locations (such as locally saved files). + 3. Testing various scenarios without relying on a service. + 4. Using SharedTree libraries for just the schema system and encode/decode support. + +- Compilation no longer fails when building with TypeScript's libCheck option ([#22923](https://github.com/microsoft/FluidFramework/pull/22923)) [a1b4cdd45e](https://github.com/microsoft/FluidFramework/commit/a1b4cdd45ee9812e2598ab8d2854333d26a06eb4) + + When compiling code using Fluid Framework with TypeScript's `libCheck` (meaning without [skipLibCheck](https://www.typescriptlang.org/tsconfig/#skipLibCheck)), two compile errors can be encountered: + + ``` + > tsc + + node_modules/@fluidframework/merge-tree/lib/client.d.ts:124:18 - error TS2368: Type parameter name cannot be 'undefined'. + + 124 walkSegments(handler: ISegmentAction, start?: number, end?: number, accum?: undefined, splitRange?: boolean): void; + ~~~~~~~~~ + + node_modules/@fluidframework/tree/lib/util/utils.d.ts:5:29 - error TS7016: Could not find a declaration file for module '@ungap/structured-clone'. 'node_modules/@ungap/structured-clone/esm/index.js' implicitly has an 'any' type. + Try `npm i --save-dev @types/ungap__structured-clone` if it exists or add a new declaration (.d.ts) file containing `declare module '@ungap/structured-clone';` + + 5 import structuredClone from "@ungap/structured-clone"; + ~~~~~~~~~~~~~~~~~~~~~~~~~ + ``` + + The first error impacts projects using TypeScript 5.5 or greater and either of the `fluid-framework` or `@fluidframework/merge-tree` packages. + The second error impacts projects using the `noImplicitAny` tsconfig setting and the `fluid-framework` or `@fluidframework/tree` packages. + + Both errors have been fixed. + + This should allow `libCheck` to be reenabled in any impacted projects. + +- A `.schema` member has been added to the alpha enum schema APIs ([#22874](https://github.com/microsoft/FluidFramework/pull/22874)) [645b9ed695](https://github.com/microsoft/FluidFramework/commit/645b9ed69540338843ad14f1144ff4d1f80d6f09) + + The return value from `@alpha` APIs `enumFromStrings` and `adaptEnum` now has a property named `schema` which can be used to include it in a parent schema. + This replaces the use of `typedObjectValues` which has been removed. + + Use of these APIs now look like: + + ```typescript + const schemaFactory = new SchemaFactory("com.myApp"); + const Mode = enumFromStrings(schemaFactory, ["Fun", "Cool"]); + type Mode = NodeFromSchema<(typeof Mode.schema)[number]>; + class Parent extends schemaFactory.object("Parent", { mode: Mode.schema }) {} + ``` + + Previously, the last two lines would have been: + + ```typescript + type Mode = NodeFromSchema<(typeof Mode)[keyof typeof Mode]>; // This no longer works + class Parent extends schemaFactory.object("Parent", { mode: typedObjectValues(Mode) }) {} // This no longer works + ``` + +- TreeNodeSchemaClass now specifies its TNode as TreeNode ([#22938](https://github.com/microsoft/FluidFramework/pull/22938)) [b669a6efdb](https://github.com/microsoft/FluidFramework/commit/b669a6efdba685c71897cade4f907304f1a73910) + + `TreeNodeSchemaClass`'s `TNode` parameter was formerly `unknown` and has been improved to be the more specific `TreeNode | TreeLeafValue`. + This change further narrows this to `TreeNode`. + + `TreeNodeSchema`, which is more commonly used, still permits `TNode` of `TreeNode | TreeLeafValue`, so this change should have little impact on most code, but in some edge cases it can result in slightly more specific typing. + +- Array and Map nodes can now be explicitly constructed with undefined or no argument ([#22946](https://github.com/microsoft/FluidFramework/pull/22946)) [176335ce88](https://github.com/microsoft/FluidFramework/commit/176335ce88d005159819c559b445a1655ec429d5) + + The input parameter to the constructor and `create` methods of Array and Map nodes is now optional. When the optional parameter is omitted, an empty map or array will be created. + + #### Examples + + ```typescript + class Schema extends schemaFactory.array("x", schemaFactory.number) {} + + // Existing support + const _fromIterable: Schema = new Schema([]); + + // New + const _fromUndefined: Schema = new Schema(undefined); + const _fromNothing: Schema = new Schema(); + ``` + + ```typescript + class Schema extends schemaFactory.map("x", schemaFactory.number) {} + + // Existing support + const _fromIterable: Schema = new Schema([]); + const _fromObject: Schema = new Schema({}); + + // New + const _fromUndefined: Schema = new Schema(undefined); + const _fromNothing: Schema = new Schema(); + ``` + + ```typescript + const Schema = schemaFactory.array(schemaFactory.number); + type Schema = NodeFromSchema; + + // Existing support + const _fromIterable: Schema = Schema.create([]); + + // New + const _fromUndefined: Schema = Schema.create(undefined); + const _fromNothing: Schema = Schema.create(); + ``` + + ```typescript + const Schema = schemaFactory.map(schemaFactory.number); + type Schema = NodeFromSchema; + // Existing support + const _fromIterable: Schema = Schema.create([]); + const _fromObject: Schema = Schema.create({}); + + // New + const _fromUndefined: Schema = Schema.create(undefined); + const _fromNothing: Schema = Schema.create(); + ``` + +- Typing has been improved when an exact TypeScript type for a schema is not provided ([#22763](https://github.com/microsoft/FluidFramework/pull/22763)) [05197d6d3f](https://github.com/microsoft/FluidFramework/commit/05197d6d3f0189ecd61fd74ec55f6836e6797249) + + The Tree APIs are designed to be used in a strongly typed way, with the full TypeScript type for the schema always being provided. + Due to limitations of the TypeScript language, there was no practical way to prevent less descriptive types, like `TreeNodeSchema` or `ImplicitFieldSchema`, from being used where the type of a specific schema was intended. + Code which does this will encounter several issues with tree APIs, and this change fixes some of those issues. + This change mainly fixes that `NodeFromSchema` used to return `unknown` and now returns `TreeNode | TreeLeafValue`. + + This change by itself seems mostly harmless, as it just improves the precision of the typing in this one edge case. + Unfortunately, there are other typing bugs which complicate the situation, causing APIs for inserting data into the tree to also behave poorly when given non-specific types like `TreeNodeSchema`. + These APIs include cases like `TreeView.initialize`. + + This incorrectly allowed some usage like taking a type-erased schema and initial tree pair, creating a view of type `TreeView`, then initializing it. + With the typing being partly fixed, some unsafe inputs are still allowed when trying to initialize such a view, but some are now prevented. + + This use-case of modifying trees in code not that is not strongly typed by the exact schema was not intended to be supported. + Despite this, it did mostly work in some cases, and has some real use-cases (like tests looping over test data consisting of pairs of schema and initial trees). + To help mitigate the impact of this change, some experimental `@alpha` APIs have been introduced to help address these previously unsupported but somewhat working use-cases. + + Before this change: + + ```typescript + import { TinyliciousClient } from "@fluidframework/tinylicious-client"; + import { + SchemaFactory, + SharedTree, + TreeViewConfiguration, + type TreeNodeSchema, + } from "fluid-framework"; + + // Create a ITree instance + const tinyliciousClient = new TinyliciousClient(); + const { container } = await tinyliciousClient.createContainer({ initialObjects: {} }, "2"); + const tree = await container.create(SharedTree); + + const schemaFactory = new SchemaFactory("demo"); + + // Bad: This loses the schema aware type information. `: TreeNodeSchema` should be omitted to preserve strong typing. + const schema: TreeNodeSchema = schemaFactory.array(schemaFactory.number); + const config = new TreeViewConfiguration({ schema }); + + // This view is typed as `TreeView`, which does not work well since it's missing the actual schema type information. + const view = tree.viewWith(config); + // Root is typed as `unknown` allowing invalid assignment operations. + view.root = "invalid"; + view.root = {}; + // Since all assignments are allowed, valid ones still work: + view.root = []; + ``` + + After this change: + + ```typescript + // Root is now typed as `TreeNode | TreeLeafValue`, still allowing some invalid assignment operations. + // In the future this should be prevented as well, since the type of the setter in this case should be `never`. + view.root = "invalid"; + // This no longer compiles: + view.root = {}; + // This also no longer compiles despite being valid at runtime: + view.root = []; + ``` + + For code that wants to continue using an unsafe API, which can result in runtime errors if the data does not follow the schema, a new alternative has been added to address this use-case. A special type `UnsafeUnknownSchema` can now be used to opt into allowing all valid trees to be provided. + Note that this leaves ensuring the data is in schema up to the user. + For now these adjusted APIs can be accessed by casting the view to `TreeViewAlpha`. + If stabilized, this option will be added to `TreeView` directly. + + ```typescript + const viewAlpha = view as TreeViewAlpha; + viewAlpha.initialize([]); + viewAlpha.root = []; + ``` + + Additionally, this seems to have negatively impacted co-recursive schema which declare a co-recursive array as the first schema in the co-recursive cycle. + Like the TypeScript language our schema system is built on, we don't guarantee exactly which recursive type will compile, but will do our best to ensure useful recursive schema can be created easily. + In this case a slight change may be required to some recursive schema to get them to compile again: + + For example this schema used to compile: + + ```typescript + class A extends sf.arrayRecursive("A", [() => B]) {} + { + type _check = ValidateRecursiveSchema; + } + // Used to work, but breaks in this update. + class B extends sf.object("B", { x: A }) {} + ``` + + But now you must use the recursive functions like `objectRecursive` for types which are co-recursive with an array in some cases. + In our example, it can be fixed as follows: + + ```typescript + class A extends sf.arrayRecursive("A", [() => B]) {} + { + type _check = ValidateRecursiveSchema; + } + // Fixed corecursive type, using "Recursive" method variant to declare schema. + class B extends sf.objectRecursive("B", { x: A }) {} + { + type _check = ValidateRecursiveSchema; + } + ``` + + Note: while the following pattern may still compile, we recommend using the previous pattern instead since the one below may break in the future. + + ```typescript + class B extends sf.objectRecursive("B", { x: [() => A] }) {} + { + type _check = ValidateRecursiveSchema; + } + // Works, for now, but not recommended. + class A extends sf.array("A", B) {} + ``` + +- The strictness of input tree types when inexact schemas are provided has been improved ([#22874](https://github.com/microsoft/FluidFramework/pull/22874)) [645b9ed695](https://github.com/microsoft/FluidFramework/commit/645b9ed69540338843ad14f1144ff4d1f80d6f09) + + Consider the following code where the type of the schema is not exactly specified: + + ```typescript + const schemaFactory = new SchemaFactory("com.myApp"); + class A extends schemaFactory.object("A", {}) {} + class B extends schemaFactory.array("B", schemaFactory.number) {} + + // Gives imprecise type (typeof A | typeof B)[]. The desired precise type here is [typeof A, typeof B]. + const schema = [A, B]; + + const config = new TreeViewConfiguration({ schema }); + const view = sharedTree.viewWith(config); + + // Does not compile since setter for root is typed `never` due to imprecise schema. + view.root = []; + ``` + + The assignment of `view.root` is disallowed since a schema with type `(typeof A | typeof B)[]` could be any of: + + ```typescript + const schema: (typeof A | typeof B)[] = [A]; + ``` + + ```typescript + const schema: (typeof A | typeof B)[] = [B]; + ``` + + ```typescript + const schema: (typeof A | typeof B)[] = [A, B]; + ``` + + The attempted assignment is not compatible with all of these (specifically it is incompatible with the first one) so performing this assignment could make the tree out of schema and is thus disallowed. + + To avoid this ambiguity and capture the precise type of `[typeof A, typeof B]`, use one of the following patterns: + + ```typescript + const schema = [A, B] as const; + const config = new TreeViewConfiguration({ schema }); + ``` + + ```typescript + const config = new TreeViewConfiguration({ schema: [A, B] }); + ``` + + To help update existing code which accidentally depended on this bug, an `@alpha` API `unsafeArrayToTuple` has been added. + Many usages of this API will produce incorrectly typed outputs. + However, when given `AllowedTypes` arrays which should not contain any unions, but that were accidentally flattened to a single union, it can fix them: + + ```typescript + // Gives imprecise type (typeof A | typeof B)[] + const schemaBad = [A, B]; + // Fixes the type to be [typeof A, typeof B] + const schema = unsafeArrayToTuple(schemaBad); + + const config = new TreeViewConfiguration({ schema }); + ``` + +- SharedTree branching API has been improved ([#22970](https://github.com/microsoft/FluidFramework/pull/22970)) [80ed0284f0](https://github.com/microsoft/FluidFramework/commit/80ed0284f01107d2ba8bcf2f3ebaf6175367603a) + + The alpha SharedTree branching API has been updated to be more accessible and intuitive. + The branching functions (`branch`, `merge`, `rebaseOnto`, etc.) are now directly available on the view object rather than a separate object. + In particular, `TreeViewAlpha` is now a `TreeBranch`, which exposes the methods to coordinate branches. + + The existing `TreeBranch` type has been renamed to `BranchableTree` and is now **deprecated**. + + See the `TreeBranch` interface for more details. + + The new API is used e.g. as follows: + + ```typescript + const sf = new SchemaFactory("example"); + class StringArray extends sf.array("StringArray", sf.string) {} + + function example(view: TreeViewAlpha): void { + // Create a branch + const branch = view.fork(); + // Modify the branch rather than the main view + branch.root.insertAtEnd("new string"); + // `view` does not yet contain "new string" + // ... + // Later, merge the branch into the main view + view.merge(branch); + // `view` now contains "new string" + } + ``` + + Here is the equivalent behavior with the previous API, for reference: + + ```typescript + const sf = new SchemaFactory("example"); + class StringArray extends sf.array("StringArray", sf.string) {} + + function example(view: TreeViewAlpha): void { + // Get the branch for the view + const branch = getBranch(view); + const fork = branch.branch(); + // Modify the branch rather than the main view + fork.root.insertAtEnd("new string"); + // `view` does not yet contain "new string" + // ... + // Later, merge the branch into the main view + branch.merge(fork); + // `view` now contains "new string" + } + ``` + + Additionally, there is a new API to acquire the branch from a node: + + ```typescript + // All nodes that have been inserted into the tree belong to a branch - this retrieves that branch + const branch = TreeAlpha.branch(node); + ``` + + To convert the branch object to a view with a known schema, use: + + ```typescript + if (branch.hasRootSchema(MySchema)) { + const view = branch; // `branch` is now typed as a `TreeViewAlpha` + } + ``` + + Use the following function to expose the alpha APIs on a `TreeView` that is not typed as a `TreeViewAlpha`: + + ```typescript + const viewAlpha = asTreeViewAlpha(view); + ``` + ## 2.4.0 ### Minor Changes diff --git a/packages/drivers/debugger/CHANGELOG.md b/packages/drivers/debugger/CHANGELOG.md index 3f4f8560b46b..fd6512c71fdc 100644 --- a/packages/drivers/debugger/CHANGELOG.md +++ b/packages/drivers/debugger/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/debugger +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/driver-base/CHANGELOG.md b/packages/drivers/driver-base/CHANGELOG.md index 32ddbea79921..f5a6c4951a88 100644 --- a/packages/drivers/driver-base/CHANGELOG.md +++ b/packages/drivers/driver-base/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/driver-base +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/driver-web-cache/CHANGELOG.md b/packages/drivers/driver-web-cache/CHANGELOG.md index a3cbd6be654c..8f65ff5789fa 100644 --- a/packages/drivers/driver-web-cache/CHANGELOG.md +++ b/packages/drivers/driver-web-cache/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/driver-web-cache +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/file-driver/CHANGELOG.md b/packages/drivers/file-driver/CHANGELOG.md index be3f5c373fc4..cd97b23fbac1 100644 --- a/packages/drivers/file-driver/CHANGELOG.md +++ b/packages/drivers/file-driver/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/file-driver +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/local-driver/CHANGELOG.md b/packages/drivers/local-driver/CHANGELOG.md index 6a0436a34e63..57b17ea9145c 100644 --- a/packages/drivers/local-driver/CHANGELOG.md +++ b/packages/drivers/local-driver/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/local-driver +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/odsp-driver-definitions/CHANGELOG.md b/packages/drivers/odsp-driver-definitions/CHANGELOG.md index 79b8490b8e88..02fa6a328df6 100644 --- a/packages/drivers/odsp-driver-definitions/CHANGELOG.md +++ b/packages/drivers/odsp-driver-definitions/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/odsp-driver-definitions +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/odsp-driver/CHANGELOG.md b/packages/drivers/odsp-driver/CHANGELOG.md index b5e412e74848..60e302a4b5d6 100644 --- a/packages/drivers/odsp-driver/CHANGELOG.md +++ b/packages/drivers/odsp-driver/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/odsp-driver +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/odsp-urlResolver/CHANGELOG.md b/packages/drivers/odsp-urlResolver/CHANGELOG.md index daa7ce249aa8..0ce8b5a9f26c 100644 --- a/packages/drivers/odsp-urlResolver/CHANGELOG.md +++ b/packages/drivers/odsp-urlResolver/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/odsp-urlresolver +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/replay-driver/CHANGELOG.md b/packages/drivers/replay-driver/CHANGELOG.md index 6b7899ab9598..596fa69ecd8a 100644 --- a/packages/drivers/replay-driver/CHANGELOG.md +++ b/packages/drivers/replay-driver/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/replay-driver +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/routerlicious-driver/CHANGELOG.md b/packages/drivers/routerlicious-driver/CHANGELOG.md index c7a89e99a395..2c175eca9f8b 100644 --- a/packages/drivers/routerlicious-driver/CHANGELOG.md +++ b/packages/drivers/routerlicious-driver/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/routerlicious-driver +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/routerlicious-urlResolver/CHANGELOG.md b/packages/drivers/routerlicious-urlResolver/CHANGELOG.md index caba52d01faf..5952a63c411a 100644 --- a/packages/drivers/routerlicious-urlResolver/CHANGELOG.md +++ b/packages/drivers/routerlicious-urlResolver/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/routerlicious-urlresolver +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/drivers/tinylicious-driver/CHANGELOG.md b/packages/drivers/tinylicious-driver/CHANGELOG.md index c74e8bea683a..b62498169778 100644 --- a/packages/drivers/tinylicious-driver/CHANGELOG.md +++ b/packages/drivers/tinylicious-driver/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/tinylicious-driver +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/agent-scheduler/CHANGELOG.md b/packages/framework/agent-scheduler/CHANGELOG.md index 1c9663ba0cdc..8a20107d3865 100644 --- a/packages/framework/agent-scheduler/CHANGELOG.md +++ b/packages/framework/agent-scheduler/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/agent-scheduler +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/ai-collab/CHANGELOG.md b/packages/framework/ai-collab/CHANGELOG.md index 8969e0451b76..dc53b5e9e7d0 100644 --- a/packages/framework/ai-collab/CHANGELOG.md +++ b/packages/framework/ai-collab/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/ai-collab +## 2.5.0 + +Dependency updates only. + ## 2.4.0 New package. diff --git a/packages/framework/aqueduct/CHANGELOG.md b/packages/framework/aqueduct/CHANGELOG.md index 1c0712f2a05e..d6df4f781a67 100644 --- a/packages/framework/aqueduct/CHANGELOG.md +++ b/packages/framework/aqueduct/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/aqueduct +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/attributor/CHANGELOG.md b/packages/framework/attributor/CHANGELOG.md index 27771c646a07..10b803979f9a 100644 --- a/packages/framework/attributor/CHANGELOG.md +++ b/packages/framework/attributor/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/attributor +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/client-logger/app-insights-logger/CHANGELOG.md b/packages/framework/client-logger/app-insights-logger/CHANGELOG.md index 19fb5eca395f..3e19e2b9ba8c 100644 --- a/packages/framework/client-logger/app-insights-logger/CHANGELOG.md +++ b/packages/framework/client-logger/app-insights-logger/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/app-insights-logger +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/client-logger/fluid-telemetry/CHANGELOG.md b/packages/framework/client-logger/fluid-telemetry/CHANGELOG.md index ba2a760d30dd..4337fa090db1 100644 --- a/packages/framework/client-logger/fluid-telemetry/CHANGELOG.md +++ b/packages/framework/client-logger/fluid-telemetry/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/fluid-telemetry +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/data-object-base/CHANGELOG.md b/packages/framework/data-object-base/CHANGELOG.md index 00095fca62a6..a6f4dce97171 100644 --- a/packages/framework/data-object-base/CHANGELOG.md +++ b/packages/framework/data-object-base/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/data-object-base +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/dds-interceptions/CHANGELOG.md b/packages/framework/dds-interceptions/CHANGELOG.md index ff2c873f27f2..58471d153880 100644 --- a/packages/framework/dds-interceptions/CHANGELOG.md +++ b/packages/framework/dds-interceptions/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/dds-interceptions +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/fluid-framework/CHANGELOG.md b/packages/framework/fluid-framework/CHANGELOG.md index 4e191703fe54..1a4ae74cca21 100644 --- a/packages/framework/fluid-framework/CHANGELOG.md +++ b/packages/framework/fluid-framework/CHANGELOG.md @@ -1,5 +1,306 @@ # fluid-framework +## 2.5.0 + +### Minor Changes + +- ✨ New! Alpha APIs for tree data import and export ([#22566](https://github.com/microsoft/FluidFramework/pull/22566)) [18a23e8816](https://github.com/microsoft/FluidFramework/commit/18a23e8816467f2ed0c9d6d8637b70d99aa48b7a) + + A collection of new `@alpha` APIs for importing and exporting tree content and schema from SharedTrees has been added to `TreeAlpha`. + These include import and export APIs for `VerboseTree`, `ConciseTree` and compressed tree formats. + + `TreeAlpha.create` is also added to allow constructing trees with a more general API instead of having to use the schema constructor directly (since that doesn't handle polymorphic roots, or non-schema aware code). + + The function `independentInitializedView` has been added to provide a way to combine data from the existing `extractPersistedSchema` and new `TreeAlpha.exportCompressed` back into a `TreeView` in a way which can support safely importing data which could have been exported with a different schema. + This allows replicating the schema evolution process for Fluid documents stored in a service, but entirely locally without involving any collaboration services. + `independentView` has also been added, which is similar but handles the case of creating a new view without an existing schema or tree. + + Together these APIs address several use-cases: + + 1. Using SharedTree as an in-memory non-collaborative datastore. + 2. Importing and exporting data from a SharedTree to and from other services or storage locations (such as locally saved files). + 3. Testing various scenarios without relying on a service. + 4. Using SharedTree libraries for just the schema system and encode/decode support. + +- Compilation no longer fails when building with TypeScript's libCheck option ([#22923](https://github.com/microsoft/FluidFramework/pull/22923)) [a1b4cdd45e](https://github.com/microsoft/FluidFramework/commit/a1b4cdd45ee9812e2598ab8d2854333d26a06eb4) + + When compiling code using Fluid Framework with TypeScript's `libCheck` (meaning without [skipLibCheck](https://www.typescriptlang.org/tsconfig/#skipLibCheck)), two compile errors can be encountered: + + ``` + > tsc + + node_modules/@fluidframework/merge-tree/lib/client.d.ts:124:18 - error TS2368: Type parameter name cannot be 'undefined'. + + 124 walkSegments(handler: ISegmentAction, start?: number, end?: number, accum?: undefined, splitRange?: boolean): void; + ~~~~~~~~~ + + node_modules/@fluidframework/tree/lib/util/utils.d.ts:5:29 - error TS7016: Could not find a declaration file for module '@ungap/structured-clone'. 'node_modules/@ungap/structured-clone/esm/index.js' implicitly has an 'any' type. + Try `npm i --save-dev @types/ungap__structured-clone` if it exists or add a new declaration (.d.ts) file containing `declare module '@ungap/structured-clone';` + + 5 import structuredClone from "@ungap/structured-clone"; + ~~~~~~~~~~~~~~~~~~~~~~~~~ + ``` + + The first error impacts projects using TypeScript 5.5 or greater and either of the `fluid-framework` or `@fluidframework/merge-tree` packages. + The second error impacts projects using the `noImplicitAny` tsconfig setting and the `fluid-framework` or `@fluidframework/tree` packages. + + Both errors have been fixed. + + This should allow `libCheck` to be reenabled in any impacted projects. + +- A `.schema` member has been added to the alpha enum schema APIs ([#22874](https://github.com/microsoft/FluidFramework/pull/22874)) [645b9ed695](https://github.com/microsoft/FluidFramework/commit/645b9ed69540338843ad14f1144ff4d1f80d6f09) + + The return value from `@alpha` APIs `enumFromStrings` and `adaptEnum` now has a property named `schema` which can be used to include it in a parent schema. + This replaces the use of `typedObjectValues` which has been removed. + + Use of these APIs now look like: + + ```typescript + const schemaFactory = new SchemaFactory("com.myApp"); + const Mode = enumFromStrings(schemaFactory, ["Fun", "Cool"]); + type Mode = NodeFromSchema<(typeof Mode.schema)[number]>; + class Parent extends schemaFactory.object("Parent", { mode: Mode.schema }) {} + ``` + + Previously, the last two lines would have been: + + ```typescript + type Mode = NodeFromSchema<(typeof Mode)[keyof typeof Mode]>; // This no longer works + class Parent extends schemaFactory.object("Parent", { mode: typedObjectValues(Mode) }) {} // This no longer works + ``` + +- TreeNodeSchemaClass now specifies its TNode as TreeNode ([#22938](https://github.com/microsoft/FluidFramework/pull/22938)) [b669a6efdb](https://github.com/microsoft/FluidFramework/commit/b669a6efdba685c71897cade4f907304f1a73910) + + `TreeNodeSchemaClass`'s `TNode` parameter was formerly `unknown` and has been improved to be the more specific `TreeNode | TreeLeafValue`. + This change further narrows this to `TreeNode`. + + `TreeNodeSchema`, which is more commonly used, still permits `TNode` of `TreeNode | TreeLeafValue`, so this change should have little impact on most code, but in some edge cases it can result in slightly more specific typing. + +- Array and Map nodes can now be explicitly constructed with undefined or no argument ([#22946](https://github.com/microsoft/FluidFramework/pull/22946)) [176335ce88](https://github.com/microsoft/FluidFramework/commit/176335ce88d005159819c559b445a1655ec429d5) + + The input parameter to the constructor and `create` methods of Array and Map nodes is now optional. When the optional parameter is omitted, an empty map or array will be created. + + #### Examples + + ```typescript + class Schema extends schemaFactory.array("x", schemaFactory.number) {} + + // Existing support + const _fromIterable: Schema = new Schema([]); + + // New + const _fromUndefined: Schema = new Schema(undefined); + const _fromNothing: Schema = new Schema(); + ``` + + ```typescript + class Schema extends schemaFactory.map("x", schemaFactory.number) {} + + // Existing support + const _fromIterable: Schema = new Schema([]); + const _fromObject: Schema = new Schema({}); + + // New + const _fromUndefined: Schema = new Schema(undefined); + const _fromNothing: Schema = new Schema(); + ``` + + ```typescript + const Schema = schemaFactory.array(schemaFactory.number); + type Schema = NodeFromSchema; + + // Existing support + const _fromIterable: Schema = Schema.create([]); + + // New + const _fromUndefined: Schema = Schema.create(undefined); + const _fromNothing: Schema = Schema.create(); + ``` + + ```typescript + const Schema = schemaFactory.map(schemaFactory.number); + type Schema = NodeFromSchema; + // Existing support + const _fromIterable: Schema = Schema.create([]); + const _fromObject: Schema = Schema.create({}); + + // New + const _fromUndefined: Schema = Schema.create(undefined); + const _fromNothing: Schema = Schema.create(); + ``` + +- Typing has been improved when an exact TypeScript type for a schema is not provided ([#22763](https://github.com/microsoft/FluidFramework/pull/22763)) [05197d6d3f](https://github.com/microsoft/FluidFramework/commit/05197d6d3f0189ecd61fd74ec55f6836e6797249) + + The Tree APIs are designed to be used in a strongly typed way, with the full TypeScript type for the schema always being provided. + Due to limitations of the TypeScript language, there was no practical way to prevent less descriptive types, like `TreeNodeSchema` or `ImplicitFieldSchema`, from being used where the type of a specific schema was intended. + Code which does this will encounter several issues with tree APIs, and this change fixes some of those issues. + This change mainly fixes that `NodeFromSchema` used to return `unknown` and now returns `TreeNode | TreeLeafValue`. + + This change by itself seems mostly harmless, as it just improves the precision of the typing in this one edge case. + Unfortunately, there are other typing bugs which complicate the situation, causing APIs for inserting data into the tree to also behave poorly when given non-specific types like `TreeNodeSchema`. + These APIs include cases like `TreeView.initialize`. + + This incorrectly allowed some usage like taking a type-erased schema and initial tree pair, creating a view of type `TreeView`, then initializing it. + With the typing being partly fixed, some unsafe inputs are still allowed when trying to initialize such a view, but some are now prevented. + + This use-case of modifying trees in code not that is not strongly typed by the exact schema was not intended to be supported. + Despite this, it did mostly work in some cases, and has some real use-cases (like tests looping over test data consisting of pairs of schema and initial trees). + To help mitigate the impact of this change, some experimental `@alpha` APIs have been introduced to help address these previously unsupported but somewhat working use-cases. + + Before this change: + + ```typescript + import { TinyliciousClient } from "@fluidframework/tinylicious-client"; + import { + SchemaFactory, + SharedTree, + TreeViewConfiguration, + type TreeNodeSchema, + } from "fluid-framework"; + + // Create a ITree instance + const tinyliciousClient = new TinyliciousClient(); + const { container } = await tinyliciousClient.createContainer({ initialObjects: {} }, "2"); + const tree = await container.create(SharedTree); + + const schemaFactory = new SchemaFactory("demo"); + + // Bad: This loses the schema aware type information. `: TreeNodeSchema` should be omitted to preserve strong typing. + const schema: TreeNodeSchema = schemaFactory.array(schemaFactory.number); + const config = new TreeViewConfiguration({ schema }); + + // This view is typed as `TreeView`, which does not work well since it's missing the actual schema type information. + const view = tree.viewWith(config); + // Root is typed as `unknown` allowing invalid assignment operations. + view.root = "invalid"; + view.root = {}; + // Since all assignments are allowed, valid ones still work: + view.root = []; + ``` + + After this change: + + ```typescript + // Root is now typed as `TreeNode | TreeLeafValue`, still allowing some invalid assignment operations. + // In the future this should be prevented as well, since the type of the setter in this case should be `never`. + view.root = "invalid"; + // This no longer compiles: + view.root = {}; + // This also no longer compiles despite being valid at runtime: + view.root = []; + ``` + + For code that wants to continue using an unsafe API, which can result in runtime errors if the data does not follow the schema, a new alternative has been added to address this use-case. A special type `UnsafeUnknownSchema` can now be used to opt into allowing all valid trees to be provided. + Note that this leaves ensuring the data is in schema up to the user. + For now these adjusted APIs can be accessed by casting the view to `TreeViewAlpha`. + If stabilized, this option will be added to `TreeView` directly. + + ```typescript + const viewAlpha = view as TreeViewAlpha; + viewAlpha.initialize([]); + viewAlpha.root = []; + ``` + + Additionally, this seems to have negatively impacted co-recursive schema which declare a co-recursive array as the first schema in the co-recursive cycle. + Like the TypeScript language our schema system is built on, we don't guarantee exactly which recursive type will compile, but will do our best to ensure useful recursive schema can be created easily. + In this case a slight change may be required to some recursive schema to get them to compile again: + + For example this schema used to compile: + + ```typescript + class A extends sf.arrayRecursive("A", [() => B]) {} + { + type _check = ValidateRecursiveSchema; + } + // Used to work, but breaks in this update. + class B extends sf.object("B", { x: A }) {} + ``` + + But now you must use the recursive functions like `objectRecursive` for types which are co-recursive with an array in some cases. + In our example, it can be fixed as follows: + + ```typescript + class A extends sf.arrayRecursive("A", [() => B]) {} + { + type _check = ValidateRecursiveSchema; + } + // Fixed corecursive type, using "Recursive" method variant to declare schema. + class B extends sf.objectRecursive("B", { x: A }) {} + { + type _check = ValidateRecursiveSchema; + } + ``` + + Note: while the following pattern may still compile, we recommend using the previous pattern instead since the one below may break in the future. + + ```typescript + class B extends sf.objectRecursive("B", { x: [() => A] }) {} + { + type _check = ValidateRecursiveSchema; + } + // Works, for now, but not recommended. + class A extends sf.array("A", B) {} + ``` + +- The strictness of input tree types when inexact schemas are provided has been improved ([#22874](https://github.com/microsoft/FluidFramework/pull/22874)) [645b9ed695](https://github.com/microsoft/FluidFramework/commit/645b9ed69540338843ad14f1144ff4d1f80d6f09) + + Consider the following code where the type of the schema is not exactly specified: + + ```typescript + const schemaFactory = new SchemaFactory("com.myApp"); + class A extends schemaFactory.object("A", {}) {} + class B extends schemaFactory.array("B", schemaFactory.number) {} + + // Gives imprecise type (typeof A | typeof B)[]. The desired precise type here is [typeof A, typeof B]. + const schema = [A, B]; + + const config = new TreeViewConfiguration({ schema }); + const view = sharedTree.viewWith(config); + + // Does not compile since setter for root is typed `never` due to imprecise schema. + view.root = []; + ``` + + The assignment of `view.root` is disallowed since a schema with type `(typeof A | typeof B)[]` could be any of: + + ```typescript + const schema: (typeof A | typeof B)[] = [A]; + ``` + + ```typescript + const schema: (typeof A | typeof B)[] = [B]; + ``` + + ```typescript + const schema: (typeof A | typeof B)[] = [A, B]; + ``` + + The attempted assignment is not compatible with all of these (specifically it is incompatible with the first one) so performing this assignment could make the tree out of schema and is thus disallowed. + + To avoid this ambiguity and capture the precise type of `[typeof A, typeof B]`, use one of the following patterns: + + ```typescript + const schema = [A, B] as const; + const config = new TreeViewConfiguration({ schema }); + ``` + + ```typescript + const config = new TreeViewConfiguration({ schema: [A, B] }); + ``` + + To help update existing code which accidentally depended on this bug, an `@alpha` API `unsafeArrayToTuple` has been added. + Many usages of this API will produce incorrectly typed outputs. + However, when given `AllowedTypes` arrays which should not contain any unions, but that were accidentally flattened to a single union, it can fix them: + + ```typescript + // Gives imprecise type (typeof A | typeof B)[] + const schemaBad = [A, B]; + // Fixes the type to be [typeof A, typeof B] + const schema = unsafeArrayToTuple(schemaBad); + + const config = new TreeViewConfiguration({ schema }); + ``` + ## 2.4.0 ### Minor Changes diff --git a/packages/framework/fluid-static/CHANGELOG.md b/packages/framework/fluid-static/CHANGELOG.md index 243eddd86f7c..c1af68c1773a 100644 --- a/packages/framework/fluid-static/CHANGELOG.md +++ b/packages/framework/fluid-static/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/fluid-static +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/oldest-client-observer/CHANGELOG.md b/packages/framework/oldest-client-observer/CHANGELOG.md index 8b34acd90f27..45a79797c0b3 100644 --- a/packages/framework/oldest-client-observer/CHANGELOG.md +++ b/packages/framework/oldest-client-observer/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/oldest-client-observer +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/presence/CHANGELOG.md b/packages/framework/presence/CHANGELOG.md index ca0813e24fe1..4eb2ac493ec3 100644 --- a/packages/framework/presence/CHANGELOG.md +++ b/packages/framework/presence/CHANGELOG.md @@ -1,5 +1,15 @@ # @fluid-experimental/presence +## 2.5.0 + +### Minor Changes + +- ISessionClient now exposes connectivity information ([#22973](https://github.com/microsoft/FluidFramework/pull/22973)) [6096657620](https://github.com/microsoft/FluidFramework/commit/609665762050b5f3baf737d752fc87ef962b3a21) + + 1. `ISessionClient` has a new method, `getConnectionStatus()`, with two possible states: `Connected` and `Disconnected`. + 2. `ISessionClient`'s `connectionId()` member has been renamed to `getConnectionId()` for consistency. + 3. `IPresence` event `attendeeDisconnected` is now implemented. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/request-handler/CHANGELOG.md b/packages/framework/request-handler/CHANGELOG.md index 06c7371d59c2..41fb3d5ef4c1 100644 --- a/packages/framework/request-handler/CHANGELOG.md +++ b/packages/framework/request-handler/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/request-handler +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/synthesize/CHANGELOG.md b/packages/framework/synthesize/CHANGELOG.md index 78726b106fc7..13c35794701d 100644 --- a/packages/framework/synthesize/CHANGELOG.md +++ b/packages/framework/synthesize/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/synthesize +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/framework/undo-redo/CHANGELOG.md b/packages/framework/undo-redo/CHANGELOG.md index 6cb7fbd9188b..aa989fa97931 100644 --- a/packages/framework/undo-redo/CHANGELOG.md +++ b/packages/framework/undo-redo/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/undo-redo +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/loader/container-loader/CHANGELOG.md b/packages/loader/container-loader/CHANGELOG.md index bdacc5b6a743..730b599edf9c 100644 --- a/packages/loader/container-loader/CHANGELOG.md +++ b/packages/loader/container-loader/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/container-loader +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/loader/driver-utils/CHANGELOG.md b/packages/loader/driver-utils/CHANGELOG.md index 055a43a57f15..e4688208c824 100644 --- a/packages/loader/driver-utils/CHANGELOG.md +++ b/packages/loader/driver-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/driver-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/loader/test-loader-utils/CHANGELOG.md b/packages/loader/test-loader-utils/CHANGELOG.md index c3bd79bf7e76..285078776848 100644 --- a/packages/loader/test-loader-utils/CHANGELOG.md +++ b/packages/loader/test-loader-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-private/test-loader-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/runtime/container-runtime-definitions/CHANGELOG.md b/packages/runtime/container-runtime-definitions/CHANGELOG.md index 36b7bcdcf4a7..2e476d16d694 100644 --- a/packages/runtime/container-runtime-definitions/CHANGELOG.md +++ b/packages/runtime/container-runtime-definitions/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/container-runtime-definitions +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/runtime/container-runtime/CHANGELOG.md b/packages/runtime/container-runtime/CHANGELOG.md index a1d14103893c..e53b1494bbe2 100644 --- a/packages/runtime/container-runtime/CHANGELOG.md +++ b/packages/runtime/container-runtime/CHANGELOG.md @@ -1,5 +1,23 @@ # @fluidframework/container-runtime +## 2.5.0 + +### Minor Changes + +- Signal telemetry events details ([#22804](https://github.com/microsoft/FluidFramework/pull/22804)) [e6566f6358](https://github.com/microsoft/FluidFramework/commit/e6566f6358551b5e579637de6c111d42281f7716) + + Properties of `eventName`s beginning "fluid:telemetry:ContainerRuntime:Signal" are updated to use `details` for all event specific information. Additional per-event changes: + + - SignalLatency: shorten names now that data is packed into details. Renames: + - `signalsSent` -> `sent` + - `signalsLost` -> `lost` + - `outOfOrderSignals` -> `outOfOrder` + - SignalLost/SignalOutOfOrder: rename `trackingSequenceNumber` to `expectedSequenceNumber` + - SignalOutOfOrder: rename `type` to `contentsType` and only emit it some of the time + + > [!IMPORTANT] + > Reminder: the naming and structure of telemetry events are not considered a part of the public API and may change at any time. + ## 2.4.0 ### Minor Changes diff --git a/packages/runtime/datastore-definitions/CHANGELOG.md b/packages/runtime/datastore-definitions/CHANGELOG.md index 67b074a146dc..4e458dad2658 100644 --- a/packages/runtime/datastore-definitions/CHANGELOG.md +++ b/packages/runtime/datastore-definitions/CHANGELOG.md @@ -1,5 +1,23 @@ # @fluidframework/datastore-definitions +## 2.5.0 + +### Minor Changes + +- The op event on IFluidDataStoreRuntimeEvents and IContainerRuntimeBaseEvents is emitted at a different time ([#22840](https://github.com/microsoft/FluidFramework/pull/22840)) [2e5b969d3a](https://github.com/microsoft/FluidFramework/commit/2e5b969d3a28b05da1502d521b725cee66e36a15) + + Previously, in versions 2.4 and below, the `op` event was emitted immediately after an op was processed and before the next op was processed. + + In versions 2.5.0 and beyond, the `op` event will be emitted after an op is processed, but it may not be immediate. In addition, other ops in a + batch may be processed before the op event is emitted for a particular op. + +- The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now deprecated ([#22840](https://github.com/microsoft/FluidFramework/pull/22840)) [2e5b969d3a](https://github.com/microsoft/FluidFramework/commit/2e5b969d3a28b05da1502d521b725cee66e36a15) + + The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now + deprecated. It has been replaced with a new function `processMessages`, which will be called to process multiple messages instead of a single one on the channel. This is part of a feature called "Op bunching", where contiguous ops of a given type and to a given data store / DDS are bunched and sent together for processing. + + Implementations of `IFluidDataStoreChannel` and `IDeltaHandler` must now also implement `processMessages`. For reference implementations, see `FluidDataStoreRuntime::processMessages` and `SharedObjectCore::attachDeltaHandler`. + ## 2.4.0 Dependency updates only. diff --git a/packages/runtime/datastore/CHANGELOG.md b/packages/runtime/datastore/CHANGELOG.md index 7f1db9b8499e..b053b8ba50a3 100644 --- a/packages/runtime/datastore/CHANGELOG.md +++ b/packages/runtime/datastore/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/datastore +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/runtime/id-compressor/CHANGELOG.md b/packages/runtime/id-compressor/CHANGELOG.md index 462bbc6827f6..28c3ebefdafb 100644 --- a/packages/runtime/id-compressor/CHANGELOG.md +++ b/packages/runtime/id-compressor/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/id-compressor +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/runtime/runtime-definitions/CHANGELOG.md b/packages/runtime/runtime-definitions/CHANGELOG.md index 1b04e8d27622..04c143e6cfd8 100644 --- a/packages/runtime/runtime-definitions/CHANGELOG.md +++ b/packages/runtime/runtime-definitions/CHANGELOG.md @@ -1,5 +1,23 @@ # @fluidframework/runtime-definitions +## 2.5.0 + +### Minor Changes + +- The op event on IFluidDataStoreRuntimeEvents and IContainerRuntimeBaseEvents is emitted at a different time ([#22840](https://github.com/microsoft/FluidFramework/pull/22840)) [2e5b969d3a](https://github.com/microsoft/FluidFramework/commit/2e5b969d3a28b05da1502d521b725cee66e36a15) + + Previously, in versions 2.4 and below, the `op` event was emitted immediately after an op was processed and before the next op was processed. + + In versions 2.5.0 and beyond, the `op` event will be emitted after an op is processed, but it may not be immediate. In addition, other ops in a + batch may be processed before the op event is emitted for a particular op. + +- The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now deprecated ([#22840](https://github.com/microsoft/FluidFramework/pull/22840)) [2e5b969d3a](https://github.com/microsoft/FluidFramework/commit/2e5b969d3a28b05da1502d521b725cee66e36a15) + + The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now + deprecated. It has been replaced with a new function `processMessages`, which will be called to process multiple messages instead of a single one on the channel. This is part of a feature called "Op bunching", where contiguous ops of a given type and to a given data store / DDS are bunched and sent together for processing. + + Implementations of `IFluidDataStoreChannel` and `IDeltaHandler` must now also implement `processMessages`. For reference implementations, see `FluidDataStoreRuntime::processMessages` and `SharedObjectCore::attachDeltaHandler`. + ## 2.4.0 Dependency updates only. diff --git a/packages/runtime/runtime-utils/CHANGELOG.md b/packages/runtime/runtime-utils/CHANGELOG.md index cf229433d967..df7322339220 100644 --- a/packages/runtime/runtime-utils/CHANGELOG.md +++ b/packages/runtime/runtime-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/runtime-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/runtime/test-runtime-utils/CHANGELOG.md b/packages/runtime/test-runtime-utils/CHANGELOG.md index 8f7b732b9062..693e67d8144e 100644 --- a/packages/runtime/test-runtime-utils/CHANGELOG.md +++ b/packages/runtime/test-runtime-utils/CHANGELOG.md @@ -1,5 +1,16 @@ # @fluidframework/test-runtime-utils +## 2.5.0 + +### Minor Changes + +- The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now deprecated ([#22840](https://github.com/microsoft/FluidFramework/pull/22840)) [2e5b969d3a](https://github.com/microsoft/FluidFramework/commit/2e5b969d3a28b05da1502d521b725cee66e36a15) + + The process function on IFluidDataStoreChannel, IDeltaHandler, MockFluidDataStoreRuntime and MockDeltaConnection is now + deprecated. It has been replaced with a new function `processMessages`, which will be called to process multiple messages instead of a single one on the channel. This is part of a feature called "Op bunching", where contiguous ops of a given type and to a given data store / DDS are bunched and sent together for processing. + + Implementations of `IFluidDataStoreChannel` and `IDeltaHandler` must now also implement `processMessages`. For reference implementations, see `FluidDataStoreRuntime::processMessages` and `SharedObjectCore::attachDeltaHandler`. + ## 2.4.0 Dependency updates only. diff --git a/packages/service-clients/azure-client/CHANGELOG.md b/packages/service-clients/azure-client/CHANGELOG.md index 241b7106925f..4f7fdaa1d214 100644 --- a/packages/service-clients/azure-client/CHANGELOG.md +++ b/packages/service-clients/azure-client/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/azure-client +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/service-clients/end-to-end-tests/azure-client/CHANGELOG.md b/packages/service-clients/end-to-end-tests/azure-client/CHANGELOG.md index a657242dfa8c..c56bf91b38f4 100644 --- a/packages/service-clients/end-to-end-tests/azure-client/CHANGELOG.md +++ b/packages/service-clients/end-to-end-tests/azure-client/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/azure-end-to-end-tests +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/service-clients/end-to-end-tests/odsp-client/CHANGELOG.md b/packages/service-clients/end-to-end-tests/odsp-client/CHANGELOG.md index d4b728da36ca..356cbadf67d9 100644 --- a/packages/service-clients/end-to-end-tests/odsp-client/CHANGELOG.md +++ b/packages/service-clients/end-to-end-tests/odsp-client/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/odsp-end-to-end-tests +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/service-clients/odsp-client/CHANGELOG.md b/packages/service-clients/odsp-client/CHANGELOG.md index fb08a96c1495..e44140f336ff 100644 --- a/packages/service-clients/odsp-client/CHANGELOG.md +++ b/packages/service-clients/odsp-client/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-experimental/odsp-client +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/service-clients/tinylicious-client/CHANGELOG.md b/packages/service-clients/tinylicious-client/CHANGELOG.md index 20038ae75c5a..798cefeb1e30 100644 --- a/packages/service-clients/tinylicious-client/CHANGELOG.md +++ b/packages/service-clients/tinylicious-client/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/tinylicious-client +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/functional-tests/CHANGELOG.md b/packages/test/functional-tests/CHANGELOG.md index ea760de88dac..6d87748c92ea 100644 --- a/packages/test/functional-tests/CHANGELOG.md +++ b/packages/test/functional-tests/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/functional-tests +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/local-server-tests/CHANGELOG.md b/packages/test/local-server-tests/CHANGELOG.md index a613e258415e..75c9d52c3054 100644 --- a/packages/test/local-server-tests/CHANGELOG.md +++ b/packages/test/local-server-tests/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/local-server-tests +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/mocha-test-setup/CHANGELOG.md b/packages/test/mocha-test-setup/CHANGELOG.md index 55df7adda72d..7b6187f3abf1 100644 --- a/packages/test/mocha-test-setup/CHANGELOG.md +++ b/packages/test/mocha-test-setup/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/mocha-test-setup +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/snapshots/CHANGELOG.md b/packages/test/snapshots/CHANGELOG.md index 7911806bf31e..14e0ae9ab2d6 100644 --- a/packages/test/snapshots/CHANGELOG.md +++ b/packages/test/snapshots/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/test-snapshots +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/stochastic-test-utils/CHANGELOG.md b/packages/test/stochastic-test-utils/CHANGELOG.md index 0f3119ed78d1..7d4213e0fcbd 100644 --- a/packages/test/stochastic-test-utils/CHANGELOG.md +++ b/packages/test/stochastic-test-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-private/stochastic-test-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/test-driver-definitions/CHANGELOG.md b/packages/test/test-driver-definitions/CHANGELOG.md index 779b3c835851..996e35a22ceb 100644 --- a/packages/test/test-driver-definitions/CHANGELOG.md +++ b/packages/test/test-driver-definitions/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/test-driver-definitions +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/test-drivers/CHANGELOG.md b/packages/test/test-drivers/CHANGELOG.md index 30946c64372e..1e506a2b48b6 100644 --- a/packages/test/test-drivers/CHANGELOG.md +++ b/packages/test/test-drivers/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-private/test-drivers +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/test-end-to-end-tests/CHANGELOG.md b/packages/test/test-end-to-end-tests/CHANGELOG.md index fdb953241450..3c3c3d1d7f93 100644 --- a/packages/test/test-end-to-end-tests/CHANGELOG.md +++ b/packages/test/test-end-to-end-tests/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-private/test-end-to-end-tests +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/test-pairwise-generator/CHANGELOG.md b/packages/test/test-pairwise-generator/CHANGELOG.md index 7221723c2c9a..437506df34f4 100644 --- a/packages/test/test-pairwise-generator/CHANGELOG.md +++ b/packages/test/test-pairwise-generator/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-private/test-pairwise-generator +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/test-service-load/CHANGELOG.md b/packages/test/test-service-load/CHANGELOG.md index 02fe47c5fae8..f49a2eb7f985 100644 --- a/packages/test/test-service-load/CHANGELOG.md +++ b/packages/test/test-service-load/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/test-service-load +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/test-utils/CHANGELOG.md b/packages/test/test-utils/CHANGELOG.md index 51fdbad9e3b5..af691cf3045b 100644 --- a/packages/test/test-utils/CHANGELOG.md +++ b/packages/test/test-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/test-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/test/test-version-utils/CHANGELOG.md b/packages/test/test-version-utils/CHANGELOG.md index 8b2309729c79..52f2b0699a2f 100644 --- a/packages/test/test-version-utils/CHANGELOG.md +++ b/packages/test/test-version-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-private/test-version-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/tools/changelog-generator-wrapper/CHANGELOG.md b/packages/tools/changelog-generator-wrapper/CHANGELOG.md index 942e13b093e0..f5145542b32c 100644 --- a/packages/tools/changelog-generator-wrapper/CHANGELOG.md +++ b/packages/tools/changelog-generator-wrapper/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-private/changelog-generator-wrapper +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/tools/devtools/devtools-browser-extension/CHANGELOG.md b/packages/tools/devtools/devtools-browser-extension/CHANGELOG.md index 1324942a7d4a..904b8ace830b 100644 --- a/packages/tools/devtools/devtools-browser-extension/CHANGELOG.md +++ b/packages/tools/devtools/devtools-browser-extension/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/devtools-browser-extension +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/tools/devtools/devtools-core/CHANGELOG.md b/packages/tools/devtools/devtools-core/CHANGELOG.md index 3d98da480eb4..23df62c0fac5 100644 --- a/packages/tools/devtools/devtools-core/CHANGELOG.md +++ b/packages/tools/devtools/devtools-core/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/devtools-core +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/tools/devtools/devtools-example/CHANGELOG.md b/packages/tools/devtools/devtools-example/CHANGELOG.md index 5fa70b91dded..3b255c556513 100644 --- a/packages/tools/devtools/devtools-example/CHANGELOG.md +++ b/packages/tools/devtools/devtools-example/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-example/devtools-example +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/tools/devtools/devtools-view/CHANGELOG.md b/packages/tools/devtools/devtools-view/CHANGELOG.md index fe92f7ab0662..dfd796abf167 100644 --- a/packages/tools/devtools/devtools-view/CHANGELOG.md +++ b/packages/tools/devtools/devtools-view/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/devtools-view +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/tools/devtools/devtools/CHANGELOG.md b/packages/tools/devtools/devtools/CHANGELOG.md index 33243a8e1fb1..36256bd181de 100644 --- a/packages/tools/devtools/devtools/CHANGELOG.md +++ b/packages/tools/devtools/devtools/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/devtools +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/tools/fetch-tool/CHANGELOG.md b/packages/tools/fetch-tool/CHANGELOG.md index 9c16c55adb72..23142b0c1e81 100644 --- a/packages/tools/fetch-tool/CHANGELOG.md +++ b/packages/tools/fetch-tool/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-tools/fetch-tool +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/tools/fluid-runner/CHANGELOG.md b/packages/tools/fluid-runner/CHANGELOG.md index beea26a5ce34..61f5d7e13bd9 100644 --- a/packages/tools/fluid-runner/CHANGELOG.md +++ b/packages/tools/fluid-runner/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/fluid-runner +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/tools/replay-tool/CHANGELOG.md b/packages/tools/replay-tool/CHANGELOG.md index 339037073c50..09f3ccdbeca1 100644 --- a/packages/tools/replay-tool/CHANGELOG.md +++ b/packages/tools/replay-tool/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-internal/replay-tool +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/utils/odsp-doclib-utils/CHANGELOG.md b/packages/utils/odsp-doclib-utils/CHANGELOG.md index 174064bb06e4..4947b4aa86d0 100644 --- a/packages/utils/odsp-doclib-utils/CHANGELOG.md +++ b/packages/utils/odsp-doclib-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/odsp-doclib-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/utils/telemetry-utils/CHANGELOG.md b/packages/utils/telemetry-utils/CHANGELOG.md index 22fa27813894..f7406bcca428 100644 --- a/packages/utils/telemetry-utils/CHANGELOG.md +++ b/packages/utils/telemetry-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/telemetry-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/packages/utils/tool-utils/CHANGELOG.md b/packages/utils/tool-utils/CHANGELOG.md index d10d9da5012e..e13246adc64e 100644 --- a/packages/utils/tool-utils/CHANGELOG.md +++ b/packages/utils/tool-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluidframework/tool-utils +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only. diff --git a/tools/markdown-magic/CHANGELOG.md b/tools/markdown-magic/CHANGELOG.md index 14ad49ecc2cc..2acc6502870a 100644 --- a/tools/markdown-magic/CHANGELOG.md +++ b/tools/markdown-magic/CHANGELOG.md @@ -1,5 +1,9 @@ # @fluid-tools/markdown-magic +## 2.5.0 + +Dependency updates only. + ## 2.4.0 Dependency updates only.