angular/packages
Doug Parker 75f2cb8f56 feat(core): implement Angular DI graph in-page AI tool
This creates a new `angular:di-graph` in-page tool which returns the entire dependency injection graph for the application.

We use the following rough algorithm for discovering all element injectors:
1. Find all root `LView` objects by querying for `[ng-version]`.
2. Walk all the transitive `LView` descendants of the roots.
3. Filter these `LView` objects to just directives.
4. Find the injector for a given directive and walk up its ancestors to find all element injectors.

Discovering environment injectors works mostly the same way, just following the environment injector graph instead.

This approach has a few known limitations which are out of scope for the moment:
1. Any given component typically has both an element injector *and* an environment injector. The relationship of "component -> environment injector" is not expressed in the result as of now, meaning the AI doesn't really have any insight into _which_ environment injector is being used for a particular component, though the injector will be one of the returned values.
2. The implementation does not support MFE use cases of multiple applications on the page at the same time.
3. The performance is not ideal, as we walk `LView` descendants twice and walk up the injector tree for every directive, repeatedly covering the same scope (ideally we'd just walk up every *leaf* directive, which would cover the same result for less effort). However for a debug tool, this is likely fine for now and we can optimize later if/when it becomes necessary.

I did consider reusing more of the existing implementation in `global_utils` which exists to support Angular DevTools (we are already using some of it), however the existing support in `@angular/core` is actually fairly limited, returning very primitive data structures and relying on Angular DevTools to do the heavier lifting of collapsing the code into a usable graph representation. There's a potential path in the future to converge these implementations and potentially have `global_utils` use some of this code instead, but I will leave that for a future cleanup effort.
2026-04-14 18:35:51 +03:00
..
animations test: remove duplicate tests (#67518) 2026-03-11 13:37:33 -07:00
benchpress build: update cross-repo angular dependencies 2026-03-05 11:43:25 -08:00
common fix(http): add CSP nonce support to JsonpClientBackend 2026-04-13 16:01:11 +03:00
compiler fix(compiler): don't escape dollar sign in literal expression 2026-04-10 09:23:50 +03:00
compiler-cli refactor(compiler-cli): decouple SymbolReference from AST nodes in template checker 2026-04-14 12:32:48 +03:00
core feat(core): implement Angular DI graph in-page AI tool 2026-04-14 18:35:51 +03:00
docs/di build: format md files 2025-11-06 10:03:05 -08:00
elements refactor(core): remove ComponentFactoryResolver usages 2026-04-13 16:00:03 +03:00
examples feat(core): bootstrap via ApplicationRef with config 2026-04-07 12:48:53 -07:00
forms feat(forms): shim legacy NG_VALIDATORS into parseErrors for CVA mode (#67943) 2026-04-14 18:32:24 +03:00
language-service refactor: remove all deep imports in language service 2026-04-13 11:16:26 +03:00
localize fix(localize): validate locale in getOutputPathFn to prevent path traversal 2026-03-30 12:15:26 +02:00
misc/angular-in-memory-web-api build: update cross-repo angular dependencies 2026-03-05 11:43:25 -08:00
platform-browser refactor(core): deprecate withIncrementalHydration 2026-04-13 18:53:21 +03:00
platform-browser-dynamic build: update minimum supported Node.js versions 2026-02-25 07:57:18 -08:00
platform-server fix(core): escape forward slashes in transfer state to prevent crawler indexing 2026-04-13 13:54:55 +03:00
private/testing build: consolidate domino bundling in platform-server 2026-03-25 13:31:05 -07:00
router fix(router): normalize multiple leading slashes in URL parser 2026-04-14 12:34:03 +03:00
service-worker fix(service-worker): resolve TS 6.0 compatibility for messageerror listener 2026-04-09 21:46:28 +03:00
ssr/docs build: add node type for api extraction 2026-02-11 13:57:58 -08:00
upgrade refactor(core): remove ComponentFactoryResolver usages 2026-04-13 16:00:03 +03:00
zone.js build: update cross-repo angular dependencies 2026-03-25 13:32:59 -07:00
BUILD.bazel refactor(platform-browser): remove Hammer integration 2026-03-19 16:13:20 -07:00
circular-deps-test.conf.cjs build: use Node.js built-in TypeScript support for dev-infra scripts 2026-01-02 08:15:40 +01:00
empty.ts refactor: update license text to point to angular.dev (#57901) 2024-09-24 15:33:00 +02:00
goog.d.ts refactor: update license text to point to angular.dev (#57901) 2024-09-24 15:33:00 +02:00
license-banner.txt docs: update copyright year 2026-01-07 12:28:34 -05:00
package.json build: prepare for compiler-cli to be using ts_project (#61181) 2025-05-09 15:59:46 +00:00
README.md build: format md files 2025-11-06 10:03:05 -08:00
system.d.ts refactor: update packages/core:{core,src} to ts_project (#61275) 2025-05-14 12:01:51 +00:00
tsconfig-build.json Revert "refactor(compiler-cli): remove deep imports from compiler-cli (#64732)" 2025-11-06 13:09:01 -08:00
tsconfig-legacy-saucelabs.json feat(core): support TypeScript 5.5 (#56096) 2024-05-29 15:33:33 +02:00
tsconfig-test.json
tsconfig.json feat(compiler-cli): enable type checking of host bindings by default (#63654) 2025-09-09 14:34:29 -07:00
tsec-exemption.json
types.d.ts refactor(platform-browser): remove Hammer integration 2026-03-19 16:13:20 -07:00

Angular

The sources for this package are in the main Angular repo. Please file issues and pull requests against that repo.

Usage information and reference details can be found in Angular documentation.

License: MIT