@groma/scanner-angular 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +90 -0
- package/dist/index.js +226871 -0
- package/dist/lib.d.ts +22 -0
- package/dist/lib.decorators.d.ts +384 -0
- package/dist/lib.decorators.legacy.d.ts +22 -0
- package/dist/lib.dom.asynciterable.d.ts +41 -0
- package/dist/lib.dom.d.ts +39429 -0
- package/dist/lib.dom.iterable.d.ts +571 -0
- package/dist/lib.es2015.collection.d.ts +147 -0
- package/dist/lib.es2015.core.d.ts +597 -0
- package/dist/lib.es2015.d.ts +28 -0
- package/dist/lib.es2015.generator.d.ts +77 -0
- package/dist/lib.es2015.iterable.d.ts +605 -0
- package/dist/lib.es2015.promise.d.ts +81 -0
- package/dist/lib.es2015.proxy.d.ts +128 -0
- package/dist/lib.es2015.reflect.d.ts +144 -0
- package/dist/lib.es2015.symbol.d.ts +46 -0
- package/dist/lib.es2015.symbol.wellknown.d.ts +326 -0
- package/dist/lib.es2016.array.include.d.ts +116 -0
- package/dist/lib.es2016.d.ts +21 -0
- package/dist/lib.es2016.full.d.ts +23 -0
- package/dist/lib.es2016.intl.d.ts +31 -0
- package/dist/lib.es2017.arraybuffer.d.ts +21 -0
- package/dist/lib.es2017.d.ts +26 -0
- package/dist/lib.es2017.date.d.ts +31 -0
- package/dist/lib.es2017.full.d.ts +23 -0
- package/dist/lib.es2017.intl.d.ts +44 -0
- package/dist/lib.es2017.object.d.ts +49 -0
- package/dist/lib.es2017.sharedmemory.d.ts +135 -0
- package/dist/lib.es2017.string.d.ts +45 -0
- package/dist/lib.es2017.typedarrays.d.ts +53 -0
- package/dist/lib.es2018.asyncgenerator.d.ts +77 -0
- package/dist/lib.es2018.asynciterable.d.ts +53 -0
- package/dist/lib.es2018.d.ts +24 -0
- package/dist/lib.es2018.full.d.ts +24 -0
- package/dist/lib.es2018.intl.d.ts +83 -0
- package/dist/lib.es2018.promise.d.ts +30 -0
- package/dist/lib.es2018.regexp.d.ts +37 -0
- package/dist/lib.es2019.array.d.ts +79 -0
- package/dist/lib.es2019.d.ts +24 -0
- package/dist/lib.es2019.full.d.ts +24 -0
- package/dist/lib.es2019.intl.d.ts +23 -0
- package/dist/lib.es2019.object.d.ts +33 -0
- package/dist/lib.es2019.string.d.ts +37 -0
- package/dist/lib.es2019.symbol.d.ts +24 -0
- package/dist/lib.es2020.bigint.d.ts +765 -0
- package/dist/lib.es2020.d.ts +27 -0
- package/dist/lib.es2020.date.d.ts +42 -0
- package/dist/lib.es2020.full.d.ts +24 -0
- package/dist/lib.es2020.intl.d.ts +474 -0
- package/dist/lib.es2020.number.d.ts +28 -0
- package/dist/lib.es2020.promise.d.ts +47 -0
- package/dist/lib.es2020.sharedmemory.d.ts +99 -0
- package/dist/lib.es2020.string.d.ts +44 -0
- package/dist/lib.es2020.symbol.wellknown.d.ts +41 -0
- package/dist/lib.es2021.d.ts +23 -0
- package/dist/lib.es2021.full.d.ts +24 -0
- package/dist/lib.es2021.intl.d.ts +166 -0
- package/dist/lib.es2021.promise.d.ts +48 -0
- package/dist/lib.es2021.string.d.ts +33 -0
- package/dist/lib.es2021.weakref.d.ts +78 -0
- package/dist/lib.es2022.array.d.ts +121 -0
- package/dist/lib.es2022.d.ts +25 -0
- package/dist/lib.es2022.error.d.ts +75 -0
- package/dist/lib.es2022.full.d.ts +24 -0
- package/dist/lib.es2022.intl.d.ts +145 -0
- package/dist/lib.es2022.object.d.ts +26 -0
- package/dist/lib.es2022.regexp.d.ts +39 -0
- package/dist/lib.es2022.string.d.ts +25 -0
- package/dist/lib.es2023.array.d.ts +924 -0
- package/dist/lib.es2023.collection.d.ts +21 -0
- package/dist/lib.es2023.d.ts +22 -0
- package/dist/lib.es2023.full.d.ts +24 -0
- package/dist/lib.es2023.intl.d.ts +56 -0
- package/dist/lib.es2024.arraybuffer.d.ts +65 -0
- package/dist/lib.es2024.collection.d.ts +29 -0
- package/dist/lib.es2024.d.ts +26 -0
- package/dist/lib.es2024.full.d.ts +24 -0
- package/dist/lib.es2024.object.d.ts +29 -0
- package/dist/lib.es2024.promise.d.ts +35 -0
- package/dist/lib.es2024.regexp.d.ts +25 -0
- package/dist/lib.es2024.sharedmemory.d.ts +68 -0
- package/dist/lib.es2024.string.d.ts +29 -0
- package/dist/lib.es5.d.ts +4601 -0
- package/dist/lib.es6.d.ts +23 -0
- package/dist/lib.esnext.array.d.ts +35 -0
- package/dist/lib.esnext.collection.d.ts +96 -0
- package/dist/lib.esnext.d.ts +29 -0
- package/dist/lib.esnext.decorators.d.ts +28 -0
- package/dist/lib.esnext.disposable.d.ts +193 -0
- package/dist/lib.esnext.error.d.ts +24 -0
- package/dist/lib.esnext.float16.d.ts +445 -0
- package/dist/lib.esnext.full.d.ts +24 -0
- package/dist/lib.esnext.intl.d.ts +21 -0
- package/dist/lib.esnext.iterator.d.ts +148 -0
- package/dist/lib.esnext.promise.d.ts +34 -0
- package/dist/lib.esnext.sharedmemory.d.ts +25 -0
- package/dist/lib.scripthost.d.ts +322 -0
- package/dist/lib.webworker.asynciterable.d.ts +41 -0
- package/dist/lib.webworker.d.ts +13150 -0
- package/dist/lib.webworker.importscripts.d.ts +23 -0
- package/dist/lib.webworker.iterable.d.ts +340 -0
- package/package.json +43 -0
- package/validation.md +76 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alex Gavrilescu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Angular scanner
|
|
2
|
+
|
|
3
|
+
The Angular scanner adds concrete external-template output bindings to the
|
|
4
|
+
TypeScript scanner evidence. Enable it alongside the Java scanner for the
|
|
5
|
+
supported Maven and Angular application. All enabled scanners must complete
|
|
6
|
+
before Groma updates the map.
|
|
7
|
+
|
|
8
|
+
## Build and install
|
|
9
|
+
|
|
10
|
+
From the Groma checkout:
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
bun install --frozen-lockfile --ignore-scripts
|
|
14
|
+
bun plugins/scanners/angular/build.ts
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
From the project being scanned:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
groma scanner add /absolute/path/to/groma/plugins/scanners/angular/dist/package
|
|
21
|
+
groma scan
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The package contains a bundled ESM entry and TypeScript standard-library
|
|
25
|
+
declarations. Consumers do not run a package build or installation script.
|
|
26
|
+
The prototype package name is not a public publication commitment.
|
|
27
|
+
|
|
28
|
+
Prepare the application's ordinary dependencies using its package manager.
|
|
29
|
+
The scanner reads the root `tsconfig.json`, its configured source entry points,
|
|
30
|
+
and the Angular resources reachable from that program. It does not install
|
|
31
|
+
dependencies, compile application output, or run application code.
|
|
32
|
+
|
|
33
|
+
## Compiler tooling
|
|
34
|
+
|
|
35
|
+
The package pins `@angular/compiler` and `@angular/compiler-cli` to 21.2.17
|
|
36
|
+
and its own TypeScript to 5.9.3. Angular 21.2 supports TypeScript 5.9;
|
|
37
|
+
see the [official compatibility table](https://angular.dev/reference/versions).
|
|
38
|
+
The TypeScript scanner uses its own 7.1 SDK. The package build resolves every
|
|
39
|
+
compiler TypeScript import to the scanner's 5.9.3 installation before bundling,
|
|
40
|
+
so workspace dependency hoisting cannot substitute Groma's compiler.
|
|
41
|
+
|
|
42
|
+
The adapter uses `NgtscProgram`, its template type checker, and the compiler's
|
|
43
|
+
template and TypeScript symbols. These version-specific compiler APIs are
|
|
44
|
+
pinned with the package. Angular owns template parsing, directive matching,
|
|
45
|
+
output binding, and handler resolution; the adapter does not recreate them.
|
|
46
|
+
See [Angular template type checking](https://angular.dev/tools/cli/template-typecheck).
|
|
47
|
+
|
|
48
|
+
## Supported evidence
|
|
49
|
+
|
|
50
|
+
A direct method call in an external template can bind a single resolved
|
|
51
|
+
source output property to a source method with a body. TypeScript locates
|
|
52
|
+
`emit()` calls on that exact property declaration. An emit inside an arrow
|
|
53
|
+
callback belongs to that callback, not to the surrounding method.
|
|
54
|
+
|
|
55
|
+
The observation includes the emitting operation, handler operation, emit
|
|
56
|
+
position, and HTML event attribute position. Positions are zero-based UTF-16
|
|
57
|
+
offsets; binding and invocation lines are one-based. Named bindings use the
|
|
58
|
+
existing shared supplied-callback rule. Ordinary TypeScript evidence can remain
|
|
59
|
+
unresolved while Angular establishes the concrete binding.
|
|
60
|
+
|
|
61
|
+
Angular reports `angular` Code provenance for its source contribution.
|
|
62
|
+
The exact source path keeps one curated owner across both scanners. HTML edits
|
|
63
|
+
participate in the existing watch lifecycle. Repeat scans retain authored
|
|
64
|
+
architecture, and compiler errors leave the previous complete map in place.
|
|
65
|
+
|
|
66
|
+
In OKF, the result remains ordinary Code links and readable relationship rows.
|
|
67
|
+
In C4, an Angular component is source evidence, not a new architecture level
|
|
68
|
+
or an automatic architecture component. Core owns relationship interpretation;
|
|
69
|
+
the plugin does not write architecture or introduce metadata.
|
|
70
|
+
|
|
71
|
+
## Coverage limits
|
|
72
|
+
|
|
73
|
+
This revision qualifies the CompanyMergeDialog output-to-parent-handler flow.
|
|
74
|
+
It does not establish injected service receivers, routing, HTTP matching,
|
|
75
|
+
automatic Spring wiring, inline-template bindings, arbitrary handler
|
|
76
|
+
expressions, output mutation, or exhaustive Angular runtime behavior.
|
|
77
|
+
Unresolved or unsupported event bindings produce
|
|
78
|
+
`unsupported-angular-binding` diagnostics rather than relationships.
|
|
79
|
+
DOM events and dependency-library outputs have no supported source output
|
|
80
|
+
provider in this rule. TypeScript semantic errors, including incompatible types,
|
|
81
|
+
fail readiness and scanning alongside syntax and Angular compiler errors.
|
|
82
|
+
Compiler errors fail the scan instead of yielding a
|
|
83
|
+
partial observation. Template strictness follows the project's Angular compiler
|
|
84
|
+
options. Groma enables the template-checker API to resolve output bindings but
|
|
85
|
+
does not enable stricter template checks than the project requests.
|
|
86
|
+
|
|
87
|
+
Independent fixture tests load the built package and cover concrete callback
|
|
88
|
+
endpoints, complementary TypeScript evidence, curated ownership, HTML-triggered
|
|
89
|
+
rescan, and failure preservation. See [validation](validation.md) for the
|
|
90
|
+
real-project result and remaining release gates.
|