@callidescope/output 0.0.0-stage → 0.0.4

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/README.md CHANGED
@@ -1,3 +1,592 @@
1
- # Temporary Holding Version
1
+ # 🔭 Callidescope Output
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ **Renders call-graph findings into markdown, mermaid, and JSON output formats.**
4
+
5
+ This package sits between
6
+ [`@callidescope/graph`](../callidescope-graph/README.md), which it depends on
7
+ for the shapes it renders, and
8
+ [`@callidescope/cli`](../callidescope-cli/README.md), which orchestrates a run
9
+ and hands this package the findings.
10
+
11
+ ```bash
12
+ npm install --save-dev @callidescope/output
13
+ ```
14
+
15
+ ## What This Package Owns
16
+
17
+ - **`output-markdown`** — anchored-block splicing into markdown files
18
+ - **`output-json`** — JSON file output
19
+ - **`report`** — assembles findings, as markdown or a mermaid diagram, into the reportable shape
20
+ - **`project-reports`** — per-project report sections, scoping a run's findings to the project each one came from
21
+
22
+ ## Test
23
+
24
+ ```bash
25
+ nx run callidescope-output:vitest
26
+ ```
27
+
28
+ ## 👔 Conformetry
29
+
30
+ This project was generated from the [nestjs-service-project](../../../../configuration/conformetry-templates/nestjs-service-project) conformetry template.
31
+
32
+ <!-- callidescope:start -->
33
+
34
+ ## 🔭 Callidescope
35
+
36
+ Call stacks traced through `packages/ic-suite/callidescope/callidescope-output`, deepest first. Each frame shows what it takes, what it returns, and what its documentation says.
37
+
38
+ | Measure | Value |
39
+ | --- | --- |
40
+ | Callables | 137 |
41
+ | Files | 38 |
42
+ | Calls traced | 142 |
43
+ | Call stacks | 2 |
44
+ | Deepest stack | 4 |
45
+ | Stacks through recursion | 0 |
46
+ | Unfollowable calls | 1 |
47
+
48
+ ### Limits
49
+
50
+ What this project is judged against, as declared in its own `callidescope.config.ts`.
51
+
52
+ | Limit | Value |
53
+ | --- | --- |
54
+ | `maximumDepth` | 13 |
55
+ | `maximumBreadth` | 7 |
56
+
57
+ ### Call stacks (depth)
58
+
59
+ **1. `OutputMarkdownService.syncAnchoredBlock`** — depth ≥ 4 · orphan-root
60
+
61
+ ```text
62
+ 🚀 OutputMarkdownService.syncAnchoredBlock(…): boolean [packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:161]
63
+ └─> OutputMarkdownService.syncAnchoredBlock(args: SyncAnchoredBlockArguments): boolean [packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:206]
64
+ ↳ Splices the anchored block into a file.
65
+ └─> OutputMarkdownService.buildBlockPattern(destination: SyncAnchoredBlockArguments["destination"]): RegExp [packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:54]
66
+ ↳ Builds the pattern matching everything between the two anchors.
67
+ └─> OutputMarkdownService.escapePattern(value: string): string [packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:63]
68
+ ↳ Escapes a marker so it can sit inside a pattern.
69
+ ```
70
+
71
+ **2. `OutputMarkdownService.wrapInAnchors`** — depth 2 · orphan-root
72
+
73
+ ```text
74
+ 🚀 OutputMarkdownService.wrapInAnchors(override: string | undefined): string [packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:168]
75
+ └─> OutputMarkdownService.wrapInAnchors(args: WrapInAnchorsArguments): string [packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:236]
76
+ ↳ Wraps content in the configured anchors.
77
+ ```
78
+
79
+ ### Breadth
80
+
81
+ | Callable | Breadth | Calls directly | Location |
82
+ | --- | --- | --- | --- |
83
+ | `MarkdownReportService.renderRun` | 7 | `MarkdownReportService.subsectionPrefix`, `WorkspaceReportService.buildRows`, `MarkdownReportService.renderSummaryTable`, `WorkspaceReportService.renderProjectIndex`, `WorkspaceReportService.renderHeadroom`, `MarkdownReportService.renderStacksAs`, `MarkdownReportService.renderCallableBreadths` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:305` |
84
+ | `MarkdownReportService.renderProjectSection` | 5 | `MarkdownReportService.renderSummaryTable`, `MarkdownReportService.renderProjectLimits`, `WorkspaceReportService.limitsFor`, `MarkdownReportService.renderStacksAs`, `MarkdownReportService.renderCallableBreadths` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:257` |
85
+ | `OutputMarkdownService.syncAnchoredBlock` | 5 | `MissingMarkdownPathError.constructor`, `OutputMarkdownService.readExisting`, `OutputMarkdownService.wrapInAnchors`, `OutputMarkdownService.buildBlockPattern`, `OutputMarkdownService.spliceBlock` | `packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:206` |
86
+
87
+ <details>
88
+ <summary>68 more callables</summary>
89
+
90
+ | Callable | Breadth | Calls directly | Location |
91
+ | --- | --- | --- | --- |
92
+ | `AddressReportService.renderBreadthDiagram` | 4 | `AddressReportService.toFrame`, `AddressReportService.map(…)`, `AddressReportService.map(…)`, `MermaidReportService.renderStacks` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:61` |
93
+ | `ProjectReportsService.buildSummary` | 4 | `ProjectReportsService.filter(…)`, `ProjectReportsService.filter(…)`, `ProjectReportsService.reduce(…)`, `ProjectReportsService.filter(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:133` |
94
+ | `ReportFindingsService.reportFindings` | 4 | `ReportFindingsService.reportStaleness`, `ReportFindingsService.reportDeepStacks`, `ReportFindingsService.reportWideCallables`, `ReportFindingsService.reportEmptyTrace` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report-findings/report-findings.service.ts:127` |
95
+ | `WriteDestinationsService.syncDestinations` | 4 | `OutputJsonService.sync`, `OutputMarkdownService.sync`, `MarkdownReportService.renderRun`, `WriteDestinationsService.syncProjectDestinations` | `packages/ic-suite/callidescope/callidescope-output/src/modules/write-destinations/write-destinations.service.ts:121` |
96
+ | `MermaidReportService.renderStacks` | 3 | `MermaidReportService.countNewCallables`, `MermaidReportService.addStack`, `MermaidReportService.renderDiagram` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/mermaid-report.service.ts:139` |
97
+ | `ReportService.renderFrame` | 3 | `ReportService.renderSignature`, `ReportService.renderMarkers`, `ReportService.shortenSummary` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/report.service.ts:44` |
98
+ | `MarkdownReportService.renderCallableBreadths` | 3 | `MarkdownReportService.renderTable`, `MarkdownReportService.map(…)`, `MarkdownReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:69` |
99
+ | `AddressReportService.renderBreadth` | 3 | `AddressReportService.buildBreadthPayload`, `AddressReportService.renderBreadthDiagram`, `AddressReportService.renderReferenceTable` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:153` |
100
+ | `AddressReportService.renderDepth` | 3 | `AddressReportService.buildDepthPayload`, `MermaidReportService.renderStacks`, `AddressReportService.renderDepthStacks` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:208` |
101
+ | `OutputMarkdownService.spliceBlock` | 3 | `OutputMarkdownService.replace(…)`, `OutputMarkdownService.appendBlock`, `OutputMarkdownService.replaceOrphanedBlock` | `packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:123` |
102
+ | `ProjectReportsService.build` | 3 | `ProjectReportsService.buildStacks`, `ProjectReportsService.buildCallableBreadths`, `ProjectReportsService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:229` |
103
+ | `ProjectReportsService.map(…)` | 3 | `ProjectReportsService.toSorted(…)`, `ProjectReportsService.toSorted(…)`, `ProjectReportsService.buildSummary` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:233` |
104
+ | `ProjectReportsService.findOwnedFindings` | 3 | `ProjectReportsService.filter(…)`, `ProjectReportsService.findDeepStacks`, `ProjectReportsService.findWideCallables` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:302` |
105
+ | `MermaidReportService.countNewCallables` | 2 | `MermaidReportService.filter(…)`, `MermaidReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/mermaid-report.service.ts:90` |
106
+ | `WorkspaceReportService.buildRows` | 2 | `WorkspaceReportService.map(…)`, `WorkspaceReportService.toSorted(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/workspace-report.service.ts:105` |
107
+ | `WorkspaceReportService.map(…)` | 2 | `WorkspaceReportService.limitsFor`, `WorkspaceReportService.widestBreadth` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/workspace-report.service.ts:106` |
108
+ | `WorkspaceReportService.renderHeadroom` | 2 | `WorkspaceReportService.map(…)`, `WorkspaceReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/workspace-report.service.ts:150` |
109
+ | `WorkspaceReportService.renderProjectIndex` | 2 | `WorkspaceReportService.buildRows`, `WorkspaceReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/workspace-report.service.ts:178` |
110
+ | `MarkdownReportService.renderStacksAs` | 2 | `MermaidReportService.renderStacks`, `MarkdownReportService.renderStacks` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:153` |
111
+ | `MarkdownReportService.renderFindings` | 2 | `MarkdownReportService.renderStacks`, `MarkdownReportService.renderWideCallableLines` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:239` |
112
+ | `AddressReportService.renderBreadthReports` | 2 | `AddressReportService.map(…)`, `AddressReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:193` |
113
+ | `AddressReportService.renderDepthReports` | 2 | `AddressReportService.map(…)`, `AddressReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:256` |
114
+ | `OutputJsonService.sync` | 2 | `OutputJsonService.buildReport`, `OutputJsonService.readExisting` | `packages/ic-suite/callidescope/callidescope-output/src/modules/output-json/output-json.service.ts:63` |
115
+ | `OutputMarkdownService.sync` | 2 | `OutputMarkdownService.syncAnchoredBlock`, `OutputMarkdownService.buildHelpers` | `packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:177` |
116
+ | `ProjectReportsService.buildCallableBreadths` | 2 | `ProjectReportsService.flatMap(…)`, `SignaturesService.read` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:47` |
117
+ | `ProjectReportsService.buildStacks` | 2 | `ProjectReportsService.readDepth`, `PathsService.buildDeepestPath` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:87` |
118
+ | `ProjectReportsService.findProjectDeepStacks` | 2 | `ProjectReportsService.map(…)`, `ProjectReportsService.filter(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:169` |
119
+ | `ProjectReportsService.findProjectWideCallables` | 2 | `ProjectReportsService.map(…)`, `ProjectReportsService.filter(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:179` |
120
+ | `ProjectReportsService.findDeepStacks` | 2 | `ProjectReportsService.toSorted(…)`, `ProjectReportsService.flatMap(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:271` |
121
+ | `ProjectReportsService.flatMap(…)` | 2 | `ProjectReportsService.findProjectDeepStacks`, `ProjectReportsService.readProjectLimits` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:276` |
122
+ | `ProjectReportsService.findWideCallables` | 2 | `ProjectReportsService.toSorted(…)`, `ProjectReportsService.flatMap(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:364` |
123
+ | `ProjectReportsService.flatMap(…)` | 2 | `ProjectReportsService.findProjectWideCallables`, `ProjectReportsService.readProjectLimits` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:369` |
124
+ | `ReportFindingsService.reportDeepStacks` | 2 | `ReportFindingsService.map(…)`, `ReportFindingsService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report-findings/report-findings.service.ts:35` |
125
+ | `ReportFindingsService.reportWideCallables` | 2 | `ReportFindingsService.map(…)`, `ReportFindingsService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report-findings/report-findings.service.ts:92` |
126
+ | `WriteDestinationsService.syncProjectSections` | 2 | `OutputMarkdownService.sync`, `MarkdownReportService.renderProjectSection` | `packages/ic-suite/callidescope/callidescope-output/src/modules/write-destinations/write-destinations.service.ts:80` |
127
+ | `MermaidReportService.addFrame` | 1 | `MermaidReportService.renderLabel` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/mermaid-report.service.ts:39` |
128
+ | `MermaidReportService.addStack` | 1 | `MermaidReportService.addFrame` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/mermaid-report.service.ts:67` |
129
+ | `ReportService.shortenSummary` | 1 | `ReportService.readFirstSentence` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/report.service.ts:102` |
130
+ | `ReportService.renderStackTree` | 1 | `ReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/report.service.ts:130` |
131
+ | `ReportService.map(…)` | 1 | `ReportService.renderFrame` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/report.service.ts:132` |
132
+ | `WorkspaceReportService.widestBreadth` | 1 | `WorkspaceReportService.reduce(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/workspace-report.service.ts:88` |
133
+ | `WorkspaceReportService.map(…)` | 1 | `WorkspaceReportService.bucketFor` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/workspace-report.service.ts:151` |
134
+ | `WorkspaceReportService.map(…)` | 1 | `WorkspaceReportService.filter(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/workspace-report.service.ts:160` |
135
+ | `MarkdownReportService.toRow` | 1 | `MarkdownReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:73` |
136
+ | `MarkdownReportService.map(…)` | 1 | `MarkdownReportService.toRow` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:79` |
137
+ | `MarkdownReportService.map(…)` | 1 | `MarkdownReportService.toRow` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:94` |
138
+ | `MarkdownReportService.renderProjectLimits` | 1 | `MarkdownReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:126` |
139
+ | `MarkdownReportService.map(…)` | 1 | `MarkdownReportService.renderLimitCell` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:130` |
140
+ | `MarkdownReportService.renderStack` | 1 | `ReportService.renderStackTree` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:136` |
141
+ | `MarkdownReportService.renderWideCallableLines` | 1 | `MarkdownReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:199` |
142
+ | `MarkdownReportService.renderStacks` | 1 | `MarkdownReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:355` |
143
+ | `MarkdownReportService.map(…)` | 1 | `MarkdownReportService.renderStack` | `packages/ic-suite/callidescope/callidescope-output/src/modules/report/markdown-report.service.ts:360` |
144
+ | `AddressReportService.map(…)` | 1 | `AddressReportService.toFrame` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:72` |
145
+ | `AddressReportService.map(…)` | 1 | `AddressReportService.toFrame` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:75` |
146
+ | `AddressReportService.renderDepthStacks` | 1 | `AddressReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:84` |
147
+ | `AddressReportService.map(…)` | 1 | `ReportService.renderStackTree` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:95` |
148
+ | `AddressReportService.renderReferenceTable` | 1 | `AddressReportService.map(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:116` |
149
+ | `AddressReportService.map(…)` | 1 | `AddressReportService.buildBreadthPayload` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:196` |
150
+ | `AddressReportService.map(…)` | 1 | `AddressReportService.renderBreadth` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:203` |
151
+ | `AddressReportService.map(…)` | 1 | `AddressReportService.buildDepthPayload` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:259` |
152
+ | `AddressReportService.map(…)` | 1 | `AddressReportService.renderDepth` | `packages/ic-suite/callidescope/callidescope-output/src/modules/address-report/address-report.service.ts:266` |
153
+ | `OutputMarkdownService.buildBlockPattern` | 1 | `OutputMarkdownService.escapePattern` | `packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:54` |
154
+ | `OutputMarkdownService.syncAnchoredBlock` | 1 | `OutputMarkdownService.syncAnchoredBlock` | `packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:161` |
155
+ | `OutputMarkdownService.wrapInAnchors` | 1 | `OutputMarkdownService.wrapInAnchors` | `packages/ic-suite/callidescope/callidescope-output/src/modules/output-markdown/output-markdown.service.ts:168` |
156
+ | `ProjectReportsService.filter(…)` | 1 | `ProjectReportsService.some(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:150` |
157
+ | `ProjectReportsService.findUnreadProjects` | 1 | `ProjectReportsService.filter(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:339` |
158
+ | `ProjectReportsService.filter(…)` | 1 | `ProjectReportsService.find(…)` | `packages/ic-suite/callidescope/callidescope-output/src/modules/project-reports/project-reports.service.ts:345` |
159
+ | `WriteDestinationsService.syncProjectDestinations` | 1 | `WriteDestinationsService.syncProjectSections` | `packages/ic-suite/callidescope/callidescope-output/src/modules/write-destinations/write-destinations.service.ts:53` |
160
+
161
+ </details>
162
+ <!-- callidescope:end -->
163
+
164
+ ## 🕸️ Codependix
165
+
166
+ Dependency graphs exported by [codependix](https://github.com/Organizzolini/codebase/tree/main/packages/ic-suite/codependix/codependix-cli), regenerated by `nx run codebase:codependix:write`.
167
+
168
+ ### Nx Neighborhood
169
+
170
+ <!-- codependix:start name="codependix-nx-projects" -->
171
+ ```mermaid
172
+ graph LR
173
+ callidescope_cli["callidescope-cli"]
174
+ callidescope_configuration["callidescope-configuration"]
175
+ callidescope_core["callidescope-core"]
176
+ callidescope_graph["callidescope-graph"]
177
+ callidescope_nx["callidescope-nx"]
178
+ callidescope_output["callidescope-output"]
179
+ logger["logger"]
180
+ callidescope_cli --> callidescope_output
181
+ callidescope_nx --> callidescope_output
182
+ callidescope_output --> callidescope_configuration
183
+ callidescope_output --> callidescope_core
184
+ callidescope_output --> callidescope_graph
185
+ callidescope_output --> logger
186
+ classDef subject fill:#7c3aed,color:#fff,stroke:#4c1d95,stroke-width:2px
187
+ class callidescope_output subject
188
+ ```
189
+ <!-- codependix:end name="codependix-nx-projects" -->
190
+
191
+ ### NestJS Module Graph
192
+
193
+ <!-- codependix:start name="codependix-nestjs-modules" -->
194
+ ```mermaid
195
+ flowchart LR
196
+ AddressReportModule
197
+ CallablesModule
198
+ ClassesModule
199
+ DocumentationModule
200
+ EdgesModule
201
+ GraphModule
202
+ LoggerModule([LoggerModule])
203
+ OutputJsonModule
204
+ OutputMarkdownModule
205
+ ProgramModule
206
+ ProjectReportsModule
207
+ ReportFindingsModule
208
+ ReportModule
209
+ SignaturesModule
210
+ WorkspaceModule
211
+ WriteDestinationsModule
212
+ AddressReportModule --> ReportModule
213
+ CallablesModule --> ProgramModule
214
+ CallablesModule --> WorkspaceModule
215
+ EdgesModule --> CallablesModule
216
+ EdgesModule --> ClassesModule
217
+ EdgesModule --> ProgramModule
218
+ EdgesModule --> WorkspaceModule
219
+ GraphModule --> DocumentationModule
220
+ GraphModule --> EdgesModule
221
+ GraphModule --> SignaturesModule
222
+ ProgramModule --> WorkspaceModule
223
+ ProjectReportsModule --> GraphModule
224
+ ProjectReportsModule --> SignaturesModule
225
+ WriteDestinationsModule --> OutputJsonModule
226
+ WriteDestinationsModule --> OutputMarkdownModule
227
+ WriteDestinationsModule --> ReportModule
228
+ ```
229
+
230
+ _Rounded modules are global: every module can inject them, so their edges are left out._
231
+ <!-- codependix:end name="codependix-nestjs-modules" -->
232
+
233
+ ### File Imports
234
+
235
+ <!-- codependix:start name="codependix-file-imports" -->
236
+ ```mermaid
237
+ graph LR
238
+ file_callidescope_config_ts["callidescope.config.ts"]
239
+ file_codependix_config_ts["codependix.config.ts"]
240
+ file_codometer_config_ts["codometer.config.ts"]
241
+ file_eslint_config_ts["eslint.config.ts"]
242
+ file_src_index_ts["src/index.ts"]
243
+ file_src_modules_address_report_address_report_constants_ts["src/modules/address-report/address-report.constants.ts"]
244
+ file_src_modules_address_report_address_report_module_ts["src/modules/address-report/address-report.module.ts"]
245
+ file_src_modules_address_report_address_report_service_ts["src/modules/address-report/address-report.service.ts"]
246
+ file_src_modules_address_report_address_report_service_unit_test_ts["src/modules/address-report/address-report.service.unit.test.ts"]
247
+ file_src_modules_address_report_address_report_types_ts["src/modules/address-report/address-report.types.ts"]
248
+ file_src_modules_output_json_output_json_constants_ts["src/modules/output-json/output-json.constants.ts"]
249
+ file_src_modules_output_json_output_json_module_ts["src/modules/output-json/output-json.module.ts"]
250
+ file_src_modules_output_json_output_json_service_ts["src/modules/output-json/output-json.service.ts"]
251
+ file_src_modules_output_json_output_json_service_unit_test_ts["src/modules/output-json/output-json.service.unit.test.ts"]
252
+ file_src_modules_output_json_output_json_types_ts["src/modules/output-json/output-json.types.ts"]
253
+ file_src_modules_output_markdown_output_markdown_constants_ts["src/modules/output-markdown/output-markdown.constants.ts"]
254
+ file_src_modules_output_markdown_output_markdown_module_ts["src/modules/output-markdown/output-markdown.module.ts"]
255
+ file_src_modules_output_markdown_output_markdown_service_ts["src/modules/output-markdown/output-markdown.service.ts"]
256
+ file_src_modules_output_markdown_output_markdown_service_unit_test_ts["src/modules/output-markdown/output-markdown.service.unit.test.ts"]
257
+ file_src_modules_output_markdown_output_markdown_types_ts["src/modules/output-markdown/output-markdown.types.ts"]
258
+ file_src_modules_project_reports_project_reports_constants_ts["src/modules/project-reports/project-reports.constants.ts"]
259
+ file_src_modules_project_reports_project_reports_module_ts["src/modules/project-reports/project-reports.module.ts"]
260
+ file_src_modules_project_reports_project_reports_service_ts["src/modules/project-reports/project-reports.service.ts"]
261
+ file_src_modules_project_reports_project_reports_service_unit_test_ts["src/modules/project-reports/project-reports.service.unit.test.ts"]
262
+ file_src_modules_project_reports_project_reports_types_ts["src/modules/project-reports/project-reports.types.ts"]
263
+ file_src_modules_report_findings_report_findings_constants_ts["src/modules/report-findings/report-findings.constants.ts"]
264
+ file_src_modules_report_findings_report_findings_module_ts["src/modules/report-findings/report-findings.module.ts"]
265
+ file_src_modules_report_findings_report_findings_service_ts["src/modules/report-findings/report-findings.service.ts"]
266
+ file_src_modules_report_findings_report_findings_service_unit_test_ts["src/modules/report-findings/report-findings.service.unit.test.ts"]
267
+ file_src_modules_report_findings_report_findings_types_ts["src/modules/report-findings/report-findings.types.ts"]
268
+ file_src_modules_report_markdown_report_service_ts["src/modules/report/markdown-report.service.ts"]
269
+ file_src_modules_report_markdown_report_service_unit_test_ts["src/modules/report/markdown-report.service.unit.test.ts"]
270
+ file_src_modules_report_mermaid_report_service_ts["src/modules/report/mermaid-report.service.ts"]
271
+ file_src_modules_report_mermaid_report_service_unit_test_ts["src/modules/report/mermaid-report.service.unit.test.ts"]
272
+ file_src_modules_report_report_constants_ts["src/modules/report/report.constants.ts"]
273
+ file_src_modules_report_report_module_ts["src/modules/report/report.module.ts"]
274
+ file_src_modules_report_report_service_ts["src/modules/report/report.service.ts"]
275
+ file_src_modules_report_report_service_unit_test_ts["src/modules/report/report.service.unit.test.ts"]
276
+ file_src_modules_report_report_types_ts["src/modules/report/report.types.ts"]
277
+ file_src_modules_report_workspace_report_service_ts["src/modules/report/workspace-report.service.ts"]
278
+ file_src_modules_report_workspace_report_service_unit_test_ts["src/modules/report/workspace-report.service.unit.test.ts"]
279
+ file_src_modules_write_destinations_write_destinations_constants_ts["src/modules/write-destinations/write-destinations.constants.ts"]
280
+ file_src_modules_write_destinations_write_destinations_module_ts["src/modules/write-destinations/write-destinations.module.ts"]
281
+ file_src_modules_write_destinations_write_destinations_service_ts["src/modules/write-destinations/write-destinations.service.ts"]
282
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts["src/modules/write-destinations/write-destinations.service.unit.test.ts"]
283
+ file_src_modules_write_destinations_write_destinations_types_ts["src/modules/write-destinations/write-destinations.types.ts"]
284
+ file_testing_mocks_ts["testing/mocks.ts"]
285
+ file_testing_modules_ts["testing/modules.ts"]
286
+ file_testing_setup_ts["testing/setup.ts"]
287
+ file_vite_config_ts["vite.config.ts"]
288
+ file_vitest_config_ts["vitest.config.ts"]
289
+ file_src_modules_address_report_address_report_module_ts --> file_src_modules_address_report_address_report_service_ts
290
+ file_src_modules_address_report_address_report_module_ts --> file_src_modules_report_report_module_ts
291
+ file_src_modules_address_report_address_report_service_ts --> file_src_modules_address_report_address_report_types_ts
292
+ file_src_modules_address_report_address_report_service_ts --> file_src_modules_report_mermaid_report_service_ts
293
+ file_src_modules_address_report_address_report_service_ts --> file_src_modules_report_report_service_ts
294
+ file_src_modules_address_report_address_report_service_ts --> file_src_modules_report_report_types_ts
295
+ file_src_modules_address_report_address_report_service_unit_test_ts --> file_src_modules_address_report_address_report_service_ts
296
+ file_src_modules_address_report_address_report_service_unit_test_ts --> file_src_modules_report_mermaid_report_service_ts
297
+ file_src_modules_address_report_address_report_service_unit_test_ts --> file_src_modules_report_report_service_ts
298
+ file_src_modules_address_report_address_report_service_unit_test_ts --> file_testing_mocks_ts
299
+ file_src_modules_output_json_output_json_module_ts --> file_src_modules_output_json_output_json_service_ts
300
+ file_src_modules_output_json_output_json_service_ts --> file_src_modules_output_json_output_json_types_ts
301
+ file_src_modules_output_json_output_json_service_unit_test_ts --> file_src_modules_output_json_output_json_service_ts
302
+ file_src_modules_output_json_output_json_service_unit_test_ts --> file_testing_mocks_ts
303
+ file_src_modules_output_json_output_json_service_unit_test_ts --> file_testing_modules_ts
304
+ file_src_modules_output_markdown_output_markdown_module_ts --> file_src_modules_output_markdown_output_markdown_service_ts
305
+ file_src_modules_output_markdown_output_markdown_service_ts --> file_src_modules_output_markdown_output_markdown_constants_ts
306
+ file_src_modules_output_markdown_output_markdown_service_ts --> file_src_modules_output_markdown_output_markdown_types_ts
307
+ file_src_modules_output_markdown_output_markdown_service_unit_test_ts --> file_src_modules_output_markdown_output_markdown_constants_ts
308
+ file_src_modules_output_markdown_output_markdown_service_unit_test_ts --> file_src_modules_output_markdown_output_markdown_service_ts
309
+ file_src_modules_output_markdown_output_markdown_service_unit_test_ts --> file_testing_mocks_ts
310
+ file_src_modules_output_markdown_output_markdown_service_unit_test_ts --> file_testing_modules_ts
311
+ file_src_modules_project_reports_project_reports_module_ts --> file_src_modules_project_reports_project_reports_service_ts
312
+ file_src_modules_project_reports_project_reports_service_ts --> file_src_modules_project_reports_project_reports_constants_ts
313
+ file_src_modules_project_reports_project_reports_service_ts --> file_src_modules_project_reports_project_reports_types_ts
314
+ file_src_modules_project_reports_project_reports_service_unit_test_ts --> file_src_modules_project_reports_project_reports_service_ts
315
+ file_src_modules_project_reports_project_reports_service_unit_test_ts --> file_src_modules_project_reports_project_reports_types_ts
316
+ file_src_modules_project_reports_project_reports_service_unit_test_ts --> file_testing_mocks_ts
317
+ file_src_modules_project_reports_project_reports_service_unit_test_ts --> file_testing_modules_ts
318
+ file_src_modules_report_findings_report_findings_module_ts --> file_src_modules_report_findings_report_findings_service_ts
319
+ file_src_modules_report_findings_report_findings_service_ts --> file_src_modules_report_findings_report_findings_types_ts
320
+ file_src_modules_report_findings_report_findings_service_unit_test_ts --> file_src_modules_report_findings_report_findings_service_ts
321
+ file_src_modules_report_findings_report_findings_service_unit_test_ts --> file_src_modules_report_findings_report_findings_types_ts
322
+ file_src_modules_report_findings_report_findings_service_unit_test_ts --> file_testing_mocks_ts
323
+ file_src_modules_report_markdown_report_service_ts --> file_src_modules_report_mermaid_report_service_ts
324
+ file_src_modules_report_markdown_report_service_ts --> file_src_modules_report_report_constants_ts
325
+ file_src_modules_report_markdown_report_service_ts --> file_src_modules_report_report_service_ts
326
+ file_src_modules_report_markdown_report_service_ts --> file_src_modules_report_report_types_ts
327
+ file_src_modules_report_markdown_report_service_ts --> file_src_modules_report_workspace_report_service_ts
328
+ file_src_modules_report_markdown_report_service_unit_test_ts --> file_src_modules_report_markdown_report_service_ts
329
+ file_src_modules_report_markdown_report_service_unit_test_ts --> file_src_modules_report_report_constants_ts
330
+ file_src_modules_report_markdown_report_service_unit_test_ts --> file_testing_mocks_ts
331
+ file_src_modules_report_markdown_report_service_unit_test_ts --> file_testing_modules_ts
332
+ file_src_modules_report_mermaid_report_service_ts --> file_src_modules_report_report_constants_ts
333
+ file_src_modules_report_mermaid_report_service_ts --> file_src_modules_report_report_types_ts
334
+ file_src_modules_report_mermaid_report_service_unit_test_ts --> file_src_modules_report_mermaid_report_service_ts
335
+ file_src_modules_report_mermaid_report_service_unit_test_ts --> file_src_modules_report_report_constants_ts
336
+ file_src_modules_report_mermaid_report_service_unit_test_ts --> file_testing_mocks_ts
337
+ file_src_modules_report_mermaid_report_service_unit_test_ts --> file_testing_modules_ts
338
+ file_src_modules_report_report_module_ts --> file_src_modules_report_markdown_report_service_ts
339
+ file_src_modules_report_report_module_ts --> file_src_modules_report_mermaid_report_service_ts
340
+ file_src_modules_report_report_module_ts --> file_src_modules_report_report_service_ts
341
+ file_src_modules_report_report_module_ts --> file_src_modules_report_workspace_report_service_ts
342
+ file_src_modules_report_report_service_ts --> file_src_modules_report_report_constants_ts
343
+ file_src_modules_report_report_service_unit_test_ts --> file_src_modules_report_report_service_ts
344
+ file_src_modules_report_report_service_unit_test_ts --> file_testing_mocks_ts
345
+ file_src_modules_report_report_service_unit_test_ts --> file_testing_modules_ts
346
+ file_src_modules_report_report_types_ts --> file_src_modules_project_reports_project_reports_types_ts
347
+ file_src_modules_report_workspace_report_service_ts --> file_src_modules_report_report_constants_ts
348
+ file_src_modules_report_workspace_report_service_ts --> file_src_modules_report_report_types_ts
349
+ file_src_modules_report_workspace_report_service_unit_test_ts --> file_src_modules_report_report_constants_ts
350
+ file_src_modules_report_workspace_report_service_unit_test_ts --> file_src_modules_report_workspace_report_service_ts
351
+ file_src_modules_report_workspace_report_service_unit_test_ts --> file_testing_mocks_ts
352
+ file_src_modules_report_workspace_report_service_unit_test_ts --> file_testing_modules_ts
353
+ file_src_modules_write_destinations_write_destinations_module_ts --> file_src_modules_output_json_output_json_module_ts
354
+ file_src_modules_write_destinations_write_destinations_module_ts --> file_src_modules_output_markdown_output_markdown_module_ts
355
+ file_src_modules_write_destinations_write_destinations_module_ts --> file_src_modules_report_report_module_ts
356
+ file_src_modules_write_destinations_write_destinations_module_ts --> file_src_modules_write_destinations_write_destinations_service_ts
357
+ file_src_modules_write_destinations_write_destinations_service_ts --> file_src_modules_output_json_output_json_service_ts
358
+ file_src_modules_write_destinations_write_destinations_service_ts --> file_src_modules_output_markdown_output_markdown_service_ts
359
+ file_src_modules_write_destinations_write_destinations_service_ts --> file_src_modules_report_markdown_report_service_ts
360
+ file_src_modules_write_destinations_write_destinations_service_ts --> file_src_modules_write_destinations_write_destinations_constants_ts
361
+ file_src_modules_write_destinations_write_destinations_service_ts --> file_src_modules_write_destinations_write_destinations_types_ts
362
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts --> file_src_modules_output_json_output_json_service_ts
363
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts --> file_src_modules_output_markdown_output_markdown_service_ts
364
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts --> file_src_modules_report_markdown_report_service_ts
365
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts --> file_src_modules_report_mermaid_report_service_ts
366
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts --> file_src_modules_report_report_service_ts
367
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts --> file_src_modules_report_workspace_report_service_ts
368
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts --> file_src_modules_write_destinations_write_destinations_service_ts
369
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts --> file_src_modules_write_destinations_write_destinations_types_ts
370
+ file_src_modules_write_destinations_write_destinations_service_unit_test_ts --> file_testing_mocks_ts
371
+ file_testing_modules_ts --> file_src_modules_output_json_output_json_module_ts
372
+ file_testing_modules_ts --> file_src_modules_output_markdown_output_markdown_module_ts
373
+ file_testing_modules_ts --> file_src_modules_project_reports_project_reports_module_ts
374
+ file_testing_modules_ts --> file_src_modules_report_report_module_ts
375
+ ```
376
+ <!-- codependix:end name="codependix-file-imports" -->
377
+
378
+ <!-- codometer:start -->
379
+
380
+ ## ⏲️ Codometer
381
+
382
+ ### Project
383
+
384
+ ![Lines of Code](https://img.shields.io/badge/Lines_of_Code-6734-22c55e?style=flat-square)
385
+ ![Repository Size](https://img.shields.io/badge/Repository_Size-218.13_kB-6b7280?style=flat-square)
386
+ ![Folders](https://img.shields.io/badge/Folders-10-4a4a4a?style=flat-square)
387
+ ![Source Files](https://img.shields.io/badge/Source_Files-51-3178c6?style=flat-square)
388
+
389
+ ### Measured Targets
390
+
391
+ ![Compiled JavaScript Size](https://img.shields.io/badge/Compiled_JavaScript_Size-9.51_kB_gzip-6b7280?style=flat-square)
392
+
393
+ ### TypeScript
394
+
395
+ ![TypeScript Files](https://img.shields.io/badge/TypeScript_Files-51-3178c6?style=flat-square)
396
+ ![Interfaces](https://img.shields.io/badge/Interfaces-25-0ea5e9?style=flat-square)
397
+ ![Generic Declarations](https://img.shields.io/badge/Generic_Declarations-0-0369a1?style=flat-square)
398
+ ![Enums](https://img.shields.io/badge/Enums-0-f97316?style=flat-square)
399
+ ![Decorators](https://img.shields.io/badge/Decorators-17-db2777?style=flat-square)
400
+ ![Doc Comments](https://img.shields.io/badge/Doc_Comments-153-6366f1?style=flat-square)
401
+ ![Static Methods](https://img.shields.io/badge/Static_Methods-0-166534?style=flat-square)
402
+
403
+ ### JavaScript
404
+
405
+ ![JavaScript Files](https://img.shields.io/badge/JavaScript_Files-0-f7df1e?style=flat-square)
406
+ ![Test Files](https://img.shields.io/badge/Test_Files-10-10b981?style=flat-square)
407
+ ![External Packages](https://img.shields.io/badge/External_Packages-13-8b5cf6?style=flat-square)
408
+ ![Classes](https://img.shields.io/badge/Classes-18-7c3aed?style=flat-square)
409
+ ![Functions](https://img.shields.io/badge/Functions-283-16a34a?style=flat-square)
410
+ ![Methods](https://img.shields.io/badge/Methods-126-15803d?style=flat-square)
411
+ ![Sync Functions](https://img.shields.io/badge/Sync_Functions-367-4ade80?style=flat-square)
412
+ ![Async Functions](https://img.shields.io/badge/Async_Functions-42-059669?style=flat-square)
413
+ ![Constants](https://img.shields.io/badge/Constants-364-dc2626?style=flat-square)
414
+ ![Imports](https://img.shields.io/badge/Imports-211-0284c7?style=flat-square)
415
+ ![Exported Symbols](https://img.shields.io/badge/Exported_Symbols-89-ea580c?style=flat-square)
416
+ ![Comments](https://img.shields.io/badge/Comments-282-64748b?style=flat-square)
417
+ ![Comment Lines](https://img.shields.io/badge/Comment_Lines-679-475569?style=flat-square)
418
+ ![TODO Comments](https://img.shields.io/badge/TODO_Comments-0-ca8a04?style=flat-square)
419
+
420
+ ### Python
421
+
422
+ ![Python Files](https://img.shields.io/badge/Python_Files-0-3776ab?style=flat-square)
423
+ ![Python Lines](https://img.shields.io/badge/Python_Lines-0-4b8bbe?style=flat-square)
424
+ ![Python Classes](https://img.shields.io/badge/Python_Classes-0-7c3aed?style=flat-square)
425
+ ![Python Functions](https://img.shields.io/badge/Python_Functions-0-16a34a?style=flat-square)
426
+ ![Python Protocols](https://img.shields.io/badge/Python_Protocols-0-0ea5e9?style=flat-square)
427
+ ![Python Constants](https://img.shields.io/badge/Python_Constants-0-dc2626?style=flat-square)
428
+ ![Python Imports](https://img.shields.io/badge/Python_Imports-0-0284c7?style=flat-square)
429
+ ![Python Decorators](https://img.shields.io/badge/Python_Decorators-0-db2777?style=flat-square)
430
+ ![Docstrings](https://img.shields.io/badge/Docstrings-0-6366f1?style=flat-square)
431
+ ![Docstring Lines](https://img.shields.io/badge/Docstring_Lines-0-818cf8?style=flat-square)
432
+ ![Python Comments](https://img.shields.io/badge/Python_Comments-0-64748b?style=flat-square)
433
+ ![Python Comment Lines](https://img.shields.io/badge/Python_Comment_Lines-0-475569?style=flat-square)
434
+
435
+ ### JSON
436
+
437
+ ![JSON Files](https://img.shields.io/badge/JSON_Files-4-a16207?style=flat-square)
438
+ ![JSON Lines](https://img.shields.io/badge/JSON_Lines-166-ca8a04?style=flat-square)
439
+ ![JSON Objects](https://img.shields.io/badge/JSON_Objects-38-7c3aed?style=flat-square)
440
+ ![JSON Arrays](https://img.shields.io/badge/JSON_Arrays-13-8b5cf6?style=flat-square)
441
+ ![JSON Properties](https://img.shields.io/badge/JSON_Properties-104-0284c7?style=flat-square)
442
+ ![JSON Strings](https://img.shields.io/badge/JSON_Strings-91-16a34a?style=flat-square)
443
+ ![JSON Numbers](https://img.shields.io/badge/JSON_Numbers-1-059669?style=flat-square)
444
+ ![JSON Booleans](https://img.shields.io/badge/JSON_Booleans-7-0ea5e9?style=flat-square)
445
+ ![JSON Nulls](https://img.shields.io/badge/JSON_Nulls-0-64748b?style=flat-square)
446
+ ![JSON Items](https://img.shields.io/badge/JSON_Items-42-475569?style=flat-square)
447
+ ![JSON Nodes](https://img.shields.io/badge/JSON_Nodes-150-dc2626?style=flat-square)
448
+ ![JSON Max Depth](https://img.shields.io/badge/JSON_Max_Depth-5-ea580c?style=flat-square)
449
+
450
+ ### YAML
451
+
452
+ ![YAML Files](https://img.shields.io/badge/YAML_Files-0-cb171e?style=flat-square)
453
+ ![YAML Lines](https://img.shields.io/badge/YAML_Lines-0-e34c26?style=flat-square)
454
+ ![YAML Documents](https://img.shields.io/badge/YAML_Documents-0-f97316?style=flat-square)
455
+ ![YAML Mappings](https://img.shields.io/badge/YAML_Mappings-0-7c3aed?style=flat-square)
456
+ ![YAML Sequences](https://img.shields.io/badge/YAML_Sequences-0-8b5cf6?style=flat-square)
457
+ ![YAML Keys](https://img.shields.io/badge/YAML_Keys-0-0284c7?style=flat-square)
458
+ ![YAML Scalars](https://img.shields.io/badge/YAML_Scalars-0-16a34a?style=flat-square)
459
+ ![YAML Anchors](https://img.shields.io/badge/YAML_Anchors-0-059669?style=flat-square)
460
+ ![YAML Aliases](https://img.shields.io/badge/YAML_Aliases-0-10b981?style=flat-square)
461
+ ![YAML Comments](https://img.shields.io/badge/YAML_Comments-0-64748b?style=flat-square)
462
+ ![YAML Max Depth](https://img.shields.io/badge/YAML_Max_Depth-0-ea580c?style=flat-square)
463
+
464
+ ### TOML
465
+
466
+ ![TOML Files](https://img.shields.io/badge/TOML_Files-0-9c4221?style=flat-square)
467
+ ![TOML Lines](https://img.shields.io/badge/TOML_Lines-0-b45309?style=flat-square)
468
+ ![TOML Tables](https://img.shields.io/badge/TOML_Tables-0-7c3aed?style=flat-square)
469
+ ![TOML Array Tables](https://img.shields.io/badge/TOML_Array_Tables-0-8b5cf6?style=flat-square)
470
+ ![TOML Keys](https://img.shields.io/badge/TOML_Keys-0-0284c7?style=flat-square)
471
+ ![TOML Arrays](https://img.shields.io/badge/TOML_Arrays-0-16a34a?style=flat-square)
472
+ ![TOML Comments](https://img.shields.io/badge/TOML_Comments-0-64748b?style=flat-square)
473
+
474
+ ### Shell
475
+
476
+ ![Shell Files](https://img.shields.io/badge/Shell_Files-0-89e051?style=flat-square)
477
+ ![Shell Lines](https://img.shields.io/badge/Shell_Lines-0-4eaa25?style=flat-square)
478
+ ![Shell Functions](https://img.shields.io/badge/Shell_Functions-0-16a34a?style=flat-square)
479
+ ![Shell Variables](https://img.shields.io/badge/Shell_Variables-0-0284c7?style=flat-square)
480
+ ![Shell Exports](https://img.shields.io/badge/Shell_Exports-0-ea580c?style=flat-square)
481
+ ![Shell Conditionals](https://img.shields.io/badge/Shell_Conditionals-0-7c3aed?style=flat-square)
482
+ ![Shell Loops](https://img.shields.io/badge/Shell_Loops-0-8b5cf6?style=flat-square)
483
+ ![Shell Pipelines](https://img.shields.io/badge/Shell_Pipelines-0-059669?style=flat-square)
484
+ ![Shebangs](https://img.shields.io/badge/Shebangs-0-6b7280?style=flat-square)
485
+ ![Shell Comments](https://img.shields.io/badge/Shell_Comments-0-64748b?style=flat-square)
486
+ ![Shell Comment Lines](https://img.shields.io/badge/Shell_Comment_Lines-0-475569?style=flat-square)
487
+
488
+ ### SQL
489
+
490
+ ![SQL Files](https://img.shields.io/badge/SQL_Files-0-e38c00?style=flat-square)
491
+ ![SQL Lines](https://img.shields.io/badge/SQL_Lines-0-f29111?style=flat-square)
492
+ ![SQL Statements](https://img.shields.io/badge/SQL_Statements-0-7c3aed?style=flat-square)
493
+ ![SQL Selects](https://img.shields.io/badge/SQL_Selects-0-16a34a?style=flat-square)
494
+ ![SQL Inserts](https://img.shields.io/badge/SQL_Inserts-0-22c55e?style=flat-square)
495
+ ![SQL Updates](https://img.shields.io/badge/SQL_Updates-0-0ea5e9?style=flat-square)
496
+ ![SQL Deletes](https://img.shields.io/badge/SQL_Deletes-0-dc2626?style=flat-square)
497
+ ![SQL Creates](https://img.shields.io/badge/SQL_Creates-0-0284c7?style=flat-square)
498
+ ![SQL Joins](https://img.shields.io/badge/SQL_Joins-0-8b5cf6?style=flat-square)
499
+ ![SQL CTEs](https://img.shields.io/badge/SQL_CTEs-0-059669?style=flat-square)
500
+ ![SQL Comments](https://img.shields.io/badge/SQL_Comments-0-64748b?style=flat-square)
501
+
502
+ ### HCL
503
+
504
+ ![HCL Files](https://img.shields.io/badge/HCL_Files-0-844fba?style=flat-square)
505
+ ![HCL Lines](https://img.shields.io/badge/HCL_Lines-0-a78bfa?style=flat-square)
506
+ ![HCL Blocks](https://img.shields.io/badge/HCL_Blocks-0-7c3aed?style=flat-square)
507
+ ![HCL Resources](https://img.shields.io/badge/HCL_Resources-0-0284c7?style=flat-square)
508
+ ![HCL Variables](https://img.shields.io/badge/HCL_Variables-0-16a34a?style=flat-square)
509
+ ![HCL Outputs](https://img.shields.io/badge/HCL_Outputs-0-059669?style=flat-square)
510
+ ![HCL Attributes](https://img.shields.io/badge/HCL_Attributes-0-0ea5e9?style=flat-square)
511
+ ![HCL Interpolations](https://img.shields.io/badge/HCL_Interpolations-0-db2777?style=flat-square)
512
+ ![HCL Comments](https://img.shields.io/badge/HCL_Comments-0-64748b?style=flat-square)
513
+
514
+ ### CSS
515
+
516
+ ![CSS Files](https://img.shields.io/badge/CSS_Files-0-264de4?style=flat-square)
517
+ ![CSS Lines](https://img.shields.io/badge/CSS_Lines-0-2965f1?style=flat-square)
518
+ ![CSS Rules](https://img.shields.io/badge/CSS_Rules-0-7c3aed?style=flat-square)
519
+ ![CSS Selectors](https://img.shields.io/badge/CSS_Selectors-0-8b5cf6?style=flat-square)
520
+ ![CSS Declarations](https://img.shields.io/badge/CSS_Declarations-0-0284c7?style=flat-square)
521
+ ![CSS At Rules](https://img.shields.io/badge/CSS_At_Rules-0-f97316?style=flat-square)
522
+ ![CSS Media Queries](https://img.shields.io/badge/CSS_Media_Queries-0-ea580c?style=flat-square)
523
+ ![CSS Custom Properties](https://img.shields.io/badge/CSS_Custom_Properties-0-16a34a?style=flat-square)
524
+ ![CSS Comments](https://img.shields.io/badge/CSS_Comments-0-64748b?style=flat-square)
525
+
526
+ ### Conventions
527
+
528
+ ![Module Files](https://img.shields.io/badge/Module_Files-7-7c3aed?style=flat-square)
529
+ ![Service Files](https://img.shields.io/badge/Service_Files-10-0284c7?style=flat-square)
530
+ ![Command Files](https://img.shields.io/badge/Command_Files-0-16a34a?style=flat-square)
531
+ ![Constants Files](https://img.shields.io/badge/Constants_Files-7-ea580c?style=flat-square)
532
+ ![Types Files](https://img.shields.io/badge/Types_Files-7-db2777?style=flat-square)
533
+ ![Utilities Files](https://img.shields.io/badge/Utilities_Files-0-0ea5e9?style=flat-square)
534
+ ![TypeORM Entities](https://img.shields.io/badge/TypeORM_Entities-0-059669?style=flat-square)
535
+ ![Unit Tests](https://img.shields.io/badge/Unit_Tests-10-ca8a04?style=flat-square)
536
+ ![Integration Tests](https://img.shields.io/badge/Integration_Tests-0-7c3aed?style=flat-square)
537
+ ![End To End Tests](https://img.shields.io/badge/End_To_End_Tests-0-0284c7?style=flat-square)
538
+ ![CSS Comment Budget](https://img.shields.io/badge/CSS_Comment_Budget-0-16a34a?style=flat-square)
539
+ ![HCL Comment Budget](https://img.shields.io/badge/HCL_Comment_Budget-0-ea580c?style=flat-square)
540
+ ![Python Comment Budget](https://img.shields.io/badge/Python_Comment_Budget-0-db2777?style=flat-square)
541
+ ![SQL Comment Budget](https://img.shields.io/badge/SQL_Comment_Budget-0-0ea5e9?style=flat-square)
542
+ ![TOML Comment Budget](https://img.shields.io/badge/TOML_Comment_Budget-0-059669?style=flat-square)
543
+ ![TypeScript Comment Budget](https://img.shields.io/badge/TypeScript_Comment_Budget-0-ca8a04?style=flat-square)
544
+ ![YAML Comment Budget](https://img.shields.io/badge/YAML_Comment_Budget-0-7c3aed?style=flat-square)
545
+ ![Shell Comment Budget](https://img.shields.io/badge/Shell_Comment_Budget-0-0284c7?style=flat-square)
546
+
547
+ ### Jupyter
548
+
549
+ ![Notebooks](https://img.shields.io/badge/Notebooks-0-f37626?style=flat-square)
550
+ ![Notebook Cells](https://img.shields.io/badge/Notebook_Cells-0-e8a33d?style=flat-square)
551
+ ![Code Cells](https://img.shields.io/badge/Code_Cells-0-3776ab?style=flat-square)
552
+ ![Markdown Cells](https://img.shields.io/badge/Markdown_Cells-0-083fa1?style=flat-square)
553
+ ![Raw Cells](https://img.shields.io/badge/Raw_Cells-0-9ca3af?style=flat-square)
554
+ ![Executed Cells](https://img.shields.io/badge/Executed_Cells-0-16a34a?style=flat-square)
555
+ ![Cell Outputs](https://img.shields.io/badge/Cell_Outputs-0-059669?style=flat-square)
556
+ ![Notebook Code Lines](https://img.shields.io/badge/Notebook_Code_Lines-0-4b8bbe?style=flat-square)
557
+ ![Notebook Classes](https://img.shields.io/badge/Notebook_Classes-0-7c3aed?style=flat-square)
558
+ ![Notebook Functions](https://img.shields.io/badge/Notebook_Functions-0-22c55e?style=flat-square)
559
+ ![Notebook Imports](https://img.shields.io/badge/Notebook_Imports-0-0284c7?style=flat-square)
560
+ ![Notebook Decorators](https://img.shields.io/badge/Notebook_Decorators-0-db2777?style=flat-square)
561
+ ![Notebook Prose Lines](https://img.shields.io/badge/Notebook_Prose_Lines-0-1f6feb?style=flat-square)
562
+ ![Notebook Headings](https://img.shields.io/badge/Notebook_Headings-0-a78bfa?style=flat-square)
563
+ ![Notebook Links](https://img.shields.io/badge/Notebook_Links-0-10b981?style=flat-square)
564
+ ![Notebook Images](https://img.shields.io/badge/Notebook_Images-0-34d399?style=flat-square)
565
+ ![Notebook Code Blocks](https://img.shields.io/badge/Notebook_Code_Blocks-0-dc2626?style=flat-square)
566
+ ![Notebook Properties](https://img.shields.io/badge/Notebook_Properties-0-ca8a04?style=flat-square)
567
+ ![Notebook Nodes](https://img.shields.io/badge/Notebook_Nodes-0-a16207?style=flat-square)
568
+ ![Notebook Max Depth](https://img.shields.io/badge/Notebook_Max_Depth-0-ea580c?style=flat-square)
569
+
570
+ ### Markdown
571
+
572
+ ![Markdown Files](https://img.shields.io/badge/Markdown_Files-1-083fa1?style=flat-square)
573
+ ![Markdown Lines](https://img.shields.io/badge/Markdown_Lines-222-1f6feb?style=flat-square)
574
+ ![H1](https://img.shields.io/badge/H1-1-7c3aed?style=flat-square)
575
+ ![H2](https://img.shields.io/badge/H2-7-8b5cf6?style=flat-square)
576
+ ![H3](https://img.shields.io/badge/H3-12-a78bfa?style=flat-square)
577
+ ![H4](https://img.shields.io/badge/H4-0-c4b5fd?style=flat-square)
578
+ ![H5](https://img.shields.io/badge/H5-0-ddd6fe?style=flat-square)
579
+ ![H6](https://img.shields.io/badge/H6-0-ede9fe?style=flat-square)
580
+ ![Paragraphs](https://img.shields.io/badge/Paragraphs-45-64748b?style=flat-square)
581
+ ![Lists](https://img.shields.io/badge/Lists-6-16a34a?style=flat-square)
582
+ ![List Items](https://img.shields.io/badge/List_Items-25-22c55e?style=flat-square)
583
+ ![Task List Items](https://img.shields.io/badge/Task_List_Items-0-4ade80?style=flat-square)
584
+ ![Tables](https://img.shields.io/badge/Tables-2-0284c7?style=flat-square)
585
+ ![Table Rows](https://img.shields.io/badge/Table_Rows-10-0ea5e9?style=flat-square)
586
+ ![Links](https://img.shields.io/badge/Links-9-059669?style=flat-square)
587
+ ![Images](https://img.shields.io/badge/Images-0-10b981?style=flat-square)
588
+ ![Code Blocks](https://img.shields.io/badge/Code_Blocks-11-dc2626?style=flat-square)
589
+ ![Inline Code](https://img.shields.io/badge/Inline_Code-73-ef4444?style=flat-square)
590
+ ![Block Quotes](https://img.shields.io/badge/Block_Quotes-0-ca8a04?style=flat-square)
591
+ ![Thematic Breaks](https://img.shields.io/badge/Thematic_Breaks-0-a16207?style=flat-square)
592
+ <!-- codometer:end -->