Граф коммитов

21374 Коммитов

Автор SHA1 Сообщение Дата
Abram Sanderson bb64a8e12b
fix(tree): Resolve several inconsistencies in allowsRepoSuperset and isRepoSuperset (#22999)
## 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>
2024-11-08 18:43:57 +00:00
Joshua Smithrud ed87f54db1
build: Update some dependencies on `@fluidframework/eslint-config-fluid` (#23033)
Updates the dependency to `5.5.1` in a couple of packages, and fixes the
most recent `eslint-config-fluid` CHANGELOG.
2024-11-08 10:11:57 -08:00
Alex Villarreal 32ff6b9c34
refactor(telemetry-utlis): Make MockLogger internal (#23010)
## 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`.
2024-11-08 11:38:03 -06:00
MarioJGMsoft 935c7e745b
[AFR Ask] Send the reason when making getDeltas calls (#22821)
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.
2024-11-08 08:48:37 -08:00
Jason Hartman 04a33140b1
improvement(client-presence): make `events` private (#23029)
as no one should need access.
2024-11-07 20:03:08 -08:00
seanimam 610d942892
Ai collab explicit (#22836)
# Adds the Explicit Strategy to the @fluid-experimental/ai-collab package, exported under a
new, shared API surface.
2024-11-07 21:21:36 -05:00
Tyler Butler b25db0005c
chore(build-tools): Update release group changelog (#22972)
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.
2024-11-07 18:01:11 -08:00
Michael Zhen abba2604f2
(build-tools): setDependencyRange function (#22944)
implementation of setDependencyRange function which updates a packages
dependency versions with a given range.
2024-11-07 16:36:02 -08:00
Matt Rakow 6085ff452d
Reenable skipped migration test (#22987) 2024-11-08 00:14:06 +00:00
Joshua Smithrud 412923b7af
improvement(eslint-config-fluid): Better support our existing test patterns (#23027)
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)
2024-11-07 23:57:01 +00:00
Joshua Smithrud cd3bd9147f
remove(docs): Remove unused draft documents (#23025)
These documents were never published, and many are very out of date.
Removing before we overhaul the website to use Docusaurus.
2024-11-07 22:31:04 +00:00
Jatin Garg 509d6a1887
Add changeset for removing the inbound and outbound queues on IDeltaManager (#23024)
## 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>
2024-11-07 13:32:04 -08:00
Rishhi Balakrishnan 99d6b8cb8e
fix(eslint-plugin-fluid): no-unchecked-record-access should catch property access on Types and Interfaces that extend Index Signatures which are not defined (#23023)
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
```
2024-11-07 21:19:56 +00:00
Jason Hartman 365c5c0643
improvement(client-presence): move `PresenceStates` entries under `props` (#23021)
to allow arbitrary entry names and future PresenceStates methods
2024-11-07 12:28:28 -08:00
Jatin Garg 45a57693f2
Remove deprecated inbound and outbound queues on IDeltaManager (#22282)
## 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>
2024-11-07 19:36:24 +00:00
Tyler Butler 713f4e1146
refactor(eslint-config-fluid): Disable formatting-related rules (#22959)
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).
2024-11-07 11:13:38 -08:00
Craig Macomber (Microsoft) 8d470085fb
feat: Add compareHandle (#22997)
## Description

Add API to compare IFluidHandles.

This reduces the need to inspect the internals of handles.
2024-11-07 10:12:53 -08:00
Rishhi Balakrishnan 25935eccde
build(eslint-config-fluid): Add no-unchecked-record-access to minimal-deprecated.js (#23014)
Had to add no-unchecked-record-access to minimal-deprecated.js to enable
it
2024-11-07 09:10:16 -08:00
Matt Rakow 0cb597e4d2
Update to React18 APIs for separate-container example tests (#23018) 2024-11-07 08:59:14 -08:00
Alex Villarreal 168db7e7f1
refactor(telemetry-utils): Remove deprecated internal type (#23019)
## Description

Removes the deprecated `@internal` type
`ITaggedTelemetryPropertyTypeExt`, replacing its uses with the
recommendation from the deprecation message,
`Tagged<TelemetryEventPropertyTypeExt>`.
2024-11-07 09:30:43 -06:00
Tony Murphy 7a032533a6
Unsupported Merge-Tree Types and Exposures Removed (#22696)
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>
2024-11-06 18:51:22 -08:00
Alex Villarreal b70e394731
fix(ci): Fix pattern so the Performance Benchmarks pipeline doesn't choke on packages with overlapping names (#23005)
## 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.
2024-11-07 00:12:12 +00:00
Craig Macomber (Microsoft) 0a663468bc
refactor: Remove TreeArrayNodeBase (#22998)
## 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.
2024-11-06 15:49:58 -08:00
Kian Thompson aae7184de6
Update changeset from PR#22791 (#23015)
PR #22791 had auto-merge turned on, so a suggested change to the
changeset wasn't made.
https://github.com/microsoft/FluidFramework/pull/22791#discussion_r1831644500
2024-11-06 14:10:39 -08:00
Tyler Butler 0a2c31f1ed
build(client): Add release notes section for legacy API changes (#23003)
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.
2024-11-06 20:44:22 +00:00
Mark Fields d252af539a
ContainerRuntime: Remove the contents property of batchBegin/batchEnd's "op" event arg (#22791)
## 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>
2024-11-06 12:07:02 -08:00
Michael Zhen 85d0e82baa
(ci): update pattern matching for perf benchmark install (#23009)
previous fix was matching undesired paths, updating to more specific
pattern: <package>-[0-9]*.[0-9]*.[0-9]*.tgz
2024-11-06 10:41:19 -08:00
Tyler Butler 0b158c8bc1
ci: Update upload/download artifact actions to v4 latest (#23001) 2024-11-06 09:41:42 -08:00
Alex Villarreal 760afc7686
refactor(local-server-tests): Clean-up dependencies (#22984)
## 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
2024-11-06 17:14:12 +00:00
Scarlett Lee 00062eb189
Disable stashed ops tests (#23000)
Disable these tests against the services where they always fail. This
exercises an experimental feature that is not fully supported yet.
2024-11-06 02:41:35 +00:00
Joshua Smithrud c6453cb3c6
Update sample screenshots for devtools extension browser store pages (#22985)
Leverages newer dice roller sample and most up-to-date devtools visuals
2024-11-05 16:55:07 -08:00
Michael Zhen a909e19cbd
(ci): update pattern matching in perch benchmark install (#22995)
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.
2024-11-05 16:48:28 -08:00
yann-achard-MS e3ae396007
doc(tree): move merge semantics doc to user-facing folder (#22988)
## Description

Moves the merge semantics doc to user-facing folder.
2024-11-05 16:03:43 -08:00
Tony Murphy 2aa0b5e794
MergeTree `Client` Legacy API Removed (#22697)
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>
2024-11-05 23:22:22 +00:00
Jatin Garg 99fbaf4a9e
build(client): Update typetests after minor release 2.5.0 (#22983)
## Description

build(client): Update typetests after minor release 2.5.0

---------

Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
2024-11-05 22:28:15 +00:00
Craig Macomber (Microsoft) 468164d18d
Fix type test generation issues (#22989)
## 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.
2024-11-05 14:00:12 -08:00
Zach Newton 7abf5cfd3b
fix(gitrest): Handle FileSystem Errors in HTTP Responses (#22986)
## 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.
2024-11-05 13:04:13 -08:00
Jenn e51c94da32
feat(tree): adds a `changed` event on `TreeBranchEvents` (#22977)
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>
2024-11-05 20:20:40 +00:00
Tyler Butler 75937e12d9
build(client, build-tools): Bump Biome to 1.9.4 (lockfile only) (#22908)
Picks up the latest patch of Biome. Since it's just a patch, I updated
the lockfiles only to save the package.json churn.
2024-11-05 12:00:07 -08:00
Tyler Butler 0b57176375
build(client): Update build-tools to latest release 0.50.0 (#22974)
Updated the following:

  client (release group)

Dependencies on build-tools updated:

  @fluid-tools/build-cli: 0.50.0
  @fluidframework/build-tools: 0.50.0
  @fluidframework/bundle-size-tools: 0.50.0
  @fluid-tools/version-tools: 0.50.0
2024-11-05 19:56:25 +00:00
Tyler Butler d7658b5490
build(eslint-config-fluid): Upgrade deps to latest semver-compatible version (#22966)
Upgrades all the dependencies to their latest compatible version within
the dep range in package.json.
2024-11-05 19:35:38 +00:00
Tyler Butler a475dc4991
build(build-cli): Upgrade @rushstack/node-core-library to 5.x (#22915)
No breaking changes in [the
changelog](https://github.com/microsoft/rushstack/blob/main/libraries/node-core-library/CHANGELOG.md)
for 4.x and 5.x affect us.
2024-11-05 11:27:03 -08:00
Tyler Butler 2ccf16aeb3
improvement(release): Simplify code with a map instead of a switch statement (#22929)
Updates the primary loop used in the release command to use a map
instead of a switch statement.
2024-11-05 18:48:41 +00:00
Jatin Garg 11971262b8
Bump client minor 2.10.0 (#22978)
## Description

Bump client minor 2.10.0

---------

Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
2024-11-05 02:35:05 +00:00
Jatin Garg 54f2a18248
build(client): changelog generation for minor release 2.5.0 (#22976)
## Description

build(client): changelog generation for minor release 2.5.0

Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
2024-11-05 01:39:52 +00:00
Jatin Garg fa035e05d0
build(client): Tag asserts for release 2.5.0 (#22975)
## Description

Tag asserts short codes before Minor release

Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
2024-11-04 16:43:29 -08:00
Tyler Butler fd6ce8b425
build(client): Generate release notes for 2.5.0 release (#22965)
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>
2024-11-05 00:35:21 +00:00
Jason Hartman 6096657620
fix(client-presence): ISessionClient naming consistency (#22973)
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>
2024-11-04 23:51:01 +00:00
Noah Encke 80ed0284f0
Add refreshed SharedTree alpha branching API (#22970)
## Description

This introduces a new SharedTree branching API that follows the ideas in
[this
document](https://github.com/microsoft/FluidFramework/pull/22740/files#diff-0073fb61eb0ca7c2b1f9bc918f31ed46270c5a104cee8b419dac1d82845167da).
Essentially, the branching API remains the same but has been exposed
directly on the view objects (rather than on a separate object) for the
user's convenience. The previous branching API's entry point is
deprecated.

See the changeset and new documentation for more details.
2024-11-04 14:52:03 -08:00
Tyler Butler 4488bcb285
feat(build-infrastructure): Add setVersion API (#22919)
This change adds a `setVersion` API that acts on several packages.


[AB#21855](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/21855)

---------

Co-authored-by: Alex Villarreal <716334+alexvy86@users.noreply.github.com>
Co-authored-by: Joshua Smithrud <54606601+Josmithr@users.noreply.github.com>
2024-11-04 14:26:05 -08:00