improvement(tree): Simplify getAllowedContentIncompatibilities output#6
Open
Abe27342 wants to merge 60 commits into
Open
improvement(tree): Simplify getAllowedContentIncompatibilities output#6Abe27342 wants to merge 60 commits into
Abe27342 wants to merge 60 commits into
Conversation
…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.
…oft#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.
…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
…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.
as no one should need access.
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`.
842a544 to
6d95109
Compare
…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.
|
🔗 Found some broken links! 💔 Run a link check locally to find them. See linkcheck output |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Previous output allowed
undefinedinFieldKindIncompatibilityinstances 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.