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

Issue: Allowed rule to force use of aliased-tsconfig import #863

Closed
throrin19 opened this issue Nov 8, 2023 · 26 comments
Closed

Issue: Allowed rule to force use of aliased-tsconfig import #863

throrin19 opened this issue Nov 8, 2023 · 26 comments
Labels

Comments

@throrin19
Copy link

throrin19 commented Nov 8, 2023

Expected Behavior

I try to create a rule to force the usage of aliased-tsconfig import instead of absolute impore (like use @company/module instead of libs/module.

I add this allowed rule :

{
    name     : 'absolute-libs',
    severity : 'error',
    comment  : 'on oblige l\'utilisation de `@module/` au lieu de `libs/`',
    from     : {},
    to       : {
        dependencyTypes : ['aliased-tsconfig'],
        path            : '^libs',
    },
},

Current Behavior

When I launch Depcruise, I have this unclear error :

The supplied configuration is not valid: data/allowed/0 must NOT have additional properties, data/allowed/0 must NOT have additional properties, data/allowed/0 must match exactly one schema in oneOf.

Possible Solution

Steps to Reproduce (for bugs)

  1. Add the allowed rule in expected Behavior
  2. Launch depcruise command
  3. And voilà !

Context

Your Environment

@sverweij
Copy link
Owner

sverweij commented Nov 8, 2023

Hi @throrin19 thanks for asking, and sorry for the cryptic error message! It'd been more clear to have it say something like attribute 'severity' doesn't exist in statements within the 'allowed' rule, to specify the severity of the allowed rule, use allowedSeverity on the top level of your configuration. Also, individual statements within the allowed rule don't have their own 'name' attribute.

In general the allowed rule is trickier to set up than I anticipated when I introduced it a few years ago (more on why that is below). In stead it is often possible to add a rule to the forbiddenlist that expresses the same, but takes less effort. E.g. to ensure imports from ^libs are always done with a tsconfig alias one could write

// ...
{
  forbidden: [
    {
      "name": "imports-from-libs-with-aliases-only",
      // (French grammar police will be surrounding my house soon, probably, but ...)
      "comment": "importer depuis des /libs ? Utilisez un alias des tsconfig-paths (`@module/`) !", 
      "severity": "error",
      "from": {
      },
      "to": {
        "path": "^lib/",
        "dependencyTypesNot": ["aliased-tsconfig"]
      }
    },
  // ... other rules
  ],
// ...
}

To achieve something similar with the 'allowed' rule is more complicated as every statement in that rule should evaluate to true to pass. So this might look like a promising start:

{
  allowed: [
    {
      // (French grammar police will be surrounding my house soon, probably, but ...)
      "comment": "importer depuis des /libs ? Utilisez un alias des tsconfig-paths (`@module/`) !", 
      "from": {
      },
      "to": {
        "path": "^lib/",
        "dependencyTypes": ["aliased-tsconfig"]
      }
    },
  ],
  allowedSeverity: "error"
}

However this means that the only dependencies that are allowed are those that are aliased, and go to ^libs. This would exclude dependencies to core or npm modules. Or dependencies within the ^apps/ folder , ... So we need to have an extra statement to disclaim that.

{
  allowed: [
    {
      "from": {
      },
      "to": {
        "path": "^lib/",
        "dependencyTypes": ["aliased-tsconfig"]
      }
    },
    {
      "from": {
      },
      "to": {
        "pathNot": "^lib/",
      }
    }
  ],
  allowedSeverity: "error"
}

This can quickly spiral out of control. I.e. now it's not possible to have an import like import { lalala } from './aides' in /lib/livre/src/index.ts. So that'd need to be compensated as well ...

Anyway: thanks for this question!! It made me realize the documentation needs a clarification section. I hope the explanation above already helps a bit.

@throrin19
Copy link
Author

Thank you for your feedback and explanations. I understand better the use of Allowed and indeed I had misunderstood its use.

@throrin19
Copy link
Author

Sorry for the reopen. After test of this forbidden rule, I have a problem : All call inside one library are in error because I use relative path instead of alias (It's normal, we are inside the same library).

How to avoid this errors ?

For example, If I'm in libs/types, calls to files inside libs/types are not called with typescript alias. But if libs/types is called outside, we should use the typescript alias.

error not-relative-libs-import: libs/types/types/rights.d.ts → libs/types/types/helpers.d.ts
error not-relative-libs-import: libs/types/types/currentUser.d.ts → libs/types/types/rights.d.ts
error not-relative-libs-import: libs/types/index.d.ts → libs/types/types/rights.d.ts
error not-relative-libs-import: libs/types/index.d.ts → libs/types/types/helpers.d.ts
error not-relative-libs-import: libs/types/index.d.ts → libs/types/types/currentUser.d.ts
error not-relative-libs-import: libs/types/index.d.ts → libs/types/types/authToken.d.ts

In documentation I found we can link to with from regexp groups but not the other way around.

@throrin19 throrin19 reopened this Nov 9, 2023
@sverweij
Copy link
Owner

sverweij commented Nov 9, 2023

Hi @throrin19 I should've included in my example yesterday. A way I use to solve this is to have two rules:

  • one for modules outside libs
  • one for modules inside them

so, like this:

// ...
{
  forbidden: [
    {
      "name": "imports-from-outside-libs-with-aliases-only",
      "severity": "error",
      "from": {
        "pathNot": "^lib/",
      },
      "to": {
        "path": "^lib/",
        "dependencyTypesNot": ["aliased-tsconfig"]
      }
    },
    {
      "name": "imports-from-other-libs-with-aliases-only",
      "severity": "error",
      "from": {
        "path": "(^lib/[^/]+/)", // if this matches e.g. lib/livres/src/quelquechose.ts ...
      },
      "to": {
        "path": "^lib/",
        "pathNot": "$1",        // ...then this matches lib/livres, ensuring the rule doesn't apply to lib/livres itself.
        "dependencyTypesNot": ["aliased-tsconfig"]
      }
    },
  // ... other rules
  ],
// ...
}

I'm using this setup in dependency-cruiser itself now as well to ensure
subpath-imports (the node.js native version of tsconfig paths that works
out of the box) are used wherever possible. Thanks for the inspiration!

@throrin19
Copy link
Author

Thanks @sverweij but I have problems for specific checks

  • Works fine :
    • If I import using relativePath it works fine, I have error import myLib from '../otherLib';
    • If I import using TS alias, it works fine, I have no error import myLib from '@company/otherLib;`
    • If I import content inside the library, it works fine, I have no error import otherFile from './otherFile';
  • Wrong check :
    • If I import using workspace paths, I have no error import myLib from 'libs/otherLib';

@sverweij
Copy link
Owner

So import myLib from 'libs/otherLib' should be import myLib from '@company/otherLib' instead? From within the libs folder or outside it?

@throrin19
Copy link
Author

If we want to call another lib, whether we're in the libs folder or not, I want to go through @company/libName.

sverweij added a commit that referenced this issue Nov 12, 2023
## Description

- adds explicit detection of modules aliased via
[workspaces](https://docs.npmjs.com/cli/v10/using-npm/workspaces)
- introduces the `aliased-workspace` dependency type

## Motivation and Context

Imports from workspaces have been well-supported in dependency-cruiser
since the stone age. Not by brilliant foresight, but because it plugs
into the regular node.js module resolution - workspaces are symlinks in
node_modules sorta automatically linked to local folders.
Dependency-cruiser didn't explicitly name them as separate
dependency-types (instead slotting them into dependency type 'local' or
'npm-no-pkg' (when `npm i` wasn't run on the folder yet)). This PR
corrects that oversight.

This PR also fixes a bug uncovered by @throrin19: workspace imports were
erroneously classified as tsconfig aliases (see #863 for details).

## How Has This Been Tested?

- [x] green ci
- [x] additional unit tests
- [x] additional integration test


## Types of changes

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] Documentation only change
- [ ] Refactor (non-breaking change which fixes an issue without
changing functionality)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
@sverweij
Copy link
Owner

Hi @throrin19 you found a bug, thanks for letting me know! After some detective work it turned out that workspace paths in quite a few cases were erroneously classified as aliased-tsconfig. The PR above fixes this for the vast majority of cases. It's published as dependency-cruiser@15.3.0 just now.

Let me know if it indeed fixed the issue for you as well!

The only edge case where workspaces paths are now sometimes aren't detected as such is when
preserveSymlinks in .dependency-cruiser.js is switched to true and there's some
specific conditions with package names & locations that don't line up. As in the
.dependency-cruiser.js you shared earlier preserveSymlinks is left at the default (false)
it should work for you.

@throrin19
Copy link
Author

throrin19 commented Nov 13, 2023

Unfortunately, If I'm with this forbidden rules :

 {
            name        : 'imports-from-outside-libs-with-aliases-only',
            severity    : 'error',
            from        : {
                pathNot : '^libs/',
            },
            to : {
                path                : '^libs/',
                dependencyTypesNot  : ['aliased-tsconfig'],
            },
        },
        {
            name        : 'imports-from-other-libs-with-aliases-only',
            severity    : 'error',
            from        : {
                path : '(^libs/[^/]+/)', // if this matches e.g. lib/livres/src/quelquechose.ts ...
            },
            to : {
                path                : '^libs/',
                pathNot             : '$1',        // ...then this matches lib/livres, ensuring the rule doesn't apply to lib/livres itself.
                dependencyTypesNot  : ['aliased-tsconfig'],
            },
        },

I have exactly same result as before update dependency-cruiser. I try with preserveSymlinks true or false and I have the same result.

For Example I have 2 libraries and one stack :

├── libs
│   ├── configuration   # load outside with ts-alias `@company/configuration`
│   │    ├── index.ts   # entrypoint
│   │    ├── src
│   │    │   ├── config.ts
│   ├──  models         # load outside with ts-alias `@company/models`
│   │    ├── index.ts   # entrypoint
│   │    ├── src
│   │    │   ├──model.ts
├── stacks
│   ├──  users          # load outside with ts-alias `@company/users`
│   │    ├── index.ts   # entrypoint
│   │    ├── src
│   │    │   ├──handler.ts

If I wait to use libs/configuration inside libs/models or stacks/users I want to call it with @company/configuration, not with libs/configuration :

// outside libs/configuration
import { myConfig } from 'libs/configuration'; // BAD
import { myConfig } from '@company/configuration'; // GOOD

// inside libs/configuration/index.ts
export * from './src/config.ts'; // GOOD

@stelescuraul
Copy link

I believe I am running into a problem similar to above but only using the aliased-workspace dependency type.
I have made a git repo where you can see the issue: https://github.com/stelescuraul/dep-cruiser-issue
It is an npm workspace project, using package.json->name to reference modules.
Here's the structure of the project:

.
├── libs
│  ├── common
│  │  ├── index.js
│  │  └── package.json
│  └── math
│     ├── index.js
│     ├── package.json
│     └── src
│        └── foo.js
├── package-lock.json
├── package.json
├── projects
│  └── api
│     ├── main.js
│     ├── models.js
│     └── package.json

I would expect that libs can be imported from anywhere. Projects can import libs, and libs can import each other (this might be tighten in the future). For example math can import common. However, I expect all these imports to happen via the aliased defined by each lib in their own package.json and not via relative paths. Eg: import foo from '@foo/common'.

The dependencies are defined in a single package.json across all projects/libs, so only the root package.json will ever contain dependencies. Adding combinedDependencies works fine in this regard, however I can't seem to make the rules work without adding preserveSymlinks: true which in turn makes the graph look wrong. With preserveSymlinks the dependency graph will point to @foo/common inside node_modules instead of directly on the source under libs.
I would expect that when the dependencyType is set to aliased-workspace the rules would work without preserveSymlinks.

Here's an example of the ones that fail:

  error no-import-module-from-outside: libs/math/index.js → projects/api/models.js -> this is correct
  error imports-from-outside-libs-with-aliases-only: projects/api/main.js → libs/math/src/foo.js -> this should be fine
  error imports-from-outside-libs-with-aliases-only: projects/api/main.js → libs/math/index.js -> this should be fine
  error imports-from-other-libs-with-aliases-only: libs/math/src/foo.js → libs/common/index.js -> this should be fine

If I add preserveSymlinks it seems like the package cannot be resolved because they are not defined as direct dependency in the first found package.json (basically it looks like it ignores combinedDependencies option). The output is:

  error no-non-package-json: projects/api/main.js → node_modules/@foo/math/src/foo.js -> wrong
  error no-non-package-json: projects/api/main.js → node_modules/@foo/math/index.js -> wrong
  error no-non-package-json: libs/math/src/foo.js → node_modules/@foo/common/index.js -> wrong
  error no-import-module-from-outside: libs/math/index.js → projects/api/models.js -> correct

To get around this, I need to add couldNotResolve: true to the no-non-package-json rule. This might be expected behaviour but the graph should still figure out that the dependencies are in fact aliased and point to the ones directly under /lib.

Do you have an idea if this is wrong configuration on my side or is it a bug/feature request?

@sverweij
Copy link
Owner

Hi @throrin19 thanks for the feedback. Clearly there's still something that doesn't work like it should. To determine what exactly I need a minimal reproduction sample. Luckily @stelescuraul provided one (thanks!!!) and that helped to find the root cause. Next step is to write some extra tests & cook a fix.

Unexpectedly the root is in the mechanism to merge multiple package.json's - to save processing & memory that only merges those parts of package.json's that are relevant for dependency-cruiser (dependencies, devDependencies, bundledDependencies, ...) but nothing else. So the fix is to also process the workspaces field.

@sverweij
Copy link
Owner

@throrin19 @stelescuraul there's a quick fix (see above) which I've published as dependency-cruiser@15.3.1-beta-1. It seems to work as desired against the minimal repro repo:

$ npx depcruise projects libs

  error no-import-module-from-outside: libs/math/index.js → projects/api/models.js

✘ 1 dependency violations (1 errors, 0 warnings). 5 modules, 5 dependencies cruised.

or, graphically:

graph

I'll make the fix a bit better & add some non-regression guarantees in the code base before publising it as dependency-cruiser@latest - but would love to hear feedback on this version already!

@throrin19
Copy link
Author

Hello @sverweij Thanks for all your works.

The fix is a bit violent 😄. Now all my imports (with or without the use of tsconfig aliases) are seen in error.

A little clarification I hadn't included: I use aliases for the libs but the libs and stacks folders are in the NPM workspaces.

@stelescuraul
Copy link

stelescuraul commented Nov 16, 2023

Thanks for the update @sverweij. The graph and aliases are now resolved, but I encounter a small issue. With the beta branch you added, everything works fine But I can't forbid imports using the folder paths directly. For example, in api/main.js I would expect the following:

import { sum } from "@foo/math"; -> ✅ works fine
import { foo } from "../../libs/math/src/foo.js"; ❌  -> I would expect this would not work but it does pass
// import { foo } from "@foo/math/src/foo.js"; ✅  -> works fine

I have tried adding this rule as well but it still fails:

    {
      name: "imports-from-outside-libs-with-aliases-only-local-packages",
      severity: "error",
      from: {
        pathNot: "^libs/",
      },
      to: {
        path: "^libs/",
        dependencyTypes: ["local"],
      }
    }

In the 15.3.0 the above is not allowed and it is covered directly by the rule imports-from-outside-libs-with-aliases-only.

@sverweij
Copy link
Owner

Hi @stelescuraul thanks for testing the beta! You found a bug: in the beta ../../libs/math/src/foo.js classified as aliased-workspace (in addition to local. Obviously it shouldn't have done that. Fixed now (with unit tests to prevent regression).

@sverweij
Copy link
Owner

Hi @throrin19 thanks for testing as well! Could it be the paths in the tsconfig.json's are the same as those used for workspaces (i.e. the name attribute in the package.json's of the packages being called)?

@throrin19
Copy link
Author

Hi @sverweij. Yes normally it's the same

workspaces in package.json :

{
"workspaces": [
    "stacks/*",
    "libs/*"
  ]
}

tsconfig alias :

{
    "paths": {
      "@company/configuration": [
        "libs/configuration/index.ts"
      ],
      "@company/errors": [
        "libs/errors/index.ts"
      ],
      "@company/helper-aws": [
        "libs/helper-aws/index.ts"
      ],
    }
}

@sverweij
Copy link
Owner

sverweij commented Nov 22, 2023

Hi @throrin19 and @stelescuraul - yesterday I've released dependency-cruiser@15.3.1-beta-2 which I'm reasonably confident solves both the issues you found in beta-1.

@throrin19 if the 'violence' of beta-1 persists in beta-2 I'll have to write some additional detection logic. Tests I've done so far indicate it's not necessary, but I'm a fallible human being so it's not unthinkable I missed a scenario. Let me know if this is indeed the case!

@throrin19
Copy link
Author

Hi @sverweij I try to test this as soon as possible :)

@stelescuraul
Copy link

version dependency-cruiser@15.3.1-beta-2 seems to be working fine for my use case! Thank you for the fixes.

@sverweij
Copy link
Owner

sverweij commented Dec 1, 2023

Thanks for the feedback @stelescuraul!

@throrin19 - today I got time to write a thorough integration test and I can still reproduce the issue you have, even with the latest betas. So I'm going to try a different approach.

@sverweij
Copy link
Owner

sverweij commented Dec 3, 2023

Back from the tsconfig resolution rabbit-hole - there's a dependency-cruiser@16.0.0-beta-2 out that fixes the issue more thoroughly and has the automated non-regression tests to prove it (see #867 for details).

I'm curious to see whether this also holds up in your environment @throrin19 - if you have a bit of time to test it out I'd be grateful to hear your feedback!

@throrin19
Copy link
Author

it changes nothing for me. If I import like this :

import { getConfiguration } from 'libs/configuration';

it return no error :(

@sverweij
Copy link
Owner

sverweij commented Dec 5, 2023

Hi @throrin19 hmmm does your tsconfig.json contain a baseUrl e.g. "baseUrl": "./"? In that case the TypeScript compiler, and every resolver following its specification will try to resolve non-local to that baseUrl before doing anything else. Although not tsconfig paths it's still a resolution that takes place via tsconfig. See https://www.typescriptlang.org/tsconfig#baseUrl for details.

In 16.0.0-beta-2 I've added a sub-distinction for these two tsconfig alias types:

  • aliased-tsconfig-base-url - when it was resolved relative to the "baseUrl attribute in the tsconfig
  • aliased-tsconfig-paths - when it occurs in the "paths" attribute in tsconfig

So if you want that specificity you can use it in your rules. Alternatively you could remove the "baseUrl" from the tsconfig, which is what the official TypeScript language reference seems to suggest.

minimal reproduction repo

In case the issue persists: I've set up a minimal reproduction sample in dependency-cruiser-repro-repo/863. It does seem to properly distinguish tsconfig paths from e.g. workspaces aliases, as well as show whether it's a baseUrl or a paths type of tsconfig. The repo is set up to easily include new test cases in this area - so if it doesn't cover your use case (i.e. the baseUrl turns out to be not the culprit) I'd love to see it!

I did have to correct a few of the bits of the .dependency-cruiser.js I included above for typos, though (lib -> libs for one), but from the samples you provided after you probably already did those corrections yourself.

sverweij added a commit that referenced this issue Dec 6, 2023
…ng (#882)

## Description

- adds ability to match arrays for conditional coloring on the dot
reporter's theming

## Motivation and Context

So it's possible to add formatting based on array like properties (like
`dependencyTypes`) and to have a convenient way to match against
multiple criteria at the same time.

## How Has This Been Tested?

- [x] green ci
- [x] additional automated non-regression tests

## Screenshots

E.g. to color based on types of aliased dependency types like this:


![colored-by-dependency-types](https://github.com/sverweij/dependency-cruiser/assets/4822597/3a11cb97-341d-41e4-8774-53331102cbf9)

(from the reproduction example for #863 on
https://github.com/sverweij/dependency-cruiser-repro-repo/tree/main/863)


... you can use this configuration that uses most features enabled by
this PR:

```javascript
/** @type {import('dependency-cruiser').IConfiguration} */
module.exports = {
  options: {
    doNotFollow: { path: "node_modules" },
    moduleSystems: ["es6", "cjs"],
    tsPreCompilationDeps: true,
    combinedDependencies: true,
    tsConfig: { fileName: "tsconfig.json" },
    reporterOptions: {
      dot: {
        theme: {
          graph: {
            rankdir: "TD",
            splines: "ortho",
          },
          dependencies: [
            {
              // if the dependency type is one of the tsconfig type aliases ...
              criteria: {
                dependencyTypes: [
                  "aliased-tsconfig-",
                  "aliased-tsconfig-base-url",
                ],
              },
              // ... color the line teal
              attributes: { color: "blue" },
            },
            {
              criteria: { dependencyTypes: ["aliased-workspace"] },
              attributes: { color: "purple" },
            },
            {
              // if you just want one of the dependency types to match, a string suffices
              criteria: { dependencyTypes: "aliased-subpath-import" },
              attributes: { color: "green" },
            },
          ],
        },
      },
    },
  },
};
```

## Types of changes

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] Documentation only change
- [ ] Refactor (non-breaking change which fixes an issue without
changing functionality)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)

## Checklist

- [x] 📖

  - My change doesn't require a documentation update, or ...
  - it _does_ and I have updated it

- [x] ⚖️
- The contribution will be subject to [The MIT
license](https://github.com/sverweij/dependency-cruiser/blob/main/LICENSE),
and I'm OK with that.
  - The contribution is my own original work.
- I am ok with the stuff in
[**CONTRIBUTING.md**](https://github.com/sverweij/dependency-cruiser/blob/main/.github/CONTRIBUTING.md).
sverweij added a commit that referenced this issue Dec 9, 2023
…REAKING (#867)

## Description

- takes 'workspaces' field into account when merging package manifests
- same for the 'imports' field
- when determining what kind of an alias a thing is use the _parsed_
tsconfig to determine it
- adds `alias-tsconfig-base-url` and `alias-tsconfig-paths` dependency
types to distinguish between the two types of aliases one can use within
tsconfigs. B.t.w. for both dependency-cruiser will keep emitting the
`alias` and `alias-tsconfig` dependency types as well - both for
convenience and backwards compatibility.


This PR is theoretically 🚨 BREAKING as rules previously defined on
aliases, that didn't fire now _will_ because they're now detected
correctly.

## Motivation and Context

Now we're doing explicit things with `workspaces` and `imports` fields
we need to have them in merged package manifests as well, so in
monorepos we still take them into account. The rewrite of the tsconfig
alias detection logic is necessary to ensure we detect tsconfig aliases
correctly and more precisely.


Also see #863.

## How Has This Been Tested?

- [x] green ci
- [x] additional unit tests
- [x] additional integration test(s)

## Types of changes

- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] Documentation only change
- [ ] Refactor (non-breaking change which fixes an issue without
changing functionality)
- [x] New feature (non-breaking change which adds functionality)
- [x] Breaking change (fix or feature that would cause existing
functionality to change)
@throrin19
Copy link
Author

Hi @sverweij Yes, I have a baseUrl in my tsconfig. I try with aliased-tsconfig-paths and it works fine \o/

jtoar added a commit to redwoodjs/redwood that referenced this issue Dec 15, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [cypress](https://cypress.io)
([source](https://togithub.com/cypress-io/cypress)) | [`12.17.4` ->
`13.6.1`](https://renovatebot.com/diffs/npm/cypress/12.17.4/13.6.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/cypress/13.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/cypress/13.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/cypress/12.17.4/13.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cypress/12.17.4/13.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [cypress-wait-until](https://togithub.com/NoriSte/cypress-wait-until)
| [`1.7.2` ->
`3.0.1`](https://renovatebot.com/diffs/npm/cypress-wait-until/1.7.2/3.0.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/cypress-wait-until/3.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/cypress-wait-until/3.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/cypress-wait-until/1.7.2/3.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cypress-wait-until/1.7.2/3.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [dependency-cruiser](https://togithub.com/sverweij/dependency-cruiser)
| [`13.1.5` ->
`15.5.0`](https://renovatebot.com/diffs/npm/dependency-cruiser/13.1.5/15.5.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/dependency-cruiser/15.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dependency-cruiser/15.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dependency-cruiser/13.1.5/15.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dependency-cruiser/13.1.5/15.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>cypress-io/cypress (cypress)</summary>

###
[`v13.6.1`](https://togithub.com/cypress-io/cypress/releases/tag/v13.6.1)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.6.0...v13.6.1)

Changelog: https://docs.cypress.io/guides/references/changelog#13-6-1

###
[`v13.6.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.6.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.5.1...v13.6.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-6-0

###
[`v13.5.1`](https://togithub.com/cypress-io/cypress/releases/tag/v13.5.1)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.5.0...v13.5.1)

Changelog: https://docs.cypress.io/guides/references/changelog#13-5-1

###
[`v13.5.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.5.0):
v.13.5.0

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.4.0...v13.5.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-5-0

###
[`v13.4.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.4.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.3.3...v13.4.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-4-0

###
[`v13.3.3`](https://togithub.com/cypress-io/cypress/releases/tag/v13.3.3)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.3.2...v13.3.3)

Changelog: https://docs.cypress.io/guides/references/changelog#13-3-3

###
[`v13.3.2`](https://togithub.com/cypress-io/cypress/releases/tag/v13.3.2)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.3.1...v13.3.2)

Changelog: https://docs.cypress.io/guides/references/changelog#13-3-2

###
[`v13.3.1`](https://togithub.com/cypress-io/cypress/releases/tag/v13.3.1)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.3.0...v13.3.1)

Changelog: https://docs.cypress.io/guides/references/changelog#13-3-1

###
[`v13.3.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.3.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.2.0...v13.3.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-3-0

###
[`v13.2.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.2.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.1.0...v13.2.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-2-0

###
[`v13.1.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.1.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.0.0...v13.1.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-1-0

###
[`v13.0.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.0.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v12.17.4...v13.0.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-0-0

</details>

<details>
<summary>NoriSte/cypress-wait-until (cypress-wait-until)</summary>

###
[`v3.0.1`](https://togithub.com/NoriSte/cypress-wait-until/releases/tag/v3.0.1)

[Compare
Source](https://togithub.com/NoriSte/cypress-wait-until/compare/v3.0.0...v3.0.1)

##### Bug Fixes

- unset the Node.js version
([#&#8203;479](https://togithub.com/NoriSte/cypress-wait-until/issues/479))
([236db14](https://togithub.com/NoriSte/cypress-wait-until/commit/236db146b91480061db4a3feda8d94177acb88c4)),
closes
[#&#8203;472](https://togithub.com/NoriSte/cypress-wait-until/issues/472)

###
[`v3.0.0`](https://togithub.com/NoriSte/cypress-wait-until/releases/tag/v3.0.0)

[Compare
Source](https://togithub.com/NoriSte/cypress-wait-until/compare/v2.0.1...v3.0.0)

- Fix typescript signature
([#&#8203;478](https://togithub.com/NoriSte/cypress-wait-until/issues/478))
([8e3ff03](https://togithub.com/NoriSte/cypress-wait-until/commit/8e3ff03d698ff7fc2abdca7a04a9c842ef661f38)),
closes
[#&#8203;478](https://togithub.com/NoriSte/cypress-wait-until/issues/478)
[#&#8203;477](https://togithub.com/NoriSte/cypress-wait-until/issues/477)

##### BREAKING CHANGES

- TypeScript tests could now throw because of operations made on the
value returned
by `checkFunction` (passed to cy.waitUntil). The type was previously
`undefined` while now reflecting
    the type returned by `checkFunction`.

###
[`v2.0.1`](https://togithub.com/NoriSte/cypress-wait-until/releases/tag/v2.0.1)

[Compare
Source](https://togithub.com/NoriSte/cypress-wait-until/compare/v2.0.0...v2.0.1)

##### Bug Fixes

- Unset the Node.js and NPM version
([213b780](https://togithub.com/NoriSte/cypress-wait-until/commit/213b7805d44be534e7904dcacc3e89b5fbe9814e)),
closes
[#&#8203;472](https://togithub.com/NoriSte/cypress-wait-until/issues/472)

###
[`v2.0.0`](https://togithub.com/NoriSte/cypress-wait-until/releases/tag/v2.0.0)

[Compare
Source](https://togithub.com/NoriSte/cypress-wait-until/compare/2070d47147ab711157db744136c4cf26a7c8f91e...v2.0.0)

##### Bug Fixes

- update the timeout logic to consider also the checkFunction duration
([146a775](https://togithub.com/NoriSte/cypress-wait-until/commit/146a775d0b39b594e9875384aeca4eff6b97175a)),
closes
[#&#8203;464](https://togithub.com/NoriSte/cypress-wait-until/issues/464)

##### BREAKING CHANGES

- The timeout is now respected even if checkFunction takes a long time.
As a result,
    you could face that your checkFunction runs less times.

-   Drop support for Node.js < 18.16.0

</details>

<details>
<summary>sverweij/dependency-cruiser (dependency-cruiser)</summary>

###
[`v15.5.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.5.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.4.0...v15.5.0)

#### ✨ features

-
[`8aa2a3d`](https://togithub.com/sverweij/dependency-cruiser/commit/8aa2a3d5)
feat(init): adds exception to not-to-dev-dep for type-only dependencies
([#&#8203;874](https://togithub.com/sverweij/dependency-cruiser/issues/874))
- thanks to [@&#8203;alvaro-cuesta](https://togithub.com/alvaro-cuesta)
for the suggestion
-
[`91f36a5`](https://togithub.com/sverweij/dependency-cruiser/commit/91f36a5c)/
[`38c4a46`](https://togithub.com/sverweij/dependency-cruiser/commit/38c4a460)
feat(wrap-stream-in-html): adds a gradient on highlighted edges
([#&#8203;878](https://togithub.com/sverweij/dependency-cruiser/issues/878))

#### 📖 documentation

-
[`9415a84`](https://togithub.com/sverweij/dependency-cruiser/commit/9415a847)
fix(doc): re-organizes types folder, improves typing of
extract-webpack-resolve-config
-
[`6d808db`](https://togithub.com/sverweij/dependency-cruiser/commit/6d808db0)
fix(doc): improves package type exports
([#&#8203;876](https://togithub.com/sverweij/dependency-cruiser/issues/876))
making [are the types wrong](https://arethetypeswrong.github.io/) a
little more happy

#### 👷 maintenance

-
[`ae0c3d6`](https://togithub.com/sverweij/dependency-cruiser/commit/ae0c3d60)
build(npm): updates external devDependencies
-
[`c6a33b1`](https://togithub.com/sverweij/dependency-cruiser/commit/c6a33b18)
refactor(wrap-stream-in-html): makes the wrapper easier to maintain
([#&#8203;877](https://togithub.com/sverweij/dependency-cruiser/issues/877))

###
[`v15.4.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.4.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.3.0...v15.4.0)

##### ✨ features

-
[`ba4533f`](https://togithub.com/sverweij/dependency-cruiser/commit/ba4533fe)
feat(resolve): enables passing 'aliasFields' to enhanced-resolve
([#&#8203;870](https://togithub.com/sverweij/dependency-cruiser/issues/870))
- thanks to [@&#8203;JakeSidSmith](https://togithub.com/JakeSidSmith)
for not only raising the issue that led to this fix, but also for the
detailed & well documented research that made this addition a *very*
easy one to implement.
-
[`dfdb385`](https://togithub.com/sverweij/dependency-cruiser/commit/dfdb385d)
feat(reporter/dot): only considers rule severity for coloring invalid
modules/ dependencies
([#&#8203;869](https://togithub.com/sverweij/dependency-cruiser/issues/869))

##### 🐛 fixes

-
[`3445a3b`](https://togithub.com/sverweij/dependency-cruiser/commit/3445a3bb)
fix(init): makes initial regular expressions more specific
([#&#8203;872](https://togithub.com/sverweij/dependency-cruiser/issues/872))-
thanks [@&#8203;mx-bernhard](https://togithub.com/mx-bernhard) for
raising the issue and suggesting an elegant fix.

##### 📖 documentation

-
[`aca6489`](https://togithub.com/sverweij/dependency-cruiser/commit/aca64898)
doc: modify semicolons to commas
([#&#8203;866](https://togithub.com/sverweij/dependency-cruiser/issues/866))

##### 👷 maintenance

-
[`a6d562b`](https://togithub.com/sverweij/dependency-cruiser/commit/a6d562b7)
build(npm): updates external dependencies

###
[`v15.3.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.3.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.2.0...v15.3.0)

#### ✨ features

-
[`fce008d`](https://togithub.com/sverweij/dependency-cruiser/commit/fce008d5)
feat(extract): makes support for workspaces explicit
([#&#8203;864](https://togithub.com/sverweij/dependency-cruiser/issues/864))
This should also fix the bug discovered by
[@&#8203;throrin19](https://togithub.com/throrin19) in
[sverweij/dependency-cruiser#863

#### 👷 maintenance

-
[`6eb9c61`](https://togithub.com/sverweij/dependency-cruiser/commit/6eb9c61f)
build(npm): updates external dependencies
-
[`ae9b688`](https://togithub.com/sverweij/dependency-cruiser/commit/ae9b688e)
refactor(resolve): hands over preserveSymlink processing to EHR
([#&#8203;865](https://togithub.com/sverweij/dependency-cruiser/issues/865))
-
[`41b20c6`](https://togithub.com/sverweij/dependency-cruiser/commit/41b20c67)
fix(test): makes c8 stop processing again when coverage is too low
-
[`6dc0632`](https://togithub.com/sverweij/dependency-cruiser/commit/6dc06324)
fix(test): ensures that by default subpath imports are used for local
imports

###
[`v15.2.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.2.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.1.1...v15.2.0)

#### ✨ features

-
[`2868e19`](https://togithub.com/sverweij/dependency-cruiser/commit/2868e199)
feat(cache): adds option to compress the cache file
([#&#8203;860](https://togithub.com/sverweij/dependency-cruiser/issues/860))

#### 👷 maintenance

-
[`73b8381`](https://togithub.com/sverweij/dependency-cruiser/commit/73b8381e)
build(npm): updates external dependencies
-
[`3fc50a2`](https://togithub.com/sverweij/dependency-cruiser/commit/3fc50a2d)
ci(deps): bump actions/setup-node from 3 to 4
([#&#8203;858](https://togithub.com/sverweij/dependency-cruiser/issues/858))
-
[`9b52267`](https://togithub.com/sverweij/dependency-cruiser/commit/9b522676)
refactor(tools): folds d2 test fixture regeneration into existing report
fixture regeneration

###
[`v15.1.1`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.1.1)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.1.0...v15.1.1)

#### 🐛 fixes

-
[`8c06016`](https://togithub.com/sverweij/dependency-cruiser/commit/8c060162)
fix: makes globbing work on windos again

###
[`v15.1.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.1.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.0.0...v15.1.0)

##### ✨ features

-
[`1ac6b2e`](https://togithub.com/sverweij/dependency-cruiser/commit/1ac6b2e9)/
[`bb548c2`](https://togithub.com/sverweij/dependency-cruiser/commit/bb548c2f)
feat(report): adds basic d2 (https://d2lang.com/) reporter
([#&#8203;857](https://togithub.com/sverweij/dependency-cruiser/issues/857))

##### 👷 maintenance

-
[`14691b7`](https://togithub.com/sverweij/dependency-cruiser/commit/14691b70)
build(npm): updates external dependencies
-
[`a442703`](https://togithub.com/sverweij/dependency-cruiser/commit/a4427032)
refactor(configs): makes the 2 sample reporter plugins ESM

###
[`v15.0.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.0.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v14.1.2...v15.0.0)

##### ✨ features (🚨 *with* breaking changes)

For the majority of use cases these additions are not breaking. For the
few use cases that are: dependency-cruiser has gotten a little more
precise only ...

-
[`a3cfcec`](https://togithub.com/sverweij/dependency-cruiser/commit/a3cfcecf)
feat!(extract): makes 'real' depencency type available alongside aliases
BREAKING
([#&#8203;856](https://togithub.com/sverweij/dependency-cruiser/issues/856))
If you have rules that check for dependencyTypes explicitly the rules
will still work as before, but they'll be more effective, potentially
uncovering transgressions dependency-cruiser didn't find in earlier
versions.

-
[`36c3dde`](https://togithub.com/sverweij/dependency-cruiser/commit/36c3dde9)
feat!(extract): makes support for subpath imports explicit BREAKING
([#&#8203;855](https://togithub.com/sverweij/dependency-cruiser/issues/855))
Because dependency-cruiser now labels [subpath
imports](https://nodejs.org/api/packages.html#subpath-imports) as
`alias` and `alias-subpath-import` instead of `undetermined`:
- if you have rules that explicitly check for `alias` dependency-crusier
might uncover transgressions it didn't before.
- Likewise if you had rules with checks on `undetermined` dependency
types to find subpath imports, you might want to update them to
`alias-subpath-import`

##### ✨ features

-
[`08dce74`](https://togithub.com/sverweij/dependency-cruiser/commit/08dce742)
feat(report): links to npmjs/ nodejs.org for npm respectively node and
core modules
([#&#8203;854](https://togithub.com/sverweij/dependency-cruiser/issues/854))
thanks to [@&#8203;CaptainQuirk](https://togithub.com/CaptainQuirk) for
the question that led to this feature and for the feedback on the first
crude prototype.

##### 👷 mainteinance

-
[`e7ae8ef`](https://togithub.com/sverweij/dependency-cruiser/commit/e7ae8ef2)
build(npm): updates external devDependencies
-
[`c9288e3`](https://togithub.com/sverweij/dependency-cruiser/commit/c9288e37)
ci: sets latest used node version to 21

###
[`v14.1.2`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v14.1.2)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v14.1.1...v14.1.2)

##### 👷 maintenance

-
[`45ada49`](https://togithub.com/sverweij/dependency-cruiser/commit/45ada490)
build(npm): updates external dependencies
-
[`b0171b2`](https://togithub.com/sverweij/dependency-cruiser/commit/b0171b20)
chore(tools): replaces a stray use of lodash.cloneXXX with
structuredClone
-
[`27aa37e`](https://togithub.com/sverweij/dependency-cruiser/commit/27aa37e1)
refactor: uses one subpath import for most stuff in src
-
[`d4fb629`](https://togithub.com/sverweij/dependency-cruiser/commit/d4fb6299)
chore(test): replaces a stray use of lodash.cloneXXX with
structuredClone
-
[`f249954`](https://togithub.com/sverweij/dependency-cruiser/commit/f2499545)
refactor: introduces use of node imports aliasses in package.json
([#&#8203;851](https://togithub.com/sverweij/dependency-cruiser/issues/851))

###
[`v14.1.1`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v14.1.1)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v14.1.0...v14.1.1)

##### 👷 maintenance

-
[`be0ef74`](https://togithub.com/sverweij/dependency-cruiser/commit/be0ef743)
build(npm): updates external dependencies
-
[`c421cd1`](https://togithub.com/sverweij/dependency-cruiser/commit/c421cd18)
build(npm): pins transitive devDependency postcss (that's via vue) to
^8.14.31
-
[`a1e5610`](https://togithub.com/sverweij/dependency-cruiser/commit/a1e56105)
refactor: replaces lodash's clone & cloneDeep with native
structuredClone
([#&#8203;850](https://togithub.com/sverweij/dependency-cruiser/issues/850))
-
[`7651db4`](https://togithub.com/sverweij/dependency-cruiser/commit/7651db45)
ci(npm): fixes repository field to match some other kind of format

###
[`v14.1.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v14.1.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v14.0.0...v14.1.0)

##### ✨ features

-
[`32cad15`](https://togithub.com/sverweij/dependency-cruiser/commit/32cad154)
feature(init): adds 'module' field to enhancedResolve `mainFields` when
current module is type:module
([#&#8203;846](https://togithub.com/sverweij/dependency-cruiser/issues/846))
- thanks to [@&#8203;JakeSidSmith](https://togithub.com/JakeSidSmith)
for asking the question that led to this addition
-
[`ddd2ee6`](https://togithub.com/sverweij/dependency-cruiser/commit/ddd2ee6f)
feature(main|extract): adds `builtInModules` option to tweak what to
consider built-in (/ core) modules
([#&#8203;847](https://togithub.com/sverweij/dependency-cruiser/issues/847))
- thanks again to
[@&#8203;JakeSidSmith](https://togithub.com/JakeSidSmith) for providing
the context to see why this would be a useful feature

##### 📖 documentation

-
[`b92b79b`](https://togithub.com/sverweij/dependency-cruiser/commit/b92b79bd)
doc(options): elaborates on how to use the `mainFields` attributes in
ESM context

##### 👷 maintenance

-
[`7b28857`](https://togithub.com/sverweij/dependency-cruiser/commit/7b28857e)
build(npm): updates external devDependencies
-
[`c2d731c`](https://togithub.com/sverweij/dependency-cruiser/commit/c2d731c4)
refactor: renames functions that assert things so they reflect that
([#&#8203;848](https://togithub.com/sverweij/dependency-cruiser/issues/848))
-
[`48ce9ab`](https://togithub.com/sverweij/dependency-cruiser/commit/48ce9ab7)
refactor(extract): rewrites gatherInitialSources' reduce with flatMap
([#&#8203;842](https://togithub.com/sverweij/dependency-cruiser/issues/842))

###
[`v14.0.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v14.0.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v13.1.5...v14.0.0)

##### 🚨 breaking changes

-
[`3a9d384`](https://togithub.com/sverweij/dependency-cruiser/commit/3a9d3848)/
[`6cb8e8e`](https://togithub.com/sverweij/dependency-cruiser/commit/6cb8e8eb)
ci!: drops support for node 16 and 19, sets minimum supported nodejs
version to 18.17 BREAKING
As we follow the nodejs release cycle and both node 16 and 19 are EOL,
we drop support for them. You
probably have already upgraded to node 18, but if not, now is the time
to do so :-). If you need
to support older nodejs versions, you can still use the last release
that supports them (v13.1.5)
    for a while.

##### 📖 documentation

-
[`c97e81e`](https://togithub.com/sverweij/dependency-cruiser/commit/c97e81e8)
bugfix(doc): adds missing ": true," in options-reference.md example
([#&#8203;840](https://togithub.com/sverweij/dependency-cruiser/issues/840))
- thanks [@&#8203;LarsArtmann](https://togithub.com/LarsArtmann) for
this fix

##### 👷 maintenance

-
[`5b6c48f`](https://togithub.com/sverweij/dependency-cruiser/commit/5b6c48f6)
refactor: replaces 'glob' with 'picomatch'
([#&#8203;841](https://togithub.com/sverweij/dependency-cruiser/issues/841))
thanks [@&#8203;jimmywarting](https://togithub.com/jimmywarting) for
triggering the discussion and pointing out `glob` as a candidate for
replacement!
-
[`cc93d9c`](https://togithub.com/sverweij/dependency-cruiser/commit/cc93d9cc)/
[`f586e7d`](https://togithub.com/sverweij/dependency-cruiser/commit/f586e7da)
build(npm): updates external dependencies
-
[`7e68e7a`](https://togithub.com/sverweij/dependency-cruiser/commit/7e68e7ad)
refactor(cli): renames assertion function

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

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

♻ **Rebasing**: Whenever PR becomes conflicted, 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.

---

- [ ] <!-- rebase-check -->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/redwoodjs/redwood).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44Ny4yIiwidXBkYXRlZEluVmVyIjoiMzcuODcuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Dominic Saadi <dominiceliassaadi@gmail.com>
Tobbe pushed a commit to redwoodjs/redwood that referenced this issue Dec 21, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [cypress](https://cypress.io)
([source](https://togithub.com/cypress-io/cypress)) | [`12.17.4` ->
`13.6.1`](https://renovatebot.com/diffs/npm/cypress/12.17.4/13.6.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/cypress/13.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/cypress/13.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/cypress/12.17.4/13.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cypress/12.17.4/13.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [cypress-wait-until](https://togithub.com/NoriSte/cypress-wait-until)
| [`1.7.2` ->
`3.0.1`](https://renovatebot.com/diffs/npm/cypress-wait-until/1.7.2/3.0.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/cypress-wait-until/3.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/cypress-wait-until/3.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/cypress-wait-until/1.7.2/3.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cypress-wait-until/1.7.2/3.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [dependency-cruiser](https://togithub.com/sverweij/dependency-cruiser)
| [`13.1.5` ->
`15.5.0`](https://renovatebot.com/diffs/npm/dependency-cruiser/13.1.5/15.5.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/dependency-cruiser/15.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dependency-cruiser/15.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dependency-cruiser/13.1.5/15.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dependency-cruiser/13.1.5/15.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

<details>
<summary>cypress-io/cypress (cypress)</summary>

[`v13.6.1`](https://togithub.com/cypress-io/cypress/releases/tag/v13.6.1)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.6.0...v13.6.1)

Changelog: https://docs.cypress.io/guides/references/changelog#13-6-1

[`v13.6.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.6.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.5.1...v13.6.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-6-0

[`v13.5.1`](https://togithub.com/cypress-io/cypress/releases/tag/v13.5.1)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.5.0...v13.5.1)

Changelog: https://docs.cypress.io/guides/references/changelog#13-5-1

[`v13.5.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.5.0):
v.13.5.0

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.4.0...v13.5.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-5-0

[`v13.4.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.4.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.3.3...v13.4.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-4-0

[`v13.3.3`](https://togithub.com/cypress-io/cypress/releases/tag/v13.3.3)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.3.2...v13.3.3)

Changelog: https://docs.cypress.io/guides/references/changelog#13-3-3

[`v13.3.2`](https://togithub.com/cypress-io/cypress/releases/tag/v13.3.2)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.3.1...v13.3.2)

Changelog: https://docs.cypress.io/guides/references/changelog#13-3-2

[`v13.3.1`](https://togithub.com/cypress-io/cypress/releases/tag/v13.3.1)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.3.0...v13.3.1)

Changelog: https://docs.cypress.io/guides/references/changelog#13-3-1

[`v13.3.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.3.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.2.0...v13.3.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-3-0

[`v13.2.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.2.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.1.0...v13.2.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-2-0

[`v13.1.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.1.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.0.0...v13.1.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-1-0

[`v13.0.0`](https://togithub.com/cypress-io/cypress/releases/tag/v13.0.0)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v12.17.4...v13.0.0)

Changelog: https://docs.cypress.io/guides/references/changelog#13-0-0

</details>

<details>
<summary>NoriSte/cypress-wait-until (cypress-wait-until)</summary>

[`v3.0.1`](https://togithub.com/NoriSte/cypress-wait-until/releases/tag/v3.0.1)

[Compare
Source](https://togithub.com/NoriSte/cypress-wait-until/compare/v3.0.0...v3.0.1)

- unset the Node.js version
([#&#8203;479](https://togithub.com/NoriSte/cypress-wait-until/issues/479))
([236db14](https://togithub.com/NoriSte/cypress-wait-until/commit/236db146b91480061db4a3feda8d94177acb88c4)),
closes
[#&#8203;472](https://togithub.com/NoriSte/cypress-wait-until/issues/472)

[`v3.0.0`](https://togithub.com/NoriSte/cypress-wait-until/releases/tag/v3.0.0)

[Compare
Source](https://togithub.com/NoriSte/cypress-wait-until/compare/v2.0.1...v3.0.0)

- Fix typescript signature
([#&#8203;478](https://togithub.com/NoriSte/cypress-wait-until/issues/478))
([8e3ff03](https://togithub.com/NoriSte/cypress-wait-until/commit/8e3ff03d698ff7fc2abdca7a04a9c842ef661f38)),
closes
[#&#8203;478](https://togithub.com/NoriSte/cypress-wait-until/issues/478)
[#&#8203;477](https://togithub.com/NoriSte/cypress-wait-until/issues/477)

- TypeScript tests could now throw because of operations made on the
value returned
by `checkFunction` (passed to cy.waitUntil). The type was previously
`undefined` while now reflecting
    the type returned by `checkFunction`.

[`v2.0.1`](https://togithub.com/NoriSte/cypress-wait-until/releases/tag/v2.0.1)

[Compare
Source](https://togithub.com/NoriSte/cypress-wait-until/compare/v2.0.0...v2.0.1)

- Unset the Node.js and NPM version
([213b780](https://togithub.com/NoriSte/cypress-wait-until/commit/213b7805d44be534e7904dcacc3e89b5fbe9814e)),
closes
[#&#8203;472](https://togithub.com/NoriSte/cypress-wait-until/issues/472)

[`v2.0.0`](https://togithub.com/NoriSte/cypress-wait-until/releases/tag/v2.0.0)

[Compare
Source](https://togithub.com/NoriSte/cypress-wait-until/compare/2070d47147ab711157db744136c4cf26a7c8f91e...v2.0.0)

- update the timeout logic to consider also the checkFunction duration
([146a775](https://togithub.com/NoriSte/cypress-wait-until/commit/146a775d0b39b594e9875384aeca4eff6b97175a)),
closes
[#&#8203;464](https://togithub.com/NoriSte/cypress-wait-until/issues/464)

- The timeout is now respected even if checkFunction takes a long time.
As a result,
    you could face that your checkFunction runs less times.

-   Drop support for Node.js < 18.16.0

</details>

<details>
<summary>sverweij/dependency-cruiser (dependency-cruiser)</summary>

[`v15.5.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.5.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.4.0...v15.5.0)

-
[`8aa2a3d`](https://togithub.com/sverweij/dependency-cruiser/commit/8aa2a3d5)
feat(init): adds exception to not-to-dev-dep for type-only dependencies
([#&#8203;874](https://togithub.com/sverweij/dependency-cruiser/issues/874))
- thanks to [@&#8203;alvaro-cuesta](https://togithub.com/alvaro-cuesta)
for the suggestion
-
[`91f36a5`](https://togithub.com/sverweij/dependency-cruiser/commit/91f36a5c)/
[`38c4a46`](https://togithub.com/sverweij/dependency-cruiser/commit/38c4a460)
feat(wrap-stream-in-html): adds a gradient on highlighted edges
([#&#8203;878](https://togithub.com/sverweij/dependency-cruiser/issues/878))

-
[`9415a84`](https://togithub.com/sverweij/dependency-cruiser/commit/9415a847)
fix(doc): re-organizes types folder, improves typing of
extract-webpack-resolve-config
-
[`6d808db`](https://togithub.com/sverweij/dependency-cruiser/commit/6d808db0)
fix(doc): improves package type exports
([#&#8203;876](https://togithub.com/sverweij/dependency-cruiser/issues/876))
making [are the types wrong](https://arethetypeswrong.github.io/) a
little more happy

-
[`ae0c3d6`](https://togithub.com/sverweij/dependency-cruiser/commit/ae0c3d60)
build(npm): updates external devDependencies
-
[`c6a33b1`](https://togithub.com/sverweij/dependency-cruiser/commit/c6a33b18)
refactor(wrap-stream-in-html): makes the wrapper easier to maintain
([#&#8203;877](https://togithub.com/sverweij/dependency-cruiser/issues/877))

[`v15.4.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.4.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.3.0...v15.4.0)

-
[`ba4533f`](https://togithub.com/sverweij/dependency-cruiser/commit/ba4533fe)
feat(resolve): enables passing 'aliasFields' to enhanced-resolve
([#&#8203;870](https://togithub.com/sverweij/dependency-cruiser/issues/870))
- thanks to [@&#8203;JakeSidSmith](https://togithub.com/JakeSidSmith)
for not only raising the issue that led to this fix, but also for the
detailed & well documented research that made this addition a *very*
easy one to implement.
-
[`dfdb385`](https://togithub.com/sverweij/dependency-cruiser/commit/dfdb385d)
feat(reporter/dot): only considers rule severity for coloring invalid
modules/ dependencies
([#&#8203;869](https://togithub.com/sverweij/dependency-cruiser/issues/869))

-
[`3445a3b`](https://togithub.com/sverweij/dependency-cruiser/commit/3445a3bb)
fix(init): makes initial regular expressions more specific
([#&#8203;872](https://togithub.com/sverweij/dependency-cruiser/issues/872))-
thanks [@&#8203;mx-bernhard](https://togithub.com/mx-bernhard) for
raising the issue and suggesting an elegant fix.

-
[`aca6489`](https://togithub.com/sverweij/dependency-cruiser/commit/aca64898)
doc: modify semicolons to commas
([#&#8203;866](https://togithub.com/sverweij/dependency-cruiser/issues/866))

-
[`a6d562b`](https://togithub.com/sverweij/dependency-cruiser/commit/a6d562b7)
build(npm): updates external dependencies

[`v15.3.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.3.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.2.0...v15.3.0)

-
[`fce008d`](https://togithub.com/sverweij/dependency-cruiser/commit/fce008d5)
feat(extract): makes support for workspaces explicit
([#&#8203;864](https://togithub.com/sverweij/dependency-cruiser/issues/864))
This should also fix the bug discovered by
[@&#8203;throrin19](https://togithub.com/throrin19) in
[sverweij/dependency-cruiser#863

-
[`6eb9c61`](https://togithub.com/sverweij/dependency-cruiser/commit/6eb9c61f)
build(npm): updates external dependencies
-
[`ae9b688`](https://togithub.com/sverweij/dependency-cruiser/commit/ae9b688e)
refactor(resolve): hands over preserveSymlink processing to EHR
([#&#8203;865](https://togithub.com/sverweij/dependency-cruiser/issues/865))
-
[`41b20c6`](https://togithub.com/sverweij/dependency-cruiser/commit/41b20c67)
fix(test): makes c8 stop processing again when coverage is too low
-
[`6dc0632`](https://togithub.com/sverweij/dependency-cruiser/commit/6dc06324)
fix(test): ensures that by default subpath imports are used for local
imports

[`v15.2.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.2.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.1.1...v15.2.0)

-
[`2868e19`](https://togithub.com/sverweij/dependency-cruiser/commit/2868e199)
feat(cache): adds option to compress the cache file
([#&#8203;860](https://togithub.com/sverweij/dependency-cruiser/issues/860))

-
[`73b8381`](https://togithub.com/sverweij/dependency-cruiser/commit/73b8381e)
build(npm): updates external dependencies
-
[`3fc50a2`](https://togithub.com/sverweij/dependency-cruiser/commit/3fc50a2d)
ci(deps): bump actions/setup-node from 3 to 4
([#&#8203;858](https://togithub.com/sverweij/dependency-cruiser/issues/858))
-
[`9b52267`](https://togithub.com/sverweij/dependency-cruiser/commit/9b522676)
refactor(tools): folds d2 test fixture regeneration into existing report
fixture regeneration

[`v15.1.1`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.1.1)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.1.0...v15.1.1)

-
[`8c06016`](https://togithub.com/sverweij/dependency-cruiser/commit/8c060162)
fix: makes globbing work on windos again

[`v15.1.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.1.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v15.0.0...v15.1.0)

-
[`1ac6b2e`](https://togithub.com/sverweij/dependency-cruiser/commit/1ac6b2e9)/
[`bb548c2`](https://togithub.com/sverweij/dependency-cruiser/commit/bb548c2f)
feat(report): adds basic d2 (https://d2lang.com/) reporter
([#&#8203;857](https://togithub.com/sverweij/dependency-cruiser/issues/857))

-
[`14691b7`](https://togithub.com/sverweij/dependency-cruiser/commit/14691b70)
build(npm): updates external dependencies
-
[`a442703`](https://togithub.com/sverweij/dependency-cruiser/commit/a4427032)
refactor(configs): makes the 2 sample reporter plugins ESM

[`v15.0.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v15.0.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v14.1.2...v15.0.0)

For the majority of use cases these additions are not breaking. For the
few use cases that are: dependency-cruiser has gotten a little more
precise only ...

-
[`a3cfcec`](https://togithub.com/sverweij/dependency-cruiser/commit/a3cfcecf)
feat!(extract): makes 'real' depencency type available alongside aliases
BREAKING
([#&#8203;856](https://togithub.com/sverweij/dependency-cruiser/issues/856))
If you have rules that check for dependencyTypes explicitly the rules
will still work as before, but they'll be more effective, potentially
uncovering transgressions dependency-cruiser didn't find in earlier
versions.

-
[`36c3dde`](https://togithub.com/sverweij/dependency-cruiser/commit/36c3dde9)
feat!(extract): makes support for subpath imports explicit BREAKING
([#&#8203;855](https://togithub.com/sverweij/dependency-cruiser/issues/855))
Because dependency-cruiser now labels [subpath
imports](https://nodejs.org/api/packages.html#subpath-imports) as
`alias` and `alias-subpath-import` instead of `undetermined`:
- if you have rules that explicitly check for `alias` dependency-crusier
might uncover transgressions it didn't before.
- Likewise if you had rules with checks on `undetermined` dependency
types to find subpath imports, you might want to update them to
`alias-subpath-import`

-
[`08dce74`](https://togithub.com/sverweij/dependency-cruiser/commit/08dce742)
feat(report): links to npmjs/ nodejs.org for npm respectively node and
core modules
([#&#8203;854](https://togithub.com/sverweij/dependency-cruiser/issues/854))
thanks to [@&#8203;CaptainQuirk](https://togithub.com/CaptainQuirk) for
the question that led to this feature and for the feedback on the first
crude prototype.

-
[`e7ae8ef`](https://togithub.com/sverweij/dependency-cruiser/commit/e7ae8ef2)
build(npm): updates external devDependencies
-
[`c9288e3`](https://togithub.com/sverweij/dependency-cruiser/commit/c9288e37)
ci: sets latest used node version to 21

[`v14.1.2`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v14.1.2)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v14.1.1...v14.1.2)

-
[`45ada49`](https://togithub.com/sverweij/dependency-cruiser/commit/45ada490)
build(npm): updates external dependencies
-
[`b0171b2`](https://togithub.com/sverweij/dependency-cruiser/commit/b0171b20)
chore(tools): replaces a stray use of lodash.cloneXXX with
structuredClone
-
[`27aa37e`](https://togithub.com/sverweij/dependency-cruiser/commit/27aa37e1)
refactor: uses one subpath import for most stuff in src
-
[`d4fb629`](https://togithub.com/sverweij/dependency-cruiser/commit/d4fb6299)
chore(test): replaces a stray use of lodash.cloneXXX with
structuredClone
-
[`f249954`](https://togithub.com/sverweij/dependency-cruiser/commit/f2499545)
refactor: introduces use of node imports aliasses in package.json
([#&#8203;851](https://togithub.com/sverweij/dependency-cruiser/issues/851))

[`v14.1.1`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v14.1.1)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v14.1.0...v14.1.1)

-
[`be0ef74`](https://togithub.com/sverweij/dependency-cruiser/commit/be0ef743)
build(npm): updates external dependencies
-
[`c421cd1`](https://togithub.com/sverweij/dependency-cruiser/commit/c421cd18)
build(npm): pins transitive devDependency postcss (that's via vue) to
^8.14.31
-
[`a1e5610`](https://togithub.com/sverweij/dependency-cruiser/commit/a1e56105)
refactor: replaces lodash's clone & cloneDeep with native
structuredClone
([#&#8203;850](https://togithub.com/sverweij/dependency-cruiser/issues/850))
-
[`7651db4`](https://togithub.com/sverweij/dependency-cruiser/commit/7651db45)
ci(npm): fixes repository field to match some other kind of format

[`v14.1.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v14.1.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v14.0.0...v14.1.0)

-
[`32cad15`](https://togithub.com/sverweij/dependency-cruiser/commit/32cad154)
feature(init): adds 'module' field to enhancedResolve `mainFields` when
current module is type:module
([#&#8203;846](https://togithub.com/sverweij/dependency-cruiser/issues/846))
- thanks to [@&#8203;JakeSidSmith](https://togithub.com/JakeSidSmith)
for asking the question that led to this addition
-
[`ddd2ee6`](https://togithub.com/sverweij/dependency-cruiser/commit/ddd2ee6f)
feature(main|extract): adds `builtInModules` option to tweak what to
consider built-in (/ core) modules
([#&#8203;847](https://togithub.com/sverweij/dependency-cruiser/issues/847))
- thanks again to
[@&#8203;JakeSidSmith](https://togithub.com/JakeSidSmith) for providing
the context to see why this would be a useful feature

-
[`b92b79b`](https://togithub.com/sverweij/dependency-cruiser/commit/b92b79bd)
doc(options): elaborates on how to use the `mainFields` attributes in
ESM context

-
[`7b28857`](https://togithub.com/sverweij/dependency-cruiser/commit/7b28857e)
build(npm): updates external devDependencies
-
[`c2d731c`](https://togithub.com/sverweij/dependency-cruiser/commit/c2d731c4)
refactor: renames functions that assert things so they reflect that
([#&#8203;848](https://togithub.com/sverweij/dependency-cruiser/issues/848))
-
[`48ce9ab`](https://togithub.com/sverweij/dependency-cruiser/commit/48ce9ab7)
refactor(extract): rewrites gatherInitialSources' reduce with flatMap
([#&#8203;842](https://togithub.com/sverweij/dependency-cruiser/issues/842))

[`v14.0.0`](https://togithub.com/sverweij/dependency-cruiser/releases/tag/v14.0.0)

[Compare
Source](https://togithub.com/sverweij/dependency-cruiser/compare/v13.1.5...v14.0.0)

-
[`3a9d384`](https://togithub.com/sverweij/dependency-cruiser/commit/3a9d3848)/
[`6cb8e8e`](https://togithub.com/sverweij/dependency-cruiser/commit/6cb8e8eb)
ci!: drops support for node 16 and 19, sets minimum supported nodejs
version to 18.17 BREAKING
As we follow the nodejs release cycle and both node 16 and 19 are EOL,
we drop support for them. You
probably have already upgraded to node 18, but if not, now is the time
to do so :-). If you need
to support older nodejs versions, you can still use the last release
that supports them (v13.1.5)
    for a while.

-
[`c97e81e`](https://togithub.com/sverweij/dependency-cruiser/commit/c97e81e8)
bugfix(doc): adds missing ": true," in options-reference.md example
([#&#8203;840](https://togithub.com/sverweij/dependency-cruiser/issues/840))
- thanks [@&#8203;LarsArtmann](https://togithub.com/LarsArtmann) for
this fix

-
[`5b6c48f`](https://togithub.com/sverweij/dependency-cruiser/commit/5b6c48f6)
refactor: replaces 'glob' with 'picomatch'
([#&#8203;841](https://togithub.com/sverweij/dependency-cruiser/issues/841))
thanks [@&#8203;jimmywarting](https://togithub.com/jimmywarting) for
triggering the discussion and pointing out `glob` as a candidate for
replacement!
-
[`cc93d9c`](https://togithub.com/sverweij/dependency-cruiser/commit/cc93d9cc)/
[`f586e7d`](https://togithub.com/sverweij/dependency-cruiser/commit/f586e7da)
build(npm): updates external dependencies
-
[`7e68e7a`](https://togithub.com/sverweij/dependency-cruiser/commit/7e68e7ad)
refactor(cli): renames assertion function

</details>

---

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

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

♻ **Rebasing**: Whenever PR becomes conflicted, 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.

---

- [ ] <!-- rebase-check -->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/redwoodjs/redwood).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44Ny4yIiwidXBkYXRlZEluVmVyIjoiMzcuODcuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Dominic Saadi <dominiceliassaadi@gmail.com>
Copy link

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants