@codependix/nestjs-modules 0.0.3

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jimmy Paolini
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,395 @@
1
+ ## Test
2
+
3
+ ```bash
4
+ nx run codependix-nestjs-modules:vitest
5
+ ```
6
+
7
+ ## 🕸️ Codependix
8
+
9
+ 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`.
10
+
11
+ ### Nx Neighborhood
12
+
13
+ <!-- codependix:start name="codependix-nx-projects" -->
14
+ ```mermaid
15
+ graph LR
16
+ codependix_boundaries["codependix-boundaries"]
17
+ codependix_examples["codependix-examples"]
18
+ codependix_nestjs_modules["codependix-nestjs-modules"]
19
+ codependix_output["codependix-output"]
20
+ logger["logger"]
21
+ codependix_boundaries --> codependix_nestjs_modules
22
+ codependix_examples --> codependix_nestjs_modules
23
+ codependix_nestjs_modules --> logger
24
+ codependix_output --> codependix_nestjs_modules
25
+ classDef subject fill:#7c3aed,color:#fff,stroke:#4c1d95,stroke-width:2px
26
+ class codependix_nestjs_modules subject
27
+ ```
28
+ <!-- codependix:end name="codependix-nx-projects" -->
29
+
30
+ ### NestJS Module Graph
31
+
32
+ <!-- codependix:start name="codependix-nestjs-modules" -->
33
+ ```mermaid
34
+ flowchart LR
35
+ LoggerModule([LoggerModule])
36
+ ModuleGraphModule
37
+ NestjsModulesWorkspaceGraphModule
38
+ NestjsProjectModule
39
+ ```
40
+
41
+ _Rounded modules are global: every module can inject them, so their edges are left out._
42
+ <!-- codependix:end name="codependix-nestjs-modules" -->
43
+
44
+ ### File Imports
45
+
46
+ <!-- codependix:start name="codependix-file-imports" -->
47
+ ```mermaid
48
+ graph LR
49
+ file_callidescope_config_ts["callidescope.config.ts"]
50
+ file_codependix_config_ts["codependix.config.ts"]
51
+ file_codometer_config_ts["codometer.config.ts"]
52
+ file_eslint_config_ts["eslint.config.ts"]
53
+ file_src_index_ts["src/index.ts"]
54
+ file_src_index_unit_test_ts["src/index.unit.test.ts"]
55
+ file_src_modules_module_graph_module_graph_constants_ts["src/modules/module-graph/module-graph.constants.ts"]
56
+ file_src_modules_module_graph_module_graph_module_ts["src/modules/module-graph/module-graph.module.ts"]
57
+ file_src_modules_module_graph_module_graph_module_unit_test_ts["src/modules/module-graph/module-graph.module.unit.test.ts"]
58
+ file_src_modules_module_graph_module_graph_service_ts["src/modules/module-graph/module-graph.service.ts"]
59
+ file_src_modules_module_graph_module_graph_service_unit_test_ts["src/modules/module-graph/module-graph.service.unit.test.ts"]
60
+ file_src_modules_module_graph_module_graph_types_ts["src/modules/module-graph/module-graph.types.ts"]
61
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_constants_ts["src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.constants.ts"]
62
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_module_ts["src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.module.ts"]
63
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_module_unit_test_ts["src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.module.unit.test.ts"]
64
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_ts["src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts"]
65
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_unit_test_ts["src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.unit.test.ts"]
66
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_types_ts["src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.types.ts"]
67
+ file_src_modules_nestjs_project_nestjs_project_synthetic_module_ts["src/modules/nestjs-project/nestjs-project-synthetic.module.ts"]
68
+ file_src_modules_nestjs_project_nestjs_project_constants_ts["src/modules/nestjs-project/nestjs-project.constants.ts"]
69
+ file_src_modules_nestjs_project_nestjs_project_module_ts["src/modules/nestjs-project/nestjs-project.module.ts"]
70
+ file_src_modules_nestjs_project_nestjs_project_module_unit_test_ts["src/modules/nestjs-project/nestjs-project.module.unit.test.ts"]
71
+ file_src_modules_nestjs_project_nestjs_project_service_ts["src/modules/nestjs-project/nestjs-project.service.ts"]
72
+ file_src_modules_nestjs_project_nestjs_project_service_unit_test_ts["src/modules/nestjs-project/nestjs-project.service.unit.test.ts"]
73
+ file_src_modules_nestjs_project_nestjs_project_types_ts["src/modules/nestjs-project/nestjs-project.types.ts"]
74
+ file_testing_main_module_ts["testing/main.module.ts"]
75
+ file_testing_mocks_ts["testing/mocks.ts"]
76
+ file_testing_setup_ts["testing/setup.ts"]
77
+ file_vite_config_ts["vite.config.ts"]
78
+ file_vitest_config_ts["vitest.config.ts"]
79
+ file_src_index_unit_test_ts --> file_src_index_ts
80
+ file_src_modules_module_graph_module_graph_module_ts --> file_src_modules_module_graph_module_graph_service_ts
81
+ file_src_modules_module_graph_module_graph_module_unit_test_ts --> file_src_modules_module_graph_module_graph_module_ts
82
+ file_src_modules_module_graph_module_graph_module_unit_test_ts --> file_src_modules_module_graph_module_graph_service_ts
83
+ file_src_modules_module_graph_module_graph_service_ts --> file_src_modules_module_graph_module_graph_constants_ts
84
+ file_src_modules_module_graph_module_graph_service_ts --> file_src_modules_module_graph_module_graph_types_ts
85
+ file_src_modules_module_graph_module_graph_service_ts --> file_src_modules_nestjs_project_nestjs_project_types_ts
86
+ file_src_modules_module_graph_module_graph_service_unit_test_ts --> file_src_modules_module_graph_module_graph_service_ts
87
+ file_src_modules_module_graph_module_graph_service_unit_test_ts --> file_src_modules_nestjs_project_nestjs_project_types_ts
88
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_module_ts --> file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_ts
89
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_module_unit_test_ts --> file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_module_ts
90
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_module_unit_test_ts --> file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_ts
91
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_ts --> file_src_modules_module_graph_module_graph_types_ts
92
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_ts --> file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_constants_ts
93
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_ts --> file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_types_ts
94
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_unit_test_ts --> file_src_modules_module_graph_module_graph_types_ts
95
+ file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_unit_test_ts --> file_src_modules_nestjs_modules_workspace_graph_nestjs_modules_workspace_graph_service_ts
96
+ file_src_modules_nestjs_project_nestjs_project_module_ts --> file_src_modules_nestjs_project_nestjs_project_service_ts
97
+ file_src_modules_nestjs_project_nestjs_project_module_unit_test_ts --> file_src_modules_nestjs_project_nestjs_project_module_ts
98
+ file_src_modules_nestjs_project_nestjs_project_module_unit_test_ts --> file_src_modules_nestjs_project_nestjs_project_service_ts
99
+ file_src_modules_nestjs_project_nestjs_project_service_ts --> file_src_modules_nestjs_project_nestjs_project_synthetic_module_ts
100
+ file_src_modules_nestjs_project_nestjs_project_service_ts --> file_src_modules_nestjs_project_nestjs_project_constants_ts
101
+ file_src_modules_nestjs_project_nestjs_project_service_ts --> file_src_modules_nestjs_project_nestjs_project_types_ts
102
+ file_src_modules_nestjs_project_nestjs_project_service_unit_test_ts --> file_src_modules_nestjs_project_nestjs_project_service_ts
103
+ file_src_modules_nestjs_project_nestjs_project_service_unit_test_ts --> file_src_modules_nestjs_project_nestjs_project_types_ts
104
+ file_src_modules_nestjs_project_nestjs_project_service_unit_test_ts --> file_testing_main_module_ts
105
+ ```
106
+ <!-- codependix:end name="codependix-file-imports" -->
107
+
108
+ <!-- callidescope:start -->
109
+
110
+ ## 🔭 Callidescope
111
+
112
+ Call stacks traced through `packages/ic-suite/codependix/codependix-nestjs-modules`, deepest first. Each frame shows what it takes, what it returns, and what its documentation says.
113
+
114
+ | Measure | Value |
115
+ | --- | --- |
116
+ | Callables | 59 |
117
+ | Files | 20 |
118
+ | Calls traced | 58 |
119
+ | Call stacks | 0 |
120
+ | Deepest stack | 0 |
121
+ | Stacks through recursion | 0 |
122
+ | Unfollowable calls | 2 |
123
+
124
+ ### Limits
125
+
126
+ What this project is judged against, as declared in its own `callidescope.config.ts`.
127
+
128
+ | Limit | Value |
129
+ | --- | --- |
130
+ | `maximumDepth` | 5 |
131
+ | `maximumBreadth` | 7 |
132
+
133
+ ### Call stacks (depth)
134
+
135
+ None.
136
+
137
+ ### Breadth
138
+
139
+ | Callable | Breadth | Calls directly | Location |
140
+ | --- | --- | --- | --- |
141
+ | `ModuleGraphService.buildGraph` | 7 | `ModuleGraphService.findAmbientModuleNames`, `ModuleGraphService.collectEdgesAndNodes`, `ModuleGraphService.toSorted(…)`, `ModuleGraphService.sortNames`, `ModuleGraphService.map(…)`, `ModuleGraphService.toSorted(…)`, `ModuleGraphService.filter(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/module-graph/module-graph.service.ts:168` |
142
+ | `NestjsProjectService.exploreProject` | 5 | `NestjsProjectService.buildSyntheticRootModule`, `NestjsProjectService.loadRootModule`, `NestjsProjectService.discoverModuleDeclaringFiles`, `NestjsProjectService.exploreContainer`, `NestjsProjectService.map(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:232` |
143
+ | `NestjsModulesWorkspaceGraphService.buildWorkspaceGraph` | 4 | `NestjsModulesWorkspaceGraphService.sortNames`, `NestjsModulesWorkspaceGraphService.flatMap(…)`, `NestjsModulesWorkspaceGraphService.toSorted(…)`, `NestjsModulesWorkspaceGraphService.flatMap(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:80` |
144
+
145
+ <details>
146
+ <summary>27 more callables</summary>
147
+
148
+ | Callable | Breadth | Calls directly | Location |
149
+ | --- | --- | --- | --- |
150
+ | `NestjsProjectService.buildSyntheticRootModule` | 3 | `NestjsProjectService.findModuleFiles`, `NestjsProjectService.map(…)`, `SyntheticRootModule.forModules` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:59` |
151
+ | `NestjsProjectService.exploreContainer` | 3 | `NestjsProjectService.some(…)`, `NestjsProjectService.filter(…)`, `NestjsProjectService.map(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:117` |
152
+ | `ModuleGraphService.collectEdgesAndNodes` | 2 | `ModuleGraphService.addNode`, `ModuleGraphService.find(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/module-graph/module-graph.service.ts:49` |
153
+ | `ModuleGraphService.renderMermaid` | 2 | `ModuleGraphService.map(…)`, `ModuleGraphService.map(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/module-graph/module-graph.service.ts:203` |
154
+ | `NestjsModulesWorkspaceGraphService.renderMermaid` | 2 | `NestjsModulesWorkspaceGraphService.map(…)`, `NestjsModulesWorkspaceGraphService.map(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:103` |
155
+ | `NestjsProjectService.discoverModuleDeclaringFiles` | 2 | `NestjsProjectService.findModuleFiles`, `NestjsProjectService.loadModuleClasses` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:76` |
156
+ | `NestjsProjectService.loadModuleClasses` | 2 | `NestjsProjectService.map(…)`, `NestjsProjectService.filter(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:166` |
157
+ | `NestjsProjectService.discoverProjects` | 2 | `NestjsProjectService.map(…)`, `NestjsProjectService.filter(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:221` |
158
+ | `ModuleGraphService.addNode` | 1 | `ModuleGraphService.some(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/module-graph/module-graph.service.ts:61` |
159
+ | `ModuleGraphService.findAmbientModuleNames` | 1 | `ModuleGraphService.countInboundEdges` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/module-graph/module-graph.service.ts:137` |
160
+ | `ModuleGraphService.sortNames` | 1 | `ModuleGraphService.toSorted(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/module-graph/module-graph.service.ts:161` |
161
+ | `ModuleGraphService.toSorted(…)` | 1 | `ModuleGraphService.compareNodes` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/module-graph/module-graph.service.ts:177` |
162
+ | `ModuleGraphService.toSorted(…)` | 1 | `ModuleGraphService.compareEdges` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/module-graph/module-graph.service.ts:186` |
163
+ | `ModuleGraphService.map(…)` | 1 | `ModuleGraphService.renderNode` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/module-graph/module-graph.service.ts:211` |
164
+ | `NestjsModulesWorkspaceGraphService.renderNode` | 1 | `NestjsModulesWorkspaceGraphService.toNodeIdentifier` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:60` |
165
+ | `NestjsModulesWorkspaceGraphService.sortNames` | 1 | `NestjsModulesWorkspaceGraphService.toSorted(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:65` |
166
+ | `NestjsModulesWorkspaceGraphService.flatMap(…)` | 1 | `NestjsModulesWorkspaceGraphService.map(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:84` |
167
+ | `NestjsModulesWorkspaceGraphService.map(…)` | 1 | `NestjsModulesWorkspaceGraphService.qualifyModuleName` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:85` |
168
+ | `NestjsModulesWorkspaceGraphService.flatMap(…)` | 1 | `NestjsModulesWorkspaceGraphService.map(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:91` |
169
+ | `NestjsModulesWorkspaceGraphService.map(…)` | 1 | `NestjsModulesWorkspaceGraphService.qualifyModuleName` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:92` |
170
+ | `NestjsModulesWorkspaceGraphService.toSorted(…)` | 1 | `NestjsModulesWorkspaceGraphService.compareEdges` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:97` |
171
+ | `NestjsModulesWorkspaceGraphService.map(…)` | 1 | `NestjsModulesWorkspaceGraphService.renderNode` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:111` |
172
+ | `NestjsModulesWorkspaceGraphService.map(…)` | 1 | `NestjsModulesWorkspaceGraphService.toNodeIdentifier` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-modules-workspace-graph/nestjs-modules-workspace-graph.service.ts:115` |
173
+ | `NestjsProjectService.map(…)` | 1 | `NestjsProjectService.loadModuleClasses` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:66` |
174
+ | `NestjsProjectService.findModuleFiles` | 1 | `NestjsProjectService.toSorted(…)` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:147` |
175
+ | `NestjsProjectService.filter(…)` | 1 | `NestjsProjectService.isNestjsProject` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:225` |
176
+ | `NestjsProjectService.map(…)` | 1 | `NestjsProjectService.describeProject` | `packages/ic-suite/codependix/codependix-nestjs-modules/src/modules/nestjs-project/nestjs-project.service.ts:226` |
177
+
178
+ </details>
179
+ <!-- callidescope:end -->
180
+
181
+ <!-- codometer:start -->
182
+
183
+ ## ⏲️ Codometer
184
+
185
+ ### Project
186
+
187
+ ![Lines of Code](https://img.shields.io/badge/Lines_of_Code-2122-22c55e?style=flat-square)
188
+ ![Repository Size](https://img.shields.io/badge/Repository_Size-80.06_kB-6b7280?style=flat-square)
189
+ ![Folders](https://img.shields.io/badge/Folders-6-4a4a4a?style=flat-square)
190
+ ![Source Files](https://img.shields.io/badge/Source_Files-30-3178c6?style=flat-square)
191
+
192
+ ### Measured Targets
193
+
194
+ ![Compiled JavaScript Size](https://img.shields.io/badge/Compiled_JavaScript_Size-4.64_kB_gzip-6b7280?style=flat-square)
195
+
196
+ ### TypeScript
197
+
198
+ ![TypeScript Files](https://img.shields.io/badge/TypeScript_Files-30-3178c6?style=flat-square)
199
+ ![Interfaces](https://img.shields.io/badge/Interfaces-8-0ea5e9?style=flat-square)
200
+ ![Generic Declarations](https://img.shields.io/badge/Generic_Declarations-0-0369a1?style=flat-square)
201
+ ![Enums](https://img.shields.io/badge/Enums-0-f97316?style=flat-square)
202
+ ![Decorators](https://img.shields.io/badge/Decorators-8-db2777?style=flat-square)
203
+ ![Doc Comments](https://img.shields.io/badge/Doc_Comments-70-6366f1?style=flat-square)
204
+ ![Static Methods](https://img.shields.io/badge/Static_Methods-1-166534?style=flat-square)
205
+
206
+ ### JavaScript
207
+
208
+ ![JavaScript Files](https://img.shields.io/badge/JavaScript_Files-0-f7df1e?style=flat-square)
209
+ ![Test Files](https://img.shields.io/badge/Test_Files-7-10b981?style=flat-square)
210
+ ![External Packages](https://img.shields.io/badge/External_Packages-11-8b5cf6?style=flat-square)
211
+ ![Classes](https://img.shields.io/badge/Classes-8-7c3aed?style=flat-square)
212
+ ![Functions](https://img.shields.io/badge/Functions-98-16a34a?style=flat-square)
213
+ ![Methods](https://img.shields.io/badge/Methods-56-15803d?style=flat-square)
214
+ ![Sync Functions](https://img.shields.io/badge/Sync_Functions-129-4ade80?style=flat-square)
215
+ ![Async Functions](https://img.shields.io/badge/Async_Functions-25-059669?style=flat-square)
216
+ ![Constants](https://img.shields.io/badge/Constants-105-dc2626?style=flat-square)
217
+ ![Imports](https://img.shields.io/badge/Imports-76-0284c7?style=flat-square)
218
+ ![Exported Symbols](https://img.shields.io/badge/Exported_Symbols-30-ea580c?style=flat-square)
219
+ ![Comments](https://img.shields.io/badge/Comments-103-64748b?style=flat-square)
220
+ ![Comment Lines](https://img.shields.io/badge/Comment_Lines-251-475569?style=flat-square)
221
+ ![TODO Comments](https://img.shields.io/badge/TODO_Comments-0-ca8a04?style=flat-square)
222
+
223
+ ### Python
224
+
225
+ ![Python Files](https://img.shields.io/badge/Python_Files-0-3776ab?style=flat-square)
226
+ ![Python Lines](https://img.shields.io/badge/Python_Lines-0-4b8bbe?style=flat-square)
227
+ ![Python Classes](https://img.shields.io/badge/Python_Classes-0-7c3aed?style=flat-square)
228
+ ![Python Functions](https://img.shields.io/badge/Python_Functions-0-16a34a?style=flat-square)
229
+ ![Python Protocols](https://img.shields.io/badge/Python_Protocols-0-0ea5e9?style=flat-square)
230
+ ![Python Constants](https://img.shields.io/badge/Python_Constants-0-dc2626?style=flat-square)
231
+ ![Python Imports](https://img.shields.io/badge/Python_Imports-0-0284c7?style=flat-square)
232
+ ![Python Decorators](https://img.shields.io/badge/Python_Decorators-0-db2777?style=flat-square)
233
+ ![Docstrings](https://img.shields.io/badge/Docstrings-0-6366f1?style=flat-square)
234
+ ![Docstring Lines](https://img.shields.io/badge/Docstring_Lines-0-818cf8?style=flat-square)
235
+ ![Python Comments](https://img.shields.io/badge/Python_Comments-0-64748b?style=flat-square)
236
+ ![Python Comment Lines](https://img.shields.io/badge/Python_Comment_Lines-0-475569?style=flat-square)
237
+
238
+ ### JSON
239
+
240
+ ![JSON Files](https://img.shields.io/badge/JSON_Files-4-a16207?style=flat-square)
241
+ ![JSON Lines](https://img.shields.io/badge/JSON_Lines-165-ca8a04?style=flat-square)
242
+ ![JSON Objects](https://img.shields.io/badge/JSON_Objects-38-7c3aed?style=flat-square)
243
+ ![JSON Arrays](https://img.shields.io/badge/JSON_Arrays-13-8b5cf6?style=flat-square)
244
+ ![JSON Properties](https://img.shields.io/badge/JSON_Properties-103-0284c7?style=flat-square)
245
+ ![JSON Strings](https://img.shields.io/badge/JSON_Strings-90-16a34a?style=flat-square)
246
+ ![JSON Numbers](https://img.shields.io/badge/JSON_Numbers-1-059669?style=flat-square)
247
+ ![JSON Booleans](https://img.shields.io/badge/JSON_Booleans-7-0ea5e9?style=flat-square)
248
+ ![JSON Nulls](https://img.shields.io/badge/JSON_Nulls-0-64748b?style=flat-square)
249
+ ![JSON Items](https://img.shields.io/badge/JSON_Items-42-475569?style=flat-square)
250
+ ![JSON Nodes](https://img.shields.io/badge/JSON_Nodes-149-dc2626?style=flat-square)
251
+ ![JSON Max Depth](https://img.shields.io/badge/JSON_Max_Depth-5-ea580c?style=flat-square)
252
+
253
+ ### YAML
254
+
255
+ ![YAML Files](https://img.shields.io/badge/YAML_Files-0-cb171e?style=flat-square)
256
+ ![YAML Lines](https://img.shields.io/badge/YAML_Lines-0-e34c26?style=flat-square)
257
+ ![YAML Documents](https://img.shields.io/badge/YAML_Documents-0-f97316?style=flat-square)
258
+ ![YAML Mappings](https://img.shields.io/badge/YAML_Mappings-0-7c3aed?style=flat-square)
259
+ ![YAML Sequences](https://img.shields.io/badge/YAML_Sequences-0-8b5cf6?style=flat-square)
260
+ ![YAML Keys](https://img.shields.io/badge/YAML_Keys-0-0284c7?style=flat-square)
261
+ ![YAML Scalars](https://img.shields.io/badge/YAML_Scalars-0-16a34a?style=flat-square)
262
+ ![YAML Anchors](https://img.shields.io/badge/YAML_Anchors-0-059669?style=flat-square)
263
+ ![YAML Aliases](https://img.shields.io/badge/YAML_Aliases-0-10b981?style=flat-square)
264
+ ![YAML Comments](https://img.shields.io/badge/YAML_Comments-0-64748b?style=flat-square)
265
+ ![YAML Max Depth](https://img.shields.io/badge/YAML_Max_Depth-0-ea580c?style=flat-square)
266
+
267
+ ### TOML
268
+
269
+ ![TOML Files](https://img.shields.io/badge/TOML_Files-0-9c4221?style=flat-square)
270
+ ![TOML Lines](https://img.shields.io/badge/TOML_Lines-0-b45309?style=flat-square)
271
+ ![TOML Tables](https://img.shields.io/badge/TOML_Tables-0-7c3aed?style=flat-square)
272
+ ![TOML Array Tables](https://img.shields.io/badge/TOML_Array_Tables-0-8b5cf6?style=flat-square)
273
+ ![TOML Keys](https://img.shields.io/badge/TOML_Keys-0-0284c7?style=flat-square)
274
+ ![TOML Arrays](https://img.shields.io/badge/TOML_Arrays-0-16a34a?style=flat-square)
275
+ ![TOML Comments](https://img.shields.io/badge/TOML_Comments-0-64748b?style=flat-square)
276
+
277
+ ### Shell
278
+
279
+ ![Shell Files](https://img.shields.io/badge/Shell_Files-0-89e051?style=flat-square)
280
+ ![Shell Lines](https://img.shields.io/badge/Shell_Lines-0-4eaa25?style=flat-square)
281
+ ![Shell Functions](https://img.shields.io/badge/Shell_Functions-0-16a34a?style=flat-square)
282
+ ![Shell Variables](https://img.shields.io/badge/Shell_Variables-0-0284c7?style=flat-square)
283
+ ![Shell Exports](https://img.shields.io/badge/Shell_Exports-0-ea580c?style=flat-square)
284
+ ![Shell Conditionals](https://img.shields.io/badge/Shell_Conditionals-0-7c3aed?style=flat-square)
285
+ ![Shell Loops](https://img.shields.io/badge/Shell_Loops-0-8b5cf6?style=flat-square)
286
+ ![Shell Pipelines](https://img.shields.io/badge/Shell_Pipelines-0-059669?style=flat-square)
287
+ ![Shebangs](https://img.shields.io/badge/Shebangs-0-6b7280?style=flat-square)
288
+ ![Shell Comments](https://img.shields.io/badge/Shell_Comments-0-64748b?style=flat-square)
289
+ ![Shell Comment Lines](https://img.shields.io/badge/Shell_Comment_Lines-0-475569?style=flat-square)
290
+
291
+ ### SQL
292
+
293
+ ![SQL Files](https://img.shields.io/badge/SQL_Files-0-e38c00?style=flat-square)
294
+ ![SQL Lines](https://img.shields.io/badge/SQL_Lines-0-f29111?style=flat-square)
295
+ ![SQL Statements](https://img.shields.io/badge/SQL_Statements-0-7c3aed?style=flat-square)
296
+ ![SQL Selects](https://img.shields.io/badge/SQL_Selects-0-16a34a?style=flat-square)
297
+ ![SQL Inserts](https://img.shields.io/badge/SQL_Inserts-0-22c55e?style=flat-square)
298
+ ![SQL Updates](https://img.shields.io/badge/SQL_Updates-0-0ea5e9?style=flat-square)
299
+ ![SQL Deletes](https://img.shields.io/badge/SQL_Deletes-0-dc2626?style=flat-square)
300
+ ![SQL Creates](https://img.shields.io/badge/SQL_Creates-0-0284c7?style=flat-square)
301
+ ![SQL Joins](https://img.shields.io/badge/SQL_Joins-0-8b5cf6?style=flat-square)
302
+ ![SQL CTEs](https://img.shields.io/badge/SQL_CTEs-0-059669?style=flat-square)
303
+ ![SQL Comments](https://img.shields.io/badge/SQL_Comments-0-64748b?style=flat-square)
304
+
305
+ ### HCL
306
+
307
+ ![HCL Files](https://img.shields.io/badge/HCL_Files-0-844fba?style=flat-square)
308
+ ![HCL Lines](https://img.shields.io/badge/HCL_Lines-0-a78bfa?style=flat-square)
309
+ ![HCL Blocks](https://img.shields.io/badge/HCL_Blocks-0-7c3aed?style=flat-square)
310
+ ![HCL Resources](https://img.shields.io/badge/HCL_Resources-0-0284c7?style=flat-square)
311
+ ![HCL Variables](https://img.shields.io/badge/HCL_Variables-0-16a34a?style=flat-square)
312
+ ![HCL Outputs](https://img.shields.io/badge/HCL_Outputs-0-059669?style=flat-square)
313
+ ![HCL Attributes](https://img.shields.io/badge/HCL_Attributes-0-0ea5e9?style=flat-square)
314
+ ![HCL Interpolations](https://img.shields.io/badge/HCL_Interpolations-0-db2777?style=flat-square)
315
+ ![HCL Comments](https://img.shields.io/badge/HCL_Comments-0-64748b?style=flat-square)
316
+
317
+ ### CSS
318
+
319
+ ![CSS Files](https://img.shields.io/badge/CSS_Files-0-264de4?style=flat-square)
320
+ ![CSS Lines](https://img.shields.io/badge/CSS_Lines-0-2965f1?style=flat-square)
321
+ ![CSS Rules](https://img.shields.io/badge/CSS_Rules-0-7c3aed?style=flat-square)
322
+ ![CSS Selectors](https://img.shields.io/badge/CSS_Selectors-0-8b5cf6?style=flat-square)
323
+ ![CSS Declarations](https://img.shields.io/badge/CSS_Declarations-0-0284c7?style=flat-square)
324
+ ![CSS At Rules](https://img.shields.io/badge/CSS_At_Rules-0-f97316?style=flat-square)
325
+ ![CSS Media Queries](https://img.shields.io/badge/CSS_Media_Queries-0-ea580c?style=flat-square)
326
+ ![CSS Custom Properties](https://img.shields.io/badge/CSS_Custom_Properties-0-16a34a?style=flat-square)
327
+ ![CSS Comments](https://img.shields.io/badge/CSS_Comments-0-64748b?style=flat-square)
328
+
329
+ ### Conventions
330
+
331
+ ![Module Files](https://img.shields.io/badge/Module_Files-5-7c3aed?style=flat-square)
332
+ ![Service Files](https://img.shields.io/badge/Service_Files-3-0284c7?style=flat-square)
333
+ ![Command Files](https://img.shields.io/badge/Command_Files-0-16a34a?style=flat-square)
334
+ ![Constants Files](https://img.shields.io/badge/Constants_Files-3-ea580c?style=flat-square)
335
+ ![Types Files](https://img.shields.io/badge/Types_Files-3-db2777?style=flat-square)
336
+ ![Utilities Files](https://img.shields.io/badge/Utilities_Files-0-0ea5e9?style=flat-square)
337
+ ![TypeORM Entities](https://img.shields.io/badge/TypeORM_Entities-0-059669?style=flat-square)
338
+ ![Unit Tests](https://img.shields.io/badge/Unit_Tests-7-ca8a04?style=flat-square)
339
+ ![Integration Tests](https://img.shields.io/badge/Integration_Tests-0-7c3aed?style=flat-square)
340
+ ![End To End Tests](https://img.shields.io/badge/End_To_End_Tests-0-0284c7?style=flat-square)
341
+ ![CSS Comment Budget](https://img.shields.io/badge/CSS_Comment_Budget-0-16a34a?style=flat-square)
342
+ ![HCL Comment Budget](https://img.shields.io/badge/HCL_Comment_Budget-0-ea580c?style=flat-square)
343
+ ![Python Comment Budget](https://img.shields.io/badge/Python_Comment_Budget-0-db2777?style=flat-square)
344
+ ![SQL Comment Budget](https://img.shields.io/badge/SQL_Comment_Budget-0-0ea5e9?style=flat-square)
345
+ ![TOML Comment Budget](https://img.shields.io/badge/TOML_Comment_Budget-0-059669?style=flat-square)
346
+ ![TypeScript Comment Budget](https://img.shields.io/badge/TypeScript_Comment_Budget-0-ca8a04?style=flat-square)
347
+ ![YAML Comment Budget](https://img.shields.io/badge/YAML_Comment_Budget-0-7c3aed?style=flat-square)
348
+ ![Shell Comment Budget](https://img.shields.io/badge/Shell_Comment_Budget-0-0284c7?style=flat-square)
349
+
350
+ ### Jupyter
351
+
352
+ ![Notebooks](https://img.shields.io/badge/Notebooks-0-f37626?style=flat-square)
353
+ ![Notebook Cells](https://img.shields.io/badge/Notebook_Cells-0-e8a33d?style=flat-square)
354
+ ![Code Cells](https://img.shields.io/badge/Code_Cells-0-3776ab?style=flat-square)
355
+ ![Markdown Cells](https://img.shields.io/badge/Markdown_Cells-0-083fa1?style=flat-square)
356
+ ![Raw Cells](https://img.shields.io/badge/Raw_Cells-0-9ca3af?style=flat-square)
357
+ ![Executed Cells](https://img.shields.io/badge/Executed_Cells-0-16a34a?style=flat-square)
358
+ ![Cell Outputs](https://img.shields.io/badge/Cell_Outputs-0-059669?style=flat-square)
359
+ ![Notebook Code Lines](https://img.shields.io/badge/Notebook_Code_Lines-0-4b8bbe?style=flat-square)
360
+ ![Notebook Classes](https://img.shields.io/badge/Notebook_Classes-0-7c3aed?style=flat-square)
361
+ ![Notebook Functions](https://img.shields.io/badge/Notebook_Functions-0-22c55e?style=flat-square)
362
+ ![Notebook Imports](https://img.shields.io/badge/Notebook_Imports-0-0284c7?style=flat-square)
363
+ ![Notebook Decorators](https://img.shields.io/badge/Notebook_Decorators-0-db2777?style=flat-square)
364
+ ![Notebook Prose Lines](https://img.shields.io/badge/Notebook_Prose_Lines-0-1f6feb?style=flat-square)
365
+ ![Notebook Headings](https://img.shields.io/badge/Notebook_Headings-0-a78bfa?style=flat-square)
366
+ ![Notebook Links](https://img.shields.io/badge/Notebook_Links-0-10b981?style=flat-square)
367
+ ![Notebook Images](https://img.shields.io/badge/Notebook_Images-0-34d399?style=flat-square)
368
+ ![Notebook Code Blocks](https://img.shields.io/badge/Notebook_Code_Blocks-0-dc2626?style=flat-square)
369
+ ![Notebook Properties](https://img.shields.io/badge/Notebook_Properties-0-ca8a04?style=flat-square)
370
+ ![Notebook Nodes](https://img.shields.io/badge/Notebook_Nodes-0-a16207?style=flat-square)
371
+ ![Notebook Max Depth](https://img.shields.io/badge/Notebook_Max_Depth-0-ea580c?style=flat-square)
372
+
373
+ ### Markdown
374
+
375
+ ![Markdown Files](https://img.shields.io/badge/Markdown_Files-1-083fa1?style=flat-square)
376
+ ![Markdown Lines](https://img.shields.io/badge/Markdown_Lines-222-1f6feb?style=flat-square)
377
+ ![H1](https://img.shields.io/badge/H1-1-7c3aed?style=flat-square)
378
+ ![H2](https://img.shields.io/badge/H2-7-8b5cf6?style=flat-square)
379
+ ![H3](https://img.shields.io/badge/H3-12-a78bfa?style=flat-square)
380
+ ![H4](https://img.shields.io/badge/H4-0-c4b5fd?style=flat-square)
381
+ ![H5](https://img.shields.io/badge/H5-0-ddd6fe?style=flat-square)
382
+ ![H6](https://img.shields.io/badge/H6-0-ede9fe?style=flat-square)
383
+ ![Paragraphs](https://img.shields.io/badge/Paragraphs-45-64748b?style=flat-square)
384
+ ![Lists](https://img.shields.io/badge/Lists-6-16a34a?style=flat-square)
385
+ ![List Items](https://img.shields.io/badge/List_Items-25-22c55e?style=flat-square)
386
+ ![Task List Items](https://img.shields.io/badge/Task_List_Items-0-4ade80?style=flat-square)
387
+ ![Tables](https://img.shields.io/badge/Tables-2-0284c7?style=flat-square)
388
+ ![Table Rows](https://img.shields.io/badge/Table_Rows-10-0ea5e9?style=flat-square)
389
+ ![Links](https://img.shields.io/badge/Links-9-059669?style=flat-square)
390
+ ![Images](https://img.shields.io/badge/Images-0-10b981?style=flat-square)
391
+ ![Code Blocks](https://img.shields.io/badge/Code_Blocks-11-dc2626?style=flat-square)
392
+ ![Inline Code](https://img.shields.io/badge/Inline_Code-73-ef4444?style=flat-square)
393
+ ![Block Quotes](https://img.shields.io/badge/Block_Quotes-0-ca8a04?style=flat-square)
394
+ ![Thematic Breaks](https://img.shields.io/badge/Thematic_Breaks-0-a16207?style=flat-square)
395
+ <!-- codometer:end -->