## Description
Fixes several bugs/inconsistencies in `allowsRepoSuperset` and
`isRepoSuperset` and adds unit tests for this behavior.
## Bugs
1. Forbidden fields should not be convertible to required fields, but
`isRepoSuperset` allowed this conversion.
2. The production codepath did not correctly handle queries between
value schema nodes and other types of nodes (without the added code in
`comparison.ts`, one could hit `0x893` directly below)
3. `isRepoSuperset` did not previously permit addition of new node kinds
## Context
`allowsRepoSuperset` is the current implementation used by the
production codepath to check compatibility between a document's stored
and view schema. There is ongoing work on the schema evolution front to
transition this codepath to one which is more flexible / easily
debugged, which is the logic in `discrepancies.ts`. The general
philosophy behind `discrepancies.ts` is to split the compatibility check
into two parts: one bit of code which detects all differences between
view and stored schema, and another bit of code which decides if any of
those differences should prohibit document operations (read, write,
upgrade schema, etc). This PR helps bring the newer implementation to
parity with what we have today.
---------
Co-authored-by: Abram Sanderson <absander@microsoft.com>
## Description
Removes the `MockLogger` class from the `@alpha+@legacy` API surface. It
has been deprecated for external use since 2024-06-18.
## Breaking Changes
- `MockLogger` is now removed from the `@alpha+@legacy` API surface,
becoming only `@internal`.
Fixes:
[AB#6959](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/6959)
## Description
Yang Gao to detail the specifics and data/incident information in the
Feature Description
Optimize getDelta / internal service calls to reduce load on Alfred &
Riddler and minimize impact on customer traffic
FRS has observed some unexpected getDeltas calls. If the client can send
FRS the reasons why the calls were made, it can greatly help the
investigations. One example is that we have seen some getDeltas calls
trying to read very old ops, which were generated tens of days ago, and
it's hard for us to understand what triggered these calls.
## Reviewer Guidance
Let me know if there's a better way to send the reason to AFR.
The changelog for build-tools is very outdated, so I manually
regenerated the entries for releases 0.7.0 - .0.50.0.
Steps:
```shell
git checkout build-tools_v0.48.0
pnpm changelog
```
I then stashed the changes and repeated the steps for each minor
release.
A number of our "example" packages are structured such that their tests
live under "/tests". Our eslint config previously assumed that tests
would live under "**/test". This PR updates our test pattern lists to
allow "**/tests".
I am personally of the opinion that we should clean up usages of "tests"
and be consistent with our test directory naming across the repo. But
until such a time as that has been done, the eslint configs will now
better support the _current_ state of the repo.
This PR also updates the pattern used for allowing dev dependency use in
tests to be a bit simpler (see updated reports for reference).
[AB#23035](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/23035)
## Description
Add chngeset for removing the inbound and outbound queues on
iDeltamanager. Refer to this PR for extra details:
https://github.com/microsoft/FluidFramework/pull/22282
---------
Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
Co-authored-by: Tyler Butler <tyler@tylerbutler.com>
no-unchecked-record-access was catching defined properties on types and
interfaces that extended a type or interface with an index signature, I
have changed to rule so it should error only on types or interfaces
where the property being accessed is an index signature and not defined
```ts
type IndexSignatureType = { [key: string]: string };
interface ExtendedIndexSignatureType extends IndexSignatureType {
a: string;
}
const extendedIndexedRecordOfStrings: ExtendedIndexSignatureType = { a: "hello", b: "goodbye" };
extendedIndexedRecordOfStrings.a.length; // ok: Accessing string property of extendedIndexedRecordOfStrings is allowed
extendedIndexedRecordOfStrings.b.length; // defect: Accessing length of index property 'b', but 'b' might not be present
```
## Description
[AB#7202](https://dev.azure.com/fluidframework/internal/_workitems/edit/7202)
1.) Remove deprecated inbound and outbound queues on IDeltaManager.
2.) Move them to IDeltaManagerFull so that internal Fluid layers can
still use it but not the apps.
---------
Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
Co-authored-by: Joshua Smithrud <54606601+Josmithr@users.noreply.github.com>
Co-authored-by: Tyler Butler <tyler@tylerbutler.com>
Over the years eslint and plugins have gradually deprecated many of
their formatting-related rules in favor of dedicated formatting tools
like biome and prettier. Since we already have a dedicated formatting
tool, this change disables the formatting related rules we use. All of
them have been removed in recent eslint and typescript-eslint releases,
and are unnecessary since we use biome or prettier for formatting.
Related to
[AB#9083](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/9083).
## Description
Removes the deprecated `@internal` type
`ITaggedTelemetryPropertyTypeExt`, replacing its uses with the
recommendation from the deprecation message,
`Tagged<TelemetryEventPropertyTypeExt>`.
As part of ongoing improvements, several exposed internals that are
unnecessary for any supported scenarios and could lead to errors if used
have been removed. Since direct usage would likely result in errors, it
is not expected that these changes will impact any Fluid Framework
consumers.
Removed types:
- IMergeTreeTextHelper
- MergeNode
- ObliterateInfo
- PropertiesManager
- PropertiesRollback
- SegmentGroup
- SegmentGroupCollection
In addition to removing the above types, their exposures have also been
removed from interfaces and their implementations: `ISegment`,
`ReferencePosition`, and `ISerializableInterval`.
Removed functions:
- addProperties
- ack
Removed properties:
- propertyManager
- segmentGroups
The initial deprecations of the now changed or removed types were
announced in Fluid Framework v2.2.0:
[Fluid Framework
v2.2.0](https://github.com/microsoft/FluidFramework/blob/main/RELEASE_NOTES/2.2.0.md)
---------
Co-authored-by: Tyler Butler <tylerbu@microsoft.com>
## Description
Fixes a "glob" pattern (ADO-specific syntax) so the Performance
Benchmarks pipeline can differentiate the `tgz` files for packages that
have partially overlapping names (e.g. `@fluid-experimental/tree` and
`@fluid-experimental/tree-react-api`).
Follow-up to https://github.com/microsoft/FluidFramework/pull/22995.
## Description
Inline TreeArrayNodeBase.
TreeArrayNodeBase is a `@system` type so removing it is allowed.
This should improve the API docs for TreeArrayNode by having its members
actually inline and not out of line onm a system type.
This trades off having a system type for having some defaulted
/do-not-use type parameters and an Unenforced type constraint.
Since we'll be releasing a lot of legacy API changes and removals in
2.10, I think a dedicated section in the release notes will be useful.
Incidentally this is why the sections were designed to be configurable.
## Description
Fixes
[AB#19784](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/19784)
ContainerRuntime's 'batchBegin'/'batchEnd' events: Removing the
`contents` property on event arg `op`
The 'batchBegin'/'batchEnd' events on ContainerRuntime indicate when a
batch is beginning/finishing being processed.
The `contents` property on there is not useful or relevant when
reasoning over incoming changes at the batch level.
So it has been removed from the `op` event arg.
## Breaking Changes
Yes this is a breaking change. See changeset.
---------
Co-authored-by: Kian Thompson <102998837+kian-thompson@users.noreply.github.com>
## Description
This is a private package that only runs some tests. It has no need of
production dependencies, so this PR does two things:
- Move all its dependencies to `devDependencies`
- Removes several dependencies that were not used
Current pattern ?.?.? doesn't support multi digit versions. Bump to
client 2.10.0 has caused the "Install package with perf tests" step to
be failing in the pipeline.
The `Client` class in the merge-tree package has been removed.
Additionally, types that directly or indirectly expose the merge-tree
`Client` class have also been removed.
The removed types were not meant to be used directly, and direct usage
was not supported:
- AttributionPolicy
- IClientEvents
- IMergeTreeAttributionOptions
- SharedSegmentSequence
- SharedStringClass
Some classes that referenced the `Client` class have been transitioned
to interfaces. Direct instantiation of these classes was not supported
or necessary for any supported scenario, so the change to an interface
should not impact usage. This applies to the following types:
- SequenceInterval
- SequenceEvent
- SequenceDeltaEvent
- SequenceMaintenanceEvent
The initial deprecations of the now changed or removed types were
announced in Fluid Framework v2.4.0:
[Several MergeTree Client Legacy APIs are now
deprecated](https://github.com/microsoft/FluidFramework/blob/main/RELEASE_NOTES/2.4.0.md#several-mergetree-client-legacy-apis-are-now-deprecated-22629)
---------
Co-authored-by: Tyler Butler <tylerbu@microsoft.com>
## Description
generic types with an extends clause of `never` currently generate type
tests which do not compile due to any not extending never. This is fixed
by using `never` instead of `any`.
`@system` types which do not promise user facing stability are now
omitted from type testing.
The currently unused tags to opt into alternative type testing for a
given type have been converted from `-` separated to camel case since it
seems `-` does not work well in tags.
## Description
Currently, there are some filesystem operations in Gitrest that result
in a generic 400 HTTP error code, rather than a helpful HTTP status and
message based on the error that occurred.
This PR adds some wrapper functions that help determine if an error is a
FileSystemError (or RedisFSError, which is similar) and bubble that up
as a NetworkError that can be parsed for the HTTP response.
adds a new `changed` event to `TreeBranchEvents` that fires for both
local and remote changes
---------
Co-authored-by: Noah Encke <78610362+noencke@users.noreply.github.com>
Generates the release notes for 2.5. Most changesets have been updated
with minor wording and formatting changes. Command used to generate the
release notes:
```shell
pnpm flub generate releaseNotes -g client -t minor --outFile RELEASE_NOTES/2.5.0.md
```
---------
Co-authored-by: jzaffiro <110866475+jzaffiro@users.noreply.github.com>
1. `ISessionClient` method names updated for consistency to
`getConnectionId()` and `getConnectionStatus()`.
2. Implementation of `ISessionClient` moved to a full class object.
3. Changeset provided for Presence changes since 2.4.
4. Updated `id` to `ID` in comments (public and most internal).
No behavior is changed.
[AB#21446](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/21446)
---------
Co-authored-by: Willie Habimana <whabimana@microsoft.com>
Co-authored-by: Tyler Butler <tylerbu@microsoft.com>