53 Commits

Author SHA1 Message Date
Ryan Bas
2d9a673ec8
fix(linter): dependency-check-support-catalogs (#29923)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
Currently there doesn't seem to be support for pnpm catalogs in the
dependency check which throws an error.



## Expected Behavior
Catalog should be supported and at least not throw an error since its a
default rule in some generators.
I noticed that also that only `workspace:*` was implemented so I added
the other possible options.

https://pnpm.io/workspaces#publishing-workspace-packages

I copy and pasted a test twice to add tests for this.

I mean ideally I guess we would check the `pnpm-workspace` file and say
is this catalog defined, I don't think that's up my ally for this
purpose and I'm not sure if how its implemented does that for the
workspace protocols as well.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
closed #29903, #29959


Gave it a shot, not sure if this is gonna be comprehensive enough. But
let me know! happy to try and get this right.

---------

Co-authored-by: Jack Hsu <jack.hsu@gmail.com>
2025-02-11 15:20:51 -05:00
Leosvel Pérez Espinosa
713b9fbaaf
feat(linter): add runtimeHelpers option to @nx/dependency-checks rule (#29954) 2025-02-11 15:30:07 +04:00
Oliver Yasuna
f3b85bef22
fix(linter): export Options types for enforce-module-boundaries and nx-plugin-checks (#29072) 2025-01-24 16:54:18 +04:00
Leosvel Pérez Espinosa
9d1c55b80e
fix(nx-plugin): fix plugin generation in ts solution setup (#29730)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2025-01-23 11:43:29 -05:00
Jack Hsu
0720f3f9b4
feat(core): nx-plugin-checks accounts for outDir and rootDir of projects when checking file existence (#29391)
For Nx plugins that use the the new TS solution setup, we need to
account for `generators.json`, `executors.json`, and `migrations.json`
pointing to `dist` rather than source.

This PR adds two options, `rootDir` and `outDir`, that allows the lint
rule to check the source files rather than depend on build artifacts.
The defaults are what we generate our plugins with.


<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2024-12-18 10:05:55 -05:00
Michal Jez
1163eb5c50
cleanup(linter): remove unused basePath parameter (#28549)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

I was looking at the source to understand how `sourceRoot` is used and
saw it was referenced in the eslint-plugin but it turns out it isn't
actually used

## Current Behavior

This parameter isn't used

## Expected Behavior

The parameter should be removed
2024-11-14 08:20:21 +01:00
James Henry
68eeb2eeed
feat(linter): create new workspaces with ESLint v9 and typescript-eslint v8 (#27404)
Closes #27451

---------

Co-authored-by: Leosvel Pérez Espinosa <leosvel.perez.espinosa@gmail.com>
Co-authored-by: Jack Hsu <jack.hsu@gmail.com>
2024-09-12 16:02:27 -04:00
Miroslav Jonaš
c4c8b0150d
feat(linter): add option to exclude projects from circular deps check (#27504)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #

---------

Co-authored-by: FrozenPandaz <jasonjean1993@gmail.com>
2024-09-03 14:33:41 -04:00
Leosvel Pérez Espinosa
b699207070
fix(linter): update the @nx/dependency-checks rule to read the package.json content from the rule context (#27476)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

The `@nx/dependency-checks` rule sometimes doesn't apply all identified
fixes and wrongly succeeds. ESLint performs multiple passes to try to
apply fixes, and in each pass the rule receives the updated source code
with the previously applied fixes. This allows merging different fixes,
but the `@nx/dependency-checks` rule always reads the `package.json`
file from the filesystem, caches it globally, and mutates it. It never
uses the updated source code provided in the rule context.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

The `@nx/dependency-checks` rule should apply all identified fixes [as
long as they don't
conflict](https://eslint.org/docs/latest/extend/custom-rules#conflicting-fixes).

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #27412
2024-08-16 17:14:09 +02:00
Miroslav Jonaš
7f8bb4ba1f
fix(linter): dependency checks should respect pnpm workspace versions (#26709)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #26707
2024-06-27 17:19:35 +02:00
Leosvel Pérez Espinosa
ffea1d5c6d
fix(linter): handle paths correctly in enforce-module-boundaries eslint rule (#26373)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #21889
2024-06-05 12:38:21 +02:00
James Henry
ef0dc01ffa
fix(core): multi module handling and fall back matching for external nodes (#26277)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

## Current Behavior
<!-- This is the behavior we have today -->

- Packages such as `minimatch` which block access to their
`package.json` AND have multi module format outputs are missed by the
target project locator
- There is no fall back matching of external nodes from the graph by
name

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

- The target project locator appropriately finds modules such as
`minimatch`
- There is fall back matching of external nodes from the graph by name

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
2024-05-31 01:06:58 +04:00
James Henry
7001e350af
fix(core): prefer project specific external deps (#23307)
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

## Current Behavior
<!-- This is the behavior we have today -->

We only ever discover one version of an external dependency for the
file-map.json. This means the `@nx/dependency-checks` lint rule can
produce incorrect failures when multiple copies of a dependency exist
within a workspace.

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

In the file-map.json the project specific version of a package (if
multiple exist) is preferred and therefore the lint rule produces
accurate results.

---

For example, in a repo where the root package.json has lodash@4.0.0
(which becomes `npm:lodash` on graph) and the foo project has
lodash@3.0.0:

**Before**


![image](https://github.com/nrwl/nx/assets/900523/fa0b3711-5004-4abc-9904-0433a37bc3cf)

**After**


![image](https://github.com/nrwl/nx/assets/900523/d0527368-44b4-486f-aa7a-79d996a20ef4)

## Performance

`NX_ISOLATE_PLUGINS=true NX_PERF_LOGGING=true NX_DAEMON=false nx show
project nx --json false`


** Before **

Time for 'build typescript dependencies' 505.52144700009376

** After **

Time for 'build typescript dependencies' 701.247584999539
2024-05-30 10:23:47 -04:00
James Henry
8cfc0a0c08
fix(linter): support eslint v9 (#24632) 2024-05-22 19:27:06 +04:00
Jack Hsu
bc43243498
chore(repo): add eslint and jest plugins to use inferred targets (#22946) 2024-04-23 21:52:13 -04:00
Leosvel Pérez Espinosa
4850bdb6aa fix(nx-plugin): support root tsconfig.json in nx-plugin-checks eslint rule 2024-03-11 16:43:02 +01:00
Miroslav Jonaš
ce933132d0
cleanup(linter): refactor code for dynamic/static imports check (#20897) 2024-02-25 20:59:51 +04:00
Jack Hsu
f6d2dccd62
feat(linter): add option for @nx/dependency-checks to update workspace dependencies using local file paths (#20157)
Co-authored-by: Miroslav Jonaš <missing.manual@gmail.com>
2024-02-02 14:51:49 +02:00
Miroslav Jonaš
c452a1f7c5
fix(linter): add links to docs to rules (#21199) 2024-01-18 14:47:10 +01:00
Miroslav Jonaš
3981c90fe8
fix(linter): ensure angular entry point checks are correct (#20859) 2023-12-20 18:16:58 +01:00
Miroslav Jonaš
7e5c4598a3
fix(linter): do not allow relative import of non-project files (#20563) 2023-12-05 16:33:14 +01:00
Miroslav Jonaš
98883bba7a
fix(linter): fix missing dependencies fixer reducer (#20410) 2023-11-25 23:45:46 +01:00
Miroslav Jonaš
630e750c06
cleanup(linter): remove unused imports (#20053) 2023-11-08 16:15:41 +04:00
Miroslav Jonaš
79c9233553
feat(linter): update typescript-eslint to v6 (#19548)
Co-authored-by: FrozenPandaz <jasonjean1993@gmail.com>
Co-authored-by: Jack Hsu <jack.hsu@gmail.com>
2023-11-02 10:09:40 +01:00
Miroslav Jonaš
e49ce56977
fix(linter): fix validateDependenciesSectionExistance fixer (#19512) 2023-10-09 23:04:53 +02:00
Craigory Coppola
6946f65059
fix(misc): pass full path to tsconfig when registering transpiler (#19451) 2023-10-06 14:40:15 -04:00
Craigory Coppola
6c37113fc4
fix(linter): add schema for nx plugin checks rule (#19447) 2023-10-04 13:59:13 -04:00
Miroslav Jonaš
bf7e663168
feat(linter): add app import exception for remotes (#19301) 2023-09-28 00:25:11 +00:00
Miroslav Jonaš
e650ccff68
fix(linter): fix rule typings (#19294) 2023-09-27 15:06:15 -04:00
Craigory Coppola
f213976281
feat(core): include non-project files on fileMap and filesToProcess (#19217) 2023-09-19 21:46:01 -04:00
Miroslav Jonaš
d87826eea2
docs(linter): add missing properties to the dep-checks docs (#19125) 2023-09-15 11:53:31 +03:00
Craigory Coppola
de2824a450
feat(devkit): add method for tree-aware glob search (#19128) 2023-09-13 17:39:45 -04:00
Miroslav Jonaš
2bc7031017
fix(linter): fix dep-checks projPackageJsonDeps caching for IDE (#18935) 2023-09-06 10:19:50 +02:00
Jack Hsu
90ca436d81
feat(linter): add option to ignore files based on pattern (#18863) 2023-08-28 16:27:14 -04:00
Jack Hsu
9ffea2bb1b
fix(linter): error on dependencies that are only in devDependencies instead of production dependencies (#18780) 2023-08-22 23:05:53 +02:00
Miroslav Jonaš
35656432e6
fix(linter): fix messages on deps checks (#18484) 2023-08-04 10:08:41 -04:00
Igor Loskutov
9c7ded0b1a
feat(linter): support path wildcards in enforce-module-boundaries autofix (#18316) 2023-07-31 16:18:00 +02:00
Jack Hsu
eb392109f7
fix(linter): do not report obsolete devDependencies since they are not used in production files (#18353) 2023-07-28 09:05:39 +02:00
Colum Ferry
b5b75332e4
fix(core): eslint dep check rule should check prereleases correctly (#18317) 2023-07-27 12:15:26 +00:00
Jack Hsu
ae773d547e
fix(linter): skip verifying deps of deps by default in package.json (#18058) 2023-07-12 20:59:36 -04:00
Miroslav Jonaš
28a071f243
fix(js): ignore dependencies from non-index root files for create-package-json (#17930) 2023-07-05 17:47:49 +02:00
Miroslav Jonaš
55c0a168cf
fix(linter): apply missing deps fix in a single patch for deps check (#17924) 2023-07-03 16:29:15 +02:00
Miroslav Jonaš
a70e1a8bc0
fix(linter): ensure no trailing commas on deps-check obsolete package fix (#17915) 2023-07-03 14:42:02 +02:00
Miroslav Jonaš
6b82a2ff59
feat(linter): allow banning of deep/secondary paths (#17755) 2023-07-03 14:41:45 +02:00
Miroslav Jonaš
3d77b4d40e
fix(linter): create-package-json should omit non-npm and ignored packages (#17883) 2023-06-30 16:00:45 -04:00
Eric Yancey Dauenhauer
576262bb03
feat(linter): allow globs in onlyDependOnLibsWithTags eslint-plugin configuration option (#17530)
Co-authored-by: Miroslav Jonas <missing.manual@gmail.com>
2023-06-30 21:17:12 +02:00
Miroslav Jonaš
ef8c4ed095
feat(linter): add rule for dependency checking (#17581) 2023-06-23 10:26:44 -04:00
Miloš Lajtman
ef5813a7b7
fix(linter): improve error message for forbidden imports of lazy-loaded libs (#17635)
Co-authored-by: Miroslav Jonas <missing.manual@gmail.com>
2023-06-19 17:33:15 +02:00
Victor Savkin
0848031dd9 feat(core): move task hashing into daemon 2023-05-17 11:37:57 -04:00
Isaac Mann
881067bbd2
fix(linter): import from .tsx file lint fix now works correctly (#16995) 2023-05-13 15:53:44 -04:00