@goodbones/core 0.1.0-beta.1 → 0.1.0-beta.10

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.
Files changed (164) hide show
  1. package/build/dts/core/campaigns.d.ts +141 -0
  2. package/build/dts/core/campaigns.d.ts.map +1 -0
  3. package/build/dts/core/coverage.d.ts +20 -0
  4. package/build/dts/core/coverage.d.ts.map +1 -1
  5. package/build/dts/core/graph.d.ts +2 -0
  6. package/build/dts/core/graph.d.ts.map +1 -1
  7. package/build/dts/core/imports.d.ts +3 -1
  8. package/build/dts/core/imports.d.ts.map +1 -1
  9. package/build/dts/core/ledger.d.ts +61 -0
  10. package/build/dts/core/ledger.d.ts.map +1 -0
  11. package/build/dts/core/slack.d.ts +22 -0
  12. package/build/dts/core/slack.d.ts.map +1 -0
  13. package/build/dts/core/structure.d.ts +1 -0
  14. package/build/dts/core/structure.d.ts.map +1 -1
  15. package/build/dts/domain/architecture-config.d.ts +324 -1
  16. package/build/dts/domain/architecture-config.d.ts.map +1 -1
  17. package/build/dts/domain/architecture-error.d.ts +8 -0
  18. package/build/dts/domain/architecture-error.d.ts.map +1 -1
  19. package/build/dts/domain/facts.d.ts +1 -0
  20. package/build/dts/domain/facts.d.ts.map +1 -1
  21. package/build/dts/domain/manifest-location.d.ts +9 -0
  22. package/build/dts/domain/manifest-location.d.ts.map +1 -0
  23. package/build/dts/domain/report.d.ts +16 -0
  24. package/build/dts/domain/report.d.ts.map +1 -0
  25. package/build/dts/domain/snapshot.d.ts +224 -0
  26. package/build/dts/domain/snapshot.d.ts.map +1 -0
  27. package/build/dts/domain/violation.d.ts +1 -1
  28. package/build/dts/domain/violation.d.ts.map +1 -1
  29. package/build/dts/index.d.ts +24 -9
  30. package/build/dts/index.d.ts.map +1 -1
  31. package/build/dts/infrastructure/campaign-functions.d.ts +7 -0
  32. package/build/dts/infrastructure/campaign-functions.d.ts.map +1 -0
  33. package/build/dts/infrastructure/manifest-file.d.ts +11 -2
  34. package/build/dts/infrastructure/manifest-file.d.ts.map +1 -1
  35. package/build/dts/infrastructure/manifest-include.d.ts +16 -0
  36. package/build/dts/infrastructure/manifest-include.d.ts.map +1 -0
  37. package/build/dts/infrastructure/report-source-fake.d.ts +4 -0
  38. package/build/dts/infrastructure/report-source-fake.d.ts.map +1 -0
  39. package/build/dts/infrastructure/report-source-live.d.ts +3 -0
  40. package/build/dts/infrastructure/report-source-live.d.ts.map +1 -0
  41. package/build/dts/infrastructure/syntax-matcher-fake.d.ts +10 -0
  42. package/build/dts/infrastructure/syntax-matcher-fake.d.ts.map +1 -0
  43. package/build/dts/infrastructure/walk.d.ts +6 -0
  44. package/build/dts/infrastructure/walk.d.ts.map +1 -1
  45. package/build/dts/load/policy.d.ts +16 -0
  46. package/build/dts/load/policy.d.ts.map +1 -1
  47. package/build/dts/manifest/compile.d.ts +7 -2
  48. package/build/dts/manifest/compile.d.ts.map +1 -1
  49. package/build/dts/manifest/expand.d.ts +27 -0
  50. package/build/dts/manifest/expand.d.ts.map +1 -0
  51. package/build/dts/manifest/infer.d.ts +55 -0
  52. package/build/dts/manifest/infer.d.ts.map +1 -0
  53. package/build/dts/manifest/json-schema.d.ts +10 -0
  54. package/build/dts/manifest/json-schema.d.ts.map +1 -0
  55. package/build/dts/manifest/manifest.d.ts +381 -1
  56. package/build/dts/manifest/manifest.d.ts.map +1 -1
  57. package/build/dts/ports/campaign-predicate.d.ts +24 -0
  58. package/build/dts/ports/campaign-predicate.d.ts.map +1 -0
  59. package/build/dts/ports/language.d.ts +4 -0
  60. package/build/dts/ports/language.d.ts.map +1 -1
  61. package/build/dts/ports/report-source.d.ts +14 -0
  62. package/build/dts/ports/report-source.d.ts.map +1 -0
  63. package/build/dts/ports/syntax-matcher.d.ts +21 -0
  64. package/build/dts/ports/syntax-matcher.d.ts.map +1 -0
  65. package/build/dts/testing.d.ts +2 -0
  66. package/build/dts/testing.d.ts.map +1 -1
  67. package/build/esm/core/campaigns.js +778 -0
  68. package/build/esm/core/campaigns.js.map +1 -0
  69. package/build/esm/core/coverage.js +107 -32
  70. package/build/esm/core/coverage.js.map +1 -1
  71. package/build/esm/core/graph.js +45 -0
  72. package/build/esm/core/graph.js.map +1 -1
  73. package/build/esm/core/imports.js +14 -9
  74. package/build/esm/core/imports.js.map +1 -1
  75. package/build/esm/core/ledger.js +171 -0
  76. package/build/esm/core/ledger.js.map +1 -0
  77. package/build/esm/core/slack.js +76 -0
  78. package/build/esm/core/slack.js.map +1 -0
  79. package/build/esm/core/structure.js +5 -2
  80. package/build/esm/core/structure.js.map +1 -1
  81. package/build/esm/domain/architecture-config.js +158 -1
  82. package/build/esm/domain/architecture-config.js.map +1 -1
  83. package/build/esm/domain/architecture-error.js +27 -0
  84. package/build/esm/domain/architecture-error.js.map +1 -1
  85. package/build/esm/domain/manifest-location.js +21 -0
  86. package/build/esm/domain/manifest-location.js.map +1 -0
  87. package/build/esm/domain/report.js +168 -0
  88. package/build/esm/domain/report.js.map +1 -0
  89. package/build/esm/domain/snapshot.js +141 -0
  90. package/build/esm/domain/snapshot.js.map +1 -0
  91. package/build/esm/domain/violation.js.map +1 -1
  92. package/build/esm/index.js +21 -8
  93. package/build/esm/index.js.map +1 -1
  94. package/build/esm/infrastructure/campaign-functions.js +67 -0
  95. package/build/esm/infrastructure/campaign-functions.js.map +1 -0
  96. package/build/esm/infrastructure/manifest-file.js +158 -7
  97. package/build/esm/infrastructure/manifest-file.js.map +1 -1
  98. package/build/esm/infrastructure/manifest-include.js +187 -0
  99. package/build/esm/infrastructure/manifest-include.js.map +1 -0
  100. package/build/esm/infrastructure/report-source-fake.js +6 -0
  101. package/build/esm/infrastructure/report-source-fake.js.map +1 -0
  102. package/build/esm/infrastructure/report-source-live.js +165 -0
  103. package/build/esm/infrastructure/report-source-live.js.map +1 -0
  104. package/build/esm/infrastructure/syntax-matcher-fake.js +33 -0
  105. package/build/esm/infrastructure/syntax-matcher-fake.js.map +1 -0
  106. package/build/esm/infrastructure/walk.js +57 -1
  107. package/build/esm/infrastructure/walk.js.map +1 -1
  108. package/build/esm/load/policy.js +123 -3
  109. package/build/esm/load/policy.js.map +1 -1
  110. package/build/esm/manifest/compile.js +228 -26
  111. package/build/esm/manifest/compile.js.map +1 -1
  112. package/build/esm/manifest/expand.js +116 -0
  113. package/build/esm/manifest/expand.js.map +1 -0
  114. package/build/esm/manifest/infer.js +455 -0
  115. package/build/esm/manifest/infer.js.map +1 -0
  116. package/build/esm/manifest/json-schema.js +135 -0
  117. package/build/esm/manifest/json-schema.js.map +1 -0
  118. package/build/esm/manifest/manifest.js +243 -5
  119. package/build/esm/manifest/manifest.js.map +1 -1
  120. package/build/esm/ports/campaign-predicate.js +2 -0
  121. package/build/esm/ports/campaign-predicate.js.map +1 -0
  122. package/build/esm/ports/report-source.js +7 -0
  123. package/build/esm/ports/report-source.js.map +1 -0
  124. package/build/esm/ports/syntax-matcher.js +12 -0
  125. package/build/esm/ports/syntax-matcher.js.map +1 -0
  126. package/build/esm/testing.js +2 -0
  127. package/build/esm/testing.js.map +1 -1
  128. package/package.json +9 -3
  129. package/schema/architecture-node.schema.json +2405 -0
  130. package/schema/architecture.schema.json +2825 -0
  131. package/schema/conformance.schema.json +775 -0
  132. package/src/core/campaigns.ts +1056 -0
  133. package/src/core/coverage.ts +164 -34
  134. package/src/core/graph.ts +48 -0
  135. package/src/core/imports.ts +29 -13
  136. package/src/core/ledger.ts +242 -0
  137. package/src/core/slack.ts +135 -0
  138. package/src/core/structure.ts +10 -5
  139. package/src/domain/architecture-config.ts +205 -1
  140. package/src/domain/architecture-error.ts +30 -0
  141. package/src/domain/facts.ts +9 -4
  142. package/src/domain/manifest-location.ts +41 -0
  143. package/src/domain/report.ts +203 -0
  144. package/src/domain/snapshot.ts +302 -0
  145. package/src/domain/violation.ts +4 -1
  146. package/src/index.ts +172 -3
  147. package/src/infrastructure/campaign-functions.ts +98 -0
  148. package/src/infrastructure/manifest-file.ts +204 -8
  149. package/src/infrastructure/manifest-include.ts +318 -0
  150. package/src/infrastructure/report-source-fake.ts +10 -0
  151. package/src/infrastructure/report-source-live.ts +192 -0
  152. package/src/infrastructure/syntax-matcher-fake.ts +51 -0
  153. package/src/infrastructure/walk.ts +70 -1
  154. package/src/load/policy.ts +193 -3
  155. package/src/manifest/compile.ts +290 -28
  156. package/src/manifest/expand.ts +183 -0
  157. package/src/manifest/infer.ts +643 -0
  158. package/src/manifest/json-schema.ts +168 -0
  159. package/src/manifest/manifest.ts +339 -11
  160. package/src/ports/campaign-predicate.ts +30 -0
  161. package/src/ports/language.ts +17 -0
  162. package/src/ports/report-source.ts +35 -0
  163. package/src/ports/syntax-matcher.ts +42 -0
  164. package/src/testing.ts +2 -0
@@ -0,0 +1,141 @@
1
+ import * as Result from "effect/Result";
2
+ import type { BindingKind, CampaignProbe, CampaignRule, CampaignUnit, DeclarationKind, MemberSubject, ReportFormat } from "../domain/architecture-config.js";
3
+ import { PatternInvalid } from "../domain/architecture-error.js";
4
+ import type { SourceFacts } from "../domain/facts.js";
5
+ import type { Violation } from "../domain/violation.js";
6
+ import type { CampaignPredicate, Range } from "../ports/campaign-predicate.js";
7
+ import type { FactExtractor } from "../ports/fact-extractor.js";
8
+ import type { FileSystem } from "../ports/file-system.js";
9
+ import type { ModuleResolver } from "../ports/module-resolver.js";
10
+ import type { ReportSource, ReportSpec } from "../ports/report-source.js";
11
+ import type { SyntaxMatcher, SyntaxTree } from "../ports/syntax-matcher.js";
12
+ export type { CampaignPredicate, CampaignPredicateInput, CampaignSubject, Range, } from "../ports/campaign-predicate.js";
13
+ type Target = {
14
+ readonly kind: "path";
15
+ readonly pattern: RegExp;
16
+ } | {
17
+ readonly kind: "external";
18
+ readonly name: string;
19
+ } | {
20
+ readonly kind: "builtin";
21
+ readonly name: string;
22
+ };
23
+ type CompiledNarrowing = {
24
+ readonly capture: string;
25
+ readonly regex: RegExp | null;
26
+ readonly binding: {
27
+ readonly resolves: Target;
28
+ readonly member: ReadonlyArray<string> | null;
29
+ } | null;
30
+ };
31
+ export type CompiledDetector = {
32
+ readonly kind: "all";
33
+ readonly terms: ReadonlyArray<CompiledDetector>;
34
+ } | {
35
+ readonly kind: "any";
36
+ readonly terms: ReadonlyArray<CompiledDetector>;
37
+ } | {
38
+ readonly kind: "not";
39
+ readonly term: CompiledDetector;
40
+ } | {
41
+ readonly kind: "path";
42
+ readonly file: ReadonlyArray<RegExp>;
43
+ readonly fileNot: ReadonlyArray<RegExp>;
44
+ readonly subject: number | null;
45
+ readonly convention: RegExp | null;
46
+ } | {
47
+ readonly kind: "imports";
48
+ readonly resolves: Target;
49
+ readonly symbols: ReadonlyArray<string> | null;
50
+ } | {
51
+ readonly kind: "exports";
52
+ readonly name: ReadonlyArray<RegExp>;
53
+ readonly kinds: ReadonlyArray<BindingKind> | null;
54
+ readonly declares: ReadonlyArray<DeclarationKind> | null;
55
+ readonly reexport: boolean | null;
56
+ } | {
57
+ readonly kind: "members";
58
+ readonly subject: MemberSubject;
59
+ readonly name: ReadonlyArray<RegExp>;
60
+ readonly in: ReadonlyArray<RegExp>;
61
+ readonly declares: ReadonlyArray<DeclarationKind> | null;
62
+ } | {
63
+ readonly kind: "requires";
64
+ readonly templates: ReadonlyArray<string>;
65
+ } | {
66
+ readonly kind: "content";
67
+ readonly regex: RegExp;
68
+ } | {
69
+ readonly kind: "syntax";
70
+ readonly rule: unknown;
71
+ readonly where: ReadonlyArray<CompiledNarrowing>;
72
+ } | {
73
+ readonly kind: "report";
74
+ readonly command: ReadonlyArray<string> | null;
75
+ readonly file: ReadonlyArray<string> | null;
76
+ readonly format: ReportFormat;
77
+ readonly pattern: string | null;
78
+ readonly codes: ReadonlySet<string> | null;
79
+ readonly codesNot: ReadonlySet<string>;
80
+ } | {
81
+ readonly kind: "fn";
82
+ readonly name: string;
83
+ };
84
+ export type CompiledCampaign = {
85
+ readonly name: string;
86
+ readonly id: string;
87
+ readonly title: string | null;
88
+ readonly message: string;
89
+ readonly why: string;
90
+ readonly owner: string | null;
91
+ readonly scope: ReadonlyArray<RegExp>;
92
+ readonly unit: CampaignUnit;
93
+ readonly detect: CompiledDetector;
94
+ readonly probes: {
95
+ readonly fires: ReadonlyArray<CampaignProbe>;
96
+ readonly ignores: ReadonlyArray<CampaignProbe>;
97
+ };
98
+ readonly staleAfter: number;
99
+ readonly onComplete: "keep" | "remove";
100
+ };
101
+ export declare const compileCampaignRule: (rule: CampaignRule) => Result.Result<CompiledCampaign, PatternInvalid>;
102
+ export declare const compileCampaignRules: (rules: ReadonlyArray<CampaignRule>) => Result.Result<ReadonlyArray<CompiledCampaign>, PatternInvalid>;
103
+ export declare const campaignsSelecting: (rules: ReadonlyArray<CompiledCampaign>, file: string) => ReadonlyArray<CompiledCampaign>;
104
+ declare const LEAF_ORDER: readonly ["path", "imports", "exports", "members", "requires", "content", "syntax", "report", "fn"];
105
+ type LeafKind = (typeof LEAF_ORDER)[number];
106
+ export declare const leafTermsOf: (detector: CompiledDetector) => ReadonlyArray<LeafKind>;
107
+ export type CampaignInput = {
108
+ readonly file: string;
109
+ readonly text: string;
110
+ readonly facts: SourceFacts;
111
+ readonly resolver: ModuleResolver;
112
+ readonly fileSystem: FileSystem;
113
+ readonly syntax: SyntaxTree | null;
114
+ readonly functions: ReadonlyMap<string, CampaignPredicate>;
115
+ readonly reports: ReportSource;
116
+ };
117
+ export type CampaignHit = {
118
+ readonly violation: Violation;
119
+ readonly campaign: string;
120
+ readonly range?: Range;
121
+ };
122
+ export declare const matchKeyOf: (anchor: string | null, text: string) => string;
123
+ export declare const evaluateCampaign: (rule: CompiledCampaign, input: CampaignInput) => ReadonlyArray<CampaignHit>;
124
+ export declare const reportSpecsOf: (rules: ReadonlyArray<CompiledCampaign>) => ReadonlyArray<ReportSpec>;
125
+ export declare const evaluateCampaigns: (selected: ReadonlyArray<CompiledCampaign>, input: CampaignInput) => ReadonlyArray<CampaignHit>;
126
+ export type TermAnswer = {
127
+ readonly term: string;
128
+ readonly answer: boolean;
129
+ readonly count?: number;
130
+ };
131
+ export declare const explainCampaign: (rule: CompiledCampaign, input: CampaignInput) => ReadonlyArray<TermAnswer>;
132
+ export declare const probeInputOf: (probe: CampaignProbe, extractor: FactExtractor, matcher: SyntaxMatcher | null, functions: ReadonlyMap<string, CampaignPredicate>) => CampaignInput;
133
+ export type FailedProbe = {
134
+ readonly name: string;
135
+ readonly probe: CampaignProbe;
136
+ readonly expected: "fires" | "ignores";
137
+ readonly admittedBy?: string;
138
+ readonly outOfScope?: boolean;
139
+ };
140
+ export declare const campaignsFailingTheirProbe: (rules: ReadonlyArray<CompiledCampaign>, extractor: FactExtractor, matcherFor: (file: string) => SyntaxMatcher | null, functions: ReadonlyMap<string, CampaignPredicate>) => ReadonlyArray<FailedProbe>;
141
+ //# sourceMappingURL=campaigns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../../src/core/campaigns.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,21 @@ export type CoverageInputs = {
27
27
  readonly surfaceRules: ReadonlyArray<CompiledSurfaceRule>;
28
28
  readonly graph: CompiledGraph;
29
29
  };
30
+ export type Reach = {
31
+ readonly file: string;
32
+ readonly imports: boolean;
33
+ readonly structure: "enumerated" | "open" | null;
34
+ readonly members: boolean;
35
+ readonly surface: boolean;
36
+ readonly graph: boolean;
37
+ };
38
+ export declare const reachOf: (policy: CoverageInputs, files: ReadonlyArray<string>) => ReadonlyArray<Reach>;
30
39
  export declare const coverageOf: (policy: CoverageInputs, files: ReadonlyArray<string>) => Coverage;
40
+ export type Residue = {
41
+ readonly files: ReadonlyArray<string>;
42
+ readonly folders: ReadonlyArray<string>;
43
+ };
44
+ export declare const residueOf: (policy: CoverageInputs, files: ReadonlyArray<string>) => Residue;
31
45
  export type CoverageFloors = {
32
46
  readonly imports?: number;
33
47
  readonly structure?: number;
@@ -36,6 +50,12 @@ export type CoverageFloors = {
36
50
  readonly graph?: number;
37
51
  };
38
52
  export type CoverageFamily = keyof CoverageFloors;
53
+ export type Vacancy = ReadonlyArray<{
54
+ readonly node: string;
55
+ readonly allowances: number;
56
+ }>;
57
+ export declare const vacantNodesOf: (rules: ReadonlyArray<CompiledImportRule>, files: ReadonlyArray<string>) => ReadonlySet<string>;
58
+ export declare const vacancyOf: (rules: ReadonlyArray<CompiledImportRule>, files: ReadonlyArray<string>) => Vacancy;
39
59
  export declare const fractionOf: (covered: number, total: number) => number;
40
60
  export declare const fractionsOf: (coverage: Coverage) => Readonly<Record<CoverageFamily, number>>;
41
61
  export type Shortfall = {
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../../src/core/coverage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAOxD,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAE9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAGvB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACxD,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B,CAAC;AAiBF,eAAO,MAAM,UAAU,WAAY,cAAc,SAAS,aAAa,CAAC,MAAM,CAAC,KAAG,QA4CjF,CAAC;AAIF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;AAElD,eAAO,MAAM,UAAU,YAAa,MAAM,SAAS,MAAM,KAAG,MACzB,CAAC;AAEpC,eAAO,MAAM,WAAW,aAAc,QAAQ,KAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAMtF,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,aACnB,QAAQ,UACV,cAAc,KACrB,aAAa,CAAC,SAAS,CAczB,CAAC"}
1
+ {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../../src/core/coverage.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,8 @@ export type CompiledGraph = {
34
34
  export declare const EMPTY_GRAPH_RULES: CompiledGraph;
35
35
  export declare const hasGraphRules: (rules: CompiledGraph) => boolean;
36
36
  export declare const compileGraphRules: (config: GraphConfig | undefined) => Result.Result<CompiledGraph, PatternInvalid>;
37
+ export declare const cyclesIn: (graph: Graph) => ReadonlyArray<ReadonlyArray<string>>;
38
+ export declare const heightOf: (graph: Graph) => ReadonlyMap<string, number>;
37
39
  export declare const evaluateGraph: (rules: CompiledGraph, graph: Graph) => ReadonlyArray<Violation>;
38
40
  export declare const graphOf: (probe: GraphProbe) => Graph;
39
41
  export declare const graphRulesFailingTheirProbe: (rules: CompiledGraph) => ReadonlyArray<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/core/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EACV,WAAW,EAGX,UAAU,EAEX,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAMxD,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG;IAC7D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACzD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAsD,CAAC;AAEvF,eAAO,MAAM,aAAa,UAAW,aAAa,KAAG,OACgB,CAAC;AA+EtE,eAAO,MAAM,iBAAiB,WACpB,WAAW,GAAG,SAAS,KAC9B,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAoB7C,CAAC;AAkJF,eAAO,MAAM,aAAa,UAAW,aAAa,SAAS,KAAK,KAAG,aAAa,CAAC,SAAS,CAIzF,CAAC;AAGF,eAAO,MAAM,OAAO,UAAW,UAAU,KAAG,KAW3C,CAAC;AAEF,eAAO,MAAM,2BAA2B,UAAW,aAAa,KAAG,aAAa,CAAC,MAAM,CAUtF,CAAC"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/core/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EACV,WAAW,EAGX,UAAU,EAEX,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAMxD,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG;IAC7D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACzD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAsD,CAAC;AAEvF,eAAO,MAAM,aAAa,UAAW,aAAa,KAAG,OACgB,CAAC;AA+EtE,eAAO,MAAM,iBAAiB,WACpB,WAAW,GAAG,SAAS,KAC9B,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAoB7C,CAAC;AAkEF,eAAO,MAAM,QAAQ,UAAW,KAAK,KAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAOvE,CAAC;AAQL,eAAO,MAAM,QAAQ,UAAW,KAAK,KAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CA4BjE,CAAC;AAqFF,eAAO,MAAM,aAAa,UAAW,aAAa,SAAS,KAAK,KAAG,aAAa,CAAC,SAAS,CAIzF,CAAC;AAGF,eAAO,MAAM,OAAO,UAAW,UAAU,KAAG,KAW3C,CAAC;AAEF,eAAO,MAAM,2BAA2B,UAAW,aAAa,KAAG,aAAa,CAAC,MAAM,CAUtF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as Result from "effect/Result";
2
- import type { ImportProbe, ImportProbeTarget, ImportRule } from "../domain/architecture-config.js";
2
+ import type { Allowance, ImportProbe, ImportProbeTarget, ImportRule } from "../domain/architecture-config.js";
3
3
  import type { ImportUnresolved, PatternInvalid } from "../domain/architecture-error.js";
4
4
  import type { Violation } from "../domain/violation.js";
5
5
  import type { DependencyKind, ModuleResolver, ResolvedTarget } from "../ports/module-resolver.js";
@@ -11,6 +11,7 @@ export type CompiledImportRule = {
11
11
  readonly to: ReadonlyArray<string>;
12
12
  readonly toNot: ReadonlyArray<string>;
13
13
  readonly externals: ReadonlySet<string>;
14
+ readonly allowances: ReadonlyArray<Allowance>;
14
15
  readonly dependencyKind: DependencyKind | null;
15
16
  readonly probe: ImportProbe;
16
17
  };
@@ -22,6 +23,7 @@ export type ImportEdge = {
22
23
  };
23
24
  export type SelectedRule = readonly [CompiledImportRule, RegExpExecArray];
24
25
  export declare const rulesSelecting: (rules: ReadonlyArray<CompiledImportRule>, importer: string) => ReadonlyArray<SelectedRule>;
26
+ export declare const evaluateResolvedEdge: (selected: ReadonlyArray<SelectedRule>, importer: string, target: ResolvedTarget) => ReadonlyArray<Violation>;
25
27
  export declare const evaluateSelectedEdge: (selected: ReadonlyArray<SelectedRule>, resolver: ModuleResolver, edge: ImportEdge) => Result.Result<ReadonlyArray<Violation>, ImportUnresolved>;
26
28
  export declare const evaluateImportEdge: (rules: ReadonlyArray<CompiledImportRule>, resolver: ModuleResolver, edge: ImportEdge) => Result.Result<ReadonlyArray<Violation>, ImportUnresolved>;
27
29
  export declare const probeTargetOf: (to: ImportProbeTarget) => ResolvedTarget;
@@ -1 +1 @@
1
- {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/core/imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AASlG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAIxC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAGtC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,SACtB,UAAU,KACf,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAuBlD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,aAAa,CAAC,UAAU,CAAC,KAC/B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,cAAc,CAQjE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAK1E,eAAO,MAAM,cAAc,UAClB,aAAa,CAAC,kBAAkB,CAAC,YAC9B,MAAM,KACf,aAAa,CAAC,YAAY,CAO5B,CAAC;AAiBF,eAAO,MAAM,oBAAoB,aACrB,aAAa,CAAC,YAAY,CAAC,YAC3B,cAAc,QAClB,UAAU,KACf,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAqB1D,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,aAAa,CAAC,kBAAkB,CAAC,YAC9B,cAAc,QAClB,UAAU,KACf,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,gBAAgB,CACiB,CAAC;AAI7E,eAAO,MAAM,aAAa,OAAQ,iBAAiB,KAAG,cAIrD,CAAC;AAKF,eAAO,MAAM,sBAAsB,UAC1B,aAAa,CAAC,kBAAkB,CAAC,KACvC,aAAa,CAAC,kBAAkB,CAK/B,CAAC"}
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/core/imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,UAAU,EACX,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AASlG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAIxC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAGtC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAGxC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,SACtB,UAAU,KACf,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAwBlD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,aAAa,CAAC,UAAU,CAAC,KAC/B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,cAAc,CAQjE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAK1E,eAAO,MAAM,cAAc,UAClB,aAAa,CAAC,kBAAkB,CAAC,YAC9B,MAAM,KACf,aAAa,CAAC,YAAY,CAO5B,CAAC;AAmBF,eAAO,MAAM,oBAAoB,aACrB,aAAa,CAAC,YAAY,CAAC,YAC3B,MAAM,UACR,cAAc,KACrB,aAAa,CAAC,SAAS,CAczB,CAAC;AAEF,eAAO,MAAM,oBAAoB,aACrB,aAAa,CAAC,YAAY,CAAC,YAC3B,cAAc,QAClB,UAAU,KACf,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAM1D,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,aAAa,CAAC,kBAAkB,CAAC,YAC9B,cAAc,QAClB,UAAU,KACf,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,gBAAgB,CACiB,CAAC;AAI7E,eAAO,MAAM,aAAa,OAAQ,iBAAiB,KAAG,cAIrD,CAAC;AAKF,eAAO,MAAM,sBAAsB,UAC1B,aAAa,CAAC,kBAAkB,CAAC,KACvC,aAAa,CAAC,kBAAkB,CAK/B,CAAC"}
@@ -0,0 +1,61 @@
1
+ import * as Result from "effect/Result";
2
+ import * as Schema from "effect/Schema";
3
+ import type { CampaignUnit } from "../domain/architecture-config.js";
4
+ import type { Violation } from "../domain/violation.js";
5
+ declare const Regression: Schema.Struct<{
6
+ readonly at: Schema.String;
7
+ readonly by: Schema.String;
8
+ readonly delta: Schema.Finite;
9
+ readonly reason: Schema.String;
10
+ readonly entries: Schema.$Array<Schema.String>;
11
+ }>;
12
+ export declare const Ledger: Schema.Struct<{
13
+ readonly version: Schema.Literal<1>;
14
+ readonly id: Schema.String;
15
+ readonly created: Schema.String;
16
+ readonly initial: Schema.Finite;
17
+ readonly fixed: Schema.Finite;
18
+ readonly lastProgress: Schema.String;
19
+ readonly regressions: Schema.$Array<Schema.Struct<{
20
+ readonly at: Schema.String;
21
+ readonly by: Schema.String;
22
+ readonly delta: Schema.Finite;
23
+ readonly reason: Schema.String;
24
+ readonly entries: Schema.$Array<Schema.String>;
25
+ }>>;
26
+ readonly entries: Schema.$Array<Schema.String>;
27
+ }>;
28
+ export type Ledger = typeof Ledger.Type;
29
+ export type Regression = typeof Regression.Type;
30
+ export declare const EMPTY_LEDGER: (id: string, now: number) => Ledger;
31
+ export declare const decodeLedger: (raw: unknown) => Result.Result<Ledger, string>;
32
+ export declare const serializeLedger: (ledger: Ledger) => string;
33
+ export declare const entryOf: (violation: Violation) => string;
34
+ export declare const ledgerArithmeticHolds: (ledger: Ledger) => boolean;
35
+ export type Reconciliation = {
36
+ readonly ledgered: ReadonlyArray<Violation>;
37
+ readonly unrecorded: ReadonlyArray<Violation>;
38
+ readonly stale: ReadonlyArray<string>;
39
+ readonly drifted: ReadonlyArray<{
40
+ readonly from: string;
41
+ readonly to: string;
42
+ }>;
43
+ };
44
+ export declare const reconcile: (ledger: Ledger, hits: Iterable<Violation>, unit: CampaignUnit) => Reconciliation;
45
+ export declare const staleEntriesOf: (ledger: Ledger, hits: Iterable<Violation>, unit: CampaignUnit) => ReadonlyArray<string>;
46
+ export declare const newEntriesOf: (ledger: Ledger, hits: Iterable<Violation>, unit: CampaignUnit) => ReadonlyArray<string>;
47
+ export declare const ledgerOf: (id: string, hits: Iterable<Violation>, now: number) => Ledger;
48
+ export declare const pruned: (ledger: Ledger, hits: Iterable<Violation>, unit: CampaignUnit, now: number) => Ledger;
49
+ export type RegressionRecord = {
50
+ readonly at: number;
51
+ readonly by: string;
52
+ readonly reason: string;
53
+ };
54
+ export declare const allowed: (ledger: Ledger, entries: Iterable<string>, record: RegressionRecord) => Ledger;
55
+ export declare const progressOf: (ledger: Ledger) => number;
56
+ export declare const isComplete: (ledger: Ledger) => boolean;
57
+ export declare const isStalled: (rule: {
58
+ readonly staleAfter: number;
59
+ }, ledger: Ledger, now: number) => boolean;
60
+ export {};
61
+ //# sourceMappingURL=ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../../src/core/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAiBxD,QAAA,MAAM,UAAU;;;;;;EAMd,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;EAajB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC;AACxC,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAIhD,eAAO,MAAM,YAAY,OAAQ,MAAM,OAAO,MAAM,KAAG,MAYtD,CAAC;AAMF,eAAO,MAAM,YAAY,QAAS,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAKvE,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,MAAgD,CAAC;AAGlG,eAAO,MAAM,OAAO,cAAe,SAAS,KAAG,MACyC,CAAC;AAKzF,eAAO,MAAM,qBAAqB,WAAY,MAAM,KAAG,OACQ,CAAC;AAMhE,MAAM,MAAM,cAAc,GAAG;IAE3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAE5C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAE9C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAGtC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjF,CAAC;AAEF,eAAO,MAAM,SAAS,WACZ,MAAM,QACR,QAAQ,CAAC,SAAS,CAAC,QACnB,YAAY,KACjB,cA0CF,CAAC;AAEF,eAAO,MAAM,cAAc,WACjB,MAAM,QACR,QAAQ,CAAC,SAAS,CAAC,QACnB,YAAY,KACjB,aAAa,CAAC,MAAM,CAAwC,CAAC;AAEhE,eAAO,MAAM,YAAY,WACf,MAAM,QACR,QAAQ,CAAC,SAAS,CAAC,QACnB,YAAY,KACjB,aAAa,CAAC,MAAM,CAA0D,CAAC;AAKlF,eAAO,MAAM,QAAQ,OAAQ,MAAM,QAAQ,QAAQ,CAAC,SAAS,CAAC,OAAO,MAAM,KAAG,MAG7E,CAAC;AAKF,eAAO,MAAM,MAAM,WACT,MAAM,QACR,QAAQ,CAAC,SAAS,CAAC,QACnB,YAAY,OACb,MAAM,KACV,MAeF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAKF,eAAO,MAAM,OAAO,WACV,MAAM,WACL,QAAQ,CAAC,MAAM,CAAC,UACjB,gBAAgB,KACvB,MAkBF,CAAC;AAIF,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,MAG3C,CAAC;AAEF,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,OAAsC,CAAC;AAEnF,eAAO,MAAM,SAAS,SACd;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,UAC7B,MAAM,OACT,MAAM,KACV,OAAyF,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Allowance } from "../domain/architecture-config.js";
2
+ import type { ResolvedTarget } from "../ports/module-resolver.js";
3
+ import type { CompiledImportRule } from "./imports.js";
4
+ export type ObservedEdge = {
5
+ readonly importer: string;
6
+ readonly target: ResolvedTarget;
7
+ };
8
+ export type Slack = Pick<Allowance, "node" | "kind" | "entry"> & {
9
+ readonly fragment?: string;
10
+ readonly of?: number;
11
+ };
12
+ export type Concentration = Pick<Allowance, "kind" | "entry"> & {
13
+ readonly fragment: string;
14
+ readonly usedAt: number;
15
+ readonly of: number;
16
+ };
17
+ export type SlackReport = {
18
+ readonly slack: ReadonlyArray<Slack>;
19
+ readonly concentration: ReadonlyArray<Concentration>;
20
+ };
21
+ export declare const slackOf: (rules: ReadonlyArray<CompiledImportRule>, edges: ReadonlyArray<ObservedEdge>, files: ReadonlyArray<string>) => SlackReport;
22
+ //# sourceMappingURL=slack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../../src/core/slack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAWvD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC,CAAC;AAMF,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAMF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CACtD,CAAC;AAuCF,eAAO,MAAM,OAAO,UACX,aAAa,CAAC,kBAAkB,CAAC,SACjC,aAAa,CAAC,YAAY,CAAC,SAC3B,aAAa,CAAC,MAAM,CAAC,KAC3B,WAkDF,CAAC"}
@@ -42,6 +42,7 @@ export type CompiledStructure = {
42
42
  };
43
43
  export declare const EMPTY_STRUCTURE: CompiledStructure;
44
44
  export declare const compileStructure: (config: StructureConfig | undefined) => Result.Result<CompiledStructure, PatternInvalid>;
45
+ export declare const siblingsOf: (templates: ReadonlyArray<string>, file: string) => ReadonlyArray<string>;
45
46
  export declare const requiredSiblingsOf: (rule: CompiledStructureParity, file: string) => ReadonlyArray<string>;
46
47
  export declare const evaluateStructure: (structure: CompiledStructure, fileSystem: FileSystem, file: string) => ReadonlyArray<Violation>;
47
48
  export declare const structureRulesFailingTheirProbe: (structure: CompiledStructure) => ReadonlyArray<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../../src/core/structure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;CACzD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,iBAK7B,CAAC;AAgFF,eAAO,MAAM,gBAAgB,WACnB,eAAe,GAAG,SAAS,KAClC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAkBjD,CAAC;AAgCF,eAAO,MAAM,kBAAkB,SACvB,uBAAuB,QACvB,MAAM,KACX,aAAa,CAAC,MAAM,CAMtB,CAAC;AAiCF,eAAO,MAAM,iBAAiB,cACjB,iBAAiB,cAChB,UAAU,QAChB,MAAM,KACX,aAAa,CAAC,SAAS,CAiEzB,CAAC;AAMF,eAAO,MAAM,+BAA+B,cAC/B,iBAAiB,KAC3B,aAAa,CAAC,MAAM,CAoCtB,CAAC"}
1
+ {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../../src/core/structure.ts"],"names":[],"mappings":"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"}