Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(turborepo): Package Detection #7549

Merged
merged 15 commits into from Mar 5, 2024

Conversation

NicholasLYang
Copy link
Contributor

@NicholasLYang NicholasLYang commented Feb 28, 2024

Description

Factored out package detection, i.e. the part where we take a file and map it to the package into a trait. This allows us to have multiple implementations, such as a default one that only uses the package graph, and a more advanced implementation that uses the package graph and turbo.json.

Testing Instructions

Closes TURBO-2465

Copy link
Contributor

github-actions bot commented Feb 28, 2024

🟢 Turbopack Benchmark CI successful 🟢

Thanks

Copy link

vercel bot commented Feb 28, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
examples-nonmonorepo ✅ Ready (Inspect) Visit Preview 💬 Add feedback Mar 5, 2024 10:34pm
examples-tailwind-web 🔄 Building (Inspect) Visit Preview 💬 Add feedback Mar 5, 2024 10:34pm
rust-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Mar 5, 2024 10:34pm
7 Ignored Deployments
Name Status Preview Comments Updated (UTC)
examples-basic-web ⬜️ Ignored (Inspect) Visit Preview Mar 5, 2024 10:34pm
examples-designsystem-docs ⬜️ Ignored (Inspect) Visit Preview Mar 5, 2024 10:34pm
examples-gatsby-web ⬜️ Ignored (Inspect) Visit Preview Mar 5, 2024 10:34pm
examples-kitchensink-blog ⬜️ Ignored (Inspect) Visit Preview Mar 5, 2024 10:34pm
examples-native-web ⬜️ Ignored (Inspect) Visit Preview Mar 5, 2024 10:34pm
examples-svelte-web ⬜️ Ignored (Inspect) Visit Preview Mar 5, 2024 10:34pm
examples-vite-web ⬜️ Ignored (Inspect) Visit Preview Mar 5, 2024 10:34pm

Copy link
Contributor

github-actions bot commented Feb 28, 2024

🟢 CI successful 🟢

Thanks

Copy link
Contributor

@mehulkar mehulkar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Am I correct to understand that the new Turbo implementation of PackageDetector isn't being used in this PR? I would prefer to see that implementation when it's used (by watch mode?)
  • Can you also update the usage in the JS package?
    let mapper = ChangeMapper::new(&self.graph, vec![], vec![]);
  • For Vercel, we will also need an implementation that returns all dependents. Just confirming that another implementation of this trait would be able to deliver that feature? If so... nice!

crates/turborepo-lib/src/package_detector.rs Outdated Show resolved Hide resolved
crates/turborepo-lib/src/package_detector.rs Outdated Show resolved Hide resolved
crates/turborepo-lib/src/run/scope/change_detector.rs Outdated Show resolved Hide resolved
@NicholasLYang
Copy link
Contributor Author

Adding the usage for TurboJsonPackageDetector is a little out of scope cause that would involve pulling in the watch mode code, which would make this a pretty big PR

Copy link
Contributor

@chris-olszewski chris-olszewski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is labeled as a refactor, but has some pretty significant behavior changes for both turbo and @turbo/repository.

I'd feel far more comfortable with the refactors remaining, but actual behavior changes coming in a different PR with more testing to get a better picture of how this could affect our behavior in various scenarios.

crates/turborepo-repository/src/package_graph/builder.rs Outdated Show resolved Hide resolved
crates/turborepo-repository/src/change_mapper.rs Outdated Show resolved Hide resolved
Copy link
Contributor Author

I don't believe there's a behavior change here. With the current code, we return the root changed if there exists any changed file that is not in a package. All I'm doing is removing the redundant code that also checks if package.json or turbo.json are changed when they're by definition not in any package and therefore fall under the first check.

Copy link
Contributor

@chris-olszewski chris-olszewski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do feel that this makes it harder to reasons about this code, but it seems necessary for what we want to do in the future. Relying on your manual testing to verify there aren't accidental behavior changes anymore.

let turbo_json = TurboJson::default();
let turbo_package_detector = GlobalDepsPackageDetector::new(
&pkg_graph,
turbo_json.global_deps.iter().map(|s| s.as_str()),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: can we just the value here instead of depending on the default value of TurboJson?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I'm confused. In what part are we depending on the default value?

// PackageDetection::Package(WorkspacePackage::root()).
PackageDetection::All => {
let cleaned_path = path.clean();
let in_global_deps = self.global_deps_matcher.is_match(cleaned_path.as_str());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm having trouble tracing this code. Does the global_deps_matcher always get the default global deps of package.json/turbo.json added to it? Otherwise we'll incorrectly map a package.json change just be a root package change instead of a all change.

Or I'm misunderstanding these changes completely and this codepath isn't hit in that scenario.

Edit: I was misunderstanding, default global deps are checked at ChangeMapper which uses a package detector if a default global change isn't detected

}
}

fn default_global_file_changed(
changed_files: &HashSet<AnchoredSystemPathBuf>,
) -> Result<bool, ChangeMapError> {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
) -> Result<bool, ChangeMapError> {
) -> bool {

crates/turborepo-lib/src/global_deps_package_detector.rs Outdated Show resolved Hide resolved
Co-authored-by: Chris Olszewski <chris.olszewski@vercel.com>
Copy link
Contributor

@mehulkar mehulkar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few inline comments. Another question I have is:

I want to be able to return a list of the full tree of "affected" packages. How/where should this modeled? I see there are two levels of abstraction (ChangeMapper takes a list of files and PackageDetector takes one file).

  • Where would you implement the dependency graph walk so that some_method(files) will return all affected packages, and not just the direct mapping from file to package
  • How would you organize that with the global (vs not) feature?

if in_global_deps {
PackageDetection::All
} else {
PackageDetection::Package(WorkspacePackage::root())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we return None here? This implementation implies that we're talking about globalDependencies in turbo.json. Is there a scenario in which it's valuable to know that the root package changed or would it just get ignored by the caller?

Higher level: I'm concerned about inventing a semantic meaning of WorkspacePackage::root(). So far, "root package changed" has roughly implied that "all packages changed". But in this PR, we're separating the concepts of "all" and "root package", so we can no longer ignore paper over what a "root package" is.

Our definition of package is roughly equivalent to the package managers definition, and there are no package managers that consider the root of a "workspace" a package itself.

What do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I think there's a few misunderstandings (not helped by the multiple iterations of this PR):

  • It is helpful to know that the root package changed, because you can have root tasks that can get run, say if you define a //#build entry in pipeline. We can't remove this root package return because that would be a breaking change for people with root package tasks.
  • Root package changed does not imply all packages changed. I thought it did but @chris-olszewski explained to me that it does not. I think it should in an ideal world (and I think a setting to enable that behavior is worth discussing but out of scope).
  • Therefore separating between the two concepts is fine because that is the existing behavior.
  • As for how our model relates to a package manager, I agree that we should stay closer to the package manager's semantics, but unfortunately we can't due to existing behavior. Like we should treat a root package change as a global change because that's what package managers effectively do, but we have to wait for a breaking change to make that possible.

}
}

impl<'a> PackageDetector for DefaultPackageDetector<'a> {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I'd love to see this organized something like this:

crates/turborepo-lib/src/package_change_detector/default.rs
crates/turborepo-lib/src/package_change_detector/global_deps.rs

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't do that because that would be a circular dependency between turborepo-lib and turborepo-repository. I totally agree that would be a more sensible organization

Comment on lines 23 to 25
pub trait PackageDetector {
fn detect_package(&self, file: &AnchoredSystemPath) -> PackageDetection;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I don't love the naming here. In english, this trait/method isn't detecting packages (which sounds more like what turbo info does), it is inferring how a file change affects a known list of packages. Just a suggestion:

Suggested change
pub trait PackageDetector {
fn detect_package(&self, file: &AnchoredSystemPath) -> PackageDetection;
}
pub trait WorkspaceChangeDetector {
fn get_changed_package(&self, file: &AnchoredSystemPath) -> WorkspaceChange;
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm yeah agreed. I do feel like WorkspaceChangeDetector is a little confusing too. Maybe PackageChangeMapper? It's mapping a single change to a package

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah I didn't want to use "change mapper" since we use that upstream already 😓 . In lieu of an obvious answer, no need to make changes :)

@NicholasLYang NicholasLYang enabled auto-merge (squash) March 5, 2024 22:36
@NicholasLYang NicholasLYang merged commit 95cbbb0 into main Mar 5, 2024
57 checks passed
@NicholasLYang NicholasLYang deleted the refactor/change-mapper-package-detection branch March 5, 2024 22:56
NicholasLYang added a commit that referenced this pull request Mar 6, 2024
#7655)

### Description

I forgot to do this in #7549, whoops. Renames to PackageChangeMapper
according to PR feedback.

### Testing Instructions

<!--
  Give a quick description of steps to test your changes.
-->


Closes TURBO-2559
kodiakhq bot added a commit to weareinreach/TransMascFutures that referenced this pull request Mar 6, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`20.11.24` -> `20.11.25`](https://renovatebot.com/diffs/npm/@types%2fnode/20.11.24/20.11.25) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.11.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.11.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.11.24/20.11.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.11.24/20.11.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@types/react](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | [`18.2.63` -> `18.2.64`](https://renovatebot.com/diffs/npm/@types%2freact/18.2.63/18.2.64) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact/18.2.64?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact/18.2.64?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact/18.2.63/18.2.64?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact/18.2.63/18.2.64?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [chromatic](https://www.chromatic.com) ([source](https://togithub.com/chromaui/chromatic-cli)) | [`11.0.1` -> `11.0.4`](https://renovatebot.com/diffs/npm/chromatic/11.0.1/11.0.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/chromatic/11.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/chromatic/11.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/chromatic/11.0.1/11.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/chromatic/11.0.1/11.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [eslint-plugin-turbo](https://togithub.com/vercel/turbo) ([source](https://togithub.com/vercel/turbo/tree/HEAD/packages/eslint-plugin-turbo)) | [`1.12.4` -> `1.12.5`](https://renovatebot.com/diffs/npm/eslint-plugin-turbo/1.12.4/1.12.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-turbo/1.12.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-turbo/1.12.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-turbo/1.12.4/1.12.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-turbo/1.12.4/1.12.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [react-i18next](https://togithub.com/i18next/react-i18next) | [`14.0.5` -> `14.0.8`](https://renovatebot.com/diffs/npm/react-i18next/14.0.5/14.0.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-i18next/14.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-i18next/14.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-i18next/14.0.5/14.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-i18next/14.0.5/14.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [turbo](https://turbo.build/repo) ([source](https://togithub.com/vercel/turbo)) | [`1.12.4` -> `1.12.5`](https://renovatebot.com/diffs/npm/turbo/1.12.4/1.12.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/turbo/1.12.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/turbo/1.12.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/turbo/1.12.4/1.12.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/turbo/1.12.4/1.12.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [typescript](https://www.typescriptlang.org/) ([source](https://togithub.com/Microsoft/TypeScript)) | [`5.3.3` -> `5.4.2`](https://renovatebot.com/diffs/npm/typescript/5.3.3/5.4.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/5.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript/5.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript/5.3.3/5.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/5.3.3/5.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>chromaui/chromatic-cli (chromatic)</summary>

### [`v11.0.4`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1104-Wed-Mar-06-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v11.0.3...v11.0.4)

##### 🐛 Bug Fix

-   Do not prompt to install chromatic script during E2E builds [#&#8203;941](https://togithub.com/chromaui/chromatic-cli/pull/941) ([@&#8203;tevanoff](https://togithub.com/tevanoff))

##### Authors: 1

-   Todd Evanoff ([@&#8203;tevanoff](https://togithub.com/tevanoff))

***

### [`v11.0.3`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1103-Wed-Mar-06-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v11.0.2...v11.0.3)

##### 🐛 Bug Fix

-   Display full error message when storybookBaseDir is invalid [#&#8203;932](https://togithub.com/chromaui/chromatic-cli/pull/932) ([@&#8203;andrewortwein](https://togithub.com/andrewortwein))

##### Authors: 1

-   Andrew Ortwein ([@&#8203;andrewortwein](https://togithub.com/andrewortwein))

***

### [`v11.0.2`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1102-Tue-Mar-05-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v11.0.1...v11.0.2)

##### 🐛 Bug Fix

-   Fix support for boolean value to `junitReport` option [#&#8203;937](https://togithub.com/chromaui/chromatic-cli/pull/937) ([@&#8203;thafryer](https://togithub.com/thafryer))

##### Authors: 1

-   Jarel Fryer ([@&#8203;thafryer](https://togithub.com/thafryer))

***

</details>

<details>
<summary>vercel/turbo (eslint-plugin-turbo)</summary>

### [`v1.12.5`](https://togithub.com/vercel/turbo/releases/tag/v1.12.5): Turborepo v1.12.5

[Compare Source](https://togithub.com/vercel/turbo/compare/v1.12.4...v1.12.5)



#### What's Changed

##### Docs

-   Name the file in Prisma doc. by [@&#8203;anthonyshew](https://togithub.com/anthonyshew) in [vercel/turbo#7426
-   chore(docs): update github actions versions to support node 20 by [@&#8203;robinsmith-source](https://togithub.com/robinsmith-source) in [vercel/turbo#7434
-   chore: update docs to no longer suggest verbosity for `--profile` by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7521
-   Add version to package in internal packages docs for yarn by [@&#8203;loctn](https://togithub.com/loctn) in [vercel/turbo#7626

##### create-turbo

-   release(turborepo): 1.12.4 by [@&#8203;github-actions](https://togithub.com/github-actions) in [vercel/turbo#7383

##### [@&#8203;turbo/repository](https://togithub.com/turbo/repository)

-   chore(Turborepo): bump versions in prep for a release by [@&#8203;gsoltis](https://togithub.com/gsoltis) in [vercel/turbo#7385
-   refactor(turborepo): Package Detection by [@&#8203;NicholasLYang](https://togithub.com/NicholasLYang) in [vercel/turbo#7549
-   feat([@&#8203;turbo/repository](https://togithub.com/turbo/repository)): return dependencies in graph by [@&#8203;mehulkar](https://togithub.com/mehulkar) in [vercel/turbo#7616
-   chore([@&#8203;turbo/repository](https://togithub.com/turbo/repository)): bump version to 0.0.1-canary.8 by [@&#8203;mehulkar](https://togithub.com/mehulkar) in [vercel/turbo#7636

##### Examples

-   fix(examples): basic generator by [@&#8203;dangbt](https://togithub.com/dangbt) in [vercel/turbo#7400
-   Remove barrel file from design-system-example by [@&#8203;anthonyshew](https://togithub.com/anthonyshew) in [vercel/turbo#7580
-   Dependabot updates for examples. by [@&#8203;anthonyshew](https://togithub.com/anthonyshew) in [vercel/turbo#7615
-   Bug fix on with-npm by [@&#8203;zsh77](https://togithub.com/zsh77) in [vercel/turbo#7587
-   dev script of ui package in example with rollup by [@&#8203;zsh77](https://togithub.com/zsh77) in [vercel/turbo#7550
-   Cleanup of with-vite example by [@&#8203;zsh77](https://togithub.com/zsh77) in [vercel/turbo#7585
-   Cleanup of with-yarn example by [@&#8203;zsh77](https://togithub.com/zsh77) in [vercel/turbo#7589
-   Guarantee typescript-eslint parser resolving. by [@&#8203;anthonyshew](https://togithub.com/anthonyshew) in [vercel/turbo#7634

##### Changelog

-   perf: parse and walk globs in parallel by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7244
-   fix: do better validation for existing tokens by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7358
-   chore(ci): remove Makefile targets to build Go binaries by [@&#8203;mehulkar](https://togithub.com/mehulkar) in [vercel/turbo#7389
-   add error enum to `turborepo-dirs` by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7277
-   fix: Clippy errors by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7392
-   docs: Refresh daemon documentation by [@&#8203;NicholasLYang](https://togithub.com/NicholasLYang) in [vercel/turbo#7386
-   Break up Client trait by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7387
-   chore(turbo): delete unused goreleaser configs by [@&#8203;mehulkar](https://togithub.com/mehulkar) in [vercel/turbo#7393
-   Improve daemon startup times by [@&#8203;arlyon](https://togithub.com/arlyon) in [vercel/turbo#7322
-   fix: reading output from orphan process by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7402
-   Add optionalwatch cookie support by [@&#8203;arlyon](https://togithub.com/arlyon) in [vercel/turbo#7379
-   chore: add force flag to login command by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7378
-   Audit daemon error paths and ensure we are doing everything we can to handle by [@&#8203;arlyon](https://togithub.com/arlyon) in [vercel/turbo#7334
-   chore: lower log level for noisy crates by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7439
-   chore: Rename daemon code by [@&#8203;NicholasLYang](https://togithub.com/NicholasLYang) in [vercel/turbo#7440
-   fix: support yarn4 semver resolutions by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7442
-   fix: More robust token validation by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7407
-   chore: Change daemon log location to be in repo by [@&#8203;NicholasLYang](https://togithub.com/NicholasLYang) in [vercel/turbo#7468
-   chore: remove unnecessary result on join_unix_path by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7506
-   chore: remove unused features from config crate by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7531
-   feat: task table widget by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7470
-   fix: Remove extra login popup for Vercel by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7469
-   feat(turborepo): Convert even more errors by [@&#8203;NicholasLYang](https://togithub.com/NicholasLYang) in [vercel/turbo#7513
-   fix: correctly call teams api by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7533
-   chore: add read_existing_to_string by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7532
-   feat: allow for faux comments at top level of turbo.json by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7546
-   fix: Load vercel token into command base by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7545
-   fix: support pnpm workspace path aliasing by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7512
-   chore: remove unused import from dep_splitter by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7555
-   fix: Respect globalDependencies when determining changed packages by [@&#8203;NicholasLYang](https://togithub.com/NicholasLYang) in [vercel/turbo#7557
-   feat(Turborepo): Renaming, additional cookiewriter constructor by [@&#8203;gsoltis](https://togithub.com/gsoltis) in [vercel/turbo#7553
-   fix: vercel auth file borks login by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7556
-   fix: login success page redirect by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7558
-   chore: move logout functionality into auth crate by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7443
-   chore: Change  to use borrowed path by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7569
-   Handle logging story better on daemon by [@&#8203;arlyon](https://togithub.com/arlyon) in [vercel/turbo#7526
-   fix: sso login duplicate popup by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7575
-   chore(Turborepo): refactor telemetry to use turbopath by [@&#8203;gsoltis](https://togithub.com/gsoltis) in [vercel/turbo#7567
-   chore(Turborepo): move test filesystem setup into test code by [@&#8203;gsoltis](https://togithub.com/gsoltis) in [vercel/turbo#7568
-   chore(Turborepo): Switch tests to use filesystem, remove unused generics by [@&#8203;gsoltis](https://togithub.com/gsoltis) in [vercel/turbo#7610
-   fix(cache): fix restoration issues of directories with very long paths by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7628
-   chore: vendor vt100 crate by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7591
-   fix(cache): restoration symlink by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7633
-   fix: reject empty cache dir path by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7630
-   fix: add more caching status tests by [@&#8203;Zertsov](https://togithub.com/Zertsov) in [vercel/turbo#7574

#### New Contributors

-   [@&#8203;dangbt](https://togithub.com/dangbt) made their first contribution in [vercel/turbo#7400
-   [@&#8203;robinsmith-source](https://togithub.com/robinsmith-source) made their first contribution in [vercel/turbo#7434
-   [@&#8203;nnmax](https://togithub.com/nnmax) made their first contribution in [vercel/turbo#6651
-   [@&#8203;bgw](https://togithub.com/bgw) made their first contribution in [vercel/turbo#7206
-   [@&#8203;loctn](https://togithub.com/loctn) made their first contribution in [vercel/turbo#7626
-   [@&#8203;zsh77](https://togithub.com/zsh77) made their first contribution in [vercel/turbo#7587

**Full Changelog**: vercel/turbo@v1.12.4...v1.12.5

</details>

<details>
<summary>i18next/react-i18next (react-i18next)</summary>

### [`v14.0.8`](https://togithub.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1408)

[Compare Source](https://togithub.com/i18next/react-i18next/compare/v14.0.7...v14.0.8)

-   fix: issue [1728](https://togithub.com/i18next/react-i18next/issues/1728) when useSuspense is false and default ns [1731](https://togithub.com/i18next/react-i18next/pull/1731)

### [`v14.0.7`](https://togithub.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1407)

[Compare Source](https://togithub.com/i18next/react-i18next/compare/v14.0.6...v14.0.7)

-   try to get rid of internal interpolationOverride handling for Trans component, fixes [1729](https://togithub.com/i18next/react-i18next/issues/1729)

### [`v14.0.6`](https://togithub.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1406)

[Compare Source](https://togithub.com/i18next/react-i18next/compare/v14.0.5...v14.0.6)

-   align context handling of Trans component with t function, fixes [1729](https://togithub.com/i18next/react-i18next/issues/1729)

</details>

<details>
<summary>vercel/turbo (turbo)</summary>

### [`v1.12.5`](https://togithub.com/vercel/turbo/compare/v1.12.4...v1.12.5)

[Compare Source](https://togithub.com/vercel/turbo/compare/v1.12.4...v1.12.5)

</details>

<details>
<summary>Microsoft/TypeScript (typescript)</summary>

### [`v5.4.2`](https://togithub.com/microsoft/TypeScript/releases/tag/v5.4.2): TypeScript 5.4

[Compare Source](https://togithub.com/Microsoft/TypeScript/compare/v5.3.3...v5.4.2)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/).

For the complete list of fixed issues, check out the

-   [fixed issues query for Typescript 5.4.0 (Beta)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.0%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.1 (RC)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.1%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.4.2 (Stable)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.4.2%22+is%3Aclosed+).

Downloads are available on:

-   [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday,before 4am on Thursday" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/weareinreach/GLAAD).



PR-URL: #356
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants