@goodbones/core 0.1.0-beta.3 → 0.1.0-beta.5
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/build/dts/core/coverage.d.ts +14 -0
- package/build/dts/core/coverage.d.ts.map +1 -1
- package/build/dts/core/graph.d.ts +2 -0
- package/build/dts/core/graph.d.ts.map +1 -1
- package/build/dts/core/imports.d.ts +3 -1
- package/build/dts/core/imports.d.ts.map +1 -1
- package/build/dts/core/slack.d.ts +10 -0
- package/build/dts/core/slack.d.ts.map +1 -0
- package/build/dts/domain/architecture-config.d.ts +13 -0
- package/build/dts/domain/architecture-config.d.ts.map +1 -1
- package/build/dts/domain/snapshot.d.ts +121 -0
- package/build/dts/domain/snapshot.d.ts.map +1 -0
- package/build/dts/index.d.ts +8 -5
- package/build/dts/index.d.ts.map +1 -1
- package/build/dts/infrastructure/walk.d.ts +6 -0
- package/build/dts/infrastructure/walk.d.ts.map +1 -1
- package/build/dts/manifest/compile.d.ts.map +1 -1
- package/build/dts/manifest/infer.d.ts +55 -0
- package/build/dts/manifest/infer.d.ts.map +1 -0
- package/build/dts/ports/language.d.ts +2 -0
- package/build/dts/ports/language.d.ts.map +1 -1
- package/build/esm/core/coverage.js +72 -32
- package/build/esm/core/coverage.js.map +1 -1
- package/build/esm/core/graph.js +45 -0
- package/build/esm/core/graph.js.map +1 -1
- package/build/esm/core/imports.js +14 -9
- package/build/esm/core/imports.js.map +1 -1
- package/build/esm/core/slack.js +39 -0
- package/build/esm/core/slack.js.map +1 -0
- package/build/esm/domain/architecture-config.js +19 -0
- package/build/esm/domain/architecture-config.js.map +1 -1
- package/build/esm/domain/snapshot.js +95 -0
- package/build/esm/domain/snapshot.js.map +1 -0
- package/build/esm/index.js +7 -4
- package/build/esm/index.js.map +1 -1
- package/build/esm/infrastructure/walk.js +57 -1
- package/build/esm/infrastructure/walk.js.map +1 -1
- package/build/esm/manifest/compile.js +25 -21
- package/build/esm/manifest/compile.js.map +1 -1
- package/build/esm/manifest/infer.js +455 -0
- package/build/esm/manifest/infer.js.map +1 -0
- package/package.json +3 -1
- package/schema/conformance.schema.json +457 -0
- package/src/core/coverage.ts +111 -34
- package/src/core/graph.ts +48 -0
- package/src/core/imports.ts +29 -13
- package/src/core/slack.ts +62 -0
- package/src/domain/architecture-config.ts +21 -0
- package/src/domain/snapshot.ts +180 -0
- package/src/index.ts +38 -1
- package/src/infrastructure/walk.ts +70 -1
- package/src/manifest/compile.ts +34 -27
- package/src/manifest/infer.ts +643 -0
- package/src/ports/language.ts +11 -0
|
@@ -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;
|
|
@@ -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;
|
|
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;AAmBF,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,OAAO,WACV,cAAc,SACf,aAAa,CAAC,MAAM,CAAC,KAC3B,aAAa,CAAC,KAAK,CA0BrB,CAAC;AAEF,eAAO,MAAM,UAAU,WAAY,cAAc,SAAS,aAAa,CAAC,MAAM,CAAC,KAAG,QAgBjF,CAAC;AAOF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,SAAS,WAAY,cAAc,SAAS,aAAa,CAAC,MAAM,CAAC,KAAG,OAahF,CAAC;AAyCF,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"}
|
|
@@ -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;
|
|
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,
|
|
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,10 @@
|
|
|
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
|
+
export declare const slackOf: (rules: ReadonlyArray<CompiledImportRule>, edges: ReadonlyArray<ObservedEdge>) => ReadonlyArray<Slack>;
|
|
10
|
+
//# 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;AAClE,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;AAIF,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAgB/D,eAAO,MAAM,OAAO,UACX,aAAa,CAAC,kBAAkB,CAAC,SACjC,aAAa,CAAC,YAAY,CAAC,KACjC,aAAa,CAAC,KAAK,CAsBrB,CAAC"}
|
|
@@ -12,6 +12,12 @@ declare const ImportProbe: Schema.Struct<{
|
|
|
12
12
|
readonly builtin: Schema.String;
|
|
13
13
|
}>]>;
|
|
14
14
|
}>;
|
|
15
|
+
export declare const Allowance: Schema.Struct<{
|
|
16
|
+
readonly node: Schema.String;
|
|
17
|
+
readonly kind: Schema.Literals<readonly ["allow", "external"]>;
|
|
18
|
+
readonly entry: Schema.String;
|
|
19
|
+
readonly pattern: Schema.optionalKey<Schema.String>;
|
|
20
|
+
}>;
|
|
15
21
|
export declare const ImportRule: Schema.Struct<{
|
|
16
22
|
readonly name: Schema.String;
|
|
17
23
|
readonly message: Schema.String;
|
|
@@ -27,6 +33,12 @@ export declare const ImportRule: Schema.Struct<{
|
|
|
27
33
|
readonly fromNot: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.$Array<Schema.String>]>>;
|
|
28
34
|
readonly to: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.$Array<Schema.String>]>>;
|
|
29
35
|
readonly toNot: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.$Array<Schema.String>]>>;
|
|
36
|
+
readonly allowances: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
37
|
+
readonly node: Schema.String;
|
|
38
|
+
readonly kind: Schema.Literals<readonly ["allow", "external"]>;
|
|
39
|
+
readonly entry: Schema.String;
|
|
40
|
+
readonly pattern: Schema.optionalKey<Schema.String>;
|
|
41
|
+
}>>>;
|
|
30
42
|
readonly externals: Schema.optionalKey<Schema.$Array<Schema.String>>;
|
|
31
43
|
readonly dependencyKind: Schema.optionalKey<Schema.Literals<readonly ["external", "local", "builtin"]>>;
|
|
32
44
|
}>;
|
|
@@ -291,6 +303,7 @@ declare const StructureConfig: Schema.Struct<{
|
|
|
291
303
|
readonly sameAs: Schema.optionalKey<Schema.Finite>;
|
|
292
304
|
}>>>;
|
|
293
305
|
}>;
|
|
306
|
+
export type Allowance = (typeof Allowance)["Type"];
|
|
294
307
|
export type ImportRule = (typeof ImportRule)["Type"];
|
|
295
308
|
export type ResolveConfig = (typeof ResolveConfig)["Type"];
|
|
296
309
|
export type ResolveScope = (typeof ResolveScope)["Type"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture-config.d.ts","sourceRoot":"","sources":["../../../src/domain/architecture-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAkBxC,QAAA,MAAM,iBAAiB;;;;IAIrB,CAAC;AAEH,QAAA,MAAM,WAAW;;;;;;;EAGf,CAAC;AAEH,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"architecture-config.d.ts","sourceRoot":"","sources":["../../../src/domain/architecture-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
export declare const SNAPSHOT_SCHEMA_ID = "https://dataquail.github.io/goodbones/schema/conformance.schema.json";
|
|
3
|
+
export declare const SNAPSHOT_VERSION = 1;
|
|
4
|
+
export declare const SnapshotViolation: Schema.Struct<{
|
|
5
|
+
readonly fingerprint: Schema.String;
|
|
6
|
+
readonly kind: Schema.Literals<readonly ["import", "export", "structure", "member", "surface", "graph"]>;
|
|
7
|
+
readonly ruleName: Schema.String;
|
|
8
|
+
readonly file: Schema.String;
|
|
9
|
+
readonly subject: Schema.NullOr<Schema.String>;
|
|
10
|
+
readonly message: Schema.String;
|
|
11
|
+
readonly baselined: Schema.Boolean;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const SnapshotSlack: Schema.Struct<{
|
|
14
|
+
readonly node: Schema.String;
|
|
15
|
+
readonly kind: Schema.Literals<readonly ["allow", "external"]>;
|
|
16
|
+
readonly entry: Schema.String;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const Snapshot: Schema.Struct<{
|
|
19
|
+
readonly version: Schema.Literal<1>;
|
|
20
|
+
readonly manifest: Schema.Struct<{
|
|
21
|
+
readonly path: Schema.String;
|
|
22
|
+
readonly sha256: Schema.String;
|
|
23
|
+
}>;
|
|
24
|
+
readonly roots: Schema.$Array<Schema.String>;
|
|
25
|
+
readonly files: Schema.Finite;
|
|
26
|
+
readonly ok: Schema.Boolean;
|
|
27
|
+
readonly coverage: Schema.Struct<Record<"graph" | "imports" | "members" | "structure" | "surface", Schema.Struct<{
|
|
28
|
+
readonly covered: Schema.Finite;
|
|
29
|
+
readonly total: Schema.Finite;
|
|
30
|
+
readonly floor: Schema.optionalKey<Schema.Finite>;
|
|
31
|
+
}>>>;
|
|
32
|
+
readonly residue: Schema.Struct<{
|
|
33
|
+
readonly files: Schema.$Array<Schema.String>;
|
|
34
|
+
readonly folders: Schema.$Array<Schema.String>;
|
|
35
|
+
}>;
|
|
36
|
+
readonly violations: Schema.$Array<Schema.Struct<{
|
|
37
|
+
readonly fingerprint: Schema.String;
|
|
38
|
+
readonly kind: Schema.Literals<readonly ["import", "export", "structure", "member", "surface", "graph"]>;
|
|
39
|
+
readonly ruleName: Schema.String;
|
|
40
|
+
readonly file: Schema.String;
|
|
41
|
+
readonly subject: Schema.NullOr<Schema.String>;
|
|
42
|
+
readonly message: Schema.String;
|
|
43
|
+
readonly baselined: Schema.Boolean;
|
|
44
|
+
}>>;
|
|
45
|
+
readonly unresolved: Schema.$Array<Schema.Struct<{
|
|
46
|
+
readonly file: Schema.String;
|
|
47
|
+
readonly specifier: Schema.String;
|
|
48
|
+
readonly detail: Schema.String;
|
|
49
|
+
}>>;
|
|
50
|
+
readonly stale: Schema.$Array<Schema.String>;
|
|
51
|
+
readonly baseline: Schema.Struct<{
|
|
52
|
+
readonly size: Schema.Finite;
|
|
53
|
+
}>;
|
|
54
|
+
readonly cycles: Schema.Finite;
|
|
55
|
+
readonly slack: Schema.$Array<Schema.Struct<{
|
|
56
|
+
readonly node: Schema.String;
|
|
57
|
+
readonly kind: Schema.Literals<readonly ["allow", "external"]>;
|
|
58
|
+
readonly entry: Schema.String;
|
|
59
|
+
}>>;
|
|
60
|
+
readonly adoption: Schema.Struct<{
|
|
61
|
+
readonly unrestricted: Schema.$Array<Schema.String>;
|
|
62
|
+
readonly partial: Schema.$Array<Schema.String>;
|
|
63
|
+
}>;
|
|
64
|
+
}>;
|
|
65
|
+
export type Snapshot = typeof Snapshot.Type;
|
|
66
|
+
export type SnapshotViolation = typeof SnapshotViolation.Type;
|
|
67
|
+
export type SnapshotSlack = typeof SnapshotSlack.Type;
|
|
68
|
+
export declare const decodeSnapshot: (input: unknown, options?: import("effect/SchemaAST").ParseOptions) => import("effect/Result").Result<Schema.Struct.ReadonlySide<{
|
|
69
|
+
readonly version: Schema.Literal<1>;
|
|
70
|
+
readonly manifest: Schema.Struct<{
|
|
71
|
+
readonly path: Schema.String;
|
|
72
|
+
readonly sha256: Schema.String;
|
|
73
|
+
}>;
|
|
74
|
+
readonly roots: Schema.$Array<Schema.String>;
|
|
75
|
+
readonly files: Schema.Finite;
|
|
76
|
+
readonly ok: Schema.Boolean;
|
|
77
|
+
readonly coverage: Schema.Struct<Record<"graph" | "imports" | "members" | "structure" | "surface", Schema.Struct<{
|
|
78
|
+
readonly covered: Schema.Finite;
|
|
79
|
+
readonly total: Schema.Finite;
|
|
80
|
+
readonly floor: Schema.optionalKey<Schema.Finite>;
|
|
81
|
+
}>>>;
|
|
82
|
+
readonly residue: Schema.Struct<{
|
|
83
|
+
readonly files: Schema.$Array<Schema.String>;
|
|
84
|
+
readonly folders: Schema.$Array<Schema.String>;
|
|
85
|
+
}>;
|
|
86
|
+
readonly violations: Schema.$Array<Schema.Struct<{
|
|
87
|
+
readonly fingerprint: Schema.String;
|
|
88
|
+
readonly kind: Schema.Literals<readonly ["import", "export", "structure", "member", "surface", "graph"]>;
|
|
89
|
+
readonly ruleName: Schema.String;
|
|
90
|
+
readonly file: Schema.String;
|
|
91
|
+
readonly subject: Schema.NullOr<Schema.String>;
|
|
92
|
+
readonly message: Schema.String;
|
|
93
|
+
readonly baselined: Schema.Boolean;
|
|
94
|
+
}>>;
|
|
95
|
+
readonly unresolved: Schema.$Array<Schema.Struct<{
|
|
96
|
+
readonly file: Schema.String;
|
|
97
|
+
readonly specifier: Schema.String;
|
|
98
|
+
readonly detail: Schema.String;
|
|
99
|
+
}>>;
|
|
100
|
+
readonly stale: Schema.$Array<Schema.String>;
|
|
101
|
+
readonly baseline: Schema.Struct<{
|
|
102
|
+
readonly size: Schema.Finite;
|
|
103
|
+
}>;
|
|
104
|
+
readonly cycles: Schema.Finite;
|
|
105
|
+
readonly slack: Schema.$Array<Schema.Struct<{
|
|
106
|
+
readonly node: Schema.String;
|
|
107
|
+
readonly kind: Schema.Literals<readonly ["allow", "external"]>;
|
|
108
|
+
readonly entry: Schema.String;
|
|
109
|
+
}>>;
|
|
110
|
+
readonly adoption: Schema.Struct<{
|
|
111
|
+
readonly unrestricted: Schema.$Array<Schema.String>;
|
|
112
|
+
readonly partial: Schema.$Array<Schema.String>;
|
|
113
|
+
}>;
|
|
114
|
+
}, "Type">, Schema.SchemaError>;
|
|
115
|
+
type JsonValue = string | number | boolean | null | JsonObject | ReadonlyArray<JsonValue>;
|
|
116
|
+
type JsonObject = {
|
|
117
|
+
readonly [key: string]: JsonValue;
|
|
118
|
+
};
|
|
119
|
+
export declare const snapshotJsonSchema: () => JsonObject;
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/domain/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAiBxC,eAAO,MAAM,kBAAkB,yEACyC,CAAC;AAEzE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AA+BlC,eAAO,MAAM,iBAAiB;;;;;;;;EAc5B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;EAOxB,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsEnB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAKtD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAGzB,CAAC;AAEH,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAC1F,KAAK,UAAU,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAIxD,eAAO,MAAM,kBAAkB,QAAO,UAcrC,CAAC"}
|
package/build/dts/index.d.ts
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
export { type Baseline, type BaselineFilter, baselineOf, decodeBaseline, EMPTY_BASELINE, makeBaselineFilter, serializeBaseline, staleEntriesOf, unbaselined, } from "./core/baseline.js";
|
|
2
|
-
export { type Coverage, type CoverageFamily, type CoverageFloors, coverageOf, coverageShortfalls, fractionsOf, } from "./core/coverage.js";
|
|
2
|
+
export { type Coverage, type CoverageFamily, type CoverageFloors, coverageOf, coverageShortfalls, fractionsOf, type Reach, reachOf, type Residue, residueOf, } from "./core/coverage.js";
|
|
3
3
|
export { type BindingEdge, type CompiledExportRule, compileExportRule, compileExportRules, evaluateBindingEdge, evaluateSelectedBindings, exportRulesFailingTheirProbe, exportRulesSelecting, type ExportViolation, type SelectedExportRule, } from "./core/exports.js";
|
|
4
|
-
export { type CompiledGraph, compileGraphRules, EMPTY_GRAPH_RULES, evaluateGraph, type Graph, graphRulesFailingTheirProbe, hasGraphRules, } from "./core/graph.js";
|
|
5
|
-
export { type CompiledImportRule, compileImportRule, compileImportRules, evaluateImportEdge, evaluateSelectedEdge, type ImportEdge, probeTargetOf, rulesFailingTheirProbe, rulesSelecting, type SelectedRule, } from "./core/imports.js";
|
|
4
|
+
export { type CompiledGraph, compileGraphRules, cyclesIn, EMPTY_GRAPH_RULES, evaluateGraph, type Graph, graphRulesFailingTheirProbe, hasGraphRules, heightOf, } from "./core/graph.js";
|
|
5
|
+
export { type CompiledImportRule, compileImportRule, compileImportRules, evaluateImportEdge, evaluateResolvedEdge, evaluateSelectedEdge, type ImportEdge, probeTargetOf, rulesFailingTheirProbe, rulesSelecting, type SelectedRule, } from "./core/imports.js";
|
|
6
6
|
export { type CompiledMemberRule, compileMemberRules, evaluateMemberSite, memberRulesFailingTheirProbe, memberRulesSelecting, } from "./core/members.js";
|
|
7
|
+
export { type ObservedEdge, type Slack, slackOf } from "./core/slack.js";
|
|
7
8
|
export { type CompiledStructure, compileStructure, EMPTY_STRUCTURE, evaluateStructure, requiredSiblingsOf, structureRulesFailingTheirProbe, } from "./core/structure.js";
|
|
8
9
|
export { type CompiledSurfaceRule, compileSurfaceRules, evaluateSurface, surfaceRulesFailingTheirProbe, surfaceRulesSelecting, } from "./core/surface.js";
|
|
9
|
-
export { type BindingKind, type DeclarationKind, type ExportFix, type ExportRule, type GraphConfig, type GraphCycleRule, type GraphOrphanRule, type GraphReachRule, type ImportProbe, type ImportProbeTarget, type ImportRule, type MemberRule, type MemberSubject, type ResolveConfig, type ResolveScope, type StructureConfig, type SurfaceRule, } from "./domain/architecture-config.js";
|
|
10
|
+
export { type Allowance, type BindingKind, type DeclarationKind, type ExportFix, type ExportRule, type GraphConfig, type GraphCycleRule, type GraphOrphanRule, type GraphReachRule, type ImportProbe, type ImportProbeTarget, type ImportRule, type MemberRule, type MemberSubject, type ResolveConfig, type ResolveScope, type StructureConfig, type SurfaceRule, } from "./domain/architecture-config.js";
|
|
10
11
|
export { ConfigInvalid, ImportUnresolved, PatternInvalid, ScopeInvalid, } from "./domain/architecture-error.js";
|
|
11
12
|
export { type Binding, type ExportSite, type MemberSite, type SourceFacts, } from "./domain/facts.js";
|
|
12
13
|
export { type ManifestLocator, type ManifestPath, type ManifestPosition, renderManifestPath, } from "./domain/manifest-location.js";
|
|
14
|
+
export { decodeSnapshot, type Snapshot, SNAPSHOT_SCHEMA_ID, SNAPSHOT_VERSION, snapshotJsonSchema, Snapshot as SnapshotSchema, type SnapshotSlack, type SnapshotViolation, } from "./domain/snapshot.js";
|
|
13
15
|
export { fingerprintOf, formatMessage, type Violation, type ViolationKind, } from "./domain/violation.js";
|
|
14
16
|
export { makeFileSystemLive } from "./infrastructure/file-system-live.js";
|
|
15
17
|
export { findManifestFile, formatManifestYaml, MANIFEST_FILENAMES, type ManifestFile, readManifestFile, } from "./infrastructure/manifest-file.js";
|
|
16
18
|
export { expandIncludes, type IncludedManifest, type IncludeReader, type SourceDocument, } from "./infrastructure/manifest-include.js";
|
|
17
|
-
export { listSourceFiles, type WalkedLanguage } from "./infrastructure/walk.js";
|
|
19
|
+
export { listPackageRoots, listSourceFiles, type PackagedLanguage, type PackageRoot, type WalkedLanguage, } from "./infrastructure/walk.js";
|
|
18
20
|
export { type LoadedPolicy, loadPolicy, type LoadPolicyInput } from "./load/policy.js";
|
|
19
21
|
export { type LoweredRules, lowerManifest, type ProbeLanguage } from "./manifest/compile.js";
|
|
20
22
|
export { type ExpandedManifest, type ExpandIssue, expandManifest, type Origin, originOf, type Substitution, } from "./manifest/expand.js";
|
|
23
|
+
export { type Candidate, candidatesOf, type Generalization, type InferInput, inferManifest, type InferOptions, type InferPackage, type Inferred, type InferredTarget, singularOf, } from "./manifest/infer.js";
|
|
21
24
|
export { MANIFEST_NODE_SCHEMA_ID, MANIFEST_SCHEMA_ID, manifestJsonSchema, manifestNodeJsonSchema, } from "./manifest/json-schema.js";
|
|
22
25
|
export { type DecodedManifest, decodeManifest, type DecodeManifestOptions, type Manifest, type ManifestNode, Manifest as ManifestSchema, } from "./manifest/manifest.js";
|
|
23
26
|
export { type FactExtractor } from "./ports/fact-extractor.js";
|
package/build/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,UAAU,EACV,kBAAkB,EAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { Language } from "../ports/language.js";
|
|
2
2
|
export type WalkedLanguage = Pick<Language, "extensions" | "ignoredFiles">;
|
|
3
3
|
export declare const listSourceFiles: (repoRoot: string, roots: ReadonlyArray<string>, languages: ReadonlyArray<WalkedLanguage>) => ReadonlyArray<string>;
|
|
4
|
+
export type PackagedLanguage = Pick<Language, "packageMarkers" | "sourceRoots">;
|
|
5
|
+
export type PackageRoot = {
|
|
6
|
+
readonly root: string;
|
|
7
|
+
readonly source: string | null;
|
|
8
|
+
};
|
|
9
|
+
export declare const listPackageRoots: (repoRoot: string, roots: ReadonlyArray<string>, languages: ReadonlyArray<PackagedLanguage>) => ReadonlyArray<PackageRoot>;
|
|
4
10
|
//# sourceMappingURL=walk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/walk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAiBrD,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,cAAc,CAAC,CAAC;AAO3E,eAAO,MAAM,eAAe,aAChB,MAAM,SACT,aAAa,CAAC,MAAM,CAAC,aACjB,aAAa,CAAC,cAAc,CAAC,KACvC,aAAa,CAAC,MAAM,CAsBtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/walk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAiBrD,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,cAAc,CAAC,CAAC;AAO3E,eAAO,MAAM,eAAe,aAChB,MAAM,SACT,aAAa,CAAC,MAAM,CAAC,aACjB,aAAa,CAAC,cAAc,CAAC,KACvC,aAAa,CAAC,MAAM,CAsBtB,CAAC;AAIF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,aAAa,CAAC,CAAC;AAEhF,MAAM,MAAM,WAAW,GAAG;IAExB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAKF,eAAO,MAAM,gBAAgB,aACjB,MAAM,SACT,aAAa,CAAC,MAAM,CAAC,aACjB,aAAa,CAAC,gBAAgB,CAAC,KACzC,aAAa,CAAC,WAAW,CAgD3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/manifest/compile.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/manifest/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAGL,KAAK,QAAQ,EAGd,MAAM,eAAe,CAAC;AAKvB,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAG5B,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;KACzC,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAC7C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QACjD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;KACjD,CAAC;CACH,CAAC;AAMF,eAAO,MAAM,QAAQ,SAAc,CAAC;AAoDpC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC5C,CAAC;AAgLF,eAAO,MAAM,aAAa,aACd,QAAQ,cACP,aAAa,CAAC,aAAa,CAAC,KACtC,YA8tBF,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Manifest } from "./manifest.js";
|
|
2
|
+
export type InferredTarget = {
|
|
3
|
+
readonly kind: "local";
|
|
4
|
+
readonly path: string;
|
|
5
|
+
} | {
|
|
6
|
+
readonly kind: "external";
|
|
7
|
+
readonly package: string;
|
|
8
|
+
} | {
|
|
9
|
+
readonly kind: "builtin";
|
|
10
|
+
readonly path: string;
|
|
11
|
+
};
|
|
12
|
+
export type InferPackage = {
|
|
13
|
+
readonly root: string;
|
|
14
|
+
readonly source: string | null;
|
|
15
|
+
};
|
|
16
|
+
export type InferInput = {
|
|
17
|
+
readonly files: ReadonlyArray<string>;
|
|
18
|
+
readonly targetsOf: (file: string) => ReadonlyArray<InferredTarget>;
|
|
19
|
+
readonly roots: ReadonlyArray<string>;
|
|
20
|
+
readonly packages: ReadonlyArray<InferPackage>;
|
|
21
|
+
readonly depth: number;
|
|
22
|
+
};
|
|
23
|
+
export type Candidate = {
|
|
24
|
+
readonly parent: string;
|
|
25
|
+
readonly members: ReadonlyArray<string>;
|
|
26
|
+
readonly sharedFolders: ReadonlyArray<string>;
|
|
27
|
+
readonly sharedStereotypes: ReadonlyArray<string>;
|
|
28
|
+
readonly capture: string;
|
|
29
|
+
readonly crossEdges: number;
|
|
30
|
+
readonly crossReach: string | null;
|
|
31
|
+
};
|
|
32
|
+
export type Generalization = {
|
|
33
|
+
readonly parent: string;
|
|
34
|
+
readonly members: ReadonlyArray<string>;
|
|
35
|
+
readonly capture: string;
|
|
36
|
+
readonly crossReach: string | null;
|
|
37
|
+
};
|
|
38
|
+
export type InferOptions = {
|
|
39
|
+
readonly generalize: ReadonlyArray<Generalization>;
|
|
40
|
+
readonly collapse: boolean;
|
|
41
|
+
readonly date: string;
|
|
42
|
+
readonly resolve: Manifest["resolve"];
|
|
43
|
+
readonly aliases?: Readonly<Record<string, string>> | undefined;
|
|
44
|
+
readonly baseline: string;
|
|
45
|
+
readonly hasCycles: boolean;
|
|
46
|
+
};
|
|
47
|
+
export type Inferred = {
|
|
48
|
+
readonly manifest: Manifest;
|
|
49
|
+
readonly nodes: number;
|
|
50
|
+
readonly files: number;
|
|
51
|
+
};
|
|
52
|
+
export declare const singularOf: (plural: string) => string;
|
|
53
|
+
export declare const candidatesOf: (input: InferInput, generalize?: ReadonlyArray<Generalization>) => ReadonlyArray<Candidate>;
|
|
54
|
+
export declare const inferManifest: (input: InferInput, options: InferOptions) => Inferred;
|
|
55
|
+
//# sourceMappingURL=infer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer.d.ts","sourceRoot":"","sources":["../../../src/manifest/infer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,eAAe,CAAC;AAe5D,MAAM,MAAM,cAAc,GAGtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAEjD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAGvD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IAEzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAItB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAEvB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,CAAC,cAAc,CAAC,CAAC;IAGpE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAI/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAKF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAElD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAIzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAAC;AAGF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,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;CACpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAEnD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAGtC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAG1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAsSF,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,MAU3C,CAAC;AA8BF,eAAO,MAAM,YAAY,UAChB,UAAU,eACL,aAAa,CAAC,cAAc,CAAC,KACxC,aAAa,CAAC,SAAS,CAuEzB,CAAC;AAwDF,eAAO,MAAM,aAAa,UAAW,UAAU,WAAW,YAAY,KAAG,QAqFxE,CAAC"}
|
|
@@ -7,6 +7,8 @@ export type Language = {
|
|
|
7
7
|
readonly id: string;
|
|
8
8
|
readonly extensions: ReadonlyArray<string>;
|
|
9
9
|
readonly ignoredFiles: ReadonlyArray<RegExp>;
|
|
10
|
+
readonly packageMarkers: ReadonlyArray<string>;
|
|
11
|
+
readonly sourceRoots: ReadonlyArray<string>;
|
|
10
12
|
readonly extractor: FactExtractor;
|
|
11
13
|
readonly fixes: ReadonlyArray<ExportFix>;
|
|
12
14
|
readonly makeResolver: (repoRoot: string, scope: ResolveScope) => Result.Result<ModuleResolver, ScopeInvalid>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../src/ports/language.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAU3D,MAAM,MAAM,QAAQ,GAAG;IAErB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAG3C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../src/ports/language.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAU3D,MAAM,MAAM,QAAQ,GAAG;IAErB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAG3C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAM7C,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAK/C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAG5C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAIlC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAKzC,QAAQ,CAAC,YAAY,EAAE,CACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,KAChB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;CAClD,CAAC"}
|
|
@@ -8,46 +8,86 @@ const dirnameOf = (file) => {
|
|
|
8
8
|
return at === -1 ? "" : file.slice(0, at);
|
|
9
9
|
};
|
|
10
10
|
const selects = (rule, file) => firstFromMatch(rule, file) !== null;
|
|
11
|
-
export const
|
|
11
|
+
export const reachOf = (policy, files) => {
|
|
12
12
|
const allowlists = policy.importRules.filter(isAllowlist);
|
|
13
|
-
|
|
14
|
-
let enumerated = 0;
|
|
15
|
-
let open = 0;
|
|
16
|
-
let members = 0;
|
|
17
|
-
let surface = 0;
|
|
18
|
-
let graph = 0;
|
|
19
|
-
for (const file of files) {
|
|
20
|
-
if (allowlists.some((rule) => selects(rule, file)))
|
|
21
|
-
imports += 1;
|
|
13
|
+
return files.map((file) => {
|
|
22
14
|
const folder = dirnameOf(file);
|
|
23
15
|
const governing = policy.structure.folders.filter((rule) => rule.folder.some((pattern) => pattern.test(folder)));
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
members
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
16
|
+
const structure = governing.length === 0
|
|
17
|
+
? null
|
|
18
|
+
: governing.every((rule) => rule.files.some((pattern) => pattern.source === OPEN_LAYOUT))
|
|
19
|
+
? "open"
|
|
20
|
+
: "enumerated";
|
|
21
|
+
return {
|
|
22
|
+
file,
|
|
23
|
+
imports: allowlists.some((rule) => selects(rule, file)),
|
|
24
|
+
structure,
|
|
25
|
+
members: policy.memberRules.some((rule) => selects(rule, file)),
|
|
26
|
+
surface: policy.surfaceRules.some((rule) => selects(rule, file)),
|
|
27
|
+
graph: [...policy.graph.cycles, ...policy.graph.orphans].some((rule) => rule.within.some((pattern) => pattern.test(file)) &&
|
|
28
|
+
!rule.withinNot.some((pattern) => pattern.test(file))),
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
export const coverageOf = (policy, files) => {
|
|
33
|
+
const reach = reachOf(policy, files);
|
|
34
|
+
const count = (is) => reach.filter(is).length;
|
|
41
35
|
const total = files.length;
|
|
42
36
|
return {
|
|
43
37
|
files: total,
|
|
44
|
-
imports: { covered: imports, total },
|
|
45
|
-
structure: {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
38
|
+
imports: { covered: count((one) => one.imports), total },
|
|
39
|
+
structure: {
|
|
40
|
+
enumerated: count((one) => one.structure === "enumerated"),
|
|
41
|
+
open: count((one) => one.structure === "open"),
|
|
42
|
+
total,
|
|
43
|
+
},
|
|
44
|
+
members: { covered: count((one) => one.members), total },
|
|
45
|
+
surface: { covered: count((one) => one.surface), total },
|
|
46
|
+
graph: { covered: count((one) => one.graph), total },
|
|
49
47
|
};
|
|
50
48
|
};
|
|
49
|
+
export const residueOf = (policy, files) => {
|
|
50
|
+
const unreached = reachOf(policy, files)
|
|
51
|
+
.filter((one) => !one.imports &&
|
|
52
|
+
one.structure !== "enumerated" &&
|
|
53
|
+
!one.members &&
|
|
54
|
+
!one.surface &&
|
|
55
|
+
!one.graph)
|
|
56
|
+
.map((one) => one.file)
|
|
57
|
+
.sort();
|
|
58
|
+
return { files: unreached, folders: foldersWhollyIn(unreached, files) };
|
|
59
|
+
};
|
|
60
|
+
// Every ancestor folder of a file, nearest first, the root (`""`) excluded.
|
|
61
|
+
const ancestorsOf = (file) => {
|
|
62
|
+
const folders = [];
|
|
63
|
+
let folder = dirnameOf(file);
|
|
64
|
+
while (folder !== "") {
|
|
65
|
+
folders.push(folder);
|
|
66
|
+
folder = dirnameOf(folder);
|
|
67
|
+
}
|
|
68
|
+
return folders;
|
|
69
|
+
};
|
|
70
|
+
// The topmost folders every walked file of which is in `subset`. Each is
|
|
71
|
+
// reported once, with none of its subfolders, and a lone file's folder counts
|
|
72
|
+
// — a folder with one file the policy ignores is a folder the policy ignores.
|
|
73
|
+
const foldersWhollyIn = (subset, files) => {
|
|
74
|
+
const walked = new Map();
|
|
75
|
+
for (const file of files) {
|
|
76
|
+
for (const folder of ancestorsOf(file))
|
|
77
|
+
walked.set(folder, (walked.get(folder) ?? 0) + 1);
|
|
78
|
+
}
|
|
79
|
+
const inSubset = new Map();
|
|
80
|
+
for (const file of subset) {
|
|
81
|
+
for (const folder of ancestorsOf(file)) {
|
|
82
|
+
inSubset.set(folder, (inSubset.get(folder) ?? 0) + 1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const whole = [...inSubset.entries()]
|
|
86
|
+
.filter(([folder, count]) => walked.get(folder) === count)
|
|
87
|
+
.map(([folder]) => folder)
|
|
88
|
+
.sort();
|
|
89
|
+
return whole.filter((folder) => !whole.some((other) => other !== folder && folder.startsWith(`${other}/`)));
|
|
90
|
+
};
|
|
51
91
|
export const fractionOf = (covered, total) => total === 0 ? 1 : covered / total;
|
|
52
92
|
export const fractionsOf = (coverage) => ({
|
|
53
93
|
imports: fractionOf(coverage.imports.covered, coverage.imports.total),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../../src/core/coverage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAI/D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA0C/C,2EAA2E;AAC3E,mEAAmE;AACnE,MAAM,WAAW,GAAG,CAAC,IAAwB,EAAW,EAAE,CACxD,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAEhD,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CACd,IAAqE,EACrE,IAAY,EACZ,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../../src/core/coverage.ts"],"names":[],"mappings":"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"}
|