@codependix/configuration 0.0.78 → 0.0.79
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/CHANGELOG.md +10 -0
- package/dist/src/index.d.ts +125 -478
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## 0.0.79 (2026-11-10)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- **codometer:** ✨ gate JSDoc on every declaration kind and shorten long comments ([#2227](https://github.com/organizzolini/codebase/pull/2227), [#2226](https://github.com/organizzolini/codebase/issues/2226))
|
|
6
|
+
|
|
7
|
+
### 🧱 Updated Dependencies
|
|
8
|
+
|
|
9
|
+
- Updated codependix-core to 0.0.77
|
|
10
|
+
|
|
1
11
|
## 0.0.78 (2026-11-10)
|
|
2
12
|
|
|
3
13
|
### 🧱 Updated Dependencies
|
package/dist/src/index.d.ts
CHANGED
|
@@ -15,14 +15,8 @@ export declare interface ApplyOverridesArguments {
|
|
|
15
15
|
export declare const CHECK_BOUNDARIES = "boundaries";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* Everything `--check` accepts, in
|
|
19
|
-
*
|
|
20
|
-
* Named here rather than spelled into each message, so the list a mistake is
|
|
21
|
-
* measured against and the list it is told about can never drift apart. The
|
|
22
|
-
* same arrangement `codometer` and `callidescope` both use, and `reports` is
|
|
23
|
-
* deliberately their word spelled the same way: a configured destination has
|
|
24
|
-
* gone stale is one finding across all three tools, and two names for it
|
|
25
|
-
* would make the three reports unreadable together.
|
|
18
|
+
* Everything `--check` accepts, in error-message order. `reports` is the word
|
|
19
|
+
* `codometer` and `callidescope` use for stale output too.
|
|
26
20
|
*/
|
|
27
21
|
export declare const CHECK_NAMES: string[];
|
|
28
22
|
|
|
@@ -39,23 +33,8 @@ export declare const CODEPENDIX_EXPORT_TARGETS: readonly ["both", "json", "markd
|
|
|
39
33
|
export declare const CODEPENDIX_GRAPH_TYPES: readonly ["fileImports", "nestjsModules", "nxProjects"];
|
|
40
34
|
|
|
41
35
|
/**
|
|
42
|
-
* Every declared boundary rule, keyed by the graph level it judges.
|
|
43
|
-
*
|
|
44
|
-
* Keyed the same way `CodependixProjectConfiguration` is, and written out
|
|
45
|
-
* field by field for the same reason: under `exactOptionalPropertyTypes`,
|
|
46
|
-
* `Partial<Record<...>>` makes a field optional without widening its type to
|
|
47
|
-
* include `undefined`, which then rejects the "unset" value every
|
|
48
|
-
* default-resolution path needs to assign.
|
|
49
|
-
*
|
|
50
|
-
* A flat array with a `graph` discriminant would also work, and was rejected:
|
|
51
|
-
* it forces a reader to know which selector keys are legal at which level,
|
|
52
|
-
* which the key already says.
|
|
53
|
-
*
|
|
54
|
-
* `fileImports` nests by language rather than flattening to one rule array:
|
|
55
|
-
* a Python file cannot import a TypeScript file or vice versa, so no edge
|
|
56
|
-
* ever crosses languages, and the rule vocabularies genuinely differ (a
|
|
57
|
-
* `*.types.ts` naming convention has no Python equivalent). `nestjsModules`
|
|
58
|
-
* and `nxProjects` keep the flat shape every other level always had.
|
|
36
|
+
* Every declared boundary rule, keyed by the graph level it judges. Field by field, since
|
|
37
|
+
* `Partial<Record>` would reject the unset value.
|
|
59
38
|
*/
|
|
60
39
|
export declare interface CodependixBoundariesConfiguration {
|
|
61
40
|
fileImports?: CodependixFileImportsBoundariesConfiguration | undefined;
|
|
@@ -64,14 +43,8 @@ export declare interface CodependixBoundariesConfiguration {
|
|
|
64
43
|
}
|
|
65
44
|
|
|
66
45
|
/**
|
|
67
|
-
* One rule stating which nodes may reach which
|
|
68
|
-
*
|
|
69
|
-
* `forbid` reports every edge whose source matches `from` and whose target
|
|
70
|
-
* matches `to`. `allow` reports the mirror image — an edge leaving `from` for
|
|
71
|
-
* anywhere `to` does not claim — so it states a node's whole permitted
|
|
72
|
-
* surface rather than one thing it may not touch. Written as two `kind`s of
|
|
73
|
-
* one rule rather than two rule types, because a reader comparing them wants
|
|
74
|
-
* to see the same three fields either way.
|
|
46
|
+
* One rule stating which nodes may reach which. `forbid` reports edges from `from` to `to`;
|
|
47
|
+
* `allow` reports edges from `from` to anything not `to`.
|
|
75
48
|
*/
|
|
76
49
|
export declare interface CodependixBoundaryAccessRule {
|
|
77
50
|
/**
|
|
@@ -84,10 +57,8 @@ export declare interface CodependixBoundaryAccessRule {
|
|
|
84
57
|
from: CodependixBoundarySelector;
|
|
85
58
|
kind: "allow" | "forbid";
|
|
86
59
|
/**
|
|
87
|
-
* Why the rule exists, appended to the generated sentence.
|
|
88
|
-
*
|
|
89
|
-
* Appended rather than substituted, so no wording a configuration chooses
|
|
90
|
-
* can cost a report the rule that fired and both ends of what it fired on.
|
|
60
|
+
* Why the rule exists, appended to the generated sentence. Never substituted,
|
|
61
|
+
* so the rule and both its ends always appear in the report.
|
|
91
62
|
*/
|
|
92
63
|
message?: string | undefined;
|
|
93
64
|
/** How the rule is named in a report, and in whatever asks about it. */
|
|
@@ -97,12 +68,8 @@ export declare interface CodependixBoundaryAccessRule {
|
|
|
97
68
|
}
|
|
98
69
|
|
|
99
70
|
/**
|
|
100
|
-
* One rule forbidding a cycle among a selected set of nodes.
|
|
101
|
-
*
|
|
102
|
-
* Deliberately narrow at TypeScript file level, where `dependency-cruiser`'s
|
|
103
|
-
* `no-circular` is already the workspace's gate — see
|
|
104
|
-
* `configuration/dependency-cruiser.cjs`. At Nx project level and NestJS
|
|
105
|
-
* module level nothing else states it, which is where this earns its place.
|
|
71
|
+
* One rule forbidding a cycle among a selected set of nodes. Narrow at file level, where
|
|
72
|
+
* `dependency-cruiser`'s `no-circular` already gates.
|
|
106
73
|
*/
|
|
107
74
|
export declare interface CodependixBoundaryAcyclicRule {
|
|
108
75
|
kind: "acyclic";
|
|
@@ -111,36 +78,20 @@ export declare interface CodependixBoundaryAcyclicRule {
|
|
|
111
78
|
/** How the rule is named in a report, and in whatever asks about it. */
|
|
112
79
|
name: string;
|
|
113
80
|
/**
|
|
114
|
-
* Selects the nodes the rule covers
|
|
115
|
-
*
|
|
116
|
-
* A cycle is only reported when every node in it is selected: a rule scoped
|
|
117
|
-
* to one directory should not fail because of a cycle running through code
|
|
118
|
-
* it was never asked about.
|
|
81
|
+
* Selects the nodes the rule covers; every node by default. A cycle is
|
|
82
|
+
* reported only when all its nodes are selected.
|
|
119
83
|
*/
|
|
120
84
|
nodes?: CodependixBoundarySelector | undefined;
|
|
121
85
|
}
|
|
122
86
|
|
|
123
87
|
/**
|
|
124
|
-
* How a rule narrows which edges it judges.
|
|
125
|
-
*
|
|
126
|
-
* Separate from `CodependixBoundarySelector`, which picks the nodes at either
|
|
127
|
-
* end: this is about the edge itself, and only the Nx level draws an edge with
|
|
128
|
-
* an attribute worth narrowing on.
|
|
88
|
+
* How a rule narrows which edges it judges. Separate from the node selector: only the Nx level draws
|
|
89
|
+
* an edge worth narrowing on.
|
|
129
90
|
*/
|
|
130
91
|
export declare interface CodependixBoundaryEdgeSelector {
|
|
131
92
|
/**
|
|
132
|
-
* Judge only implicit
|
|
133
|
-
*
|
|
134
|
-
* `false` is what makes a rule mean exactly what an
|
|
135
|
-
* `@nx/enforce-module-boundaries` `depConstraint` means: that rule reads
|
|
136
|
-
* import statements, so an `implicitDependencies` entry is invisible to it.
|
|
137
|
-
* `true` inverts it — useful for finding the edges declared in
|
|
138
|
-
* configuration that no import backs. Unset judges both, which is the
|
|
139
|
-
* stricter reading and the right default for a rule about what a project
|
|
140
|
-
* may depend on rather than about what it may import.
|
|
141
|
-
*
|
|
142
|
-
* Every level that is not `nx` draws only explicit edges, so a rule naming
|
|
143
|
-
* `implicit: true` there selects nothing.
|
|
93
|
+
* Judge only implicit (`true`) or only explicit (`false`) edges; unset judges
|
|
94
|
+
* both. Only the Nx level has implicit edges.
|
|
144
95
|
*/
|
|
145
96
|
implicit?: boolean | undefined;
|
|
146
97
|
}
|
|
@@ -149,18 +100,8 @@ export declare interface CodependixBoundaryEdgeSelector {
|
|
|
149
100
|
export declare type CodependixBoundaryRule = CodependixBoundaryAccessRule | CodependixBoundaryAcyclicRule;
|
|
150
101
|
|
|
151
102
|
/**
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
* Four vocabularies, one node shape: an Nx project is selected by name or by
|
|
155
|
-
* tag, a file by its project-relative path, a NestJS module only by its class
|
|
156
|
-
* name — see `NestjsModuleGraph`, which carries no file path at all. Every
|
|
157
|
-
* field is a list of globs, matched with `path.matchesGlob`, and a node
|
|
158
|
-
* matches the selector when it matches every field the selector states.
|
|
159
|
-
* Within one field, one glob matching is enough.
|
|
160
|
-
*
|
|
161
|
-
* A selector stating no field at all is refused rather than read as "every
|
|
162
|
-
* node": the two are indistinguishable in a configuration file, and reading
|
|
163
|
-
* it as everything turns a typo into a rule that judges the whole workspace.
|
|
103
|
+
* A rule's node picker: globs matched against each stated field. A selector stating no field is
|
|
104
|
+
* refused, not read as everything.
|
|
164
105
|
*/
|
|
165
106
|
export declare interface CodependixBoundarySelector {
|
|
166
107
|
/** Globs matched against the node's identifier. */
|
|
@@ -174,20 +115,12 @@ export declare interface CodependixBoundarySelector {
|
|
|
174
115
|
}
|
|
175
116
|
|
|
176
117
|
/**
|
|
177
|
-
* Configuration authored in a `codependix.config.ts
|
|
178
|
-
*
|
|
179
|
-
* Every field is optional: a workspace with no configuration file at all
|
|
180
|
-
* resolves every graph type for every project to `target: "none"`, so
|
|
181
|
-
* codependix produces nothing until it is told where to write.
|
|
118
|
+
* Configuration authored in a `codependix.config.ts`. Every field is optional: with none, codependix writes nothing.
|
|
182
119
|
*/
|
|
183
120
|
export declare interface CodependixConfiguration {
|
|
184
121
|
/**
|
|
185
|
-
* Rules every built graph is judged against, keyed by graph level.
|
|
186
|
-
*
|
|
187
|
-
* Separate from a project's own `codependix.config.ts`, which says where
|
|
188
|
-
* that project's export is written: a rule has no destination, and a
|
|
189
|
-
* violation is reported to the console and the exit code rather than
|
|
190
|
-
* published anywhere.
|
|
122
|
+
* Rules every built graph is judged against, keyed by graph level. A violation
|
|
123
|
+
* fails the run; it is never written to an export.
|
|
191
124
|
*/
|
|
192
125
|
boundaries?: CodependixBoundariesConfiguration | undefined;
|
|
193
126
|
/** Project names or roots excluded from every graph, as globs. */
|
|
@@ -195,48 +128,25 @@ export declare interface CodependixConfiguration {
|
|
|
195
128
|
/** Project names or roots participating in graph export, as globs. */
|
|
196
129
|
include?: string[] | undefined;
|
|
197
130
|
/**
|
|
198
|
-
* How `nestjsModules` finds each application's container.
|
|
199
|
-
*
|
|
200
|
-
* Nothing about where an application's root module lives is assumed: a
|
|
201
|
-
* project this does not name is treated as a library.
|
|
131
|
+
* How `nestjsModules` finds each application's container. A project not
|
|
132
|
+
* named here is treated as a library.
|
|
202
133
|
*/
|
|
203
134
|
nestjsModules?: CodependixNestjsModulesConfiguration | undefined;
|
|
204
135
|
/**
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
* A path, relative to the workspace root, to the JSON `nx graph
|
|
208
|
-
* --file=graph.json` emits. Nx resolves a project graph from the process
|
|
209
|
-
* working directory and takes no directory argument, so this is the only
|
|
210
|
-
* way to graph a workspace the process is not standing in — a CI job that
|
|
211
|
-
* checked out one repository and graphs another, or a test with no Nx
|
|
212
|
-
* workspace under it.
|
|
213
|
-
*
|
|
214
|
-
* A supplied graph's node roots are workspace-relative and resolve against
|
|
215
|
-
* the same root every export path does.
|
|
136
|
+
* Path, relative to the workspace root, of an `nx graph --file` JSON to read
|
|
137
|
+
* instead of resolving the working directory's graph.
|
|
216
138
|
*/
|
|
217
139
|
projectGraph?: string | undefined;
|
|
218
140
|
/**
|
|
219
|
-
* Export configuration for the
|
|
220
|
-
*
|
|
221
|
-
* Separate from `defaults`/`projects`: the Workspace Graph is exported once
|
|
222
|
-
* for the entire repository rather than once per project, so it carries no
|
|
223
|
-
* per-project override and is unaffected by `include`/`exclude`.
|
|
224
|
-
*
|
|
225
|
-
* `--projects` and `--tags` do reach it: a run naming a selection narrows
|
|
226
|
-
* the graph's node set to the projects it named. Its destination is still
|
|
227
|
-
* read from `workspace` either way.
|
|
141
|
+
* Export configuration for the Workspace Graph, exported once for the whole
|
|
142
|
+
* repository. Unaffected by `include`/`exclude`; `--projects`/`--tags` narrow its nodes.
|
|
228
143
|
*/
|
|
229
144
|
workspace?: CodependixWorkspaceConfiguration | undefined;
|
|
230
145
|
}
|
|
231
146
|
|
|
232
147
|
/**
|
|
233
|
-
* Strict
|
|
234
|
-
*
|
|
235
|
-
* Mirrors `@callidescope/configuration`'s override philosophy exactly: a
|
|
236
|
-
* field may be overridden only when the configuration this run reads already
|
|
237
|
-
* declared it — see `ConfigurationService.loadConfiguration`. An empty list is
|
|
238
|
-
* read the same as the field being left off entirely, matching how
|
|
239
|
-
* `--directories`/`--exclude` treat an empty list in callidescope.
|
|
148
|
+
* Strict per-field CLI overrides for a run's root configuration. A field may be overridden only when
|
|
149
|
+
* the file already declared it.
|
|
240
150
|
*/
|
|
241
151
|
export declare interface CodependixConfigurationOverrides {
|
|
242
152
|
/** Overrides `exclude` for this run. */
|
|
@@ -246,11 +156,8 @@ export declare interface CodependixConfigurationOverrides {
|
|
|
246
156
|
}
|
|
247
157
|
|
|
248
158
|
/**
|
|
249
|
-
* Validates a codependix configuration file's contents.
|
|
250
|
-
*
|
|
251
|
-
* Zod strips unknown keys rather than rejecting them, so a configuration
|
|
252
|
-
* written for a newer codependix still loads under an older one instead of
|
|
253
|
-
* failing on a field it has no opinion about.
|
|
159
|
+
* Validates a codependix configuration file's contents. Unknown keys are
|
|
160
|
+
* stripped, not rejected, so newer configurations still load.
|
|
254
161
|
*/
|
|
255
162
|
export declare const codependixConfigurationSchema: z.ZodObject<{
|
|
256
163
|
boundaries: z.ZodOptional<z.ZodObject<{
|
|
@@ -448,21 +355,13 @@ export declare const codependixConfigurationSchema: z.ZodObject<{
|
|
|
448
355
|
}, z.core.$strip>;
|
|
449
356
|
|
|
450
357
|
/**
|
|
451
|
-
* Where a graph type's export lands
|
|
452
|
-
*
|
|
453
|
-
* `both` writes the JSON and the Markdown export together. Named explicitly
|
|
454
|
-
* rather than inferred from which destinations are configured, so a project
|
|
455
|
-
* carrying a `json` destination it does not want written yet can leave it in
|
|
456
|
-
* place with the target set to `markdown`.
|
|
358
|
+
* Where a graph type's export lands. Named explicitly rather than inferred, so
|
|
359
|
+
* a `json` path can stay configured while unused.
|
|
457
360
|
*/
|
|
458
361
|
export declare type CodependixExportTarget = "both" | "json" | "markdown" | "none";
|
|
459
362
|
|
|
460
363
|
/**
|
|
461
|
-
* `boundaries.fileImports`'s rules, nested by language.
|
|
462
|
-
*
|
|
463
|
-
* Separate from `CodependixBoundariesConfiguration` so both the authored and
|
|
464
|
-
* resolved shapes (see `ResolvedCodependixFileImportsBoundariesConfiguration`)
|
|
465
|
-
* can name it once rather than repeating the two-field object inline.
|
|
364
|
+
* `boundaries.fileImports`'s rules, nested by language. Separate so authored and resolved shapes can both name it.
|
|
466
365
|
*/
|
|
467
366
|
export declare interface CodependixFileImportsBoundariesConfiguration {
|
|
468
367
|
python?: CodependixBoundaryRule[] | undefined;
|
|
@@ -485,13 +384,8 @@ export declare interface CodependixJsonOutput {
|
|
|
485
384
|
}
|
|
486
385
|
|
|
487
386
|
/**
|
|
488
|
-
* Where a graph's Markdown export is written.
|
|
489
|
-
*
|
|
490
|
-
* Naming `anchor` places the export inside a named anchor block in the file at
|
|
491
|
-
* `path` — an existing Markdown file such as a project's `README.md`, defaulted
|
|
492
|
-
* to `README.md` when `path` is left out. Leaving `anchor` unset instead writes
|
|
493
|
-
* the export as the whole contents of a standalone file, whose `path` must then
|
|
494
|
-
* be given explicitly since there is no default worth guessing for it.
|
|
387
|
+
* Where a graph's Markdown export is written. With `anchor`, it splices into that block of `path`;
|
|
388
|
+
* without, `path` is standalone.
|
|
495
389
|
*/
|
|
496
390
|
export declare interface CodependixMarkdownOutput {
|
|
497
391
|
anchor?: string | undefined;
|
|
@@ -501,12 +395,8 @@ export declare interface CodependixMarkdownOutput {
|
|
|
501
395
|
/** How the NestJS module graph finds the applications it explores. */
|
|
502
396
|
export declare interface CodependixNestjsModulesConfiguration {
|
|
503
397
|
/**
|
|
504
|
-
* The root module each NestJS application
|
|
505
|
-
*
|
|
506
|
-
*
|
|
507
|
-
* A project named here is an application, and its container is rooted in
|
|
508
|
-
* this module. A `framework:nestjs` project not named here is a library, and
|
|
509
|
-
* gets a synthetic root built from every module it defines instead.
|
|
398
|
+
* The root module of each NestJS application, keyed by Nx project name.
|
|
399
|
+
* A `framework:nestjs` project not named here is a library.
|
|
510
400
|
*/
|
|
511
401
|
rootModules?: Record<string, CodependixNestjsRootModule> | undefined;
|
|
512
402
|
}
|
|
@@ -520,12 +410,8 @@ export declare interface CodependixNestjsRootModule {
|
|
|
520
410
|
}
|
|
521
411
|
|
|
522
412
|
/**
|
|
523
|
-
* A project's export configuration, keyed by graph type.
|
|
524
|
-
*
|
|
525
|
-
* Written out field by field rather than as `Partial<Record<...>>`: under
|
|
526
|
-
* `exactOptionalPropertyTypes`, `Partial` makes a field optional without
|
|
527
|
-
* widening its type to include `undefined`, which then rejects the very
|
|
528
|
-
* "unset" value every default-resolution path needs to assign.
|
|
413
|
+
* A project's export configuration, keyed by graph type. Written field by field, since
|
|
414
|
+
* `Partial<Record>` would reject the unset value.
|
|
529
415
|
*/
|
|
530
416
|
export declare interface CodependixProjectConfiguration {
|
|
531
417
|
fileImports?: CodependixGraphOutput | undefined;
|
|
@@ -534,12 +420,8 @@ export declare interface CodependixProjectConfiguration {
|
|
|
534
420
|
}
|
|
535
421
|
|
|
536
422
|
/**
|
|
537
|
-
* Validates a project's own `codependix.config.ts`, keyed by graph type
|
|
538
|
-
*
|
|
539
|
-
* The same shape a project's own file spreads `projectDefaults` into, and the
|
|
540
|
-
* same shape the root configuration's schema no longer carries — a project's
|
|
541
|
-
* export configuration is validated from its own file rather than from a root
|
|
542
|
-
* `projects` dict.
|
|
423
|
+
* Validates a project's own `codependix.config.ts`, keyed by graph type, since
|
|
424
|
+
* the root schema no longer carries project exports.
|
|
543
425
|
*/
|
|
544
426
|
export declare const codependixProjectConfigurationSchema: z.ZodObject<{
|
|
545
427
|
fileImports: z.ZodOptional<z.ZodObject<{
|
|
@@ -590,11 +472,8 @@ export declare const codependixProjectConfigurationSchema: z.ZodObject<{
|
|
|
590
472
|
}, z.core.$strip>;
|
|
591
473
|
|
|
592
474
|
/**
|
|
593
|
-
* The `--projects` and `--tags` arguments as the command line captured them
|
|
594
|
-
*
|
|
595
|
-
* Comma-separated strings rather than lists: the host captures raw option
|
|
596
|
-
* text and hands it over, and splitting it is resolution, which belongs
|
|
597
|
-
* beside the configuration file this package already parses.
|
|
475
|
+
* The `--projects` and `--tags` arguments as the command line captured them: comma-separated strings,
|
|
476
|
+
* split during resolution.
|
|
598
477
|
*/
|
|
599
478
|
export declare interface CodependixSelectionArguments {
|
|
600
479
|
/** `false` for `--no-dependencies` — see `ResolvedCodependixSelection`. */
|
|
@@ -604,12 +483,8 @@ export declare interface CodependixSelectionArguments {
|
|
|
604
483
|
}
|
|
605
484
|
|
|
606
485
|
/**
|
|
607
|
-
* The Workspace Graph's export configuration, keyed by graph type.
|
|
608
|
-
*
|
|
609
|
-
* All three graph types are declared: `codependix-file-imports` and
|
|
610
|
-
* `codependix-nestjs-modules` each build a whole-workspace aggregate graph the
|
|
611
|
-
* same way `codependix-nx-projects` always has, spanning every project rather
|
|
612
|
-
* than one — see each package's own `workspace-graph` module.
|
|
486
|
+
* The Workspace Graph's export configuration, keyed by graph type. All three graph types are declared,
|
|
487
|
+
* each spanning every project.
|
|
613
488
|
*/
|
|
614
489
|
export declare interface CodependixWorkspaceConfiguration {
|
|
615
490
|
fileImports?: CodependixGraphOutput | undefined;
|
|
@@ -618,11 +493,8 @@ export declare interface CodependixWorkspaceConfiguration {
|
|
|
618
493
|
}
|
|
619
494
|
|
|
620
495
|
/**
|
|
621
|
-
* File names a project's own configuration may take
|
|
622
|
-
*
|
|
623
|
-
* Searched in order, so a project carrying both a TypeScript and a JSON
|
|
624
|
-
* configuration file gets the TypeScript one. The main configuration is never
|
|
625
|
-
* searched for: its path is always named.
|
|
496
|
+
* File names a project's own configuration may take beside its root, searched
|
|
497
|
+
* in order: TypeScript before JSON. The main configuration is never searched for.
|
|
626
498
|
*/
|
|
627
499
|
export declare const CONFIGURATION_FILE_NAMES: readonly ["codependix.config.ts", "codependix.config.mts", "codependix.config.cts", "codependix.config.js", "codependix.config.mjs", "codependix.config.cjs", "codependix.config.json"];
|
|
628
500
|
|
|
@@ -643,21 +515,11 @@ declare class ConfigurationLoaderService {
|
|
|
643
515
|
/** Reads what a configuration module exported, through either interop shape. */
|
|
644
516
|
private readDefaultExport;
|
|
645
517
|
/**
|
|
646
|
-
* Looks for a project's own configuration file
|
|
647
|
-
*
|
|
648
|
-
* This never walks upward: a project's own file must be colocated with it,
|
|
649
|
-
* and walking upward would find the workspace root's configuration — or
|
|
650
|
-
* another project's, in a nested layout — instead of correctly reporting
|
|
651
|
-
* that this project has none.
|
|
518
|
+
* Looks for a project's own configuration file at its root only, never upward, which would find the workspace's.
|
|
652
519
|
*/
|
|
653
520
|
findProjectConfigurationFile(projectRoot: string): string | undefined;
|
|
654
521
|
/**
|
|
655
|
-
* Walks upward from the
|
|
656
|
-
*
|
|
657
|
-
* Used to resolve a configuration path given relative to that root even when
|
|
658
|
-
* the command was invoked from a nested directory, which is what a task
|
|
659
|
-
* runner does whenever it sets the cwd to a project rather than the
|
|
660
|
-
* workspace.
|
|
522
|
+
* Walks upward from the cwd to the workspace root, so a task runner's nested cwd still resolves configuration paths.
|
|
661
523
|
*/
|
|
662
524
|
findWorkspaceRoot(): string | undefined;
|
|
663
525
|
/** Loads a configuration module, choosing the reader by extension. */
|
|
@@ -668,10 +530,7 @@ declare class ConfigurationLoaderService {
|
|
|
668
530
|
/** Loads and validates one configuration file at a resolved path. */
|
|
669
531
|
parseConfigurationFile(resolvedPath: string): Promise<CodependixConfiguration>;
|
|
670
532
|
/**
|
|
671
|
-
* Reads the main configuration file at the path
|
|
672
|
-
*
|
|
673
|
-
* The path is required: nothing searches for a file, and no file is not a
|
|
674
|
-
* configuration that resolves every graph to `target: "none"`.
|
|
533
|
+
* Reads the main configuration file at the given path. The path is required: a missing file is an error, never an empty configuration.
|
|
675
534
|
*/
|
|
676
535
|
readAuthoredConfiguration(args: {
|
|
677
536
|
configurationPath: string;
|
|
@@ -681,14 +540,9 @@ declare class ConfigurationLoaderService {
|
|
|
681
540
|
}
|
|
682
541
|
|
|
683
542
|
/**
|
|
684
|
-
* Provides everything one run is configured by: the configuration file, the
|
|
685
|
-
*
|
|
686
|
-
*
|
|
687
|
-
* `ConfigurationService` is the only thing this module exports, and the only
|
|
688
|
-
* service `@codependix/configuration` makes public. File loading, override
|
|
689
|
-
* resolution, option parsing, and run-mode selection are providers here
|
|
690
|
-
* rather than modules of their own, so a caller asking what a run is
|
|
691
|
-
* configured to do has exactly one place to ask.
|
|
543
|
+
* Provides everything one run is configured by: the configuration file, the command line over it,
|
|
544
|
+
* and each project's own output. `ConfigurationService` is the only export; the rest are providers,
|
|
545
|
+
* so one place answers what a run does.
|
|
692
546
|
*/
|
|
693
547
|
export declare class ConfigurationModule {
|
|
694
548
|
}
|
|
@@ -705,14 +559,8 @@ export declare class ConfigurationPathRequiredError extends Error {
|
|
|
705
559
|
}
|
|
706
560
|
|
|
707
561
|
/**
|
|
708
|
-
* Loads, validates, and resolves codependix configuration
|
|
709
|
-
*
|
|
710
|
-
* Loading and per-project resolution are kept apart on purpose: a project's
|
|
711
|
-
* actual export configuration depends on both the global defaults and its own
|
|
712
|
-
* name, so resolving it eagerly for every project in the workspace would mean
|
|
713
|
-
* redoing that work for a workspace whose graphs run against a filtered subset
|
|
714
|
-
* of projects. `resolveForProject` is called once per project that is
|
|
715
|
-
* actually built instead.
|
|
562
|
+
* Loads, validates, and resolves codependix configuration. Per-project resolution is kept apart
|
|
563
|
+
* from loading, so it runs only for projects actually built.
|
|
716
564
|
*/
|
|
717
565
|
export declare class ConfigurationService {
|
|
718
566
|
private readonly configurationLoaderService;
|
|
@@ -727,79 +575,37 @@ export declare class ConfigurationService {
|
|
|
727
575
|
/** Whether a project's name or its root matches at least one glob. */
|
|
728
576
|
private matchesAnyName;
|
|
729
577
|
/**
|
|
730
|
-
* Fills in every graph level a `boundaries` block may
|
|
731
|
-
*
|
|
732
|
-
* Every level resolves to a list rather than to `undefined`, so a caller
|
|
733
|
-
* walks all of them without asking which ones were configured — the same
|
|
734
|
-
* reason `include` resolves to a list nobody wrote. `fileImports` resolves
|
|
735
|
-
* both of its languages the same way, one level deeper.
|
|
578
|
+
* Fills in every graph level a `boundaries` block may omit, each as a list, so callers need not ask which were configured.
|
|
736
579
|
*/
|
|
737
580
|
private resolveBoundaries;
|
|
738
581
|
/** Applies defaults to one graph type's export configuration. */
|
|
739
582
|
private resolveGraphOutput;
|
|
740
583
|
/**
|
|
741
|
-
* Splits
|
|
742
|
-
* `--no-dependencies` as building over the selected projects alone.
|
|
743
|
-
*
|
|
744
|
-
* Empty entries are dropped, so a trailing comma and a doubled one are both
|
|
745
|
-
* read as the author meant them rather than as a glob matching nothing.
|
|
584
|
+
* Splits `--projects` and `--tags` into lists, and reads `--no-dependencies` as building over the selection alone. Blank entries are dropped.
|
|
746
585
|
*/
|
|
747
586
|
private resolveSelection;
|
|
748
587
|
/** Splits one comma-separated argument, trimming and dropping blanks. */
|
|
749
588
|
private splitSelectionArgument;
|
|
750
589
|
/**
|
|
751
|
-
* Whether a project
|
|
752
|
-
*
|
|
753
|
-
* A project matches when something claims it — an `include` glob, a
|
|
754
|
-
* `--projects` glob, or a `--tags` tag — and no `exclude` glob claims its
|
|
755
|
-
* name or root. The command line **widens** what the configuration already
|
|
756
|
-
* selects rather than replacing it; `exclude` wins over all three, because
|
|
757
|
-
* a flag that could resurrect an excluded project would make `exclude`
|
|
758
|
-
* advisory.
|
|
759
|
-
*
|
|
760
|
-
* `projectRoot` and `projectTags` are optional: a caller with neither handy
|
|
761
|
-
* still resolves against globs written against project names.
|
|
590
|
+
* Whether a project takes part in graph export: matched by `include` or the command line, and not claimed by `exclude`.
|
|
591
|
+
* `exclude` wins over flags.
|
|
762
592
|
*/
|
|
763
593
|
isProjectIncluded(args: ProjectSelectionArguments): boolean;
|
|
764
594
|
/**
|
|
765
|
-
* Whether a project is in the
|
|
766
|
-
*
|
|
767
|
-
* A run naming no selection selects **everything**, which is what keeps the
|
|
768
|
-
* whole-workspace graph and the boundary gate judging every project by
|
|
769
|
-
* default. Naming one narrows both to what it named.
|
|
770
|
-
*
|
|
771
|
-
* This is where `--projects`/`--tags` differ from `include`: `include` is
|
|
772
|
-
* about which projects have exports written for them, and never reaches the
|
|
773
|
-
* workspace graph or the gate. A selection reaches all three.
|
|
595
|
+
* Whether a project is in the command line's selection. Naming none selects every project.
|
|
596
|
+
* `include` never reaches the graph or gate, only selections do.
|
|
774
597
|
*/
|
|
775
598
|
isProjectSelected(args: ProjectSelectionArguments): boolean;
|
|
776
599
|
/**
|
|
777
|
-
* Loads and validates a
|
|
778
|
-
*
|
|
779
|
-
* The path is required and must exist — a typo in a task runner's
|
|
780
|
-
* arguments should fail rather than quietly resolving every graph to
|
|
781
|
-
* `target: "none"`. Nothing is searched for.
|
|
600
|
+
* Loads and validates a configuration file. The path must exist; nothing is searched for, so a typo fails rather than resolving to nothing.
|
|
782
601
|
*/
|
|
783
602
|
loadConfiguration(args: LoadConfigurationArguments): Promise<ResolvedCodependixConfiguration>;
|
|
784
603
|
/**
|
|
785
|
-
* Loads
|
|
786
|
-
* `undefined` when it has none.
|
|
787
|
-
*
|
|
788
|
-
* Searched for exactly at `projectRoot` — see
|
|
789
|
-
* `ConfigurationLoaderService.findProjectConfigurationFile` — rather than
|
|
790
|
-
* named by a path the way `loadConfiguration`'s file is: a project's file is either colocated with it or it does not
|
|
791
|
-
* exist, and a project with none produces no per-project output rather than
|
|
792
|
-
* inheriting one from a parent directory.
|
|
604
|
+
* Loads one project's own `codependix.config.ts`, or `undefined`. Searched for only at its root, never inherited from a parent.
|
|
793
605
|
*/
|
|
794
606
|
loadProjectConfiguration(args: LoadProjectConfigurationArguments): Promise<CodependixProjectConfiguration | undefined>;
|
|
795
607
|
/**
|
|
796
|
-
* Parses a comma-separated list
|
|
797
|
-
*
|
|
798
|
-
* One of the six command-line methods this service forwards to the
|
|
799
|
-
* `input` and flag-resolution providers it owns. They are stated here
|
|
800
|
-
* rather than exported alongside it because this package makes exactly one
|
|
801
|
-
* service public: a host asking what a run is configured to do — from its
|
|
802
|
-
* configuration file or from its flags — asks `ConfigurationService`.
|
|
608
|
+
* Parses a comma-separated list, dropping blanks. Forwarded here, since `ConfigurationService` is the one public service.
|
|
803
609
|
*/
|
|
804
610
|
parseCommaDelimitedOption(value: string | undefined): string[];
|
|
805
611
|
/** Parses a valueless boolean flag, which is present or it is not. */
|
|
@@ -809,48 +615,20 @@ export declare class ConfigurationService {
|
|
|
809
615
|
/** Parses a path option that falls back to the working directory. */
|
|
810
616
|
parsePathOption(value: string | undefined): string;
|
|
811
617
|
/**
|
|
812
|
-
* Returns the main configuration path, refusing one
|
|
813
|
-
*
|
|
814
|
-
* No file is searched for, so every host — the command line, the Nx
|
|
815
|
-
* executor, the Nx plugin — must be handed a path. `surface` names the
|
|
816
|
-
* setting the caller took it from (for example "`--config` flag"), which is
|
|
817
|
-
* what the refusal tells the user to fix. Absent and blank are the same.
|
|
618
|
+
* Returns the main configuration path, refusing a missing or blank one. `surface` names its source in the refusal.
|
|
818
619
|
*/
|
|
819
620
|
requireConfigurationPath(configurationPath: string | undefined, surface: string): string;
|
|
820
621
|
/**
|
|
821
|
-
* Fills in every field a configuration file may
|
|
822
|
-
*
|
|
823
|
-
* Exposed so a host embedding codependix can hand over a configuration
|
|
824
|
-
* object it assembled itself and get the same shape a configuration file
|
|
825
|
-
* produces.
|
|
622
|
+
* Fills in every field a configuration file may omit. Exposed so a host can pass an assembled configuration and get the file's shape.
|
|
826
623
|
*/
|
|
827
624
|
resolveConfiguration(configuration: CodependixConfiguration, selection?: CodependixSelectionArguments): ResolvedCodependixConfiguration;
|
|
828
625
|
/**
|
|
829
|
-
* Resolves one project's export configuration for one graph type.
|
|
830
|
-
*
|
|
831
|
-
* A project's own `codependix.config.ts`, when it has one, is read exactly
|
|
832
|
-
* as loaded — no merge against a workspace-wide default happens here, since
|
|
833
|
-
* spreading the root-exported `projectDefaults` already happened when the
|
|
834
|
-
* project's own file was authored. A project excluded by the configured
|
|
835
|
-
* `include`/`exclude` globs, or one that has no configuration file of its
|
|
836
|
-
* own at all, always resolves to `target: "none"`: the former because a
|
|
837
|
-
* project excluded from graph export should not need every field rewritten
|
|
838
|
-
* to `"none"` by hand, the latter because a project matched by `include`
|
|
839
|
-
* with no file of its own has nothing to export, even though it still
|
|
840
|
-
* contributes to the Workspace Graph and is judged by boundary rules.
|
|
626
|
+
* Resolves one project's export configuration for one graph type. An excluded project, or one without
|
|
627
|
+
* its own file, resolves to `target: "none"`.
|
|
841
628
|
*/
|
|
842
629
|
resolveForProject(args: ResolveForProjectArguments): ResolvedCodependixGraphOutput;
|
|
843
630
|
/**
|
|
844
|
-
* Resolves the Workspace Graph's export
|
|
845
|
-
*
|
|
846
|
-
* A Workspace Graph is exported once for the whole repository rather than
|
|
847
|
-
* once per project, so it has no per-project override and is unaffected by
|
|
848
|
-
* `include`/`exclude` — those two apply only to `resolveForProject`.
|
|
849
|
-
*
|
|
850
|
-
* `--projects` and `--tags` do reach it, through the node set rather than
|
|
851
|
-
* through this: a run naming a selection draws the graph over the projects
|
|
852
|
-
* it named. Where that graph lands is still read from `workspace`, keyed by
|
|
853
|
-
* `graphType`.
|
|
631
|
+
* Resolves the Workspace Graph's export for one graph type. `include` and `exclude` never apply to it.
|
|
854
632
|
*/
|
|
855
633
|
resolveForWorkspace(configuration: ResolvedCodependixConfiguration, graphType: CodependixGraphType): ResolvedCodependixGraphOutput;
|
|
856
634
|
/**
|
|
@@ -868,12 +646,8 @@ export declare class ConfigurationService {
|
|
|
868
646
|
export declare const DEFAULT_EXPORT_TARGET: CodependixExportTarget;
|
|
869
647
|
|
|
870
648
|
/**
|
|
871
|
-
*
|
|
872
|
-
*
|
|
873
|
-
* Deliberately empty: participation is always declared. A configuration that
|
|
874
|
-
* names `defaults` but no `include` exports nothing rather than quietly
|
|
875
|
-
* covering the whole workspace, which is what lets a later widening argument
|
|
876
|
-
* mean something — a union with `["**"]` as its base can never add a project.
|
|
649
|
+
* Participating projects when a configuration names none. Deliberately empty:
|
|
650
|
+
* export must be declared, never silently widened to the whole workspace.
|
|
877
651
|
*/
|
|
878
652
|
export declare const DEFAULT_INCLUDE_GLOBS: readonly [];
|
|
879
653
|
|
|
@@ -881,15 +655,9 @@ export declare const DEFAULT_INCLUDE_GLOBS: readonly [];
|
|
|
881
655
|
export declare const DEFAULT_MARKDOWN_PATH = "README.md";
|
|
882
656
|
|
|
883
657
|
/**
|
|
884
|
-
* Reads the command line into what the run will do.
|
|
885
|
-
*
|
|
886
|
-
*
|
|
887
|
-
* resolving the command line is half of answering "what is this run actually
|
|
888
|
-
* configured to do", and `ConfigurationService` is the one public way to ask.
|
|
889
|
-
* `codometer-cli` and `callidescope-cli` still carry a `run-plan` module of
|
|
890
|
-
* this shape inside their hosts — and, deliberately, the same `--check
|
|
891
|
-
* reports` spelling, since a stale configured destination is one finding
|
|
892
|
-
* across all three.
|
|
658
|
+
* Reads the command line into what the run will do. Internal to this module, since
|
|
659
|
+
* `ConfigurationService` is the one public way to ask. The `--check reports` spelling matches the
|
|
660
|
+
* sibling CLIs, since a stale destination is one finding across all three.
|
|
893
661
|
*/
|
|
894
662
|
declare class FlagResolutionService {
|
|
895
663
|
private readonly inputService;
|
|
@@ -899,58 +667,33 @@ declare class FlagResolutionService {
|
|
|
899
667
|
/** The mode nothing was selected for, so an error path has one to return. */
|
|
900
668
|
private emptyMode;
|
|
901
669
|
/**
|
|
902
|
-
* Asks
|
|
903
|
-
*
|
|
904
|
-
* Nothing is inferred: a session that cannot be asked fails rather than
|
|
905
|
-
* defaulting to a write nobody requested, and a run that quietly did
|
|
906
|
-
* nothing and exited 0 is worse than either.
|
|
670
|
+
* Asks what a run with no flags should do. Nothing is inferred: an unanswerable session fails rather
|
|
671
|
+
* than writing something nobody requested.
|
|
907
672
|
*/
|
|
908
673
|
private promptForMode;
|
|
909
674
|
/**
|
|
910
|
-
* Reads
|
|
911
|
-
*
|
|
912
|
-
* A flag passed without a value arrives as `true` and is a mistake rather
|
|
913
|
-
* than a shorthand: read as "gate nothing" it would be a gate that cannot
|
|
914
|
-
* fail, and `--check "$GATES"` with the variable unset would pass forever
|
|
915
|
-
* over a workspace whose every rule was broken — worse than no gate at all,
|
|
916
|
-
* because it looks like protection.
|
|
675
|
+
* Reads `--check` into the things the run fails on. A bare `--check` is refused: a gate that cannot
|
|
676
|
+
* fail looks like protection.
|
|
917
677
|
*/
|
|
918
678
|
private readCheckNames;
|
|
919
679
|
/** Keeps the names `--check` knows and complains about the rest. */
|
|
920
680
|
private validateCheckNames;
|
|
921
681
|
/**
|
|
922
|
-
* Reads the flags into what the run writes and
|
|
923
|
-
*
|
|
924
|
-
* `--write --check reports` is refused rather than obeyed: nothing can be
|
|
925
|
-
* stale immediately after being written, so a run asking for both has
|
|
926
|
-
* misunderstood one of them and would pass whatever it was meant to catch.
|
|
927
|
-
* `--write --check boundaries` is legal for the mirror-image reason — a
|
|
928
|
-
* boundary has no destination to be stale, so writing every export and
|
|
929
|
-
* judging every graph in one run is two independent things, not a
|
|
930
|
-
* contradiction.
|
|
682
|
+
* Reads the flags into what the run writes and fails on. `--write --check reports` is refused:
|
|
683
|
+
* nothing is stale right after being written.
|
|
931
684
|
*/
|
|
932
685
|
selectMode(options: MapCommandOptions): Promise<RunModeSelection>;
|
|
933
686
|
/**
|
|
934
|
-
* Whether a run reads or rewrites
|
|
935
|
-
*
|
|
936
|
-
* `--check boundaries` alone reads no destination and writes nothing, so it
|
|
937
|
-
* leaves every committed export exactly as it found it — which is what
|
|
938
|
-
* makes it safe on a branch, where the exports are expected to be behind.
|
|
687
|
+
* Whether a run reads or rewrites its exports. `--check boundaries` alone touches no file, so it is
|
|
688
|
+
* safe on a branch.
|
|
939
689
|
*/
|
|
940
690
|
touchesFiles(mode: RunMode): boolean;
|
|
941
691
|
}
|
|
942
692
|
|
|
943
693
|
/**
|
|
944
|
-
* Thrown when a command line cannot be turned into a run.
|
|
945
|
-
*
|
|
946
|
-
*
|
|
947
|
-
* whoever catches it — nothing was attempted, and the fix is to retype the
|
|
948
|
-
* flags. Only the wording varies, which is what the factories below do.
|
|
949
|
-
*
|
|
950
|
-
* Sits beside the constants because that is where every error class in this
|
|
951
|
-
* repository lives — the project structure rule has no `errors` suffix, and
|
|
952
|
-
* the Constant File Shape rule whitelists `class X extends Error` for exactly
|
|
953
|
-
* this.
|
|
694
|
+
* Thrown when a command line cannot be turned into a run. One class rather than one per cause:
|
|
695
|
+
* every cause means nothing ran and the flags need retyping. Only the wording varies, by the
|
|
696
|
+
* factories below. Sits here because the constants rule whitelists error classes.
|
|
954
697
|
*/
|
|
955
698
|
export declare class InputError extends Error {
|
|
956
699
|
constructor(message: string);
|
|
@@ -968,38 +711,21 @@ declare class InputService {
|
|
|
968
711
|
/** Overridable so tests never touch a real terminal. */
|
|
969
712
|
private readonly promptRunner;
|
|
970
713
|
/**
|
|
971
|
-
* Refuses
|
|
972
|
-
*
|
|
973
|
-
* `prompts` does not fail on a non-terminal stdin — it renders the menu,
|
|
974
|
-
* never resolves, and lets the process exit 0, so a run that did nothing
|
|
975
|
-
* reads as one that succeeded. `isTTY` is read as falsy rather than
|
|
976
|
-
* coerced: `@types/node` calls it a `boolean`, so lint rejects a coercion.
|
|
714
|
+
* Refuses a prompt nobody can answer: `prompts` would exit 0 on non-TTY stdin having done nothing.
|
|
977
715
|
*/
|
|
978
716
|
private assertCanPrompt;
|
|
979
717
|
/**
|
|
980
|
-
* Parses a comma-separated list
|
|
981
|
-
*
|
|
982
|
-
* Mirrors `@callidescope/configuration`'s `InputService` exactly: an absent
|
|
983
|
-
* flag resolves to an empty list rather than `undefined`, so a caller
|
|
984
|
-
* overriding a configured list treats "the flag was left off" and "the flag
|
|
985
|
-
* named nothing" the same way.
|
|
718
|
+
* Parses a comma-separated list, dropping blank entries. An absent flag is an empty list, so "left off" and "named nothing" behave the same.
|
|
986
719
|
*/
|
|
987
720
|
parseCommaDelimitedOption(value: string | undefined): string[];
|
|
988
721
|
/**
|
|
989
|
-
* Parses a valueless boolean flag
|
|
990
|
-
*
|
|
991
|
-
* Commander passes `undefined` for a flag carrying no value, so the flag
|
|
992
|
-
* appearing at all is what makes it true; reading that as false would turn
|
|
993
|
-
* every such flag permanently off.
|
|
722
|
+
* Parses a valueless boolean flag: present means true. Commander passes `undefined`, so reading that as false would disable every such flag.
|
|
994
723
|
*/
|
|
995
724
|
parseFlagOption(value: boolean | undefined): boolean;
|
|
996
725
|
/** Trims an optional string option, treating blank as absent. */
|
|
997
726
|
parseOptionalOption(value: string | undefined): string | undefined;
|
|
998
727
|
/**
|
|
999
|
-
* Parses a path option
|
|
1000
|
-
*
|
|
1001
|
-
* Left unresolved: the caller resolves it against its own root, and
|
|
1002
|
-
* resolving twice makes a relative path ambiguous about which it meant.
|
|
728
|
+
* Parses a path option, defaulting to the working directory. Left unresolved, since resolving twice makes a relative path ambiguous.
|
|
1003
729
|
*/
|
|
1004
730
|
parsePathOption(value: string | undefined): string;
|
|
1005
731
|
/** Prompts for one value out of a fixed set of choices. */
|
|
@@ -1029,20 +755,14 @@ export declare interface LoadProjectConfigurationArguments {
|
|
|
1029
755
|
/** Command-line options `codependix` accepts. */
|
|
1030
756
|
export declare interface MapCommandOptions {
|
|
1031
757
|
/**
|
|
1032
|
-
* The
|
|
1033
|
-
*
|
|
1034
|
-
* `true` is the flag written with no value at all, which is refused rather
|
|
1035
|
-
* than read as a shorthand — see `ConfigurationService.selectMode`.
|
|
758
|
+
* The findings `--check` gates, unparsed. `true` (a bare flag) is refused,
|
|
759
|
+
* not read as a shorthand; see `ConfigurationService.selectMode`.
|
|
1036
760
|
*/
|
|
1037
761
|
check?: string | true | undefined;
|
|
1038
762
|
config?: string | undefined;
|
|
1039
763
|
/**
|
|
1040
|
-
* Whether `--projects`/`--tags` build
|
|
1041
|
-
*
|
|
1042
|
-
*
|
|
1043
|
-
* `undefined` when neither `--dependencies` nor `--no-dependencies` was
|
|
1044
|
-
* given, which builds over the closure. Inert without a selection, since
|
|
1045
|
-
* every project is then both built and judged.
|
|
764
|
+
* Whether `--projects`/`--tags` also build their dependency closure; `false`
|
|
765
|
+
* for `--no-dependencies`. Inert without a selection.
|
|
1046
766
|
*/
|
|
1047
767
|
dependencies?: boolean | undefined;
|
|
1048
768
|
directory?: string | undefined;
|
|
@@ -1050,19 +770,12 @@ export declare interface MapCommandOptions {
|
|
|
1050
770
|
exclude?: string[] | undefined;
|
|
1051
771
|
/**
|
|
1052
772
|
* Builds, checks, and writes the `fileImports` graph type for this run.
|
|
1053
|
-
*
|
|
1054
|
-
* `undefined` when neither `--file-imports` nor `--no-file-imports` was
|
|
1055
|
-
* given, which leaves the graph type enabled — the behavior every run had
|
|
1056
|
-
* before this flag existed.
|
|
773
|
+
* Unset leaves it enabled.
|
|
1057
774
|
*/
|
|
1058
775
|
fileImports?: boolean | undefined;
|
|
1059
776
|
/**
|
|
1060
|
-
* What `--format` prints to standard output, unparsed.
|
|
1061
|
-
*
|
|
1062
|
-
* Defaults to `"markdown"` when the flag was left off entirely — unlike
|
|
1063
|
-
* codometer's `--format`, which falls back to a resolved configuration
|
|
1064
|
-
* field, codependix's configuration declares no such field, so the default
|
|
1065
|
-
* is a fixed constant instead.
|
|
777
|
+
* What `--format` prints to standard output, unparsed. Defaults to
|
|
778
|
+
* `"markdown"`, a fixed constant rather than a configured field.
|
|
1066
779
|
*/
|
|
1067
780
|
format?: string | undefined;
|
|
1068
781
|
/** Overrides `include` for this run. Refused when never configured. */
|
|
@@ -1073,10 +786,8 @@ export declare interface MapCommandOptions {
|
|
|
1073
786
|
*/
|
|
1074
787
|
jsonOutput?: string | undefined;
|
|
1075
788
|
/**
|
|
1076
|
-
* Writes every active graph type's rendered diagram
|
|
1077
|
-
*
|
|
1078
|
-
* the same splicing `DeliveryService` applies per project, applied here to
|
|
1079
|
-
* one shared destination instead.
|
|
789
|
+
* Writes every active graph type's rendered diagram into one Markdown file
|
|
790
|
+
* at this path, each as an anchor-spliced section.
|
|
1080
791
|
*/
|
|
1081
792
|
markdownOutput?: string | undefined;
|
|
1082
793
|
/** Builds, checks, and writes the `nestjsModules` graph type for this run. */
|
|
@@ -1096,41 +807,21 @@ export declare interface MapCommandOptions {
|
|
|
1096
807
|
}
|
|
1097
808
|
|
|
1098
809
|
/**
|
|
1099
|
-
* A required value that cannot be asked for
|
|
1100
|
-
*
|
|
1101
|
-
* `prompts` does not fail there — it draws its menu, never resolves, and the
|
|
1102
|
-
* process exits 0 having done nothing. This refuses to become that silent
|
|
1103
|
-
* green no-op.
|
|
810
|
+
* A required value that cannot be asked for without a terminal. `prompts` would
|
|
811
|
+
* exit 0 having done nothing, so this refuses instead.
|
|
1104
812
|
*/
|
|
1105
813
|
export declare const missingInputError: (subject: string) => InputError;
|
|
1106
814
|
|
|
1107
815
|
/**
|
|
1108
|
-
* Applies strict, per-field CLI overrides to
|
|
1109
|
-
* configuration.
|
|
1110
|
-
*
|
|
1111
|
-
* Mirrors `@callidescope/configuration`'s `FlagResolutionService` philosophy
|
|
1112
|
-
* exactly: a flag may override a value the configuration already declares,
|
|
1113
|
-
* and is refused when the configuration never declared that field at all.
|
|
1114
|
-
* Kept apart from `ConfigurationService` so the resolution logic — and the
|
|
1115
|
-
* file-length budget it would otherwise share with loading, boundary
|
|
1116
|
-
* defaulting, and per-project resolution — is stated and tested once, on its
|
|
1117
|
-
* own.
|
|
816
|
+
* Applies strict, per-field CLI overrides to a resolved configuration. A flag may override a declared
|
|
817
|
+
* value, and is refused for a field the configuration never declared. Kept apart from
|
|
818
|
+
* `ConfigurationService` to keep that file within its length budget.
|
|
1118
819
|
*/
|
|
1119
820
|
declare class OverrideResolutionService {
|
|
1120
821
|
constructor();
|
|
1121
822
|
/**
|
|
1122
|
-
*
|
|
1123
|
-
*
|
|
1124
|
-
*
|
|
1125
|
-
* Checked against `authored` — the configuration exactly as parsed, before
|
|
1126
|
-
* `include`/`exclude` are defaulted — rather than against the resolved
|
|
1127
|
-
* value: `ConfigurationService.resolveConfiguration` fills in
|
|
1128
|
-
* `DEFAULT_INCLUDE_GLOBS`/`[]` for a field the author never wrote, so the
|
|
1129
|
-
* resolved value is never itself `undefined`. Checking there would make
|
|
1130
|
-
* every override legal regardless of what the configuration actually
|
|
1131
|
-
* declared, which is the opposite of the precedence rule this mirrors.
|
|
1132
|
-
*
|
|
1133
|
-
* An empty override list is read the same as no override at all.
|
|
823
|
+
* Refuses an override for a field the author never declared. Checked against the authored config,
|
|
824
|
+
* since resolution fills defaults.
|
|
1134
825
|
*/
|
|
1135
826
|
private resolveOverride;
|
|
1136
827
|
/**
|
|
@@ -1145,45 +836,30 @@ export declare interface ProjectSelectionArguments {
|
|
|
1145
836
|
configuration: ResolvedCodependixConfiguration;
|
|
1146
837
|
projectName: string;
|
|
1147
838
|
/**
|
|
1148
|
-
* The project's root, relative to the workspace
|
|
1149
|
-
* project
|
|
1150
|
-
*
|
|
1151
|
-
* Optional so a caller with no root handy — a test, or a host that only
|
|
1152
|
-
* knows a project by name — still resolves against `include`/`exclude`
|
|
1153
|
-
* globs written against project names.
|
|
839
|
+
* The project's root, relative to the workspace. Optional for a caller that
|
|
840
|
+
* knows the project only by name.
|
|
1154
841
|
*/
|
|
1155
842
|
projectRoot?: string | undefined;
|
|
1156
843
|
/**
|
|
1157
|
-
* The project's own Nx tags, for matching `--tags`.
|
|
1158
|
-
*
|
|
1159
|
-
* Optional for the same reason `projectRoot` is: a caller that knows a
|
|
1160
|
-
* project only by name still resolves against everything else.
|
|
844
|
+
* The project's own Nx tags, for matching `--tags`. Optional, as `projectRoot` is.
|
|
1161
845
|
*/
|
|
1162
846
|
projectTags?: string[] | undefined;
|
|
1163
847
|
}
|
|
1164
848
|
|
|
1165
849
|
/**
|
|
1166
|
-
* A prompt
|
|
1167
|
-
*
|
|
1168
|
-
* Worded apart from a prompt that resolved to something unrecognized:
|
|
1169
|
-
* pressing escape is ordinary, and reporting it as a crash sends the reader
|
|
1170
|
-
* debugging for nothing.
|
|
850
|
+
* A prompt dismissed without an answer. Worded apart from an unrecognized
|
|
851
|
+
* answer, since escape is ordinary, not a crash.
|
|
1171
852
|
*/
|
|
1172
853
|
export declare const promptCancelledError: (subject: string) => InputError;
|
|
1173
854
|
|
|
1174
855
|
/**
|
|
1175
|
-
*
|
|
1176
|
-
*
|
|
1177
|
-
* A package manifest is deliberately not one of them: every project in the
|
|
1178
|
-
* workspace carries one, so the search would stop at the nearest project
|
|
1179
|
-
* rather than the root a configuration path was written relative to.
|
|
856
|
+
* Root markers for an upward search from the cwd. Not package manifests: every
|
|
857
|
+
* project has one, so the search would stop early.
|
|
1180
858
|
*/
|
|
1181
859
|
export declare const REPOSITORY_ROOT_MARKERS: readonly [".git", "pnpm-workspace.yaml"];
|
|
1182
860
|
|
|
1183
861
|
/**
|
|
1184
|
-
* Every
|
|
1185
|
-
* empty list rather than left unset — so a caller iterates every level
|
|
1186
|
-
* without asking whether each one was configured.
|
|
862
|
+
* Every level's declared rules, resolved to an empty list when unset, so callers iterate every level unconditionally.
|
|
1187
863
|
*/
|
|
1188
864
|
export declare interface ResolvedCodependixBoundariesConfiguration {
|
|
1189
865
|
fileImports: ResolvedCodependixFileImportsBoundariesConfiguration;
|
|
@@ -1192,13 +868,8 @@ export declare interface ResolvedCodependixBoundariesConfiguration {
|
|
|
1192
868
|
}
|
|
1193
869
|
|
|
1194
870
|
/**
|
|
1195
|
-
* Configuration with every default applied.
|
|
1196
|
-
*
|
|
1197
|
-
* Carries no per-project state at all: a project's own export configuration
|
|
1198
|
-
* lives in its own colocated `codependix.config.ts`, loaded on demand by
|
|
1199
|
-
* `ConfigurationService.loadProjectConfiguration` and handed to
|
|
1200
|
-
* `resolveForProject` — which is also where `include` and `exclude` globs
|
|
1201
|
-
* are applied.
|
|
871
|
+
* Configuration with every default applied. Carries no per-project state: that lives in each project's
|
|
872
|
+
* own `codependix.config.ts`.
|
|
1202
873
|
*/
|
|
1203
874
|
export declare interface ResolvedCodependixConfiguration {
|
|
1204
875
|
boundaries: ResolvedCodependixBoundariesConfiguration;
|
|
@@ -1209,12 +880,8 @@ export declare interface ResolvedCodependixConfiguration {
|
|
|
1209
880
|
/** A project graph to read instead of the working directory's, if named. */
|
|
1210
881
|
projectGraph: string | undefined;
|
|
1211
882
|
/**
|
|
1212
|
-
* What `--projects` and `--tags` named, resolved.
|
|
1213
|
-
*
|
|
1214
|
-
* Carried on the resolved configuration rather than passed alongside it so
|
|
1215
|
-
* that everything already handed a configuration — the export passes, the
|
|
1216
|
-
* workspace graph, and the boundary gate — sees the same selection without
|
|
1217
|
-
* a second argument threaded through each of them.
|
|
883
|
+
* What `--projects` and `--tags` named, resolved. Carried here so every
|
|
884
|
+
* consumer of the configuration sees the same selection.
|
|
1218
885
|
*/
|
|
1219
886
|
selection: ResolvedCodependixSelection;
|
|
1220
887
|
workspace: CodependixWorkspaceConfiguration;
|
|
@@ -1243,21 +910,12 @@ export declare interface ResolvedCodependixMarkdownOutput {
|
|
|
1243
910
|
}
|
|
1244
911
|
|
|
1245
912
|
/**
|
|
1246
|
-
* A run's project selection, split and trimmed.
|
|
1247
|
-
*
|
|
1248
|
-
* Both lists empty means no selection was made at all, which is not the same
|
|
1249
|
-
* as a selection that matches nothing: an absent selection leaves the
|
|
1250
|
-
* whole-workspace graph and the boundary gate judging every project, while a
|
|
1251
|
-
* selection naming something narrows both to what it names.
|
|
913
|
+
* A run's project selection, split and trimmed. Empty means no selection at all, not one matching nothing.
|
|
1252
914
|
*/
|
|
1253
915
|
export declare interface ResolvedCodependixSelection {
|
|
1254
916
|
/**
|
|
1255
|
-
* Whether graphs
|
|
1256
|
-
*
|
|
1257
|
-
*
|
|
1258
|
-
* `true` unless `--no-dependencies` was given. Either way only the selected
|
|
1259
|
-
* projects are judged: a finding charged to a dependency is reported as a
|
|
1260
|
-
* note rather than failing the run.
|
|
917
|
+
* Whether graphs build over the selected projects' dependency closure, or
|
|
918
|
+
* over them alone. Only selected projects are judged; dependencies get notes.
|
|
1261
919
|
*/
|
|
1262
920
|
dependencies: boolean;
|
|
1263
921
|
/** Globs matched against a project's name or its workspace-relative root. */
|
|
@@ -1270,26 +928,15 @@ export declare interface ResolvedCodependixSelection {
|
|
|
1270
928
|
export declare interface ResolveForProjectArguments extends ProjectSelectionArguments {
|
|
1271
929
|
graphType: CodependixGraphType;
|
|
1272
930
|
/**
|
|
1273
|
-
* The project's own loaded `codependix.config.ts`, or `undefined` when it
|
|
1274
|
-
*
|
|
1275
|
-
*
|
|
1276
|
-
* Read as-is rather than merged with anything else: a project's own file
|
|
1277
|
-
* already spreads the root-exported `projectDefaults` at authoring time, so
|
|
1278
|
-
* whatever `loadProjectConfiguration` returns is the complete statement of
|
|
1279
|
-
* that project's export configuration. A project naming no file of its own
|
|
1280
|
-
* resolves to `target: "none"` regardless of `include`/`exclude` — it
|
|
1281
|
-
* simply has nothing to export.
|
|
931
|
+
* The project's own loaded `codependix.config.ts`, or `undefined` when it has
|
|
932
|
+
* none. Read as-is, never merged; no file means `target: "none"`.
|
|
1282
933
|
*/
|
|
1283
934
|
projectConfiguration: CodependixProjectConfiguration | undefined;
|
|
1284
935
|
}
|
|
1285
936
|
|
|
1286
937
|
/**
|
|
1287
|
-
*
|
|
1288
|
-
*
|
|
1289
|
-
* Three choices rather than the two `--check`/`--write` used to offer, since
|
|
1290
|
-
* `--check` now names which finding it gates. Kept as a prompt rather than
|
|
1291
|
-
* defaulted to anything: a run that silently did nothing and exited 0 is the
|
|
1292
|
-
* failure this whole flag arrangement exists to prevent.
|
|
938
|
+
* Choices offered when no mode is named. Never defaulted: a silent no-op that
|
|
939
|
+
* exits 0 is the failure to avoid.
|
|
1293
940
|
*/
|
|
1294
941
|
export declare const RUN_MODE_CHOICES: readonly ["boundaries", "reports", "write"];
|
|
1295
942
|
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"url": "https://github.com/organizzolini/codebase/issues"
|
|
5
5
|
},
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@codependix/core": "0.0.
|
|
7
|
+
"@codependix/core": "0.0.77",
|
|
8
8
|
"@nestjs/common": "^11.1.21 || ^12.0.1",
|
|
9
9
|
"jiti": "^2.7.0",
|
|
10
10
|
"prompts": "^2.4.2",
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"strict": true
|
|
64
64
|
},
|
|
65
65
|
"types": "./dist/src/index.d.ts",
|
|
66
|
-
"version": "0.0.
|
|
66
|
+
"version": "0.0.79"
|
|
67
67
|
}
|