* feat(core): sort projects in nx.json, workspace.json, and tsconfig.base.json
* fix(core): catch errors when trying to format
* chore(core): use existing sort util - rename new sort util to match (will soon be merged)
* fix(core): only sort workspace.projects if they have projects
* fix(core): remove sort from old format-files
* fix(core): noop catches rather and outputting an error message
* chore(core): revert format-files utils
* feat(linter): optimize containsFile function
related to #5210
* feat(linter): optimize find project function
related to #5210
* feat(core): cleanup target project locator
* fix(core): fix false positive match on resolvedModule
* chore(core): mark old code for removal
* feat(linter): move npm check before expensive typescript resolution
* feat(linter): improve performance of extension removal
* feat(linter): improve I/O operations
* feat(linter): read ts config only once in project locator
* feat(linter): remove double path normalization from rule
normalization is already part of getSourceFilePath function
* feat(linter): run find source only once
* feat(linter): defer source file path calculation will after whitelist check
* feat(linter): map project graph node files to hash map
* fix(linter): map projectGraph only once per runtime
* feat(linter): introduce mapped project graph type
* cleanup(core): normalized usage of fs-extra and updated fs-extra
* cleanup(misc): use fs over fs-extra when possible
Co-authored-by: Jason Jean <jasonjean1993@gmail.com>
- Single char alternation (e.g. a|b|c|d) in a RegExp can be simplified to use a character class ([abcd]) instead.
This usually also provides slightly better matching performance.
- Character escapes that are replaceable with the unescaped character without a change in meaning. Inside the square brackets of a character class, many escapes are unnecessary that would be necessary outside of a character class. For example the regex [\.] is identical to [.]
- If several qualified expressions occur after the qualifier having been checked for nullable, they can be replaced with optional chaining
* feat(linter): convert-tslint-to-eslint generators
* fix(core): remove generators in collection for ng and nest
* fix(core): update tao to support mixed generators and schematics
* fix(core): update tao to support mixed generators and schematics
* fix(core): address some PR feedback
* fix(core): fix snapshots after syncing up with master
* feat(core): store user preference for removeTSLintIfNoMoreTSLintTargets
* fix(linter): unit tests
* feat(core): apply root tslint.json conversion to root .eslintrc.json