{"id":24905,"library":"angular-eslint-injection-context","title":"angular-eslint-injection-context","description":"Angular ESLint plugin enforcing that inject() and related functions (takeUntilDestroyed, toSignal, resource, form) are called in an injection context. Current version 1.3.0 (2025). Actively maintained with regular releases. Catches NG0203 runtime errors at lint time. Differentiates from standard Angular ESLint rules by focusing specifically on injection context, providing custom rules like inject-async-in-injection-context and custom-function-in-injection-context.","status":"active","version":"1.3.0","language":"javascript","source_language":"en","source_url":"https://github.com/cyrilletuzi/angular-eslint-injection-context","tags":["javascript","angular","eslint","typescript"],"install":[{"cmd":"npm install angular-eslint-injection-context","lang":"bash","label":"npm"},{"cmd":"yarn add angular-eslint-injection-context","lang":"bash","label":"yarn"},{"cmd":"pnpm add angular-eslint-injection-context","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for ESLint rule utilities","package":"@typescript-eslint/utils","optional":false}],"imports":[{"note":"Plugin is ESM-only; use import statement.","wrong":"const angularInjectionContext = require('angular-eslint-injection-context');","symbol":"default (plugin)","correct":"import angularInjectionContext from 'angular-eslint-injection-context';"},{"note":"Named export for individual rule objects.","wrong":"const rules = require('angular-eslint-injection-context').rules;","symbol":"rules","correct":"import { rules } from 'angular-eslint-injection-context';"},{"note":"Configs export contains presets like 'recommended'.","wrong":"import { preset } from 'angular-eslint-injection-context';","symbol":"configs","correct":"import { configs } from 'angular-eslint-injection-context';"}],"quickstart":{"code":"// .eslintrc.json\n{\n  \"plugins\": [\"angular-eslint-injection-context\"],\n  \"rules\": {\n    \"angular-eslint-injection-context/inject-async-in-injection-context\": \"error\",\n    \"angular-eslint-injection-context/custom-function-in-injection-context\": [\"error\", { \"functions\": [\"myCustomInject\"] }]\n  },\n  \"overrides\": [\n    {\n      \"files\": [\"*.ts\"],\n      \"parser\": \"@typescript-eslint/parser\",\n      \"extends\": [\n        \"plugin:angular-eslint-injection-context/recommended\"\n      ]\n    }\n  ]\n}\n","lang":"typescript","description":"Configures ESLint with injection context rules and recommended preset for Angular TypeScript files."},"warnings":[{"fix":"Update to v1.x and follow the changelog for renamed rules.","message":"Rules previously in v0.x may have different names or presets. Check migration guide when upgrading from v0 to v1.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Use 'plugin:angular-eslint-injection-context/recommended' instead.","message":"The 'inject-context' preset has been renamed to 'recommended' in v1.3.0.","severity":"deprecated","affected_versions":">=1.3.0"},{"fix":"Ensure @typescript-eslint/utils is at least ^8.0.0.","message":"Requires @typescript-eslint/utils v8 or higher. Older versions will cause lint failures.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use angular-eslint's built-in rules for .js files or convert to .ts.","message":"Rules only work on TypeScript files; JavaScript Angular files are not supported.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run: npm install --save-dev angular-eslint-injection-context","cause":"Missing installation of the plugin package.","error":"Error: Failed to load plugin 'angular-eslint-injection-context': Cannot find module 'angular-eslint-injection-context'"},{"fix":"Check correct rule names: 'inject-async-in-injection-context', 'custom-function-in-injection-context'.","cause":"Using a rule name that does not exist or misspelled.","error":"Error: Invalid rule definition: 'angular-eslint-injection-context/inject-async-in-injection-context'"},{"fix":"Add 'angular-eslint-injection-context' to the plugins array in your ESLint config.","cause":"Plugin not properly loaded in ESLint config.","error":"TypeError: Cannot read properties of undefined (reading 'injection-context')"},{"fix":"Ensure the package is installed and your ESLint config file is in the project root or resolve-plugins-relative-to is set.","cause":"Plugin not installed or ESLint cannot resolve it.","error":"ESLint couldn't find the plugin \"angular-eslint-injection-context\"."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}