Skip to content

improvement(tree): Simplify getAllowedContentIncompatibilities output#6

Open
Abe27342 wants to merge 60 commits into
discrepancies-bugfixesfrom
normalize-to-forbidden
Open

improvement(tree): Simplify getAllowedContentIncompatibilities output#6
Abe27342 wants to merge 60 commits into
discrepancies-bugfixesfrom
normalize-to-forbidden

Conversation

@Abe27342
Copy link
Copy Markdown
Owner

@Abe27342 Abe27342 commented Nov 6, 2024

Previous output allowed undefined in FieldKindIncompatibility instances where either the stored or view schema did not have some field implicitly. However, it is also possible to declare a field as not present explicitly using forbidden, which should be treated identically when considering compatibility. This updates the output representation as well as logic to normalize implicit cases to use forbidden.

sonalideshpandemsft and others added 30 commits November 1, 2024 12:33
…22937)

This PR add a new command to generate node10 type declaration
entrypoints. Most of the node10 code is extracted from [generate
entrypoint](https://github.com/microsoft/FluidFramework/blob/main/build-tools/packages/build-cli/src/library/commands/generateEntrypoints.ts)
command.
fix parameter use in condition. swapping parameter to intermediate
variable.
## Description

Added import/export options for tree content and schema, and example
script using them.
Bumped build-tools from 0.50.0 to 0.51.0.
I wasn't able to reproduce the flakiness locally (ran 2000 times), but
I'm still seeing recent timeout failures in the build pipelines. These
tests aren't testing anything that's driver specific, so it's safe to
skip them for standard r11s.

Fixes
[AB#11213](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/11213)
Fixes
[AB#11060](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/11060)
…rosoft#22967)

There is nothing particularly Fluid-centric about the top-level API in
build-infrastructure; I just couldn't think of a better name at the
time. After discussion, we're going to call the top-level object a
BuildProject. The full hierarchy is now:

BuildProjects contain Workspaces contain ReleaseGroups contain Packages

This change required a lot of documentation updates and renaming other
related properties and functions beyond the BuildProject itself.

The package is private so these changes are safe.
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>
## 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.
)

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>
)

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>
## Description

Tag asserts short codes before Minor release

Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
…t#22976)

## Description

build(client): changelog generation for minor release 2.5.0

Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
## Description

Bump client minor 2.10.0

---------

Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
…atement (microsoft#22929)

Updates the primary loop used in the release command to use a map
instead of a switch statement.
…version (microsoft#22966)

Upgrades all the dependencies to their latest compatible version within
the dep range in package.json.
…#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
…osoft#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.
…2977)

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>
…2986)

## 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.
## 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.
…22983)

## Description

build(client): Update typetests after minor release 2.5.0

---------

Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
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>
…22988)

## Description

Moves the merge semantics doc to user-facing folder.
…2995)

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.
…icrosoft#22985)

Leverages newer dice roller sample and most up-to-date devtools visuals
Disable these tests against the services where they always fail. This
exercises an experimental feature that is not fully supported yet.
## 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
tylerbutler and others added 24 commits November 6, 2024 20:44
…osoft#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.
PR microsoft#22791 had auto-merge turned on, so a suggested change to the
changeset wasn't made.
microsoft#22791 (comment)
## 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.
…hoke on packages with overlapping names (microsoft#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 microsoft#22995.
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>
…#23019)

## Description

Removes the deprecated `@internal` type
`ITaggedTelemetryPropertyTypeExt`, replacing its uses with the
recommendation from the deprecation message,
`Tagged<TelemetryEventPropertyTypeExt>`.
…-deprecated.js (microsoft#23014)

Had to add no-unchecked-record-access to minimal-deprecated.js to enable
it
## Description

Add API to compare IFluidHandles.

This reduces the need to inspect the internals of handles.
…osoft#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).
…soft#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>
…ops` (microsoft#23021)

to allow arbitrary entry names and future PresenceStates methods
…perty access on Types and Interfaces that extend Index Signatures which are not defined (microsoft#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
```
…anager (microsoft#23024)

## Description

Add chngeset for removing the inbound and outbound queues on
iDeltamanager. Refer to this PR for extra details:
microsoft#22282

---------

Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
Co-authored-by: Tyler Butler <tyler@tylerbutler.com>
These documents were never published, and many are very out of date.
Removing before we overhaul the website to use Docusaurus.
…tterns (microsoft#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)
implementation of setDependencyRange function which updates a packages
dependency versions with a given range.
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.
# Adds the Explicit Strategy to the @fluid-experimental/ai-collab package, exported under a
new, shared API surface.
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.
## 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`.
@Abe27342 Abe27342 force-pushed the normalize-to-forbidden branch from 842a544 to 6d95109 Compare November 8, 2024 17:59
Josmithr and others added 4 commits November 8, 2024 10:11
…id` (microsoft#23033)

Updates the dependency to `5.5.1` in a couple of packages, and fixes the
most recent `eslint-config-fluid` CHANGELOG.
…isRepoSuperset (microsoft#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>
…oft#23038)

## Description

This changes all internal SharedTree objects to have an `events:
Listenable` property rather than implementing Listenable directly. Using
the `.events` pattern is preferable over the alternatives because it
does not employ inheritance (like extending `EventEmitter`) and does not
require any method implementation boilerplate (like implementing
`Listenable`). It also means that any changes to `EventEmitter` or
`Listenable` will not require changes to the object emitting the events
- this is the practical motivation for this change, as the `Listenable`
interface will soon be updated to have a new method. Without this
preparatory change, all the implementations of `Listenable` would need
to be updated at that time.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Nov 8, 2024

🔗 Found some broken links! 💔

Run a link check locally to find them. See
https://github.com/microsoft/FluidFramework/wiki/Checking-for-broken-links-in-the-documentation for more information.

linkcheck output


> fluidframework-docs@0.25.0 ci:linkcheck /home/runner/work/FluidFramework/FluidFramework/docs
> start-server-and-test ci:start 1313 linkcheck:full

1: starting server using command "npm run ci:start"
and when url "[ 'http://127.0.0.1:1313' ]" is responding with HTTP status code 200
running tests using command "npm run linkcheck:full"


> fluidframework-docs@0.25.0 ci:start
> http-server ./public --port 1313 --silent


> fluidframework-docs@0.25.0 linkcheck:full
> npm run linkcheck:fast -- --external


> fluidframework-docs@0.25.0 linkcheck:fast
> linkcheck http://localhost:1313 --skip-file skipped-urls.txt --external

Crawling...

http://localhost:1313/docs/start/tree-start/
- (3430:89) 'here' => https://github.com/microsoft/FluidFramework/blob/main/packages/dds/tree/docs/main/merge-semantics.md (HTTP 404)


Stats:
  443666 links
    3413 destination URLs
       2 URLs ignored
       0 warnings
       1 errors

 ELIFECYCLE  Command failed with exit code 1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.