@shivaedev/quality 0.2.0 → 0.3.1
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 +114 -0
- package/README.md +207 -35
- package/dist/baseline/compare.d.ts +3 -8
- package/dist/baseline/compare.d.ts.map +1 -1
- package/dist/baseline/compare.js +13 -23
- package/dist/baseline/compare.js.map +1 -1
- package/dist/baseline/format.d.ts +7 -5
- package/dist/baseline/format.d.ts.map +1 -1
- package/dist/baseline/format.js +31 -23
- package/dist/baseline/format.js.map +1 -1
- package/dist/baseline/guard.d.ts +23 -0
- package/dist/baseline/guard.d.ts.map +1 -0
- package/dist/baseline/guard.js +31 -0
- package/dist/baseline/guard.js.map +1 -0
- package/dist/baseline/legacy.d.ts +11 -0
- package/dist/baseline/legacy.d.ts.map +1 -0
- package/dist/baseline/legacy.js +33 -0
- package/dist/baseline/legacy.js.map +1 -0
- package/dist/baseline/rewrite.d.ts +3 -0
- package/dist/baseline/rewrite.d.ts.map +1 -0
- package/dist/baseline/rewrite.js +19 -0
- package/dist/baseline/rewrite.js.map +1 -0
- package/dist/baseline/update.d.ts +7 -6
- package/dist/baseline/update.d.ts.map +1 -1
- package/dist/baseline/update.js +28 -28
- package/dist/baseline/update.js.map +1 -1
- package/dist/cli/args.d.ts +14 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +54 -29
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/baseline.d.ts +3 -1
- package/dist/cli/baseline.d.ts.map +1 -1
- package/dist/cli/baseline.js +19 -10
- package/dist/cli/baseline.js.map +1 -1
- package/dist/cli/check.d.ts +5 -0
- package/dist/cli/check.d.ts.map +1 -0
- package/dist/cli/check.js +39 -0
- package/dist/cli/check.js.map +1 -0
- package/dist/cli/lint.js +1 -1
- package/dist/cli/lint.js.map +1 -1
- package/dist/cli/migrate.d.ts +4 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +31 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/run-main.d.ts +2 -1
- package/dist/cli/run-main.d.ts.map +1 -1
- package/dist/cli/run-main.js +5 -2
- package/dist/cli/run-main.js.map +1 -1
- package/dist/cli/shrink.d.ts +6 -0
- package/dist/cli/shrink.d.ts.map +1 -0
- package/dist/cli/shrink.js +8 -0
- package/dist/cli/shrink.js.map +1 -0
- package/dist/cli.js +11 -2
- package/dist/cli.js.map +1 -1
- package/dist/config/decode.d.ts +1 -0
- package/dist/config/decode.d.ts.map +1 -1
- package/dist/config/decode.js +1 -0
- package/dist/config/decode.js.map +1 -1
- package/dist/config/file.d.ts +2 -0
- package/dist/config/file.d.ts.map +1 -0
- package/dist/config/file.js +2 -0
- package/dist/config/file.js.map +1 -0
- package/dist/config/load.d.ts +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +3 -2
- package/dist/config/load.js.map +1 -1
- package/dist/config/resolve.d.ts +1 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +6 -4
- package/dist/config/resolve.js.map +1 -1
- package/dist/config.d.ts +2 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/engine/baseline-file.d.ts +11 -0
- package/dist/engine/baseline-file.d.ts.map +1 -0
- package/dist/engine/baseline-file.js +18 -0
- package/dist/engine/baseline-file.js.map +1 -0
- package/dist/engine/evaluate.d.ts +2 -2
- package/dist/engine/evaluate.d.ts.map +1 -1
- package/dist/engine/evaluate.js +3 -3
- package/dist/engine/evaluate.js.map +1 -1
- package/dist/engine/session.d.ts +3 -5
- package/dist/engine/session.d.ts.map +1 -1
- package/dist/engine/session.js +12 -10
- package/dist/engine/session.js.map +1 -1
- package/dist/exceptions/registry.d.ts +1 -1
- package/dist/exceptions/registry.d.ts.map +1 -1
- package/dist/exceptions/registry.js +8 -3
- package/dist/exceptions/registry.js.map +1 -1
- package/dist/failure.d.ts +0 -2
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +0 -2
- package/dist/failure.js.map +1 -1
- package/dist/git/base.d.ts +9 -0
- package/dist/git/base.d.ts.map +1 -0
- package/dist/git/base.js +59 -0
- package/dist/git/base.js.map +1 -0
- package/dist/git/command.d.ts +12 -0
- package/dist/git/command.d.ts.map +1 -0
- package/dist/git/command.js +13 -0
- package/dist/git/command.js.map +1 -0
- package/dist/git/history.d.ts +10 -0
- package/dist/git/history.d.ts.map +1 -0
- package/dist/git/history.js +28 -0
- package/dist/git/history.js.map +1 -0
- package/dist/inventory/ignore-scope.d.ts.map +1 -1
- package/dist/inventory/ignore-scope.js +0 -1
- package/dist/inventory/ignore-scope.js.map +1 -1
- package/dist/inventory/walk.d.ts +0 -1
- package/dist/inventory/walk.d.ts.map +1 -1
- package/dist/inventory/walk.js +1 -1
- package/dist/inventory/walk.js.map +1 -1
- package/dist/report/guard.d.ts +9 -0
- package/dist/report/guard.d.ts.map +1 -0
- package/dist/report/guard.js +34 -0
- package/dist/report/guard.js.map +1 -0
- package/dist/report/render.js +1 -2
- package/dist/report/render.js.map +1 -1
- package/dist/report/stale.d.ts.map +1 -1
- package/dist/report/stale.js +4 -3
- package/dist/report/stale.js.map +1 -1
- package/dist/rule.d.ts +4 -7
- package/dist/rule.d.ts.map +1 -1
- package/dist/rule.js +1 -1
- package/dist/rule.js.map +1 -1
- package/dist/rules/built-in.d.ts +17 -0
- package/dist/rules/built-in.d.ts.map +1 -1
- package/dist/rules/built-in.js +21 -1
- package/dist/rules/built-in.js.map +1 -1
- package/dist/rules/comments/kinds.d.ts +9 -0
- package/dist/rules/comments/kinds.d.ts.map +1 -0
- package/dist/rules/comments/kinds.js +34 -0
- package/dist/rules/comments/kinds.js.map +1 -0
- package/dist/rules/comments/max-per-file.d.ts +5 -0
- package/dist/rules/comments/max-per-file.d.ts.map +1 -0
- package/dist/rules/comments/max-per-file.js +39 -0
- package/dist/rules/comments/max-per-file.js.map +1 -0
- package/dist/rules/comments/no-banner.d.ts +2 -0
- package/dist/rules/comments/no-banner.d.ts.map +1 -0
- package/dist/rules/comments/no-banner.js +9 -0
- package/dist/rules/comments/no-banner.js.map +1 -0
- package/dist/rules/comments/no-jsdoc.d.ts +4 -0
- package/dist/rules/comments/no-jsdoc.d.ts.map +1 -0
- package/dist/rules/comments/no-jsdoc.js +14 -0
- package/dist/rules/comments/no-jsdoc.js.map +1 -0
- package/dist/rules/comments/no-line-reference.d.ts +2 -0
- package/dist/rules/comments/no-line-reference.d.ts.map +1 -0
- package/dist/rules/comments/no-line-reference.js +9 -0
- package/dist/rules/comments/no-line-reference.js.map +1 -0
- package/dist/rules/comments/no-pr-reference.d.ts +2 -0
- package/dist/rules/comments/no-pr-reference.d.ts.map +1 -0
- package/dist/rules/comments/no-pr-reference.js +13 -0
- package/dist/rules/comments/no-pr-reference.js.map +1 -0
- package/dist/rules/comments/no-todo.d.ts +2 -0
- package/dist/rules/comments/no-todo.d.ts.map +1 -0
- package/dist/rules/comments/no-todo.js +8 -0
- package/dist/rules/comments/no-todo.js.map +1 -0
- package/dist/rules/comments/pattern-rule.d.ts +10 -0
- package/dist/rules/comments/pattern-rule.d.ts.map +1 -0
- package/dist/rules/comments/pattern-rule.js +16 -0
- package/dist/rules/comments/pattern-rule.js.map +1 -0
- package/dist/rules/comments/scan.d.ts +13 -0
- package/dist/rules/comments/scan.d.ts.map +1 -0
- package/dist/rules/comments/scan.js +62 -0
- package/dist/rules/comments/scan.js.map +1 -0
- package/dist/rules/max-lines.d.ts.map +1 -1
- package/dist/rules/max-lines.js +8 -1
- package/dist/rules/max-lines.js.map +1 -1
- package/dist/rules/suppressions/biome/configs.d.ts +14 -0
- package/dist/rules/suppressions/biome/configs.d.ts.map +1 -0
- package/dist/rules/suppressions/biome/configs.js +39 -0
- package/dist/rules/suppressions/biome/configs.js.map +1 -0
- package/dist/rules/suppressions/biome/json.d.ts +27 -0
- package/dist/rules/suppressions/biome/json.d.ts.map +1 -0
- package/dist/rules/suppressions/biome/json.js +37 -0
- package/dist/rules/suppressions/biome/json.js.map +1 -0
- package/dist/rules/suppressions/biome/weakenings.d.ts +9 -0
- package/dist/rules/suppressions/biome/weakenings.d.ts.map +1 -0
- package/dist/rules/suppressions/biome/weakenings.js +68 -0
- package/dist/rules/suppressions/biome/weakenings.js.map +1 -0
- package/dist/rules/suppressions/biome-overrides.d.ts +8 -0
- package/dist/rules/suppressions/biome-overrides.d.ts.map +1 -0
- package/dist/rules/suppressions/biome-overrides.js +47 -0
- package/dist/rules/suppressions/biome-overrides.js.map +1 -0
- package/dist/rules/suppressions/directives.d.ts +4 -0
- package/dist/rules/suppressions/directives.d.ts.map +1 -0
- package/dist/rules/suppressions/directives.js +19 -0
- package/dist/rules/suppressions/directives.js.map +1 -0
- package/dist/rules/suppressions/no-double-cast.d.ts +2 -0
- package/dist/rules/suppressions/no-double-cast.d.ts.map +1 -0
- package/dist/rules/suppressions/no-double-cast.js +38 -0
- package/dist/rules/suppressions/no-double-cast.js.map +1 -0
- package/dist/rules/suppressions/no-inline.d.ts +8 -0
- package/dist/rules/suppressions/no-inline.d.ts.map +1 -0
- package/dist/rules/suppressions/no-inline.js +48 -0
- package/dist/rules/suppressions/no-inline.js.map +1 -0
- package/dist/rules/suppressions/stylesheet-comments.d.ts +4 -0
- package/dist/rules/suppressions/stylesheet-comments.d.ts.map +1 -0
- package/dist/rules/suppressions/stylesheet-comments.js +20 -0
- package/dist/rules/suppressions/stylesheet-comments.js.map +1 -0
- package/dist/rules/syntax.d.ts +4 -0
- package/dist/rules/syntax.d.ts.map +1 -0
- package/dist/rules/syntax.js +12 -0
- package/dist/rules/syntax.js.map +1 -0
- package/package.json +4 -5
- package/src/baseline/compare.ts +15 -39
- package/src/baseline/format.ts +35 -32
- package/src/baseline/guard.ts +47 -0
- package/src/baseline/legacy.ts +46 -0
- package/src/baseline/rewrite.ts +24 -0
- package/src/baseline/update.ts +47 -30
- package/src/cli/args.ts +64 -30
- package/src/cli/baseline.ts +27 -13
- package/src/cli/check.ts +51 -0
- package/src/cli/lint.ts +1 -1
- package/src/cli/migrate.ts +36 -0
- package/src/cli/run-main.ts +8 -3
- package/src/cli/shrink.ts +31 -0
- package/src/cli.ts +11 -2
- package/src/config/decode.ts +1 -0
- package/src/config/file.ts +1 -0
- package/src/config/load.ts +4 -3
- package/src/config/resolve.ts +7 -4
- package/src/config.ts +3 -7
- package/src/engine/baseline-file.ts +27 -0
- package/src/engine/evaluate.ts +4 -2
- package/src/engine/session.ts +14 -12
- package/src/exceptions/registry.ts +9 -2
- package/src/failure.ts +0 -2
- package/src/git/base.ts +89 -0
- package/src/git/command.ts +31 -0
- package/src/git/history.ts +41 -0
- package/src/inventory/ignore-scope.ts +0 -1
- package/src/inventory/walk.ts +1 -1
- package/src/report/guard.ts +46 -0
- package/src/report/render.ts +2 -2
- package/src/report/stale.ts +11 -3
- package/src/rule.ts +5 -8
- package/src/rules/built-in.ts +21 -1
- package/src/rules/comments/kinds.ts +45 -0
- package/src/rules/comments/max-per-file.ts +46 -0
- package/src/rules/comments/no-banner.ts +10 -0
- package/src/rules/comments/no-jsdoc.ts +18 -0
- package/src/rules/comments/no-line-reference.ts +11 -0
- package/src/rules/comments/no-pr-reference.ts +13 -0
- package/src/rules/comments/no-todo.ts +8 -0
- package/src/rules/comments/pattern-rule.ts +28 -0
- package/src/rules/comments/scan.ts +80 -0
- package/src/rules/max-lines.ts +8 -1
- package/src/rules/suppressions/biome/configs.ts +50 -0
- package/src/rules/suppressions/biome/json.ts +55 -0
- package/src/rules/suppressions/biome/weakenings.ts +102 -0
- package/src/rules/suppressions/biome-overrides.ts +61 -0
- package/src/rules/suppressions/directives.ts +25 -0
- package/src/rules/suppressions/no-double-cast.ts +47 -0
- package/src/rules/suppressions/no-inline.ts +63 -0
- package/src/rules/suppressions/stylesheet-comments.ts +27 -0
- package/src/rules/syntax.ts +14 -0
|
@@ -8,11 +8,11 @@ export interface Outcome {
|
|
|
8
8
|
readonly warnings: ReadonlyArray<Violation>;
|
|
9
9
|
readonly regressions: ReadonlyArray<Regression>;
|
|
10
10
|
readonly staleBaseline: ReadonlyArray<StaleBaselineEntry>;
|
|
11
|
+
readonly looseBaseline: ReadonlyArray<StaleBaselineEntry>;
|
|
11
12
|
readonly staleRegistry: ReadonlyArray<StaleRegistryEntry>;
|
|
12
13
|
readonly baselined: number;
|
|
13
14
|
readonly registered: number;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
export declare const evaluate: (violations: ReadonlyArray<Violation>, registry: ReadonlyArray<RegistryEntry>, baseline: ReadonlyArray<BaselineEntry>, levels: ReadonlyMap<string, Level>) => Outcome;
|
|
16
|
+
export declare const evaluate: (violations: ReadonlyArray<Violation>, registry: ReadonlyArray<RegistryEntry>, baseline: ReadonlyArray<BaselineEntry>, levels: ReadonlyMap<string, Level>, unregistrable: ReadonlySet<string>) => Outcome;
|
|
17
17
|
export declare const passes: (outcome: Outcome) => boolean;
|
|
18
18
|
//# sourceMappingURL=evaluate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/engine/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvG,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B;AAED,
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/engine/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvG,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,GACpB,YAAY,aAAa,CAAC,SAAS,CAAC,EACpC,UAAU,aAAa,CAAC,aAAa,CAAC,EACtC,UAAU,aAAa,CAAC,aAAa,CAAC,EACtC,QAAQ,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAClC,eAAe,WAAW,CAAC,MAAM,CAAC,KAChC,OAcF,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,OAC8D,CAAC"}
|
package/dist/engine/evaluate.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { applyBaseline } from "../baseline/compare.js";
|
|
2
2
|
import { applyRegistry } from "../exceptions/registry.js";
|
|
3
3
|
import { byLocation } from "./violation.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const registered = applyRegistry(violations, registry, levels);
|
|
4
|
+
export const evaluate = (violations, registry, baseline, levels, unregistrable) => {
|
|
5
|
+
const registered = applyRegistry(violations, registry, levels, unregistrable);
|
|
7
6
|
const baselined = applyBaseline(registered.kept, baseline, levels);
|
|
8
7
|
const kept = [...baselined.kept].sort(byLocation);
|
|
9
8
|
return {
|
|
10
9
|
baselined: baselined.baselined,
|
|
11
10
|
errors: kept.filter((violation) => violation.level === "error"),
|
|
11
|
+
looseBaseline: baselined.loose,
|
|
12
12
|
regressions: baselined.regressions,
|
|
13
13
|
registered: registered.registered,
|
|
14
14
|
staleBaseline: baselined.stale,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/engine/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4C,MAAM,wBAAwB,CAAC;AAGjG,OAAO,EAAE,aAAa,EAA+C,MAAM,2BAA2B,CAAC;AACvG,OAAO,EAAE,UAAU,EAAkB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/engine/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4C,MAAM,wBAAwB,CAAC;AAGjG,OAAO,EAAE,aAAa,EAA+C,MAAM,2BAA2B,CAAC;AACvG,OAAO,EAAE,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAa5D,MAAM,CAAC,MAAM,QAAQ,GAAG,CACvB,UAAoC,EACpC,QAAsC,EACtC,QAAsC,EACtC,MAAkC,EAClC,aAAkC,EACxB,EAAE;IACZ,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO;QACN,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC;QAC/D,aAAa,EAAE,SAAS,CAAC,KAAK;QAC9B,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,aAAa,EAAE,SAAS,CAAC,KAAK;QAC9B,aAAa,EAAE,UAAU,CAAC,KAAK;QAC/B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC;KAChE,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAW,EAAE,CACnD,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC"}
|
package/dist/engine/session.d.ts
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { Effect, type FileSystem } from "effect";
|
|
2
|
-
import { type BaselineEntry } from "../baseline/format.ts";
|
|
3
2
|
import { type ResolvedConfig } from "../config/load.ts";
|
|
4
3
|
import { type RegistryEntry } from "../exceptions/registry.ts";
|
|
5
4
|
import { SetupFailure } from "../failure.ts";
|
|
6
5
|
import { type Inventory } from "../inventory/collect.ts";
|
|
6
|
+
import { type BaselineFile } from "./baseline-file.ts";
|
|
7
7
|
import type { Violation } from "./violation.ts";
|
|
8
8
|
export interface Session {
|
|
9
9
|
readonly config: ResolvedConfig;
|
|
10
10
|
readonly inventory: Inventory;
|
|
11
11
|
readonly violations: ReadonlyArray<Violation>;
|
|
12
12
|
readonly registry: ReadonlyArray<RegistryEntry>;
|
|
13
|
-
readonly baseline:
|
|
14
|
-
readonly raw: string | undefined;
|
|
15
|
-
readonly entries: ReadonlyArray<BaselineEntry>;
|
|
16
|
-
};
|
|
13
|
+
readonly baseline: BaselineFile;
|
|
17
14
|
}
|
|
15
|
+
export declare const scan: (config: ResolvedConfig) => Effect.Effect<Pick<Session, "inventory" | "violations">, SetupFailure, FileSystem.FileSystem>;
|
|
18
16
|
export declare const openSession: (cwd: string, configPath: string | undefined) => Effect.Effect<Session, SetupFailure, FileSystem.FileSystem>;
|
|
19
17
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/engine/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/engine/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,KAAK,YAAY,EAA2B,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CAChC;AAMD,eAAO,MAAM,IAAI,GAAI,QAAQ,cAAc,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,YAAY,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAOvI,CAAC;AAEJ,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,YAAY,MAAM,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAQjI,CAAC"}
|
package/dist/engine/session.js
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
2
|
import { Effect } from "effect";
|
|
3
|
-
import { decodeBaseline } from "../baseline/format.js";
|
|
4
3
|
import { loadConfig } from "../config/load.js";
|
|
5
4
|
import { validOrFail } from "../decoded.js";
|
|
6
5
|
import { decodeRegistry } from "../exceptions/registry.js";
|
|
7
6
|
import { SetupFailure } from "../failure.js";
|
|
8
7
|
import { collectInventory } from "../inventory/collect.js";
|
|
9
8
|
import { readOptionalText } from "../inventory/filesystem.js";
|
|
9
|
+
import { readBaseline, readInput } from "./baseline-file.js";
|
|
10
10
|
import { runRules } from "./run-rules.js";
|
|
11
11
|
const setup = (effect) => Effect.mapError(effect, (failure) => new SetupFailure({ message: failure.message }));
|
|
12
|
-
const
|
|
13
|
-
export const openSession = (cwd, configPath) => Effect.gen(function* () {
|
|
14
|
-
const config = yield* loadConfig(cwd, configPath);
|
|
12
|
+
export const scan = (config) => Effect.gen(function* () {
|
|
15
13
|
const inventory = yield* setup(collectInventory(config.root, config));
|
|
16
|
-
const registryRaw = yield* readInput(config.root, config.registry);
|
|
17
|
-
const registry = yield* validOrFail(config.registry, yield* Effect.promise(() => decodeRegistry(registryRaw)));
|
|
18
|
-
const baselineRaw = yield* readInput(config.root, config.baseline);
|
|
19
|
-
const baseline = yield* validOrFail(config.baseline, yield* Effect.promise(() => decodeBaseline(baselineRaw)));
|
|
20
14
|
const services = yield* Effect.context();
|
|
21
15
|
const readText = (path) => Effect.runPromiseWith(services)(readOptionalText(resolve(config.root, path)));
|
|
22
16
|
const violations = yield* runRules(config.active, { files: inventory.files, readText, root: config.root, sources: inventory.sources });
|
|
23
|
-
return {
|
|
17
|
+
return { inventory, violations };
|
|
18
|
+
});
|
|
19
|
+
export const openSession = (cwd, configPath) => Effect.gen(function* () {
|
|
20
|
+
const config = yield* loadConfig(cwd, configPath);
|
|
21
|
+
const registryRaw = yield* readInput(config.root, config.registry);
|
|
22
|
+
const registry = yield* validOrFail(config.registry, yield* Effect.promise(() => decodeRegistry(registryRaw)));
|
|
23
|
+
const baseline = yield* readBaseline(config);
|
|
24
|
+
const { inventory, violations } = yield* scan(config);
|
|
25
|
+
return { baseline, config, inventory, registry, violations };
|
|
24
26
|
});
|
|
25
27
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/engine/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/engine/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,UAAU,EAAuB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAkB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAA0B,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAqB,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW1C,MAAM,KAAK,GAAG,CACb,MAA6D,EACV,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE5I,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAsB,EAAiG,EAAE,CAC7I,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAyB,CAAC;IAChE,MAAM,QAAQ,GAAG,CAAC,IAAY,EAA+B,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9I,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IACvI,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,UAA8B,EAA+D,EAAE,CACvI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC/G,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC9D,CAAC,CAAC,CAAC"}
|
|
@@ -19,6 +19,6 @@ export interface RegistryCheck {
|
|
|
19
19
|
readonly registered: number;
|
|
20
20
|
readonly stale: ReadonlyArray<StaleRegistryEntry>;
|
|
21
21
|
}
|
|
22
|
-
export declare const applyRegistry: (violations: ReadonlyArray<Violation>, entries: ReadonlyArray<RegistryEntry>, levels: ReadonlyMap<string, Level>) => RegistryCheck;
|
|
22
|
+
export declare const applyRegistry: (violations: ReadonlyArray<Violation>, entries: ReadonlyArray<RegistryEntry>, levels: ReadonlyMap<string, Level>, unregistrable: ReadonlySet<string>) => RegistryCheck;
|
|
23
23
|
export {};
|
|
24
24
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/exceptions/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,eAAe,CAAC;AACzD,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE5E,QAAA,MAAM,aAAa;;;;;EAKjB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAMtD,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CACR,CAAC;AAE/F,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAClD;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/exceptions/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,eAAe,CAAC;AACzD,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE5E,QAAA,MAAM,aAAa;;;;;EAKjB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAMtD,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CACR,CAAC;AAE/F,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAClD;AAYD,eAAO,MAAM,aAAa,GACzB,YAAY,aAAa,CAAC,SAAS,CAAC,EACpC,SAAS,aAAa,CAAC,aAAa,CAAC,EACrC,QAAQ,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAClC,eAAe,WAAW,CAAC,MAAM,CAAC,KAChC,aAiBF,CAAC"}
|
|
@@ -12,14 +12,16 @@ const standard = Schema.toStandardSchemaV1(Schema.fromJsonString(Schema.Array(Re
|
|
|
12
12
|
});
|
|
13
13
|
export const decodeRegistry = (raw) => raw === undefined ? Promise.resolve({ _tag: "Valid", value: [] }) : decodeWith(standard, raw);
|
|
14
14
|
const covers = (entry, violation) => entry.rule === violation.rule && entry.file === violation.file && (entry.subject === undefined || entry.subject === violation.subject);
|
|
15
|
+
const UNREGISTRABLE = "names a rule that takes no exceptions. Fix the code, or baseline the violations while the repository adopts the rule";
|
|
15
16
|
const coveringEntry = (entries, violation) => {
|
|
16
17
|
const matching = entries.filter((entry) => covers(entry, violation));
|
|
17
18
|
return matching.find((entry) => entry.subject !== undefined) ?? matching[0];
|
|
18
19
|
};
|
|
19
|
-
export const applyRegistry = (violations, entries, levels) => {
|
|
20
|
+
export const applyRegistry = (violations, entries, levels, unregistrable) => {
|
|
21
|
+
const usable = entries.filter((entry) => !unregistrable.has(entry.rule));
|
|
20
22
|
const used = new Set();
|
|
21
23
|
const kept = violations.filter((violation) => {
|
|
22
|
-
const entry = coveringEntry(
|
|
24
|
+
const entry = coveringEntry(usable, violation);
|
|
23
25
|
if (entry !== undefined) {
|
|
24
26
|
used.add(entry);
|
|
25
27
|
}
|
|
@@ -27,7 +29,10 @@ export const applyRegistry = (violations, entries, levels) => {
|
|
|
27
29
|
});
|
|
28
30
|
const stale = entries
|
|
29
31
|
.filter((entry) => !used.has(entry))
|
|
30
|
-
.map((entry) => ({
|
|
32
|
+
.map((entry) => ({
|
|
33
|
+
entry,
|
|
34
|
+
problem: unregistrable.has(entry.rule) ? UNREGISTRABLE : unusedEntryProblem(levels, entry.rule, "matches no violation"),
|
|
35
|
+
}));
|
|
31
36
|
return { kept, registered: violations.length - kept.length, stale };
|
|
32
37
|
};
|
|
33
38
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/exceptions/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAgB,UAAU,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAkB,MAAM,wBAAwB,CAAC;AAE5E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,mDAAmD,EAAE,CAAC,CAAC;CACtH,CAAC,CAAC;AAIH,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE;IAC9F,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAuB,EAAkD,EAAE,CACzG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAa/F,MAAM,MAAM,GAAG,CAAC,KAAoB,EAAE,SAAoB,EAAW,EAAE,CACtE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;AAExI,MAAM,aAAa,GAAG,CAAC,OAAqC,EAAE,SAAoB,EAA6B,EAAE;IAChH,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IACrE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC5B,UAAoC,EACpC,OAAqC,EACrC,MAAkC,EAClB,EAAE;IAClB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAiB,CAAC;IACtC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/exceptions/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/failure.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { Runtime } from "effect";
|
|
|
2
2
|
declare const SetupFailure_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
3
3
|
readonly _tag: "SetupFailure";
|
|
4
4
|
} & Readonly<A>;
|
|
5
|
-
/** The check could not run: invalid configuration, unreadable input or a crashed rule. Exits 2. */
|
|
6
5
|
export declare class SetupFailure extends SetupFailure_base<{
|
|
7
6
|
readonly message: string;
|
|
8
7
|
}> {
|
|
@@ -12,7 +11,6 @@ export declare class SetupFailure extends SetupFailure_base<{
|
|
|
12
11
|
declare const GateFailed_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
13
12
|
readonly _tag: "GateFailed";
|
|
14
13
|
} & Readonly<A>;
|
|
15
|
-
/** The check ran and the repository fails the gate. The report is already printed. Exits 1. */
|
|
16
14
|
export declare class GateFailed extends GateFailed_base {
|
|
17
15
|
readonly [Runtime.errorReported] = false;
|
|
18
16
|
readonly [Runtime.errorExitCode] = 1;
|
package/dist/failure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,MAAM,QAAQ,CAAC;;;;AAEvC,
|
|
1
|
+
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,MAAM,QAAQ,CAAC;;;;AAEvC,qBAAa,YAAa,SAAQ,kBAAiC;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;IAC/F,SAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS;IAClD,SAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK;CAC9C;;;;AAED,qBAAa,UAAW,SAAQ,eAA8B;IAC7D,SAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS;IAClD,SAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK;CAC9C"}
|
package/dist/failure.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { Data, Runtime } from "effect";
|
|
2
|
-
/** The check could not run: invalid configuration, unreadable input or a crashed rule. Exits 2. */
|
|
3
2
|
export class SetupFailure extends Data.TaggedError("SetupFailure") {
|
|
4
3
|
[Runtime.errorReported] = false;
|
|
5
4
|
[Runtime.errorExitCode] = 2;
|
|
6
5
|
}
|
|
7
|
-
/** The check ran and the repository fails the gate. The report is already printed. Exits 1. */
|
|
8
6
|
export class GateFailed extends Data.TaggedError("GateFailed") {
|
|
9
7
|
[Runtime.errorReported] = false;
|
|
10
8
|
[Runtime.errorExitCode] = 1;
|
package/dist/failure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEvC,
|
|
1
|
+
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,YAAa,SAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAA+B;IAC7E,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;IAChC,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC9C;AAED,MAAM,OAAO,UAAW,SAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IAC3C,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;IAChC,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC9C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { SetupFailure } from "../failure.ts";
|
|
3
|
+
import { type Git } from "./command.ts";
|
|
4
|
+
export interface Base {
|
|
5
|
+
readonly ref: string;
|
|
6
|
+
readonly commit: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const resolveBase: (root: string, against: string | undefined) => Effect.Effect<Base, SetupFailure, Git>;
|
|
9
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/git/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,GAAG,EAAO,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAsED,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAW1G,CAAC"}
|
package/dist/git/base.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Console, Effect } from "effect";
|
|
2
|
+
import { SetupFailure } from "../failure.js";
|
|
3
|
+
import { git } from "./command.js";
|
|
4
|
+
const FALLBACK_BRANCHES = ["origin/main", "origin/master"];
|
|
5
|
+
const fail = (message) => Effect.fail(new SetupFailure({ message }));
|
|
6
|
+
const isCommit = (root, ref) => Effect.map(git(root, ["rev-parse", "--verify", "--quiet", `${ref}^{commit}`]), (result) => result.code === 0);
|
|
7
|
+
const defaultBranch = (root) => Effect.gen(function* () {
|
|
8
|
+
const head = yield* git(root, ["symbolic-ref", "--quiet", "--short", "refs/remotes/origin/HEAD"]);
|
|
9
|
+
if (head.code === 0) {
|
|
10
|
+
return head.stdout.trim();
|
|
11
|
+
}
|
|
12
|
+
for (const candidate of FALLBACK_BRANCHES) {
|
|
13
|
+
if (yield* isCommit(root, candidate)) {
|
|
14
|
+
return candidate;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return yield* fail("cannot find the default branch: origin/HEAD, origin/main and origin/master are missing. Pass --against <ref>, or run `git remote set-head origin --auto`.");
|
|
18
|
+
});
|
|
19
|
+
const isShallow = (root) => Effect.map(git(root, ["rev-parse", "--is-shallow-repository"]), (result) => result.stdout.trim() === "true");
|
|
20
|
+
const mergeBase = (root, ref) => Effect.map(git(root, ["merge-base", "HEAD", ref]), (result) => (result.code === 0 ? result.stdout.trim() : undefined));
|
|
21
|
+
const remoteOf = (root, ref) => Effect.gen(function* () {
|
|
22
|
+
const name = (yield* git(root, ["rev-parse", "--symbolic-full-name", ref])).stdout.trim();
|
|
23
|
+
const remotes = (yield* git(root, ["remote"])).stdout.split("\n");
|
|
24
|
+
return remotes.filter((remote) => remote !== "" && name.startsWith(`refs/remotes/${remote}/`)).slice(0, 1);
|
|
25
|
+
});
|
|
26
|
+
const unshallow = (root, ref) => Effect.gen(function* () {
|
|
27
|
+
const remote = yield* remoteOf(root, ref);
|
|
28
|
+
yield* Console.error(`quality: the clone is shallow; fetching its full history to find the merge base of HEAD and ${ref}.`);
|
|
29
|
+
yield* git(root, ["fetch", "--quiet", "--unshallow", ...remote], { GIT_TERMINAL_PROMPT: "0" });
|
|
30
|
+
});
|
|
31
|
+
const missingMergeBase = (root, ref) => Effect.flatMap(isShallow(root), (shallow) => fail(shallow
|
|
32
|
+
? `the clone is shallow and does not reach the merge base of HEAD and ${ref}. Fetch the history first: \`git fetch --unshallow\`, or fetch-depth: 0 in actions/checkout.`
|
|
33
|
+
: `HEAD and ${ref} share no history.`));
|
|
34
|
+
const reachMergeBase = (root, ref) => Effect.gen(function* () {
|
|
35
|
+
const found = yield* mergeBase(root, ref);
|
|
36
|
+
if (found !== undefined) {
|
|
37
|
+
return found;
|
|
38
|
+
}
|
|
39
|
+
if (yield* isShallow(root)) {
|
|
40
|
+
yield* unshallow(root, ref);
|
|
41
|
+
const deepened = yield* mergeBase(root, ref);
|
|
42
|
+
if (deepened !== undefined) {
|
|
43
|
+
return deepened;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return yield* missingMergeBase(root, ref);
|
|
47
|
+
});
|
|
48
|
+
export const resolveBase = (root, against) => Effect.gen(function* () {
|
|
49
|
+
const inside = yield* git(root, ["rev-parse", "--is-inside-work-tree"]);
|
|
50
|
+
if (inside.code !== 0 || inside.stdout.trim() !== "true") {
|
|
51
|
+
return yield* fail(`${root} is not in a git work tree; the baseline is compared with its version in git history.`);
|
|
52
|
+
}
|
|
53
|
+
const ref = against ?? (yield* defaultBranch(root));
|
|
54
|
+
if (!(yield* isCommit(root, ref))) {
|
|
55
|
+
return yield* fail(`${ref} names no commit in this clone. Fetch it first, or pass another --against <ref>.`);
|
|
56
|
+
}
|
|
57
|
+
return { commit: yield* reachMergeBase(root, ref), ref };
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/git/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { ChildProcessSpawner } from "effect/unstable/process";
|
|
3
|
+
import { SetupFailure } from "../failure.ts";
|
|
4
|
+
export interface GitResult {
|
|
5
|
+
readonly code: number;
|
|
6
|
+
readonly stdout: string;
|
|
7
|
+
readonly stderr: string;
|
|
8
|
+
}
|
|
9
|
+
export type Git = ChildProcessSpawner.ChildProcessSpawner;
|
|
10
|
+
export declare const git: (cwd: string, args: ReadonlyArray<string>, env?: Readonly<Record<string, string>>) => Effect.Effect<GitResult, SetupFailure, Git>;
|
|
11
|
+
export declare const gitOrFail: (cwd: string, args: ReadonlyArray<string>) => Effect.Effect<string, SetupFailure, Git>;
|
|
12
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/git/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAgB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,GAAG,GAAG,mBAAmB,CAAC,mBAAmB,CAAC;AAE1D,eAAO,MAAM,GAAG,GAAI,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,CAW3C,CAAC;AAEvG,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,CAK1G,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Effect, Stream } from "effect";
|
|
2
|
+
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
|
|
3
|
+
import { SetupFailure } from "../failure.js";
|
|
4
|
+
export const git = (cwd, args, env) => Effect.scoped(Effect.gen(function* () {
|
|
5
|
+
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
|
|
6
|
+
const child = yield* spawner.spawn(ChildProcess.make("git", [...args], { cwd, env, extendEnv: true, stdin: "ignore" }));
|
|
7
|
+
const [stdout, stderr, code] = yield* Effect.all([Stream.mkString(Stream.decodeText(child.stdout)), Stream.mkString(Stream.decodeText(child.stderr)), child.exitCode], { concurrency: "unbounded" });
|
|
8
|
+
return { code: Number(code), stderr, stdout };
|
|
9
|
+
})).pipe(Effect.mapError((error) => new SetupFailure({ message: `cannot run git: ${error.message}` })));
|
|
10
|
+
export const gitOrFail = (cwd, args) => Effect.flatMap(git(cwd, args), (result) => result.code === 0
|
|
11
|
+
? Effect.succeed(result.stdout)
|
|
12
|
+
: Effect.fail(new SetupFailure({ message: `git ${args[0]} failed: ${result.stderr.trim() || `exit code ${result.code}`}` })));
|
|
13
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/git/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAU7C,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,IAA2B,EAAE,GAAsC,EAA+C,EAAE,CACpJ,MAAM,CAAC,MAAM,CACZ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAC/C,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EACpH,EAAE,WAAW,EAAE,WAAW,EAAE,CAC5B,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC,CAAC,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEvG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,IAA2B,EAA4C,EAAE,CAC/G,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CACzC,MAAM,CAAC,IAAI,KAAK,CAAC;IAChB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAC7H,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { SetupFailure } from "../failure.ts";
|
|
3
|
+
import { type Git } from "./command.ts";
|
|
4
|
+
export interface Changes {
|
|
5
|
+
readonly files: ReadonlySet<string>;
|
|
6
|
+
readonly moves: ReadonlyMap<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export declare const readAt: (root: string, commit: string, path: string) => Effect.Effect<string | undefined, SetupFailure, Git>;
|
|
9
|
+
export declare const changesSince: (root: string, revision: ReadonlyArray<string>) => Effect.Effect<Changes, SetupFailure, Git>;
|
|
10
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/git/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,KAAK,GAAG,EAAkB,MAAM,cAAc,CAAC;AAExD,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,MAAM,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,GAAG,CAKpH,CAAC;AAsBJ,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,UAAU,aAAa,CAAC,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,CAInH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { git, gitOrFail } from "./command.js";
|
|
3
|
+
export const readAt = (root, commit, path) => Effect.gen(function* () {
|
|
4
|
+
const object = `${commit}:./${path}`;
|
|
5
|
+
const present = yield* git(root, ["cat-file", "-e", object]);
|
|
6
|
+
return present.code === 0 ? yield* gitOrFail(root, ["cat-file", "blob", object]) : undefined;
|
|
7
|
+
});
|
|
8
|
+
const parse = (output) => {
|
|
9
|
+
const fields = output.split("\0");
|
|
10
|
+
const files = new Set();
|
|
11
|
+
const moves = new Map();
|
|
12
|
+
for (let index = 0; index < fields.length - 1;) {
|
|
13
|
+
const status = fields[index] ?? "";
|
|
14
|
+
const paths = fields.slice(index + 1, index + (/^[RC]/.test(status) ? 3 : 2));
|
|
15
|
+
for (const path of paths) {
|
|
16
|
+
files.add(path);
|
|
17
|
+
}
|
|
18
|
+
const [from, to] = paths;
|
|
19
|
+
if (status.startsWith("R") && from !== undefined && to !== undefined) {
|
|
20
|
+
moves.set(from, to);
|
|
21
|
+
}
|
|
22
|
+
index += paths.length + 1;
|
|
23
|
+
}
|
|
24
|
+
return { files, moves };
|
|
25
|
+
};
|
|
26
|
+
// Paths are relative to the root, and only tracked files count: a move is seen once both of its sides are staged.
|
|
27
|
+
export const changesSince = (root, revision) => Effect.map(gitOrFail(root, ["diff", "--no-color", "--no-ext-diff", "--find-renames", "--name-status", "-z", "--relative", ...revision, "--"]), parse);
|
|
28
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/git/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAY,GAAG,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOxD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,IAAY,EAAwD,EAAE,CAC1H,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnB,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9F,CAAC,CAAC,CAAC;AAEJ,MAAM,KAAK,GAAG,CAAC,MAAc,EAAW,EAAE;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAI,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;QACzB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACtE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrB,CAAC;QACD,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,kHAAkH;AAClH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,QAA+B,EAA6C,EAAE,CACxH,MAAM,CAAC,GAAG,CACT,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,EAClI,KAAK,CACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore-scope.d.ts","sourceRoot":"","sources":["../../src/inventory/ignore-scope.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAErD,UAAU,aAAa;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;CAC5C;AAED,eAAO,MAAM,UAAU,EAAE,WAAmD,CAAC;AAE7E,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,MAAoC,CAAC;AAE1E,eAAO,MAAM,cAAc,GAAI,OAAO,WAAW,EAAE,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,WAGlF,CAAC;AAGH,eAAO,MAAM,UAAU,GAAI,OAAO,WAAW,EAAE,WAAW,MAAM,KAAG,WAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"ignore-scope.d.ts","sourceRoot":"","sources":["../../src/inventory/ignore-scope.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAErD,UAAU,aAAa;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;CAC5C;AAED,eAAO,MAAM,UAAU,EAAE,WAAmD,CAAC;AAE7E,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,MAAoC,CAAC;AAE1E,eAAO,MAAM,cAAc,GAAI,OAAO,WAAW,EAAE,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,WAGlF,CAAC;AAGH,eAAO,MAAM,UAAU,GAAI,OAAO,WAAW,EAAE,WAAW,MAAM,KAAG,WAAkE,CAAC;AAgBtI,eAAO,MAAM,UAAU,GAAI,OAAO,WAAW,EAAE,MAAM,MAAM,EAAE,WAAW,OAAO,KAAG,OACkE,CAAC"}
|
|
@@ -21,6 +21,5 @@ const matcherVerdict = (matcher, boundary, path, directory) => {
|
|
|
21
21
|
}
|
|
22
22
|
return result.unignored ? "kept" : "unknown";
|
|
23
23
|
};
|
|
24
|
-
// The deepest ignore file with an opinion wins.
|
|
25
24
|
export const verdictFor = (scope, path, directory) => scope.matchers.map((matcher) => matcherVerdict(matcher, scope.boundary, path, directory)).findLast((verdict) => verdict !== "unknown") ?? "unknown";
|
|
26
25
|
//# sourceMappingURL=ignore-scope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore-scope.js","sourceRoot":"","sources":["../../src/inventory/ignore-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAc5B,MAAM,CAAC,MAAM,UAAU,GAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAE7E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAE,IAAY,EAAE,QAAgB,EAAe,EAAE,CAAC,CAAC;IACnG,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;CACtE,CAAC,CAAC;AAEH,mGAAmG;AACnG,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAkB,EAAE,SAAiB,EAAe,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEtI,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAE,QAA4B,EAAE,IAAY,EAAE,SAAkB,EAAW,EAAE;IAC1H,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACzG,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,6DAA6D;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"ignore-scope.js","sourceRoot":"","sources":["../../src/inventory/ignore-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAc5B,MAAM,CAAC,MAAM,UAAU,GAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAE7E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAE,IAAY,EAAE,QAAgB,EAAe,EAAE,CAAC,CAAC;IACnG,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;CACtE,CAAC,CAAC;AAEH,mGAAmG;AACnG,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAkB,EAAE,SAAiB,EAAe,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEtI,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAE,QAA4B,EAAE,IAAY,EAAE,SAAkB,EAAW,EAAE;IAC1H,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACzG,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,6DAA6D;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAkB,EAAE,IAAY,EAAE,SAAkB,EAAW,EAAE,CAC3F,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,SAAS,CAAC"}
|
package/dist/inventory/walk.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { Effect, FileSystem } from "effect";
|
|
|
2
2
|
import { type FilesystemFailure } from "./filesystem.ts";
|
|
3
3
|
import { type IgnoreScope } from "./ignore-scope.ts";
|
|
4
4
|
export declare const ignoreScopeAt: (dir: string, inherited?: IgnoreScope) => Effect.Effect<IgnoreScope, FilesystemFailure, FileSystem.FileSystem>;
|
|
5
|
-
/** The ignore files of every directory between the root and a walked directory, which the walk itself does not visit. */
|
|
6
5
|
export declare const scopeAbove: (root: string, dir: string) => Effect.Effect<IgnoreScope, FilesystemFailure, FileSystem.FileSystem>;
|
|
7
6
|
export declare const walk: (dir: string, inherited?: IgnoreScope) => Effect.Effect<readonly string[], FilesystemFailure, FileSystem.FileSystem>;
|
|
8
7
|
//# sourceMappingURL=walk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/inventory/walk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAc,KAAK,WAAW,EAA0C,MAAM,mBAAmB,CAAC;AAIzG,eAAO,MAAM,aAAa,GACzB,KAAK,MAAM,EACX,YAAW,WAAwB,KACjC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAGpE,CAAC;
|
|
1
|
+
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/inventory/walk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAc,KAAK,WAAW,EAA0C,MAAM,mBAAmB,CAAC;AAIzG,eAAO,MAAM,aAAa,GACzB,KAAK,MAAM,EACX,YAAW,WAAwB,KACjC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAGpE,CAAC;AAGH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAUzH,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,KAAK,MAAM,EAAE,YAAW,WAAwB,KAAG,MAAM,CAAC,MAAM,CAAC,SAAS,MAAM,EAAE,EAAE,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAW9I,CAAC"}
|
package/dist/inventory/walk.js
CHANGED
|
@@ -4,7 +4,7 @@ import { orWhenAbsent, readOptionalText } from "./filesystem.js";
|
|
|
4
4
|
import { emptyScope, insideKept, verdictFor, withIgnoreFile } from "./ignore-scope.js";
|
|
5
5
|
const SKIPPED = new Set([".git", "node_modules"]);
|
|
6
6
|
export const ignoreScopeAt = (dir, inherited = emptyScope) => Effect.map(readOptionalText(join(dir, ".gitignore")), (contents) => contents === undefined || contents === "" ? inherited : withIgnoreFile(inherited, dir, contents));
|
|
7
|
-
|
|
7
|
+
// The walk itself never visits the directories between the root and a source, so their ignore files are read here.
|
|
8
8
|
export const scopeAbove = (root, dir) => {
|
|
9
9
|
const parts = relative(root, dir)
|
|
10
10
|
.split(sep)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/inventory/walk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAA0B,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAoB,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEzG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC5B,GAAW,EACX,YAAyB,UAAU,EACoC,EAAE,CACzE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAClE,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAChG,CAAC;AAEH,
|
|
1
|
+
{"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/inventory/walk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { GuardResult } from "../baseline/guard.ts";
|
|
2
|
+
import type { Base } from "../git/base.ts";
|
|
3
|
+
export interface GuardContext {
|
|
4
|
+
readonly baseline: string;
|
|
5
|
+
readonly config: string;
|
|
6
|
+
readonly base: Base;
|
|
7
|
+
}
|
|
8
|
+
export declare const renderGuard: (result: GuardResult, context: GuardContext) => string;
|
|
9
|
+
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/report/guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACpB;AAyBD,eAAO,MAAM,WAAW,GAAI,QAAQ,WAAW,EAAE,SAAS,YAAY,KAAG,MAYxE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { plural } from "./plural.js";
|
|
2
|
+
const problemLine = (problem, context) => {
|
|
3
|
+
switch (problem._tag) {
|
|
4
|
+
case "Added":
|
|
5
|
+
return `${problem.entry.rule} ${problem.entry.file} is new, at ${problem.entry.count}.`;
|
|
6
|
+
case "Raised":
|
|
7
|
+
return `${problem.entry.rule} ${problem.entry.file} rose to ${problem.entry.count} from ${problem.base.count}.`;
|
|
8
|
+
case "Unadopted":
|
|
9
|
+
return `${problem.rule} is newly baselined in ${plural(problem.entries, "file")} without being named under \`adopt\` in ${context.config}.`;
|
|
10
|
+
case "NothingAdopted":
|
|
11
|
+
return `\`adopt\` in ${context.config} names ${problem.rule}, which has nothing baselined. Remove it.`;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const against = (base) => `${base.ref} (merge base ${base.commit.slice(0, 12)})`;
|
|
15
|
+
const held = (result) => [
|
|
16
|
+
...(result.moved > 0 ? [`${plural(result.moved, "entry", "entries")} followed moved files`] : []),
|
|
17
|
+
...(result.adopted.length > 0 ? [`adopted ${result.adopted.join(", ")}`] : []),
|
|
18
|
+
]
|
|
19
|
+
.map((part) => `; ${part}`)
|
|
20
|
+
.join("");
|
|
21
|
+
export const renderGuard = (result, context) => {
|
|
22
|
+
if (result.problems.length === 0) {
|
|
23
|
+
return `quality: ${context.baseline} holds against ${against(context.base)}${held(result)}.`;
|
|
24
|
+
}
|
|
25
|
+
return [
|
|
26
|
+
[
|
|
27
|
+
`error ${context.baseline} grew against ${against(context.base)}`,
|
|
28
|
+
` The baseline only shrinks. Fix new violations instead of baselining them; a rule enters the baseline for the first time only while \`adopt\` names it.`,
|
|
29
|
+
...result.problems.map((problem) => ` ${problemLine(problem, context)}`),
|
|
30
|
+
].join("\n"),
|
|
31
|
+
`quality: baseline check failed with ${plural(result.problems.length, "problem")}.`,
|
|
32
|
+
].join("\n\n");
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/report/guard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,MAAM,WAAW,GAAG,CAAC,OAAqB,EAAE,OAAqB,EAAU,EAAE;IAC5E,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,OAAO;YACX,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,eAAe,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;QACzF,KAAK,QAAQ;YACZ,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;QACjH,KAAK,WAAW;YACf,OAAO,GAAG,OAAO,CAAC,IAAI,0BAA0B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,2CAA2C,OAAO,CAAC,MAAM,GAAG,CAAC;QAC7I,KAAK,gBAAgB;YACpB,OAAO,gBAAgB,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,IAAI,2CAA2C,CAAC;IACzG,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AAE/F,MAAM,IAAI,GAAG,CAAC,MAAmB,EAAU,EAAE,CAC5C;IACC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CAC9E;KACC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;KAC1B,IAAI,CAAC,EAAE,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAE,OAAqB,EAAU,EAAE;IACjF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,YAAY,OAAO,CAAC,QAAQ,kBAAkB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC9F,CAAC;IACD,OAAO;QACN;YACC,SAAS,OAAO,CAAC,QAAQ,iBAAiB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACjE,0JAA0J;YAC1J,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;SACzE,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,uCAAuC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG;KACnF,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChB,CAAC,CAAC"}
|
package/dist/report/render.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { describeEntry, describeTally } from "../baseline/compare.js";
|
|
2
1
|
import { passes } from "../engine/evaluate.js";
|
|
3
2
|
import { groupBy, keyOf } from "../engine/violation.js";
|
|
4
3
|
import { plural } from "./plural.js";
|
|
5
4
|
import { staleSections } from "./stale.js";
|
|
6
5
|
const LISTED_FILES = 5;
|
|
7
6
|
const locate = (violation) => (violation.line === undefined ? violation.file : `${violation.file}:${violation.line}`);
|
|
8
|
-
const regressionNote = (regression) => ` ${regression.entry.file} is over its baseline: ${
|
|
7
|
+
const regressionNote = (regression) => ` ${regression.entry.file} is over its baseline: ${regression.count} against ${regression.entry.count} baselined.`;
|
|
9
8
|
const heading = (label, rule, violations, context) => {
|
|
10
9
|
const description = context.descriptions.get(rule);
|
|
11
10
|
return [`${label} ${rule} (${violations.length})`, ...(description === undefined ? [] : [` ${description}`])];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"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"}
|