@angular-eslint/schematics
Advanced tools
Comparing version 18.2.1-alpha.6 to 18.2.1-alpha.7
@@ -0,1 +1,2 @@ | ||
import type { Rule } from '@angular-devkit/schematics'; | ||
interface Schema { | ||
@@ -5,4 +6,4 @@ project?: string; | ||
} | ||
declare const _default: (generatorOptions: Schema) => (tree: any, context: any) => Promise<any>; | ||
export default _default; | ||
export default function addESLintToProject(schema: Schema): Rule; | ||
export {}; | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const devkit_imports_1 = require("../devkit-imports"); | ||
exports.default = addESLintToProject; | ||
const schematics_1 = require("@angular-devkit/schematics"); | ||
const utils_1 = require("../utils"); | ||
exports.default = (0, devkit_imports_1.convertNxGenerator)(async (tree, options) => { | ||
const projectName = (0, utils_1.determineTargetProjectName)(tree, options.project); | ||
if (!projectName) { | ||
throw new Error('\n' + | ||
` | ||
function addESLintToProject(schema) { | ||
return (tree) => { | ||
const projectName = (0, utils_1.determineTargetProjectName)(tree, schema.project); | ||
if (!projectName) { | ||
throw new Error('\n' + | ||
` | ||
Error: You must specify a project to add ESLint to because you have multiple projects in your angular.json | ||
E.g. npx ng g @angular-eslint/schematics:add-eslint-to-project {{YOUR_PROJECT_NAME_GOES_HERE}} | ||
`.trim()); | ||
} | ||
// Create the config file first so that we can check for its existence when setting the target | ||
(0, utils_1.createESLintConfigForProject)(tree, projectName, options.setParserOptionsProject ?? false); | ||
// Update the lint builder and config in angular.json | ||
(0, utils_1.addESLintTargetToProject)(tree, projectName, 'lint'); | ||
}); | ||
`.trim()); | ||
} | ||
return (0, schematics_1.chain)([ | ||
// Create the ESLint config file for the project | ||
(0, utils_1.createESLintConfigForProject)(projectName, schema.setParserOptionsProject ?? false), | ||
// Set the lint builder and config in angular.json | ||
(0, utils_1.addESLintTargetToProject)(projectName, 'lint'), | ||
]); | ||
}; | ||
} |
@@ -0,1 +1,2 @@ | ||
import type { Rule } from '@angular-devkit/schematics'; | ||
/** | ||
@@ -10,4 +11,4 @@ * We are able to use the full, unaltered Schema directly from @schematics/angular | ||
} | ||
declare const _default: (generatorOptions: Schema) => (tree: any, context: any) => Promise<any>; | ||
export default _default; | ||
export default function (options: Schema): Rule; | ||
export {}; | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const devkit_imports_1 = require("../devkit-imports"); | ||
exports.default = default_1; | ||
const schematics_1 = require("@angular-devkit/schematics"); | ||
const utils_1 = require("../utils"); | ||
exports.default = (0, devkit_imports_1.convertNxGenerator)(async (tree, options) => { | ||
// Remove angular-eslint specific options before passing to the Angular schematic | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
const { setParserOptionsProject, ...angularOptions } = options; | ||
const applicationGenerator = (0, devkit_imports_1.wrapAngularDevkitSchematic)('@schematics/angular', 'application'); | ||
await applicationGenerator(tree, angularOptions); | ||
// Create the config file first so that we can check for its existence when setting the target | ||
(0, utils_1.createESLintConfigForProject)(tree, options.name, options.setParserOptionsProject ?? false); | ||
// Update the lint builder and config in angular.json | ||
(0, utils_1.addESLintTargetToProject)(tree, options.name, 'lint'); | ||
}); | ||
function eslintRelatedChanges(options) { | ||
return (0, schematics_1.chain)([ | ||
// Create the ESLint config file for the project | ||
(0, utils_1.createESLintConfigForProject)(options.name, options.setParserOptionsProject ?? false), | ||
// Update the lint builder and config in angular.json | ||
(0, utils_1.addESLintTargetToProject)(options.name, 'lint'), | ||
]); | ||
} | ||
function default_1(options) { | ||
return (host, context) => { | ||
// Remove angular-eslint specific options before passing to the Angular schematic | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
const { setParserOptionsProject, ...angularOptions } = options; | ||
return (0, schematics_1.chain)([ | ||
(0, schematics_1.externalSchematic)('@schematics/angular', 'application', angularOptions), | ||
eslintRelatedChanges(options), | ||
])(host, context); | ||
}; | ||
} |
@@ -0,1 +1,2 @@ | ||
import type { Rule } from '@angular-devkit/schematics'; | ||
/** | ||
@@ -10,4 +11,4 @@ * We are able to use the full, unaltered Schema directly from @schematics/angular | ||
} | ||
declare const _default: (generatorOptions: Schema) => (tree: any, context: any) => Promise<any>; | ||
export default _default; | ||
export default function (options: Schema): Rule; | ||
export {}; | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const devkit_imports_1 = require("../devkit-imports"); | ||
exports.default = default_1; | ||
const schematics_1 = require("@angular-devkit/schematics"); | ||
const utils_1 = require("../utils"); | ||
exports.default = (0, devkit_imports_1.convertNxGenerator)(async (tree, options) => { | ||
// Remove angular-eslint specific options before passing to the Angular schematic | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
const { setParserOptionsProject, ...angularOptions } = options; | ||
const libraryGenerator = (0, devkit_imports_1.wrapAngularDevkitSchematic)('@schematics/angular', 'library'); | ||
await libraryGenerator(tree, angularOptions); | ||
// Create the config file first so that we can check for its existence when setting the target | ||
(0, utils_1.createESLintConfigForProject)(tree, options.name, options.setParserOptionsProject ?? false); | ||
// Update the lint builder and config in angular.json | ||
(0, utils_1.addESLintTargetToProject)(tree, options.name, 'lint'); | ||
}); | ||
function eslintRelatedChanges(options) { | ||
return (0, schematics_1.chain)([ | ||
// Create the ESLint config file for the project | ||
(0, utils_1.createESLintConfigForProject)(options.name, options.setParserOptionsProject ?? false), | ||
// Update the lint builder and config in angular.json | ||
(0, utils_1.addESLintTargetToProject)(options.name, 'lint'), | ||
]); | ||
} | ||
function default_1(options) { | ||
return (host, context) => { | ||
// Remove angular-eslint specific options before passing to the Angular schematic | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
const { setParserOptionsProject, ...angularOptions } = options; | ||
return (0, schematics_1.chain)([ | ||
(0, schematics_1.externalSchematic)('@schematics/angular', 'library', angularOptions), | ||
eslintRelatedChanges(options), | ||
])(host, context); | ||
}; | ||
} |
import type { Path } from '@angular-devkit/core'; | ||
import type { Rule, SchematicContext, Tree } from '@angular-devkit/schematics'; | ||
import type { Tree as NxTree } from './devkit-imports'; | ||
/** | ||
@@ -27,3 +26,3 @@ * This method is specifically for reading JSON files in a Tree | ||
}): TargetsConfig | null; | ||
export declare function addESLintTargetToProject(tree: NxTree, projectName: string, targetName: 'eslint' | 'lint'): void; | ||
export declare function addESLintTargetToProject(projectName: string, targetName: 'eslint' | 'lint'): Rule; | ||
/** | ||
@@ -57,3 +56,3 @@ * Utility to act on all files in a tree that are not ignored by git. | ||
export declare function createStringifiedRootESLintConfig(prefix: string | null): string; | ||
export declare function createESLintConfigForProject(tree: NxTree, projectName: string, setParserOptionsProject: boolean): void; | ||
export declare function createESLintConfigForProject(projectName: string, setParserOptionsProject: boolean): Rule; | ||
export declare function sortObjectByKeys(obj: Record<string, unknown>): Record<string, unknown>; | ||
@@ -64,3 +63,3 @@ /** | ||
*/ | ||
export declare function determineTargetProjectName(tree: NxTree, maybeProject?: string): string | null; | ||
export declare function determineTargetProjectName(tree: Tree, maybeProject?: string): string | null; | ||
/** | ||
@@ -78,4 +77,4 @@ * See `schematicCollections` docs here: | ||
*/ | ||
export declare function shouldUseFlatConfig(tree: NxTree | Tree, existingJson?: Record<string, unknown>): boolean; | ||
export declare function shouldUseFlatConfig(tree: Tree, existingJson?: Record<string, unknown>): boolean; | ||
export {}; | ||
//# sourceMappingURL=utils.d.ts.map |
@@ -24,3 +24,2 @@ "use strict"; | ||
const strip_json_comments_1 = __importDefault(require("strip-json-comments")); | ||
const devkit_imports_1 = require("./devkit-imports"); | ||
const DEFAULT_PREFIX = 'app'; | ||
@@ -76,44 +75,54 @@ /** | ||
} | ||
function offsetFromRoot(fullPathToSourceDir) { | ||
const parts = (0, core_1.normalize)(fullPathToSourceDir).split('/'); | ||
let offset = ''; | ||
for (let i = 0; i < parts.length; ++i) { | ||
offset += '../'; | ||
} | ||
return offset; | ||
} | ||
function serializeJson(json) { | ||
return `${JSON.stringify(json, null, 2)}\n`; | ||
} | ||
function readProjectConfiguration(tree, projectName) { | ||
const angularJSON = (0, devkit_imports_1.readJson)(tree, 'angular.json'); | ||
return angularJSON.projects[projectName]; | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
function updateWorkspaceInTree(callback) { | ||
return (host, context) => { | ||
const path = 'angular.json'; | ||
host.overwrite(path, serializeJson(callback(readJsonInTree(host, path), context, host))); | ||
return host; | ||
}; | ||
} | ||
function updateProjectConfiguration(tree, projectName, projectConfig) { | ||
const angularJSON = (0, devkit_imports_1.readJson)(tree, 'angular.json'); | ||
angularJSON.projects[projectName] = projectConfig; | ||
(0, devkit_imports_1.writeJson)(tree, 'angular.json', angularJSON); | ||
} | ||
function addESLintTargetToProject(tree, projectName, targetName) { | ||
const existingProjectConfig = readProjectConfiguration(tree, projectName); | ||
let lintFilePatternsRoot = ''; | ||
// Default Angular CLI project at the root of the workspace | ||
if (existingProjectConfig.root === '') { | ||
lintFilePatternsRoot = existingProjectConfig.sourceRoot || 'src'; | ||
} | ||
else { | ||
lintFilePatternsRoot = existingProjectConfig.root; | ||
} | ||
const eslintTargetConfig = { | ||
builder: '@angular-eslint/builder:lint', | ||
options: { | ||
lintFilePatterns: [ | ||
`${lintFilePatternsRoot}/**/*.ts`, | ||
`${lintFilePatternsRoot}/**/*.html`, | ||
], | ||
}, | ||
}; | ||
let eslintConfig; | ||
if (existingProjectConfig.root !== '') { | ||
const flatConfigPath = (0, core_1.join)(existingProjectConfig.root, 'eslint.config.js'); | ||
if (tree.exists(flatConfigPath)) { | ||
eslintConfig = flatConfigPath; | ||
function addESLintTargetToProject(projectName, targetName) { | ||
return updateWorkspaceInTree((workspaceJson, _, tree) => { | ||
const existingProjectConfig = workspaceJson.projects[projectName]; | ||
let lintFilePatternsRoot = ''; | ||
// Default Angular CLI project at the root of the workspace | ||
if (existingProjectConfig.root === '') { | ||
lintFilePatternsRoot = existingProjectConfig.sourceRoot || 'src'; | ||
} | ||
} | ||
eslintTargetConfig.options.eslintConfig = eslintConfig; | ||
existingProjectConfig.architect = existingProjectConfig.architect || {}; | ||
existingProjectConfig.architect[targetName] = eslintTargetConfig; | ||
updateProjectConfiguration(tree, projectName, existingProjectConfig); | ||
else { | ||
lintFilePatternsRoot = existingProjectConfig.root; | ||
} | ||
const eslintTargetConfig = { | ||
builder: '@angular-eslint/builder:lint', | ||
options: { | ||
lintFilePatterns: [ | ||
`${lintFilePatternsRoot}/**/*.ts`, | ||
`${lintFilePatternsRoot}/**/*.html`, | ||
], | ||
}, | ||
}; | ||
let eslintConfig; | ||
if (existingProjectConfig.root !== '') { | ||
const flatConfigPath = (0, core_1.join)(existingProjectConfig.root, 'eslint.config.js'); | ||
if (tree.exists(flatConfigPath)) { | ||
eslintConfig = flatConfigPath; | ||
} | ||
} | ||
// TODO: fix | ||
eslintTargetConfig.options.eslintConfig = eslintConfig; | ||
existingProjectConfig.architect = existingProjectConfig.architect || {}; | ||
existingProjectConfig.architect[targetName] = eslintTargetConfig; | ||
return workspaceJson; | ||
}); | ||
} | ||
@@ -260,3 +269,3 @@ /** | ||
return { | ||
extends: `${(0, devkit_imports_1.offsetFromRoot)(projectRoot)}.eslintrc.json`, | ||
extends: `${offsetFromRoot(projectRoot)}.eslintrc.json`, | ||
ignorePatterns: ['!**/*'], | ||
@@ -294,3 +303,3 @@ overrides: [ | ||
const tseslint = require("typescript-eslint"); | ||
const rootConfig = require("${(0, devkit_imports_1.offsetFromRoot)(projectRoot)}eslint.config.js"); | ||
const rootConfig = require("${offsetFromRoot(projectRoot)}eslint.config.js"); | ||
@@ -334,33 +343,38 @@ module.exports = tseslint.config( | ||
} | ||
function createESLintConfigForProject(tree, projectName, setParserOptionsProject) { | ||
const existingProjectConfig = readProjectConfiguration(tree, projectName); | ||
const targets = existingProjectConfig.architect || existingProjectConfig.targets; | ||
const { root: projectRoot, projectType, prefix } = existingProjectConfig; | ||
const hasE2e = !!targets?.e2e; | ||
const useFlatConfig = shouldUseFlatConfig(tree); | ||
const alreadyHasRootFlatConfig = tree.exists('eslint.config.js'); | ||
const alreadyHasRootESLintRC = tree.exists('.eslintrc.json'); | ||
/** | ||
* If the root is an empty string it must be the initial project created at the | ||
* root by the Angular CLI's workspace schematic | ||
*/ | ||
if (projectRoot === '') { | ||
return createRootESLintConfigFile(tree, prefix || DEFAULT_PREFIX, useFlatConfig); | ||
} | ||
// If, for whatever reason, the root eslint.config.js/.eslintrc.json doesn't exist yet, create it | ||
if (!alreadyHasRootESLintRC && !alreadyHasRootFlatConfig) { | ||
createRootESLintConfigFile(tree, prefix || DEFAULT_PREFIX, useFlatConfig); | ||
} | ||
if (useFlatConfig) { | ||
tree.write((0, core_1.join)((0, core_1.normalize)(projectRoot), 'eslint.config.js'), createStringifiedProjectESLintConfig(projectRoot, projectType || 'library', prefix || DEFAULT_PREFIX, setParserOptionsProject, hasE2e)); | ||
} | ||
else { | ||
(0, devkit_imports_1.writeJson)(tree, (0, core_1.join)((0, core_1.normalize)(projectRoot), '.eslintrc.json'), createProjectESLintConfig(projectRoot, projectType || 'library', prefix || DEFAULT_PREFIX, setParserOptionsProject, hasE2e)); | ||
} | ||
function createESLintConfigForProject(projectName, setParserOptionsProject) { | ||
return (tree) => { | ||
const angularJSON = readJsonInTree(tree, 'angular.json'); | ||
const { root: projectRoot, projectType, prefix, } = angularJSON.projects[projectName]; | ||
const hasE2e = determineTargetProjectHasE2E(angularJSON, projectName); | ||
const useFlatConfig = shouldUseFlatConfig(tree); | ||
const alreadyHasRootFlatConfig = tree.exists('eslint.config.js'); | ||
const alreadyHasRootESLintRC = tree.exists('.eslintrc.json'); | ||
/** | ||
* If the root is an empty string it must be the initial project created at the | ||
* root by the Angular CLI's workspace schematic | ||
*/ | ||
if (projectRoot === '') { | ||
return createRootESLintConfigFile(prefix || DEFAULT_PREFIX, useFlatConfig); | ||
} | ||
const rules = []; | ||
// If, for whatever reason, the root eslint.config.js/.eslintrc.json doesn't exist yet, create it | ||
if (!alreadyHasRootESLintRC && !alreadyHasRootFlatConfig) { | ||
rules.push(createRootESLintConfigFile(prefix || DEFAULT_PREFIX, useFlatConfig)); | ||
} | ||
if (useFlatConfig) { | ||
rules.push((tree) => tree.create((0, core_1.join)((0, core_1.normalize)(projectRoot), 'eslint.config.js'), createStringifiedProjectESLintConfig(projectRoot, projectType || 'library', prefix || DEFAULT_PREFIX, setParserOptionsProject, hasE2e))); | ||
} | ||
else { | ||
rules.push(updateJsonInTree((0, core_1.join)((0, core_1.normalize)(projectRoot), '.eslintrc.json'), () => createProjectESLintConfig(projectRoot, projectType || 'library', prefix || DEFAULT_PREFIX, setParserOptionsProject, hasE2e))); | ||
} | ||
return (0, schematics_1.chain)(rules); | ||
}; | ||
} | ||
function createRootESLintConfigFile(tree, prefix, useFlatConfig) { | ||
if (useFlatConfig) { | ||
return tree.write('eslint.config.js', createStringifiedRootESLintConfig(prefix)); | ||
} | ||
return (0, devkit_imports_1.writeJson)(tree, '.eslintrc.json', createRootESLintConfig(prefix)); | ||
function createRootESLintConfigFile(prefix, useFlatConfig) { | ||
return (tree) => { | ||
if (useFlatConfig) { | ||
return tree.create('eslint.config.js', createStringifiedRootESLintConfig(prefix)); | ||
} | ||
return updateJsonInTree('.eslintrc.json', () => createRootESLintConfig(prefix)); | ||
}; | ||
} | ||
@@ -385,3 +399,3 @@ function sortObjectByKeys(obj) { | ||
} | ||
const workspaceJson = (0, devkit_imports_1.readJson)(tree, 'angular.json'); | ||
const workspaceJson = readJsonInTree(tree, 'angular.json'); | ||
const projects = Object.keys(workspaceJson.projects); | ||
@@ -394,2 +408,11 @@ if (projects.length === 1) { | ||
/** | ||
* Checking if the target project has e2e setup | ||
* Method will check if angular project architect has e2e configuration to determine if e2e setup | ||
*/ | ||
function determineTargetProjectHasE2E( | ||
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any | ||
angularJSON, projectName) { | ||
return !!getTargetsConfigFromProject(angularJSON.projects[projectName])?.e2e; | ||
} | ||
/** | ||
* See `schematicCollections` docs here: | ||
@@ -396,0 +419,0 @@ * https://github.com/angular/angular-cli/blob/8431b3f0769b5f95b9e13807a09293d820c4b017/docs/specifications/schematic-collections-config.md |
{ | ||
"name": "@angular-eslint/schematics", | ||
"version": "18.2.1-alpha.6", | ||
"version": "18.2.1-alpha.7", | ||
"description": "Angular Schematics for angular-eslint", | ||
@@ -39,7 +39,5 @@ "license": "MIT", | ||
"dependencies": { | ||
"@angular-eslint/eslint-plugin": "18.2.1-alpha.6", | ||
"@angular-eslint/eslint-plugin-template": "18.2.1-alpha.6", | ||
"@nx/devkit": ">= 19.5.4 < 20.0.0", | ||
"@angular-eslint/eslint-plugin": "18.2.1-alpha.7", | ||
"@angular-eslint/eslint-plugin-template": "18.2.1-alpha.7", | ||
"ignore": "5.3.2", | ||
"nx": "^19.0.6", | ||
"semver": "7.6.3", | ||
@@ -46,0 +44,0 @@ "strip-json-comments": "3.1.1" |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
83094
7
1839
+ Added@angular-eslint/bundled-angular-compiler@18.2.1-alpha.7(transitive)
+ Added@angular-eslint/eslint-plugin@18.2.1-alpha.7(transitive)
+ Added@angular-eslint/eslint-plugin-template@18.2.1-alpha.7(transitive)
+ Added@angular-eslint/utils@18.2.1-alpha.7(transitive)
+ Addedcli-spinners@2.9.2(transitive)
- Removed@nx/devkit@>= 19.5.4 < 20.0.0
- Removednx@^19.0.6
- Removed@angular-eslint/bundled-angular-compiler@18.2.1-alpha.6(transitive)
- Removed@angular-eslint/eslint-plugin@18.2.1-alpha.6(transitive)
- Removed@angular-eslint/eslint-plugin-template@18.2.1-alpha.6(transitive)
- Removed@angular-eslint/utils@18.2.1-alpha.6(transitive)
- Removed@emnapi/core@1.2.0(transitive)
- Removed@emnapi/runtime@1.2.0(transitive)
- Removed@emnapi/wasi-threads@1.0.1(transitive)
- Removed@jest/schemas@29.6.3(transitive)
- Removed@napi-rs/wasm-runtime@0.2.4(transitive)
- Removed@nrwl/devkit@19.7.3(transitive)
- Removed@nrwl/tao@19.7.3(transitive)
- Removed@nx/devkit@19.7.3(transitive)
- Removed@nx/nx-darwin-arm64@19.7.3(transitive)
- Removed@nx/nx-darwin-x64@19.7.3(transitive)
- Removed@nx/nx-freebsd-x64@19.7.3(transitive)
- Removed@nx/nx-linux-arm-gnueabihf@19.7.3(transitive)
- Removed@nx/nx-linux-arm64-gnu@19.7.3(transitive)
- Removed@nx/nx-linux-arm64-musl@19.7.3(transitive)
- Removed@nx/nx-linux-x64-gnu@19.7.3(transitive)
- Removed@nx/nx-linux-x64-musl@19.7.3(transitive)
- Removed@nx/nx-win32-arm64-msvc@19.7.3(transitive)
- Removed@nx/nx-win32-x64-msvc@19.7.3(transitive)
- Removed@sinclair/typebox@0.27.8(transitive)
- Removed@tybys/wasm-util@0.9.0(transitive)
- Removed@yarnpkg/lockfile@1.1.0(transitive)
- Removed@yarnpkg/parsers@3.0.0-rc.46(transitive)
- Removed@zkochan/js-yaml@0.0.7(transitive)
- Removedansi-colors@4.1.3(transitive)
- Removedansi-styles@5.2.0(transitive)
- Removedargparse@1.0.10(transitive)
- Removedasync@3.2.6(transitive)
- Removedasynckit@0.4.0(transitive)
- Removedaxios@1.7.7(transitive)
- Removedcli-spinners@2.6.1(transitive)
- Removedcliui@8.0.1(transitive)
- Removedcombined-stream@1.0.8(transitive)
- Removeddefine-lazy-prop@2.0.0(transitive)
- Removeddelayed-stream@1.0.0(transitive)
- Removeddiff-sequences@29.6.3(transitive)
- Removeddotenv@16.4.5(transitive)
- Removeddotenv-expand@11.0.6(transitive)
- Removedduplexer@0.1.2(transitive)
- Removedejs@3.1.10(transitive)
- Removedemoji-regex@8.0.0(transitive)
- Removedend-of-stream@1.4.4(transitive)
- Removedenquirer@2.3.6(transitive)
- Removedescalade@3.2.0(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedesprima@4.0.1(transitive)
- Removedfigures@3.2.0(transitive)
- Removedfilelist@1.0.4(transitive)
- Removedflat@5.0.2(transitive)
- Removedfollow-redirects@1.15.9(transitive)
- Removedform-data@4.0.0(transitive)
- Removedfront-matter@4.0.2(transitive)
- Removedfs-constants@1.0.0(transitive)
- Removedfs-extra@11.2.0(transitive)
- Removedget-caller-file@2.0.5(transitive)
- Removedgraceful-fs@4.2.11(transitive)
- Removedis-docker@2.2.1(transitive)
- Removedis-fullwidth-code-point@3.0.0(transitive)
- Removedis-wsl@2.2.0(transitive)
- Removedjake@10.9.2(transitive)
- Removedjest-diff@29.7.0(transitive)
- Removedjest-get-type@29.6.3(transitive)
- Removedjs-yaml@3.14.1(transitive)
- Removedjson5@2.2.3(transitive)
- Removedjsonc-parser@3.2.0(transitive)
- Removedjsonfile@6.1.0(transitive)
- Removedlines-and-columns@2.0.3(transitive)
- Removedmime-db@1.52.0(transitive)
- Removedmime-types@2.1.35(transitive)
- Removedminimatch@5.1.69.0.3(transitive)
- Removedminimist@1.2.8(transitive)
- Removednode-machine-id@1.1.12(transitive)
- Removednpm-run-path@4.0.1(transitive)
- Removednx@19.7.3(transitive)
- Removedonce@1.4.0(transitive)
- Removedopen@8.4.2(transitive)
- Removedora@5.3.0(transitive)
- Removedpretty-format@29.7.0(transitive)
- Removedproxy-from-env@1.1.0(transitive)
- Removedreact-is@18.3.1(transitive)
- Removedrequire-directory@2.1.1(transitive)
- Removedsprintf-js@1.0.3(transitive)
- Removedstring-width@4.2.3(transitive)
- Removedstrip-bom@3.0.0(transitive)
- Removedstrong-log-transformer@2.1.0(transitive)
- Removedtar-stream@2.2.0(transitive)
- Removedthrough@2.3.8(transitive)
- Removedtmp@0.2.3(transitive)
- Removedtsconfig-paths@4.2.0(transitive)
- Removeduniversalify@2.0.1(transitive)
- Removedwrap-ansi@7.0.0(transitive)
- Removedwrappy@1.0.2(transitive)
- Removedy18n@5.0.8(transitive)
- Removedyargs@17.7.2(transitive)
- Removedyargs-parser@21.1.1(transitive)
Updated@angular-eslint/eslint-plugin-template@18.2.1-alpha.7