@codependix/core 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,322 @@
1
+ ## Test
2
+
3
+ ```bash
4
+ nx run codependix-core:vitest
5
+ ```
6
+
7
+ ## 👔 Conformetry
8
+
9
+ This project was generated from the [nestjs-service-project](../../configuration/conformetry-templates/nestjs-service-project) conformetry template.
10
+
11
+ ## 🕸️ Codependix
12
+
13
+ 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`.
14
+
15
+ ### Nx Neighborhood
16
+
17
+ <!-- codependix:start name="codependix-nx-projects" -->
18
+ ```mermaid
19
+ graph LR
20
+ codependix_boundaries["codependix-boundaries"]
21
+ codependix_cli["codependix-cli"]
22
+ codependix_configuration["codependix-configuration"]
23
+ codependix_core["codependix-core"]
24
+ codependix_examples["codependix-examples"]
25
+ codependix_output["codependix-output"]
26
+ codependix_boundaries --> codependix_core
27
+ codependix_cli --> codependix_core
28
+ codependix_configuration --> codependix_core
29
+ codependix_examples --> codependix_core
30
+ codependix_output --> codependix_core
31
+ classDef subject fill:#7c3aed,color:#fff,stroke:#4c1d95,stroke-width:2px
32
+ class codependix_core subject
33
+ ```
34
+ <!-- codependix:end name="codependix-nx-projects" -->
35
+
36
+ ### File Imports
37
+
38
+ <!-- codependix:start name="codependix-file-imports" -->
39
+ ```mermaid
40
+ graph LR
41
+ file_callidescope_config_ts["callidescope.config.ts"]
42
+ file_codependix_config_ts["codependix.config.ts"]
43
+ file_codometer_config_ts["codometer.config.ts"]
44
+ file_eslint_config_ts["eslint.config.ts"]
45
+ file_src_index_ts["src/index.ts"]
46
+ file_src_index_unit_test_ts["src/index.unit.test.ts"]
47
+ file_src_modules_codependix_core_codependix_core_constants_ts["src/modules/codependix-core/codependix-core.constants.ts"]
48
+ file_src_modules_codependix_core_codependix_core_module_ts["src/modules/codependix-core/codependix-core.module.ts"]
49
+ file_src_modules_codependix_core_codependix_core_service_ts["src/modules/codependix-core/codependix-core.service.ts"]
50
+ file_src_modules_codependix_core_codependix_core_service_unit_test_ts["src/modules/codependix-core/codependix-core.service.unit.test.ts"]
51
+ file_src_modules_codependix_core_codependix_core_types_ts["src/modules/codependix-core/codependix-core.types.ts"]
52
+ file_testing_mocks_ts["testing/mocks.ts"]
53
+ file_testing_setup_ts["testing/setup.ts"]
54
+ file_vite_config_ts["vite.config.ts"]
55
+ file_vitest_config_ts["vitest.config.ts"]
56
+ file_src_index_unit_test_ts --> file_src_index_ts
57
+ file_src_modules_codependix_core_codependix_core_module_ts --> file_src_modules_codependix_core_codependix_core_service_ts
58
+ file_src_modules_codependix_core_codependix_core_service_unit_test_ts --> file_src_modules_codependix_core_codependix_core_service_ts
59
+ ```
60
+ <!-- codependix:end name="codependix-file-imports" -->
61
+
62
+ <!-- codependix:start name="codependix-nestjs-modules" -->
63
+ <!-- codependix:end name="codependix-nestjs-modules" -->
64
+
65
+ <!-- callidescope:start -->
66
+
67
+ ### NestJS Module Graph
68
+
69
+ <!-- codependix:start name="codependix-nestjs-modules" -->
70
+ ```mermaid
71
+ flowchart LR
72
+ CodependixCoreModule
73
+ ```
74
+ <!-- codependix:end name="codependix-nestjs-modules" -->
75
+
76
+ ## 🔭 Callidescope
77
+
78
+ Call stacks traced through `packages/ic-suite/codependix/codependix-core`, deepest first. Each frame shows what it takes, what it returns, and what its documentation says.
79
+
80
+ | Measure | Value |
81
+ | --- | --- |
82
+ | Callables | 1 |
83
+ | Files | 11 |
84
+ | Calls traced | 0 |
85
+ | Call stacks | 0 |
86
+ | Deepest stack | 0 |
87
+ | Stacks through recursion | 0 |
88
+ | Unfollowable calls | 0 |
89
+
90
+ ### Limits
91
+
92
+ What this project is judged against, as declared in its own `callidescope.config.ts`.
93
+
94
+ | Limit | Value |
95
+ | --- | --- |
96
+ | `maximumDepth` | 1 |
97
+ | `maximumBreadth` | 1 |
98
+
99
+ ### Call stacks (depth)
100
+
101
+ None.
102
+
103
+ ### Breadth
104
+
105
+ None.
106
+ <!-- callidescope:end -->
107
+
108
+ <!-- codometer:start -->
109
+
110
+ ## ⏲️ Codometer
111
+
112
+ ### Project
113
+
114
+ ![Lines of Code](https://img.shields.io/badge/Lines_of_Code-352-22c55e?style=flat-square)
115
+ ![Repository Size](https://img.shields.io/badge/Repository_Size-21.91_kB-6b7280?style=flat-square)
116
+ ![Folders](https://img.shields.io/badge/Folders-4-4a4a4a?style=flat-square)
117
+ ![Source Files](https://img.shields.io/badge/Source_Files-15-3178c6?style=flat-square)
118
+
119
+ ### Measured Targets
120
+
121
+ ![Compiled JavaScript Size](https://img.shields.io/badge/Compiled_JavaScript_Size-0.57_kB_gzip-6b7280?style=flat-square)
122
+
123
+ ### TypeScript
124
+
125
+ ![TypeScript Files](https://img.shields.io/badge/TypeScript_Files-15-3178c6?style=flat-square)
126
+ ![Interfaces](https://img.shields.io/badge/Interfaces-8-0ea5e9?style=flat-square)
127
+ ![Generic Declarations](https://img.shields.io/badge/Generic_Declarations-0-0369a1?style=flat-square)
128
+ ![Enums](https://img.shields.io/badge/Enums-0-f97316?style=flat-square)
129
+ ![Decorators](https://img.shields.io/badge/Decorators-2-db2777?style=flat-square)
130
+ ![Doc Comments](https://img.shields.io/badge/Doc_Comments-22-6366f1?style=flat-square)
131
+ ![Static Methods](https://img.shields.io/badge/Static_Methods-0-166534?style=flat-square)
132
+
133
+ ### JavaScript
134
+
135
+ ![JavaScript Files](https://img.shields.io/badge/JavaScript_Files-0-f7df1e?style=flat-square)
136
+ ![Test Files](https://img.shields.io/badge/Test_Files-2-10b981?style=flat-square)
137
+ ![External Packages](https://img.shields.io/badge/External_Packages-7-8b5cf6?style=flat-square)
138
+ ![Classes](https://img.shields.io/badge/Classes-2-7c3aed?style=flat-square)
139
+ ![Functions](https://img.shields.io/badge/Functions-13-16a34a?style=flat-square)
140
+ ![Methods](https://img.shields.io/badge/Methods-0-15803d?style=flat-square)
141
+ ![Sync Functions](https://img.shields.io/badge/Sync_Functions-12-4ade80?style=flat-square)
142
+ ![Async Functions](https://img.shields.io/badge/Async_Functions-1-059669?style=flat-square)
143
+ ![Constants](https://img.shields.io/badge/Constants-3-dc2626?style=flat-square)
144
+ ![Imports](https://img.shields.io/badge/Imports-21-0284c7?style=flat-square)
145
+ ![Exported Symbols](https://img.shields.io/badge/Exported_Symbols-14-ea580c?style=flat-square)
146
+ ![Comments](https://img.shields.io/badge/Comments-37-64748b?style=flat-square)
147
+ ![Comment Lines](https://img.shields.io/badge/Comment_Lines-104-475569?style=flat-square)
148
+ ![TODO Comments](https://img.shields.io/badge/TODO_Comments-2-ca8a04?style=flat-square)
149
+
150
+ ### Python
151
+
152
+ ![Python Files](https://img.shields.io/badge/Python_Files-0-3776ab?style=flat-square)
153
+ ![Python Lines](https://img.shields.io/badge/Python_Lines-0-4b8bbe?style=flat-square)
154
+ ![Python Classes](https://img.shields.io/badge/Python_Classes-0-7c3aed?style=flat-square)
155
+ ![Python Functions](https://img.shields.io/badge/Python_Functions-0-16a34a?style=flat-square)
156
+ ![Python Protocols](https://img.shields.io/badge/Python_Protocols-0-0ea5e9?style=flat-square)
157
+ ![Python Constants](https://img.shields.io/badge/Python_Constants-0-dc2626?style=flat-square)
158
+ ![Python Imports](https://img.shields.io/badge/Python_Imports-0-0284c7?style=flat-square)
159
+ ![Python Decorators](https://img.shields.io/badge/Python_Decorators-0-db2777?style=flat-square)
160
+ ![Docstrings](https://img.shields.io/badge/Docstrings-0-6366f1?style=flat-square)
161
+ ![Docstring Lines](https://img.shields.io/badge/Docstring_Lines-0-818cf8?style=flat-square)
162
+ ![Python Comments](https://img.shields.io/badge/Python_Comments-0-64748b?style=flat-square)
163
+ ![Python Comment Lines](https://img.shields.io/badge/Python_Comment_Lines-0-475569?style=flat-square)
164
+
165
+ ### JSON
166
+
167
+ ![JSON Files](https://img.shields.io/badge/JSON_Files-4-a16207?style=flat-square)
168
+ ![JSON Lines](https://img.shields.io/badge/JSON_Lines-161-ca8a04?style=flat-square)
169
+ ![JSON Objects](https://img.shields.io/badge/JSON_Objects-38-7c3aed?style=flat-square)
170
+ ![JSON Arrays](https://img.shields.io/badge/JSON_Arrays-13-8b5cf6?style=flat-square)
171
+ ![JSON Properties](https://img.shields.io/badge/JSON_Properties-98-0284c7?style=flat-square)
172
+ ![JSON Strings](https://img.shields.io/badge/JSON_Strings-86-16a34a?style=flat-square)
173
+ ![JSON Numbers](https://img.shields.io/badge/JSON_Numbers-1-059669?style=flat-square)
174
+ ![JSON Booleans](https://img.shields.io/badge/JSON_Booleans-7-0ea5e9?style=flat-square)
175
+ ![JSON Nulls](https://img.shields.io/badge/JSON_Nulls-0-64748b?style=flat-square)
176
+ ![JSON Items](https://img.shields.io/badge/JSON_Items-43-475569?style=flat-square)
177
+ ![JSON Nodes](https://img.shields.io/badge/JSON_Nodes-145-dc2626?style=flat-square)
178
+ ![JSON Max Depth](https://img.shields.io/badge/JSON_Max_Depth-5-ea580c?style=flat-square)
179
+
180
+ ### YAML
181
+
182
+ ![YAML Files](https://img.shields.io/badge/YAML_Files-0-cb171e?style=flat-square)
183
+ ![YAML Lines](https://img.shields.io/badge/YAML_Lines-0-e34c26?style=flat-square)
184
+ ![YAML Documents](https://img.shields.io/badge/YAML_Documents-0-f97316?style=flat-square)
185
+ ![YAML Mappings](https://img.shields.io/badge/YAML_Mappings-0-7c3aed?style=flat-square)
186
+ ![YAML Sequences](https://img.shields.io/badge/YAML_Sequences-0-8b5cf6?style=flat-square)
187
+ ![YAML Keys](https://img.shields.io/badge/YAML_Keys-0-0284c7?style=flat-square)
188
+ ![YAML Scalars](https://img.shields.io/badge/YAML_Scalars-0-16a34a?style=flat-square)
189
+ ![YAML Anchors](https://img.shields.io/badge/YAML_Anchors-0-059669?style=flat-square)
190
+ ![YAML Aliases](https://img.shields.io/badge/YAML_Aliases-0-10b981?style=flat-square)
191
+ ![YAML Comments](https://img.shields.io/badge/YAML_Comments-0-64748b?style=flat-square)
192
+ ![YAML Max Depth](https://img.shields.io/badge/YAML_Max_Depth-0-ea580c?style=flat-square)
193
+
194
+ ### TOML
195
+
196
+ ![TOML Files](https://img.shields.io/badge/TOML_Files-0-9c4221?style=flat-square)
197
+ ![TOML Lines](https://img.shields.io/badge/TOML_Lines-0-b45309?style=flat-square)
198
+ ![TOML Tables](https://img.shields.io/badge/TOML_Tables-0-7c3aed?style=flat-square)
199
+ ![TOML Array Tables](https://img.shields.io/badge/TOML_Array_Tables-0-8b5cf6?style=flat-square)
200
+ ![TOML Keys](https://img.shields.io/badge/TOML_Keys-0-0284c7?style=flat-square)
201
+ ![TOML Arrays](https://img.shields.io/badge/TOML_Arrays-0-16a34a?style=flat-square)
202
+ ![TOML Comments](https://img.shields.io/badge/TOML_Comments-0-64748b?style=flat-square)
203
+
204
+ ### Shell
205
+
206
+ ![Shell Files](https://img.shields.io/badge/Shell_Files-0-89e051?style=flat-square)
207
+ ![Shell Lines](https://img.shields.io/badge/Shell_Lines-0-4eaa25?style=flat-square)
208
+ ![Shell Functions](https://img.shields.io/badge/Shell_Functions-0-16a34a?style=flat-square)
209
+ ![Shell Variables](https://img.shields.io/badge/Shell_Variables-0-0284c7?style=flat-square)
210
+ ![Shell Exports](https://img.shields.io/badge/Shell_Exports-0-ea580c?style=flat-square)
211
+ ![Shell Conditionals](https://img.shields.io/badge/Shell_Conditionals-0-7c3aed?style=flat-square)
212
+ ![Shell Loops](https://img.shields.io/badge/Shell_Loops-0-8b5cf6?style=flat-square)
213
+ ![Shell Pipelines](https://img.shields.io/badge/Shell_Pipelines-0-059669?style=flat-square)
214
+ ![Shebangs](https://img.shields.io/badge/Shebangs-0-6b7280?style=flat-square)
215
+ ![Shell Comments](https://img.shields.io/badge/Shell_Comments-0-64748b?style=flat-square)
216
+ ![Shell Comment Lines](https://img.shields.io/badge/Shell_Comment_Lines-0-475569?style=flat-square)
217
+
218
+ ### SQL
219
+
220
+ ![SQL Files](https://img.shields.io/badge/SQL_Files-0-e38c00?style=flat-square)
221
+ ![SQL Lines](https://img.shields.io/badge/SQL_Lines-0-f29111?style=flat-square)
222
+ ![SQL Statements](https://img.shields.io/badge/SQL_Statements-0-7c3aed?style=flat-square)
223
+ ![SQL Selects](https://img.shields.io/badge/SQL_Selects-0-16a34a?style=flat-square)
224
+ ![SQL Inserts](https://img.shields.io/badge/SQL_Inserts-0-22c55e?style=flat-square)
225
+ ![SQL Updates](https://img.shields.io/badge/SQL_Updates-0-0ea5e9?style=flat-square)
226
+ ![SQL Deletes](https://img.shields.io/badge/SQL_Deletes-0-dc2626?style=flat-square)
227
+ ![SQL Creates](https://img.shields.io/badge/SQL_Creates-0-0284c7?style=flat-square)
228
+ ![SQL Joins](https://img.shields.io/badge/SQL_Joins-0-8b5cf6?style=flat-square)
229
+ ![SQL CTEs](https://img.shields.io/badge/SQL_CTEs-0-059669?style=flat-square)
230
+ ![SQL Comments](https://img.shields.io/badge/SQL_Comments-0-64748b?style=flat-square)
231
+
232
+ ### HCL
233
+
234
+ ![HCL Files](https://img.shields.io/badge/HCL_Files-0-844fba?style=flat-square)
235
+ ![HCL Lines](https://img.shields.io/badge/HCL_Lines-0-a78bfa?style=flat-square)
236
+ ![HCL Blocks](https://img.shields.io/badge/HCL_Blocks-0-7c3aed?style=flat-square)
237
+ ![HCL Resources](https://img.shields.io/badge/HCL_Resources-0-0284c7?style=flat-square)
238
+ ![HCL Variables](https://img.shields.io/badge/HCL_Variables-0-16a34a?style=flat-square)
239
+ ![HCL Outputs](https://img.shields.io/badge/HCL_Outputs-0-059669?style=flat-square)
240
+ ![HCL Attributes](https://img.shields.io/badge/HCL_Attributes-0-0ea5e9?style=flat-square)
241
+ ![HCL Interpolations](https://img.shields.io/badge/HCL_Interpolations-0-db2777?style=flat-square)
242
+ ![HCL Comments](https://img.shields.io/badge/HCL_Comments-0-64748b?style=flat-square)
243
+
244
+ ### CSS
245
+
246
+ ![CSS Files](https://img.shields.io/badge/CSS_Files-0-264de4?style=flat-square)
247
+ ![CSS Lines](https://img.shields.io/badge/CSS_Lines-0-2965f1?style=flat-square)
248
+ ![CSS Rules](https://img.shields.io/badge/CSS_Rules-0-7c3aed?style=flat-square)
249
+ ![CSS Selectors](https://img.shields.io/badge/CSS_Selectors-0-8b5cf6?style=flat-square)
250
+ ![CSS Declarations](https://img.shields.io/badge/CSS_Declarations-0-0284c7?style=flat-square)
251
+ ![CSS At Rules](https://img.shields.io/badge/CSS_At_Rules-0-f97316?style=flat-square)
252
+ ![CSS Media Queries](https://img.shields.io/badge/CSS_Media_Queries-0-ea580c?style=flat-square)
253
+ ![CSS Custom Properties](https://img.shields.io/badge/CSS_Custom_Properties-0-16a34a?style=flat-square)
254
+ ![CSS Comments](https://img.shields.io/badge/CSS_Comments-0-64748b?style=flat-square)
255
+
256
+ ### Conventions
257
+
258
+ ![Module Files](https://img.shields.io/badge/Module_Files-1-7c3aed?style=flat-square)
259
+ ![Service Files](https://img.shields.io/badge/Service_Files-1-0284c7?style=flat-square)
260
+ ![Command Files](https://img.shields.io/badge/Command_Files-0-16a34a?style=flat-square)
261
+ ![Constants Files](https://img.shields.io/badge/Constants_Files-1-ea580c?style=flat-square)
262
+ ![Types Files](https://img.shields.io/badge/Types_Files-1-db2777?style=flat-square)
263
+ ![Utilities Files](https://img.shields.io/badge/Utilities_Files-0-0ea5e9?style=flat-square)
264
+ ![TypeORM Entities](https://img.shields.io/badge/TypeORM_Entities-0-059669?style=flat-square)
265
+ ![Unit Tests](https://img.shields.io/badge/Unit_Tests-2-ca8a04?style=flat-square)
266
+ ![Integration Tests](https://img.shields.io/badge/Integration_Tests-0-7c3aed?style=flat-square)
267
+ ![End To End Tests](https://img.shields.io/badge/End_To_End_Tests-0-0284c7?style=flat-square)
268
+ ![CSS Comment Budget](https://img.shields.io/badge/CSS_Comment_Budget-0-16a34a?style=flat-square)
269
+ ![HCL Comment Budget](https://img.shields.io/badge/HCL_Comment_Budget-0-ea580c?style=flat-square)
270
+ ![Python Comment Budget](https://img.shields.io/badge/Python_Comment_Budget-0-db2777?style=flat-square)
271
+ ![SQL Comment Budget](https://img.shields.io/badge/SQL_Comment_Budget-0-0ea5e9?style=flat-square)
272
+ ![TOML Comment Budget](https://img.shields.io/badge/TOML_Comment_Budget-0-059669?style=flat-square)
273
+ ![TypeScript Comment Budget](https://img.shields.io/badge/TypeScript_Comment_Budget-0-ca8a04?style=flat-square)
274
+ ![YAML Comment Budget](https://img.shields.io/badge/YAML_Comment_Budget-0-7c3aed?style=flat-square)
275
+ ![Shell Comment Budget](https://img.shields.io/badge/Shell_Comment_Budget-0-0284c7?style=flat-square)
276
+
277
+ ### Jupyter
278
+
279
+ ![Notebooks](https://img.shields.io/badge/Notebooks-0-f37626?style=flat-square)
280
+ ![Notebook Cells](https://img.shields.io/badge/Notebook_Cells-0-e8a33d?style=flat-square)
281
+ ![Code Cells](https://img.shields.io/badge/Code_Cells-0-3776ab?style=flat-square)
282
+ ![Markdown Cells](https://img.shields.io/badge/Markdown_Cells-0-083fa1?style=flat-square)
283
+ ![Raw Cells](https://img.shields.io/badge/Raw_Cells-0-9ca3af?style=flat-square)
284
+ ![Executed Cells](https://img.shields.io/badge/Executed_Cells-0-16a34a?style=flat-square)
285
+ ![Cell Outputs](https://img.shields.io/badge/Cell_Outputs-0-059669?style=flat-square)
286
+ ![Notebook Code Lines](https://img.shields.io/badge/Notebook_Code_Lines-0-4b8bbe?style=flat-square)
287
+ ![Notebook Classes](https://img.shields.io/badge/Notebook_Classes-0-7c3aed?style=flat-square)
288
+ ![Notebook Functions](https://img.shields.io/badge/Notebook_Functions-0-22c55e?style=flat-square)
289
+ ![Notebook Imports](https://img.shields.io/badge/Notebook_Imports-0-0284c7?style=flat-square)
290
+ ![Notebook Decorators](https://img.shields.io/badge/Notebook_Decorators-0-db2777?style=flat-square)
291
+ ![Notebook Prose Lines](https://img.shields.io/badge/Notebook_Prose_Lines-0-1f6feb?style=flat-square)
292
+ ![Notebook Headings](https://img.shields.io/badge/Notebook_Headings-0-a78bfa?style=flat-square)
293
+ ![Notebook Links](https://img.shields.io/badge/Notebook_Links-0-10b981?style=flat-square)
294
+ ![Notebook Images](https://img.shields.io/badge/Notebook_Images-0-34d399?style=flat-square)
295
+ ![Notebook Code Blocks](https://img.shields.io/badge/Notebook_Code_Blocks-0-dc2626?style=flat-square)
296
+ ![Notebook Properties](https://img.shields.io/badge/Notebook_Properties-0-ca8a04?style=flat-square)
297
+ ![Notebook Nodes](https://img.shields.io/badge/Notebook_Nodes-0-a16207?style=flat-square)
298
+ ![Notebook Max Depth](https://img.shields.io/badge/Notebook_Max_Depth-0-ea580c?style=flat-square)
299
+
300
+ ### Markdown
301
+
302
+ ![Markdown Files](https://img.shields.io/badge/Markdown_Files-1-083fa1?style=flat-square)
303
+ ![Markdown Lines](https://img.shields.io/badge/Markdown_Lines-222-1f6feb?style=flat-square)
304
+ ![H1](https://img.shields.io/badge/H1-1-7c3aed?style=flat-square)
305
+ ![H2](https://img.shields.io/badge/H2-7-8b5cf6?style=flat-square)
306
+ ![H3](https://img.shields.io/badge/H3-12-a78bfa?style=flat-square)
307
+ ![H4](https://img.shields.io/badge/H4-0-c4b5fd?style=flat-square)
308
+ ![H5](https://img.shields.io/badge/H5-0-ddd6fe?style=flat-square)
309
+ ![H6](https://img.shields.io/badge/H6-0-ede9fe?style=flat-square)
310
+ ![Paragraphs](https://img.shields.io/badge/Paragraphs-45-64748b?style=flat-square)
311
+ ![Lists](https://img.shields.io/badge/Lists-6-16a34a?style=flat-square)
312
+ ![List Items](https://img.shields.io/badge/List_Items-25-22c55e?style=flat-square)
313
+ ![Task List Items](https://img.shields.io/badge/Task_List_Items-0-4ade80?style=flat-square)
314
+ ![Tables](https://img.shields.io/badge/Tables-2-0284c7?style=flat-square)
315
+ ![Table Rows](https://img.shields.io/badge/Table_Rows-10-0ea5e9?style=flat-square)
316
+ ![Links](https://img.shields.io/badge/Links-9-059669?style=flat-square)
317
+ ![Images](https://img.shields.io/badge/Images-0-10b981?style=flat-square)
318
+ ![Code Blocks](https://img.shields.io/badge/Code_Blocks-11-dc2626?style=flat-square)
319
+ ![Inline Code](https://img.shields.io/badge/Inline_Code-73-ef4444?style=flat-square)
320
+ ![Block Quotes](https://img.shields.io/badge/Block_Quotes-0-ca8a04?style=flat-square)
321
+ ![Thematic Breaks](https://img.shields.io/badge/Thematic_Breaks-0-a16207?style=flat-square)
322
+ <!-- codometer:end -->
@@ -0,0 +1,130 @@
1
+ /** Result of comparing a Markdown file's anchor against freshly built content. */
2
+ export declare interface AnchorCheckResult {
3
+ /** The content the anchor currently holds. */
4
+ readonly currentContent: string;
5
+ /** The content a fresh run would produce. */
6
+ readonly freshContent: string;
7
+ /** Whether the anchor already holds the fresh content. */
8
+ readonly isCurrent: boolean;
9
+ }
10
+
11
+ /**
12
+ * TODO: Document the codependixCore module.
13
+ */
14
+ export declare class CodependixCoreModule {
15
+ }
16
+
17
+ /**
18
+ * TODO: Document the codependixCore service.
19
+ */
20
+ export declare class CodependixCoreService {
21
+ constructor();
22
+ }
23
+
24
+ /**
25
+ * Which of the two things delivery does to a destination.
26
+ *
27
+ * Not the same thing as `RunMode`, which is what the command line asked the
28
+ * whole run to do: a run gating `--check boundaries` alone reads no
29
+ * destination at all, so it never reaches delivery and has no mode here.
30
+ */
31
+ export declare type CodependixRunMode = "check" | "write";
32
+
33
+ /**
34
+ * Every project's outcome from one graph-type pass — the projects that
35
+ * finished, and the projects that failed before their exports could be
36
+ * resolved.
37
+ *
38
+ * Kept apart rather than folded into one list: a caller deciding a run's exit
39
+ * code needs both a stale export and a failed project to fail it, and a caller
40
+ * only interested in what was actually written needs `results` alone.
41
+ */
42
+ export declare interface GraphRunOutcome {
43
+ failures: ProjectRunFailure[];
44
+ results: ProjectRunResult[];
45
+ }
46
+
47
+ /**
48
+ * Names the `## 🕸️ Codependix` section text a caller wants auto-created when
49
+ * its anchored Markdown destination is missing.
50
+ *
51
+ * Carried as its own field on `DeliverGraphOutputArguments` rather than
52
+ * folded into `ResolvedCodependixGraphOutput`: the section heading and intro
53
+ * line are fixed per graph type, not something a workspace's configuration
54
+ * file resolves, so they are supplied by `GraphRunService` at the call site
55
+ * instead of flowing through configuration resolution.
56
+ */
57
+ export declare interface MarkdownSectionArguments {
58
+ introLine: string;
59
+ /**
60
+ * The `### <subheading>` placed above the anchor block, or `undefined` for
61
+ * the workspace README, whose Workspace Graph anchor sits directly under
62
+ * the `## 🕸️ Codependix` heading with no subheading of its own.
63
+ */
64
+ subheading: string | undefined;
65
+ }
66
+
67
+ /**
68
+ * One project's outcome after it raised before its exports could be
69
+ * resolved — a missing anchor, or a NestJS project that failed to boot its
70
+ * container.
71
+ *
72
+ * Kept apart from `ProjectRunResult` rather than added to it as an optional
73
+ * field: a result is either something that was resolved (current or stale) or
74
+ * something that never got that far, and the two should not be representable
75
+ * at once.
76
+ */
77
+ export declare interface ProjectRunFailure {
78
+ error: string;
79
+ projectName: string;
80
+ }
81
+
82
+ /** One project's outcome after its configured destinations were resolved. */
83
+ export declare interface ProjectRunResult {
84
+ isCurrent: boolean;
85
+ projectName: string;
86
+ staleExports: StaleExport[];
87
+ stalePaths: string[];
88
+ }
89
+
90
+ /**
91
+ * What the run does with the graphs it builds.
92
+ *
93
+ * The three are independent. Writing gates on `writes` alone, staleness on
94
+ * `checksReports` alone, and a broken rule on `checksBoundaries` alone, so no
95
+ * flag ever quietly turns another one on. That separation is the whole point
96
+ * of the split: a stale export moves with the workspace and belongs on the
97
+ * default branch, while a broken boundary is caused by the branch and belongs
98
+ * on every pull request.
99
+ */
100
+ export declare interface RunMode {
101
+ readonly checksBoundaries: boolean;
102
+ readonly checksReports: boolean;
103
+ readonly writes: boolean;
104
+ }
105
+
106
+ /**
107
+ * What the command line asked the run to do, and what it could not make sense of.
108
+ *
109
+ * Every complaint is collected before any of them is reported, so a command
110
+ * line with two mistakes in it is two mistakes to fix rather than two runs.
111
+ */
112
+ export declare interface RunModeSelection {
113
+ readonly errors: readonly string[];
114
+ readonly mode: RunMode;
115
+ }
116
+
117
+ /** One destination that no longer holds what a fresh export would produce. */
118
+ export declare interface StaleExport {
119
+ /** The anchor name if the destination is an anchored Markdown block, or undefined. */
120
+ readonly anchor?: string | undefined;
121
+ /** What differs between the current destination and the fresh export: "graph" or "formatting". */
122
+ readonly difference: StaleExportDifference;
123
+ /** The relative destination path (e.g. "README.md", "codependix-nx-graph.json"). */
124
+ readonly path: string;
125
+ }
126
+
127
+ /** What differs between the current destination and the fresh export. */
128
+ export declare type StaleExportDifference = "formatting" | "graph";
129
+
130
+ export { }
@@ -0,0 +1,30 @@
1
+ import { Injectable as e, Module as t } from "@nestjs/common";
2
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/decorateMetadata.js
3
+ function n(e, t) {
4
+ if (typeof Reflect == "object" && typeof Reflect.metadata == "function") return Reflect.metadata(e, t);
5
+ }
6
+ //#endregion
7
+ //#region \0@oxc-project+runtime@0.151.0/helpers/esm/decorate.js
8
+ function r(e, t, n, r) {
9
+ var i = arguments.length, a = i < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r, o;
10
+ if (typeof Reflect == "object" && typeof Reflect.decorate == "function") a = Reflect.decorate(e, t, n, r);
11
+ else for (var s = e.length - 1; s >= 0; s--) (o = e[s]) && (a = (i < 3 ? o(a) : i > 3 ? o(t, n, a) : o(t, n)) || a);
12
+ return i > 3 && a && Object.defineProperty(t, n, a), a;
13
+ }
14
+ //#endregion
15
+ //#region packages/ic-suite/codependix/codependix-core/src/modules/codependix-core/codependix-core.service.ts
16
+ var i = class {
17
+ constructor() {}
18
+ };
19
+ i = r([e(), n("design:paramtypes", [])], i);
20
+ //#endregion
21
+ //#region packages/ic-suite/codependix/codependix-core/src/modules/codependix-core/codependix-core.module.ts
22
+ var a = class {};
23
+ a = r([t({
24
+ controllers: [],
25
+ exports: [i],
26
+ imports: [],
27
+ providers: [i]
28
+ })], a);
29
+ //#endregion
30
+ export { a as CodependixCoreModule, i as CodependixCoreService };
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "author": "Jimmy Paolini",
3
+ "bugs": {
4
+ "url": "https://github.com/organizzolini/codebase/issues"
5
+ },
6
+ "dependencies": {
7
+ "@nestjs/common": "^11.1.21 || ^12.0.1",
8
+ "reflect-metadata": "^0.2.2"
9
+ },
10
+ "description": "Graph models, boundary rule definitions, and traversal contracts for the Codependix toolchain",
11
+ "devDependencies": {
12
+ "@golevelup/ts-vitest": "^4.0.0",
13
+ "@nestjs/testing": "^12.0.1",
14
+ "@nx/eslint-plugin": "^23.0.0",
15
+ "@swc/helpers": "^0.5.21",
16
+ "@types/node": "^26.5.1",
17
+ "@vitest/coverage-v8": "^5.0.0",
18
+ "vitest": "^5.0.0"
19
+ },
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/src/index.d.ts",
23
+ "default": "./dist/src/index.js"
24
+ },
25
+ "./package.json": "./package.json"
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "LICENSE",
30
+ "README.md"
31
+ ],
32
+ "homepage": "https://github.com/organizzolini/codebase/tree/main/packages/ic-suite/codependix/codependix-core#readme",
33
+ "keywords": [
34
+ "architecture",
35
+ "boundaries",
36
+ "codependix",
37
+ "contracts",
38
+ "dependency-graph",
39
+ "types"
40
+ ],
41
+ "license": "MIT",
42
+ "main": "./dist/src/index.js",
43
+ "name": "@codependix/core",
44
+ "publishConfig": {
45
+ "access": "public",
46
+ "registry": "https://registry.npmjs.org"
47
+ },
48
+ "repository": {
49
+ "directory": "packages/ic-suite/codependix/codependix-core",
50
+ "type": "git",
51
+ "url": "git+https://github.com/organizzolini/codebase.git"
52
+ },
53
+ "type": "module",
54
+ "typeCoverage": {
55
+ "atLeast": 100,
56
+ "strict": true
57
+ },
58
+ "types": "./dist/src/index.d.ts",
59
+ "version": "0.0.3"
60
+ }