@lucasacoutinho/archer 0.2.1 → 0.3.0
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/README.md +144 -387
- package/dist/analyzer/Analyzer.d.ts +17 -0
- package/dist/analyzer/Analyzer.d.ts.map +1 -0
- package/dist/analyzer/Analyzer.js +15 -0
- package/dist/analyzer/Analyzer.js.map +1 -0
- package/dist/analyzer/bindings.d.ts +26 -0
- package/dist/analyzer/bindings.d.ts.map +1 -0
- package/dist/analyzer/bindings.js +61 -0
- package/dist/analyzer/bindings.js.map +1 -0
- package/dist/analyzer/errors.d.ts +34 -0
- package/dist/analyzer/errors.d.ts.map +1 -0
- package/dist/analyzer/errors.js +20 -0
- package/dist/analyzer/errors.js.map +1 -0
- package/dist/analyzer/graph-file.d.ts +13 -0
- package/dist/analyzer/graph-file.d.ts.map +1 -0
- package/dist/analyzer/graph-file.js +22 -0
- package/dist/analyzer/graph-file.js.map +1 -0
- package/dist/analyzer/paths.d.ts +12 -0
- package/dist/analyzer/paths.d.ts.map +1 -0
- package/dist/analyzer/paths.js +26 -0
- package/dist/analyzer/paths.js.map +1 -0
- package/dist/analyzer/server-exit.d.ts +19 -0
- package/dist/analyzer/server-exit.d.ts.map +1 -0
- package/dist/analyzer/server-exit.js +70 -0
- package/dist/analyzer/server-exit.js.map +1 -0
- package/dist/analyzer/source.d.ts +29 -0
- package/dist/analyzer/source.d.ts.map +1 -0
- package/dist/analyzer/source.js +58 -0
- package/dist/analyzer/source.js.map +1 -0
- package/dist/analyzer/syntax.d.ts +29 -0
- package/dist/analyzer/syntax.d.ts.map +1 -0
- package/dist/analyzer/syntax.js +226 -0
- package/dist/analyzer/syntax.js.map +1 -0
- package/dist/analyzer/targets.d.ts +26 -0
- package/dist/analyzer/targets.d.ts.map +1 -0
- package/dist/analyzer/targets.js +84 -0
- package/dist/analyzer/targets.js.map +1 -0
- package/dist/analyzer/typescript.d.ts +5 -0
- package/dist/analyzer/typescript.d.ts.map +1 -0
- package/dist/analyzer/typescript.js +221 -0
- package/dist/analyzer/typescript.js.map +1 -0
- package/dist/analyzer/workspace.d.ts +24 -0
- package/dist/analyzer/workspace.d.ts.map +1 -0
- package/dist/analyzer/workspace.js +9 -0
- package/dist/analyzer/workspace.js.map +1 -0
- package/dist/cli/explain.d.ts +3 -0
- package/dist/cli/explain.d.ts.map +1 -0
- package/dist/cli/explain.js +21 -0
- package/dist/cli/explain.js.map +1 -0
- package/dist/cli/main.d.ts +3 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +159 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/config/input.d.ts +59 -0
- package/dist/config/input.d.ts.map +1 -0
- package/dist/config/input.js +115 -0
- package/dist/config/input.js.map +1 -0
- package/dist/config/rules.d.ts +94 -0
- package/dist/config/rules.d.ts.map +1 -0
- package/dist/config/rules.js +130 -0
- package/dist/config/rules.js.map +1 -0
- package/dist/core/baseline.d.ts +16 -0
- package/dist/core/baseline.d.ts.map +1 -0
- package/dist/core/baseline.js +25 -0
- package/dist/core/baseline.js.map +1 -0
- package/dist/core/check.d.ts +16 -0
- package/dist/core/check.d.ts.map +1 -0
- package/dist/core/check.js +271 -0
- package/dist/core/check.js.map +1 -0
- package/dist/core/config.d.ts +72 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +78 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/fingerprint.d.ts +54 -0
- package/dist/core/fingerprint.d.ts.map +1 -0
- package/dist/core/fingerprint.js +182 -0
- package/dist/core/fingerprint.js.map +1 -0
- package/dist/core/keys.d.ts +10 -0
- package/dist/core/keys.d.ts.map +1 -0
- package/dist/core/keys.js +16 -0
- package/dist/core/keys.js.map +1 -0
- package/dist/core/lower.d.ts +13 -0
- package/dist/core/lower.d.ts.map +1 -0
- package/dist/core/lower.js +82 -0
- package/dist/core/lower.js.map +1 -0
- package/dist/core/model.d.ts +155 -0
- package/dist/core/model.d.ts.map +1 -0
- package/dist/core/model.js +116 -0
- package/dist/core/model.js.map +1 -0
- package/dist/core/pattern.d.ts +13 -0
- package/dist/core/pattern.d.ts.map +1 -0
- package/dist/core/pattern.js +29 -0
- package/dist/core/pattern.js.map +1 -0
- package/dist/core/reach.d.ts +10 -0
- package/dist/core/reach.d.ts.map +1 -0
- package/dist/core/reach.js +81 -0
- package/dist/core/reach.js.map +1 -0
- package/dist/core/rule.d.ts +200 -0
- package/dist/core/rule.d.ts.map +1 -0
- package/dist/core/rule.js +162 -0
- package/dist/core/rule.js.map +1 -0
- package/dist/core/selector.d.ts +7 -0
- package/dist/core/selector.d.ts.map +1 -0
- package/dist/core/selector.js +27 -0
- package/dist/core/selector.js.map +1 -0
- package/dist/core/structural.d.ts +10 -0
- package/dist/core/structural.d.ts.map +1 -0
- package/dist/core/structural.js +24 -0
- package/dist/core/structural.js.map +1 -0
- package/dist/core/text.d.ts +26 -0
- package/dist/core/text.d.ts.map +1 -0
- package/dist/core/text.js +144 -0
- package/dist/core/text.js.map +1 -0
- package/dist/effect.d.ts +19 -0
- package/dist/effect.d.ts.map +1 -0
- package/dist/effect.js +21 -0
- package/dist/effect.js.map +1 -0
- package/dist/index.d.ts +24 -44
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -52
- package/dist/index.js.map +1 -0
- package/dist/report/agent.d.ts +3 -0
- package/dist/report/agent.d.ts.map +1 -0
- package/dist/report/agent.js +35 -0
- package/dist/report/agent.js.map +1 -0
- package/dist/report/dot.d.ts +4 -0
- package/dist/report/dot.d.ts.map +1 -0
- package/dist/report/dot.js +15 -0
- package/dist/report/dot.js.map +1 -0
- package/dist/report/github.d.ts +3 -0
- package/dist/report/github.d.ts.map +1 -0
- package/dist/report/github.js +18 -0
- package/dist/report/github.js.map +1 -0
- package/dist/report/json.d.ts +3 -0
- package/dist/report/json.d.ts.map +1 -0
- package/dist/report/json.js +4 -0
- package/dist/report/json.js.map +1 -0
- package/dist/report/message.d.ts +20 -0
- package/dist/report/message.d.ts.map +1 -0
- package/dist/report/message.js +73 -0
- package/dist/report/message.js.map +1 -0
- package/dist/report/pretty.d.ts +8 -0
- package/dist/report/pretty.d.ts.map +1 -0
- package/dist/report/pretty.js +89 -0
- package/dist/report/pretty.js.map +1 -0
- package/dist/report/render.d.ts +9 -0
- package/dist/report/render.d.ts.map +1 -0
- package/dist/report/render.js +10 -0
- package/dist/report/render.js.map +1 -0
- package/dist/report/report.d.ts +44 -0
- package/dist/report/report.d.ts.map +1 -0
- package/dist/report/report.js +49 -0
- package/dist/report/report.js.map +1 -0
- package/dist/report/sarif.d.ts +3 -0
- package/dist/report/sarif.d.ts.map +1 -0
- package/dist/report/sarif.js +68 -0
- package/dist/report/sarif.js.map +1 -0
- package/dist/run.d.ts +49 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +87 -0
- package/dist/run.js.map +1 -0
- package/dist/shell/baseline-file.d.ts +20 -0
- package/dist/shell/baseline-file.d.ts.map +1 -0
- package/dist/shell/baseline-file.js +46 -0
- package/dist/shell/baseline-file.js.map +1 -0
- package/dist/shell/load-config.d.ts +19 -0
- package/dist/shell/load-config.d.ts.map +1 -0
- package/dist/shell/load-config.js +39 -0
- package/dist/shell/load-config.js.map +1 -0
- package/package.json +29 -177
- package/skills/archer/SKILL.md +127 -45
- package/skills/archer/agents/openai.yaml +2 -2
- package/skills/archer/references/rules.md +267 -54
- package/dist/bun/plugin.cjs +0 -85
- package/dist/bun/plugin.d.cts +0 -7
- package/dist/bun/plugin.d.ts +0 -7
- package/dist/bun/plugin.js +0 -11
- package/dist/bun.cjs +0 -2238
- package/dist/bun.d.cts +0 -13
- package/dist/bun.d.ts +0 -13
- package/dist/bun.js +0 -28
- package/dist/chunk-2AKMBLHG.js +0 -2165
- package/dist/chunk-67YEOTXP.js +0 -25
- package/dist/chunk-IDVLHNL2.js +0 -46
- package/dist/chunk-ZZ6TR4PO.js +0 -201
- package/dist/cli.js +0 -2643
- package/dist/index.cjs +0 -2484
- package/dist/index.d.cts +0 -45
- package/dist/jest/plugin.cjs +0 -85
- package/dist/jest/plugin.d.cts +0 -7
- package/dist/jest/plugin.d.ts +0 -7
- package/dist/jest/plugin.js +0 -11
- package/dist/jest.cjs +0 -2237
- package/dist/jest.d.cts +0 -13
- package/dist/jest.d.ts +0 -13
- package/dist/jest.js +0 -27
- package/dist/matchers-Cqnbsyxe.d.cts +0 -11
- package/dist/matchers-Cqnbsyxe.d.ts +0 -11
- package/dist/node.cjs +0 -2237
- package/dist/node.d.cts +0 -13
- package/dist/node.d.ts +0 -13
- package/dist/node.js +0 -27
- package/dist/reporters-BbAXMpuW.d.cts +0 -6
- package/dist/reporters-xh-HQneS.d.ts +0 -6
- package/dist/suite-BwnPDCvU.d.cts +0 -337
- package/dist/suite-BwnPDCvU.d.ts +0 -337
- package/dist/vitest/plugin.cjs +0 -85
- package/dist/vitest/plugin.d.cts +0 -7
- package/dist/vitest/plugin.d.ts +0 -7
- package/dist/vitest/plugin.js +0 -11
- package/dist/vitest.cjs +0 -2531
- package/dist/vitest.d.cts +0 -37
- package/dist/vitest.d.ts +0 -37
- package/dist/vitest.js +0 -139
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/analyzer/typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type Effect, Schema } from "effect";
|
|
2
|
+
import type { Graph } from "../core/model.ts";
|
|
3
|
+
import type { AnalysisError } from "./errors.ts";
|
|
4
|
+
export declare const AbsolutePath: Schema.Codec<string>;
|
|
5
|
+
export declare const RootRelativePath: Schema.Codec<string>;
|
|
6
|
+
/**
|
|
7
|
+
* What to analyze: the root directory and the tsconfig projects to load. The
|
|
8
|
+
* source files are the union of the projects' file lists. A file in several
|
|
9
|
+
* projects is analyzed through the first one in `projects` order.
|
|
10
|
+
*/
|
|
11
|
+
export interface Workspace {
|
|
12
|
+
readonly root: string;
|
|
13
|
+
readonly projects: readonly [string, ...Array<string>];
|
|
14
|
+
}
|
|
15
|
+
export declare const Workspace: Schema.Codec<Workspace>;
|
|
16
|
+
export interface AnalyzerShape {
|
|
17
|
+
/**
|
|
18
|
+
* The whole graph for the workspace, or an error; never a partial graph.
|
|
19
|
+
* Each call reads the files again, so a watcher can call it repeatedly.
|
|
20
|
+
* Concurrent calls run one after another.
|
|
21
|
+
*/
|
|
22
|
+
readonly analyze: (workspace: Workspace) => Effect.Effect<Graph, AnalysisError>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/analyzer/workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAG7C,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAGjD,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvD;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAG5C,CAAA;AACF,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;CAChF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { isAbsolute } from "node:path";
|
|
2
|
+
import { Schema } from "effect";
|
|
3
|
+
export const AbsolutePath = Schema.String.check(Schema.isNonEmpty(), Schema.makeFilter((path) => isAbsolute(path) || "must be an absolute path"));
|
|
4
|
+
export const RootRelativePath = Schema.String.check(Schema.isNonEmpty(), Schema.makeFilter((path) => !isAbsolute(path) || "must be relative to the workspace root"));
|
|
5
|
+
export const Workspace = Schema.Struct({
|
|
6
|
+
root: AbsolutePath,
|
|
7
|
+
projects: Schema.NonEmptyArray(RootRelativePath),
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/analyzer/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAe,MAAM,EAAE,MAAM,QAAQ,CAAA;AAI5C,MAAM,CAAC,MAAM,YAAY,GAAyB,MAAM,CAAC,MAAM,CAAC,KAAK,CACnE,MAAM,CAAC,UAAU,EAAE,EACnB,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAC5E,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAyB,MAAM,CAAC,MAAM,CAAC,KAAK,CACvE,MAAM,CAAC,UAAU,EAAE,EACnB,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,wCAAwC,CAAC,CAC3F,CAAA;AAYD,MAAM,CAAC,MAAM,SAAS,GAA4B,MAAM,CAAC,MAAM,CAAC;IAC9D,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC;CACjD,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../src/cli/explain.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAczC,eAAO,MAAM,OAAO,UAAW,QAAQ,KAAG,MAYtC,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Match } from "effect";
|
|
2
|
+
const causeText = (cause) => (cause instanceof Error ? cause.message : String(cause));
|
|
3
|
+
const rejection = (error) => Match.valueTags(error, {
|
|
4
|
+
DuplicateLayer: ({ name }) => `layer '${name}' is defined twice`,
|
|
5
|
+
UnknownLayer: ({ name }) => `layer '${name}' is used but not defined`,
|
|
6
|
+
DuplicateRuleId: ({ id }) => `rule id '${id}' is used twice (layer rules are named layer/<name>, public APIs public-api/<name>)`,
|
|
7
|
+
EmptyPolicy: () => "the configuration declares no rules",
|
|
8
|
+
});
|
|
9
|
+
const list = (items) => items.map((item) => `\n - ${item}`).join("");
|
|
10
|
+
export const explain = (error) => Match.valueTags(error, {
|
|
11
|
+
ConfigNotFound: ({ searched }) => `No configuration file. Looked for:${list(searched)}\nRun \`archer init\` to create one.`,
|
|
12
|
+
ConfigLoadError: ({ path, cause }) => `Could not load ${path}: ${causeText(cause)}`,
|
|
13
|
+
ConfigInvalid: ({ issues }) => `Invalid configuration:${list(issues)}`,
|
|
14
|
+
ConfigRejected: ({ error: rejected }) => `Invalid configuration: ${rejection(rejected)}`,
|
|
15
|
+
ProjectNotFound: ({ tsconfig }) => `No tsconfig at ${tsconfig}. Set \`root\` or \`projects\` in the configuration.`,
|
|
16
|
+
ProjectParseFailed: ({ tsconfig, diagnostics }) => `Could not read ${tsconfig}:${list(diagnostics)}`,
|
|
17
|
+
AnalyzerUnavailable: ({ cause }) => `The TypeScript analyzer stopped: ${causeText(cause)}`,
|
|
18
|
+
GraphFileInvalid: ({ path, issue }) => `Not a graph saved by \`archer graph\`: ${path} (${issue})`,
|
|
19
|
+
BaselineError: ({ path, reason, line }) => `Baseline ${path}: ${reason}${line === undefined ? "" : ` at line ${line}`}. Record a new one with \`archer baseline record\`.`,
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=explain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/cli/explain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAI9B,MAAM,SAAS,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAEtG,MAAM,SAAS,GAAG,CAAC,KAAkB,EAAU,EAAE,CAC/C,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;IACrB,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,IAAI,oBAAoB;IAChE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,IAAI,2BAA2B;IACrE,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,YAAY,EAAE,qFAAqF;IAChI,WAAW,EAAE,GAAG,EAAE,CAAC,qCAAqC;CACzD,CAAC,CAAA;AAEJ,MAAM,IAAI,GAAG,CAAC,KAA4B,EAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAEpG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAe,EAAU,EAAE,CACjD,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;IACrB,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,qCAAqC,IAAI,CAAC,QAAQ,CAAC,sCAAsC;IAC3H,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,kBAAkB,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE;IACnF,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,EAAE;IACtE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,0BAA0B,SAAS,CAAC,QAAQ,CAAC,EAAE;IACxF,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,kBAAkB,QAAQ,sDAAsD;IACnH,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,kBAAkB,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;IACpG,mBAAmB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,oCAAoC,SAAS,CAAC,KAAK,CAAC,EAAE;IAC1F,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,0CAA0C,IAAI,KAAK,KAAK,GAAG;IAClG,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CACxC,YAAY,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,qDAAqD;CAClI,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":""}
|
package/dist/cli/main.js
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { readFileSync } from "node:fs";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { NodeRuntime, NodeServices } from "@effect/platform-node";
|
|
6
|
+
import { Console, Deferred, Duration, Effect, Fiber, FileSystem, Option, Path, Schema, Semaphore, Stream } from "effect";
|
|
7
|
+
import { Argument, CliError, Command, Flag } from "effect/cli";
|
|
8
|
+
import { Analyzer } from "../analyzer/Analyzer.js";
|
|
9
|
+
import { formatGraphFile } from "../analyzer/graph-file.js";
|
|
10
|
+
import { render } from "../report/render.js";
|
|
11
|
+
import { locateWorkspace, run } from "../run.js";
|
|
12
|
+
import { explain } from "./explain.js";
|
|
13
|
+
const formats = ["pretty", "agent", "json", "sarif", "github", "dot"];
|
|
14
|
+
const defaultFormat = "pretty";
|
|
15
|
+
const config = Flag.String("config").pipe(Flag.withAlias("c"), Flag.withDescription("Configuration file. Default: the first archer.config.{ts,mts,js,mjs} in the current directory."), Flag.optional);
|
|
16
|
+
/** A run that Archer cannot complete prints why and exits 2, keeping 1 for a failing report. */
|
|
17
|
+
const attempt = (effect) => effect.pipe(Effect.asSome, Effect.catch((error) => Console.error(explain(error)).pipe(Effect.andThen(Effect.sync(() => (process.exitCode = 2))), Effect.as(Option.none()))));
|
|
18
|
+
const runOnce = (options) => Effect.gen(function* () {
|
|
19
|
+
const fs = yield* FileSystem.FileSystem;
|
|
20
|
+
const outcome = yield* attempt(run({ ...(Option.isSome(options.config) ? { config: options.config.value } : {}), baseline: options.baseline }));
|
|
21
|
+
if (Option.isNone(outcome)) {
|
|
22
|
+
return Option.none();
|
|
23
|
+
}
|
|
24
|
+
const result = outcome.value;
|
|
25
|
+
const color = Option.isNone(options.output) && process.stdout.isTTY === true;
|
|
26
|
+
const text = yield* render(options.reporter, result.report, result.graph, { root: result.root, color });
|
|
27
|
+
if (Option.isSome(options.output)) {
|
|
28
|
+
yield* fs.writeFileString(options.output.value, `${text}\n`);
|
|
29
|
+
}
|
|
30
|
+
else if (text !== "") {
|
|
31
|
+
yield* Console.log(text);
|
|
32
|
+
}
|
|
33
|
+
process.exitCode = result.report.verdict === "fail" ? 1 : 0;
|
|
34
|
+
return Option.some(result.root);
|
|
35
|
+
});
|
|
36
|
+
/** Watch event paths use the platform separator: `/`, or `\` on Windows. */
|
|
37
|
+
const ignored = (changed) => changed
|
|
38
|
+
.split("\\")
|
|
39
|
+
.flatMap((part) => part.split("/"))
|
|
40
|
+
.some((segment) => segment === "node_modules" || segment === ".git");
|
|
41
|
+
/** The `check` invocation that a watcher repeats: the same flags, without `--watch`. */
|
|
42
|
+
const checkArguments = (input) => [
|
|
43
|
+
"check",
|
|
44
|
+
...(Option.isSome(input.config) ? ["--config", input.config.value] : []),
|
|
45
|
+
"--reporter",
|
|
46
|
+
input.reporter,
|
|
47
|
+
...(Option.isSome(input.output) ? ["--output", input.output.value] : []),
|
|
48
|
+
...(input.ignoreBaseline ? ["--ignore-baseline"] : []),
|
|
49
|
+
...(Option.isSome(input.graph) ? ["--graph", input.graph.value] : []),
|
|
50
|
+
];
|
|
51
|
+
const entry = fileURLToPath(import.meta.url);
|
|
52
|
+
/** One check in a fresh Node process, so every module reloads and nothing is retained between runs. */
|
|
53
|
+
const checkInChild = (args) => Effect.callback((resume) => {
|
|
54
|
+
const child = spawn(process.execPath, [...process.execArgv, entry, ...args], { stdio: "inherit" });
|
|
55
|
+
child.once("exit", () => resume(Effect.void));
|
|
56
|
+
child.once("error", (error) => resume(Console.error(`archer: could not start a check: ${error.message}`)));
|
|
57
|
+
return Effect.sync(() => {
|
|
58
|
+
child.kill();
|
|
59
|
+
setTimeout(() => child.kill("SIGKILL"), 3_000).unref();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Runs the check, then again after each change under the workspace root or
|
|
64
|
+
* beside the configuration file, which covers modules the configuration
|
|
65
|
+
* imports. This process never loads TypeScript or the user's rules twice.
|
|
66
|
+
*/
|
|
67
|
+
const watchChecks = (input) => Effect.gen(function* () {
|
|
68
|
+
const fs = yield* FileSystem.FileSystem;
|
|
69
|
+
const path = yield* Path.Path;
|
|
70
|
+
const location = yield* attempt(locateWorkspace(Option.isSome(input.config) ? { config: input.config.value } : {}));
|
|
71
|
+
if (Option.isNone(location)) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const args = checkArguments(input);
|
|
75
|
+
const { root, configFile } = location.value;
|
|
76
|
+
const report = Option.isSome(input.output) ? path.resolve(input.output.value) : undefined;
|
|
77
|
+
const relevant = (directory, changed) => !ignored(changed) && path.resolve(directory, changed) !== report;
|
|
78
|
+
const rootReady = yield* Deferred.make();
|
|
79
|
+
const configReady = yield* Deferred.make();
|
|
80
|
+
const changes = fs
|
|
81
|
+
.watch(root, { recursive: true, onReady: () => Deferred.doneUnsafe(rootReady, Effect.void) })
|
|
82
|
+
.pipe(Stream.filter((event) => relevant(root, event.path)));
|
|
83
|
+
const configChanges = configFile === undefined
|
|
84
|
+
? Stream.fromEffect(Deferred.succeed(configReady, undefined)).pipe(Stream.drain)
|
|
85
|
+
: fs
|
|
86
|
+
.watch(path.dirname(configFile), { onReady: () => Deferred.doneUnsafe(configReady, Effect.void) })
|
|
87
|
+
.pipe(Stream.filter((event) => relevant(path.dirname(configFile), event.path)));
|
|
88
|
+
const lock = yield* Semaphore.make(1);
|
|
89
|
+
const checkOnce = lock.withPermit(checkInChild(args));
|
|
90
|
+
const watching = yield* Stream.merge(changes, configChanges).pipe(Stream.debounce(Duration.millis(200)), Stream.runForEach(() => checkOnce), Effect.forkChild);
|
|
91
|
+
// Watch before the first check, so an edit made while it runs is not missed.
|
|
92
|
+
yield* Deferred.await(rootReady);
|
|
93
|
+
yield* Deferred.await(configReady);
|
|
94
|
+
yield* checkOnce;
|
|
95
|
+
yield* Fiber.join(watching);
|
|
96
|
+
});
|
|
97
|
+
const check = Command.make("check", {
|
|
98
|
+
config,
|
|
99
|
+
reporter: Flag.Literals("reporter", formats).pipe(Flag.withAlias("r"), Flag.withDefault(defaultFormat)),
|
|
100
|
+
output: Flag.String("output").pipe(Flag.withAlias("o"), Flag.withDescription("Write the report to a file."), Flag.optional),
|
|
101
|
+
watch: Flag.Boolean("watch").pipe(Flag.withAlias("w"), Flag.withDefault(false)),
|
|
102
|
+
ignoreBaseline: Flag.Boolean("ignore-baseline").pipe(Flag.withDescription("Report every violation, including those the baseline accepts."), Flag.withDefault(false)),
|
|
103
|
+
graph: Flag.String("graph").pipe(Flag.withDescription("Check a graph saved by `archer graph` instead of analyzing the workspace."), Flag.optional),
|
|
104
|
+
}, Effect.fn("archer.check")(function* (input) {
|
|
105
|
+
if (input.watch) {
|
|
106
|
+
return yield* watchChecks(input);
|
|
107
|
+
}
|
|
108
|
+
yield* runOnce({
|
|
109
|
+
config: input.config,
|
|
110
|
+
reporter: input.reporter,
|
|
111
|
+
output: input.output,
|
|
112
|
+
baseline: input.ignoreBaseline ? "ignore" : "apply",
|
|
113
|
+
}).pipe(Effect.provide(Option.isSome(input.graph) ? Analyzer.replay(input.graph.value) : Analyzer.typescript));
|
|
114
|
+
})).pipe(Command.withDescription("Check the architecture. Exits 1 when the report fails, 2 when Archer cannot check."));
|
|
115
|
+
const baseline = Command.make("baseline", { config, mode: Argument.Literals("mode", ["record", "prune"]) }, Effect.fn("archer.baseline")(function* ({ config, mode }) {
|
|
116
|
+
const recorded = yield* runOnce({ config, reporter: "agent", output: Option.none(), baseline: mode }).pipe(Effect.provide(Analyzer.typescript));
|
|
117
|
+
if (Option.isSome(recorded)) {
|
|
118
|
+
process.exitCode = 0;
|
|
119
|
+
}
|
|
120
|
+
})).pipe(Command.withDescription("record: accept every current violation. prune: drop entries no violation has."));
|
|
121
|
+
const graph = Command.make("graph", {
|
|
122
|
+
config,
|
|
123
|
+
output: Flag.String("output").pipe(Flag.withAlias("o"), Flag.withDescription("The graph file to write.")),
|
|
124
|
+
}, Effect.fn("archer.graph")(function* ({ config, output }) {
|
|
125
|
+
const fs = yield* FileSystem.FileSystem;
|
|
126
|
+
const result = yield* attempt(run({ ...(Option.isSome(config) ? { config: config.value } : {}), baseline: "ignore" }).pipe(Effect.provide(Analyzer.typescript)));
|
|
127
|
+
if (Option.isSome(result)) {
|
|
128
|
+
yield* fs.writeFileString(output, formatGraphFile(result.value.graph));
|
|
129
|
+
yield* Console.log(`Wrote ${result.value.graph.files.length} files to ${output}`);
|
|
130
|
+
}
|
|
131
|
+
})).pipe(Command.withDescription("Save the analyzed graph, for `archer check --graph` or a bug report."));
|
|
132
|
+
const template = `import { defineConfig, presets, r } from "@lucasacoutinho/archer"
|
|
133
|
+
|
|
134
|
+
export default defineConfig({
|
|
135
|
+
layers: {
|
|
136
|
+
app: "src/app",
|
|
137
|
+
domain: "src/domain",
|
|
138
|
+
infrastructure: "src/infrastructure",
|
|
139
|
+
},
|
|
140
|
+
stack: ["app", "domain"],
|
|
141
|
+
allow: { infrastructure: ["domain"] },
|
|
142
|
+
rules: [...presets.recommended, r.forbid("domain/pure", "layer:domain", ["npm:*", "node:*"])],
|
|
143
|
+
})
|
|
144
|
+
`;
|
|
145
|
+
const init = Command.make("init", {}, Effect.fn("archer.init")(function* () {
|
|
146
|
+
const fs = yield* FileSystem.FileSystem;
|
|
147
|
+
const path = yield* Path.Path;
|
|
148
|
+
const file = path.resolve("archer.config.ts");
|
|
149
|
+
if (yield* fs.exists(file)) {
|
|
150
|
+
process.exitCode = 1;
|
|
151
|
+
return yield* Console.error(`${file} already exists`);
|
|
152
|
+
}
|
|
153
|
+
yield* fs.writeFileString(file, template);
|
|
154
|
+
yield* Console.log(`Created ${file}`);
|
|
155
|
+
})).pipe(Command.withDescription("Create a starter archer.config.ts."));
|
|
156
|
+
const { version } = Schema.decodeUnknownSync(Schema.Struct({ version: Schema.String }))(JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8")));
|
|
157
|
+
const archer = Command.make("archer").pipe(Command.withSubcommands([check, baseline, graph, init]));
|
|
158
|
+
archer.pipe(Command.run({ version }), Effect.catchIf(CliError.isCliError, () => Effect.sync(() => (process.exitCode = 2))), Effect.provide(NodeServices.layer), NodeRuntime.runMain);
|
|
159
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Result, Schema } from "effect";
|
|
2
|
+
import type { Config } from "../core/config.ts";
|
|
3
|
+
import { type Assertion, Severity } from "../core/rule.ts";
|
|
4
|
+
import type { RuleInfo } from "../report/report.ts";
|
|
5
|
+
import type { CustomCheck, RuleSpec, SelectorInput } from "./rules.ts";
|
|
6
|
+
interface RuleShape {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly severity?: Severity;
|
|
9
|
+
readonly reason?: string;
|
|
10
|
+
readonly subject: SelectorInput;
|
|
11
|
+
readonly assertion: Assertion<SelectorInput>;
|
|
12
|
+
readonly check?: unknown;
|
|
13
|
+
}
|
|
14
|
+
declare const RuleShape: Schema.Codec<RuleShape>;
|
|
15
|
+
interface ArcherShape {
|
|
16
|
+
readonly root?: string;
|
|
17
|
+
readonly projects?: readonly [string, ...Array<string>];
|
|
18
|
+
readonly layers?: Readonly<Record<string, SelectorInput>>;
|
|
19
|
+
readonly stack?: ReadonlyArray<string>;
|
|
20
|
+
readonly allow?: Readonly<Record<string, ReadonlyArray<string>>>;
|
|
21
|
+
readonly publicApis?: Readonly<Record<string, SelectorInput>>;
|
|
22
|
+
readonly rules?: ReadonlyArray<RuleShape>;
|
|
23
|
+
readonly baseline?: string | false;
|
|
24
|
+
readonly failOnWarnings?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare const ArcherConfig: Schema.Codec<ArcherShape>;
|
|
27
|
+
/** What a configuration file exports. `defineConfig` only adds type inference. */
|
|
28
|
+
export interface ArcherConfig {
|
|
29
|
+
readonly root?: string;
|
|
30
|
+
readonly projects?: readonly [string, ...Array<string>];
|
|
31
|
+
readonly layers?: Readonly<Record<string, SelectorInput>>;
|
|
32
|
+
readonly stack?: ReadonlyArray<string>;
|
|
33
|
+
readonly allow?: Readonly<Record<string, ReadonlyArray<string>>>;
|
|
34
|
+
readonly publicApis?: Readonly<Record<string, SelectorInput>>;
|
|
35
|
+
readonly rules?: ReadonlyArray<RuleSpec>;
|
|
36
|
+
readonly baseline?: string | false;
|
|
37
|
+
readonly failOnWarnings?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export declare const defineConfig: (config: ArcherConfig) => ArcherConfig;
|
|
40
|
+
/** A decoded configuration: the Lean `Config` plus what only the shell needs. */
|
|
41
|
+
export interface Configuration {
|
|
42
|
+
readonly config: Config;
|
|
43
|
+
readonly custom: ReadonlyMap<string, CustomCheck>;
|
|
44
|
+
readonly rules: ReadonlyArray<RuleInfo>;
|
|
45
|
+
readonly root: string;
|
|
46
|
+
readonly projects: readonly [string, ...Array<string>];
|
|
47
|
+
readonly baseline: string | undefined;
|
|
48
|
+
readonly failOnWarnings: boolean;
|
|
49
|
+
}
|
|
50
|
+
declare const ConfigInvalid_base: Schema.Class<ConfigInvalid, Schema.TaggedStruct<"ConfigInvalid", {
|
|
51
|
+
readonly issues: Schema.NonEmptyArray<Schema.String>;
|
|
52
|
+
}>, import("effect/Cause").YieldableError & {
|
|
53
|
+
readonly brand: unique symbol;
|
|
54
|
+
}>;
|
|
55
|
+
export declare class ConfigInvalid extends ConfigInvalid_base {
|
|
56
|
+
}
|
|
57
|
+
export declare const decodeConfiguration: (input: unknown) => Result.Result<Configuration, ConfigInvalid>;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/config/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAoC,MAAM,mBAAmB,CAAA;AAEjF,OAAO,EAAE,KAAK,SAAS,EAA0C,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAElG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAiB,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAiBrF,UAAU,SAAS;IACjB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,CAAC,CAAA;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,QAAA,MAAM,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAOrC,CAAA;AAEF,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAmBlD,CAAA;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,eAAO,MAAM,YAAY,WAAY,YAAY,KAAG,YAAsB,CAAA;AAE1E,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACjD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CACjC;;;;oBAEsF,OAAO,MAAM;;AAApG,qBAAa,aAAc,SAAQ,kBAGlC;CAAG;AA6FJ,eAAO,MAAM,mBAAmB,UAAW,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAqC9F,CAAA"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Match, Result, Schema } from "effect";
|
|
2
|
+
import { assertionOf, mapAssertion, Severity } from "../core/rule.js";
|
|
3
|
+
import { parse } from "../core/text.js";
|
|
4
|
+
/** Integer-like keys enumerate before the others in JavaScript, which would reorder layers. */
|
|
5
|
+
const isArrayIndex = (name) => {
|
|
6
|
+
const value = Number(name);
|
|
7
|
+
return Number.isInteger(value) && value >= 0 && String(value) === name;
|
|
8
|
+
};
|
|
9
|
+
const LayerName = Schema.NonEmptyString;
|
|
10
|
+
const SelectorShape = Schema.Union([
|
|
11
|
+
Schema.String,
|
|
12
|
+
Schema.Array(Schema.suspend(() => SelectorShape)),
|
|
13
|
+
Schema.Struct({ not: Schema.suspend(() => SelectorShape) }),
|
|
14
|
+
Schema.Struct({ all: Schema.Array(Schema.suspend(() => SelectorShape)) }),
|
|
15
|
+
]);
|
|
16
|
+
const RuleShape = Schema.Struct({
|
|
17
|
+
id: Schema.NonEmptyString,
|
|
18
|
+
severity: Schema.optionalKey(Severity),
|
|
19
|
+
reason: Schema.optionalKey(Schema.String),
|
|
20
|
+
subject: SelectorShape,
|
|
21
|
+
assertion: assertionOf(SelectorShape),
|
|
22
|
+
check: Schema.optionalKey(Schema.Unknown),
|
|
23
|
+
});
|
|
24
|
+
export const ArcherConfig = Schema.Struct({
|
|
25
|
+
/** Relative to the configuration file. */
|
|
26
|
+
root: Schema.optionalKey(Schema.String),
|
|
27
|
+
/** tsconfig files, relative to `root`. */
|
|
28
|
+
projects: Schema.optionalKey(Schema.NonEmptyArray(Schema.NonEmptyString)),
|
|
29
|
+
layers: Schema.optionalKey(Schema.Record(LayerName, SelectorShape)),
|
|
30
|
+
stack: Schema.optionalKey(Schema.Array(LayerName)),
|
|
31
|
+
allow: Schema.optionalKey(Schema.Record(LayerName, Schema.Array(LayerName))),
|
|
32
|
+
publicApis: Schema.optionalKey(Schema.Record(LayerName, SelectorShape)),
|
|
33
|
+
rules: Schema.optionalKey(Schema.Array(RuleShape)),
|
|
34
|
+
/** Relative to `root`; `false` checks without a baseline. */
|
|
35
|
+
baseline: Schema.optionalKey(Schema.Union([Schema.String, Schema.Literal(false)])),
|
|
36
|
+
failOnWarnings: Schema.optionalKey(Schema.Boolean),
|
|
37
|
+
}).check(Schema.makeFilter((config) => {
|
|
38
|
+
const names = [config.layers, config.allow, config.publicApis].flatMap((table) => Object.keys(table ?? {}));
|
|
39
|
+
const index = names.find(isArrayIndex);
|
|
40
|
+
return index === undefined || `layer name '${index}' must not look like an array index`;
|
|
41
|
+
}));
|
|
42
|
+
export const defineConfig = (config) => config;
|
|
43
|
+
export class ConfigInvalid extends Schema.TaggedError()("ConfigInvalid", { issues: Schema.NonEmptyArray(Schema.String) }) {
|
|
44
|
+
}
|
|
45
|
+
const all = (items) => {
|
|
46
|
+
const issues = items.flatMap((item) => (Result.isFailure(item) ? item.failure : []));
|
|
47
|
+
return issues.length > 0 ? Result.fail(issues) : Result.succeed(items.flatMap((item) => (Result.isSuccess(item) ? [item.success] : [])));
|
|
48
|
+
};
|
|
49
|
+
const isList = (input) => Array.isArray(input);
|
|
50
|
+
const toConfigSelector = (input, at) => Match.value(input).pipe(Match.when(Match.string, (text) => Result.mapError(parse(text), (error) => [`${at}: '${text}' is not a selector (${error._tag})`])), Match.when(isList, (items) => Result.map(all(items.map((item, index) => toConfigSelector(item, `${at}[${index}]`))), (selectors) => (selectors.length === 1 && selectors[0] !== undefined ? selectors[0] : { _tag: "Any", selectors }))), Match.when({ not: Match.defined }, ({ not }) => Result.map(toConfigSelector(not, `${at}.not`), (selector) => ({ _tag: "Not", selector }))), Match.orElse(({ all: items }) => Result.map(all(items.map((item, index) => toConfigSelector(item, `${at}.all[${index}]`))), (selectors) => ({ _tag: "All", selectors }))));
|
|
51
|
+
/** Layer and entry selectors define layers, so they cannot refer to one. */
|
|
52
|
+
const withoutLayers = (selector, at) => Match.valueTags(selector, {
|
|
53
|
+
Base: ({ selector: base }) => Result.succeed(base),
|
|
54
|
+
Layer: ({ name }) => Result.fail([`${at}: 'layer:${name}' cannot be used to define a layer`]),
|
|
55
|
+
Any: ({ selectors }) => Result.map(all(selectors.map((inner) => withoutLayers(inner, at))), (inner) => ({ _tag: "Any", selectors: inner })),
|
|
56
|
+
All: ({ selectors }) => Result.map(all(selectors.map((inner) => withoutLayers(inner, at))), (inner) => ({ _tag: "All", selectors: inner })),
|
|
57
|
+
Not: ({ selector: inner }) => Result.map(withoutLayers(inner, at), (base) => ({ _tag: "Not", selector: base })),
|
|
58
|
+
});
|
|
59
|
+
const layerSelector = (input, at) => Result.flatMap(toConfigSelector(input, at), (selector) => withoutLayers(selector, at));
|
|
60
|
+
const convertRule = (rule, at) => {
|
|
61
|
+
const selectors = [];
|
|
62
|
+
const assertion = mapAssertion(rule.assertion, (input) => {
|
|
63
|
+
const converted = toConfigSelector(input, `${at}.assertion`);
|
|
64
|
+
selectors.push(converted);
|
|
65
|
+
return Result.getOrElse(converted, () => ({ _tag: "Any", selectors: [] }));
|
|
66
|
+
});
|
|
67
|
+
const custom = rule.assertion._tag === "Custom" && typeof rule.check !== "function"
|
|
68
|
+
? [Result.fail([`${at}: a custom rule needs a check function`])]
|
|
69
|
+
: [];
|
|
70
|
+
return Result.flatMap(all([toConfigSelector(rule.subject, `${at}.subject`), ...selectors, ...custom]), ([subject]) => subject === undefined
|
|
71
|
+
? Result.fail([`${at}.subject: missing`])
|
|
72
|
+
: Result.succeed({ id: rule.id, severity: rule.severity ?? "error", subject, assertion }));
|
|
73
|
+
};
|
|
74
|
+
const Messages = Schema.Array(Schema.String);
|
|
75
|
+
/** A user check is untrusted: a throw or a malformed result becomes one finding, so the check stays total. */
|
|
76
|
+
const guarded = (check) => (context) => {
|
|
77
|
+
try {
|
|
78
|
+
const output = Reflect.apply(check, undefined, [context]);
|
|
79
|
+
return Result.getOrElse(Schema.decodeUnknownResult(Messages)(output), () => [
|
|
80
|
+
"custom rule returned something other than a list of messages",
|
|
81
|
+
]);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
return [`custom rule crashed: ${error instanceof Error ? error.message : String(error)}`];
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const issuesOf = (item) => (Result.isFailure(item) ? item.failure : []);
|
|
88
|
+
const allOf = (a, b, c) => Result.isSuccess(a) && Result.isSuccess(b) && Result.isSuccess(c)
|
|
89
|
+
? Result.succeed([a.success, b.success, c.success])
|
|
90
|
+
: Result.fail([...issuesOf(a), ...issuesOf(b), ...issuesOf(c)]);
|
|
91
|
+
export const decodeConfiguration = (input) => {
|
|
92
|
+
const shaped = Schema.decodeUnknownResult(ArcherConfig, { errors: "all" })(input);
|
|
93
|
+
if (Result.isFailure(shaped)) {
|
|
94
|
+
return Result.fail(new ConfigInvalid({ issues: [shaped.failure.message] }));
|
|
95
|
+
}
|
|
96
|
+
const config = shaped.success;
|
|
97
|
+
const parts = allOf(all(Object.entries(config.layers ?? {}).map(([name, selector]) => Result.map(layerSelector(selector, `layers.${name}`), (converted) => ({ name, selector: converted })))), all(Object.entries(config.publicApis ?? {}).map(([layer, entry]) => Result.map(layerSelector(entry, `publicApis.${layer}`), (converted) => ({ layer, entry: converted })))), all((config.rules ?? []).map((rule, index) => convertRule(rule, `rules[${index}]`))));
|
|
98
|
+
return Result.mapBoth(parts, {
|
|
99
|
+
onFailure: ([first = "invalid configuration", ...rest]) => new ConfigInvalid({ issues: [first, ...rest] }),
|
|
100
|
+
onSuccess: ([layers, publicApis, rules]) => ({
|
|
101
|
+
config: { layers, stack: config.stack ?? [], allow: Object.entries(config.allow ?? {}), publicApis, rules },
|
|
102
|
+
custom: new Map((config.rules ?? []).flatMap((rule) => (typeof rule.check === "function" ? [[rule.id, guarded(rule.check)]] : []))),
|
|
103
|
+
rules: (config.rules ?? []).map((rule) => ({
|
|
104
|
+
id: rule.id,
|
|
105
|
+
severity: rule.severity ?? "error",
|
|
106
|
+
...(rule.reason === undefined ? {} : { reason: rule.reason }),
|
|
107
|
+
})),
|
|
108
|
+
root: config.root ?? ".",
|
|
109
|
+
projects: config.projects ?? ["tsconfig.json"],
|
|
110
|
+
baseline: config.baseline === false ? undefined : (config.baseline ?? ".archer-baseline"),
|
|
111
|
+
failOnWarnings: config.failOnWarnings ?? false,
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/config/input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { DeclarationKind, DependencyKind, Graph, Visibility } from "../core/model.ts";
|
|
2
|
+
import type { Assertion, DeclarationPredicate, Severity, UseSpec } from "../core/rule.ts";
|
|
3
|
+
/** Selector text, a union (array), or a combination. */
|
|
4
|
+
export type SelectorInput = string | ReadonlyArray<SelectorInput> | {
|
|
5
|
+
readonly not: SelectorInput;
|
|
6
|
+
} | {
|
|
7
|
+
readonly all: ReadonlyArray<SelectorInput>;
|
|
8
|
+
};
|
|
9
|
+
export interface RuleOptions {
|
|
10
|
+
readonly severity?: Severity;
|
|
11
|
+
readonly reason?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface EdgeOptions extends RuleOptions {
|
|
14
|
+
readonly kinds?: ReadonlyArray<DependencyKind>;
|
|
15
|
+
readonly transitive?: boolean;
|
|
16
|
+
readonly localOnly?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface CustomContext {
|
|
19
|
+
readonly graph: Graph;
|
|
20
|
+
/** The subject's root-relative path, `/`-separated. */
|
|
21
|
+
readonly subject: string;
|
|
22
|
+
}
|
|
23
|
+
export type CustomCheck = (context: CustomContext) => ReadonlyArray<string>;
|
|
24
|
+
export interface RuleSpec {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly severity?: Severity;
|
|
27
|
+
readonly reason?: string;
|
|
28
|
+
readonly subject: SelectorInput;
|
|
29
|
+
readonly assertion: Assertion<SelectorInput>;
|
|
30
|
+
/** The closure of a custom rule, whose assertion names it by the rule's ID. */
|
|
31
|
+
readonly check?: CustomCheck;
|
|
32
|
+
}
|
|
33
|
+
export type ReachRule = (id: string, subject: SelectorInput, object: SelectorInput, options?: EdgeOptions) => RuleSpec;
|
|
34
|
+
export type AcyclicRule = (id: string, subject: SelectorInput, options?: EdgeOptions & {
|
|
35
|
+
readonly folderDepth?: number;
|
|
36
|
+
}) => RuleSpec;
|
|
37
|
+
export type ResolvableRule = (id: string, subject: SelectorInput, options?: RuleOptions & {
|
|
38
|
+
readonly allowComputed?: boolean;
|
|
39
|
+
}) => RuleSpec;
|
|
40
|
+
export type DeclaresRule = (id: string, subject: SelectorInput, predicate: DeclarationPredicate, options?: RuleOptions) => RuleSpec;
|
|
41
|
+
export type ExportsOnlyRule = (id: string, subject: SelectorInput, names: ReadonlyArray<string>, options?: RuleOptions) => RuleSpec;
|
|
42
|
+
export type UsesRule = (id: string, subject: SelectorInput, use: UseSpec, options?: RuleOptions) => RuleSpec;
|
|
43
|
+
export type NamedRule = (id: string, subject: SelectorInput, value: string, options?: RuleOptions & {
|
|
44
|
+
readonly forbid?: boolean;
|
|
45
|
+
}) => RuleSpec;
|
|
46
|
+
export type MaxLinesRule = (id: string, subject: SelectorInput, max: number, options?: RuleOptions) => RuleSpec;
|
|
47
|
+
export type CustomRule = (id: string, subject: SelectorInput, check: CustomCheck, options?: RuleOptions) => RuleSpec;
|
|
48
|
+
export interface RuleConstructors {
|
|
49
|
+
readonly forbid: ReachRule;
|
|
50
|
+
readonly require: ReachRule;
|
|
51
|
+
readonly onlyDependOn: ReachRule;
|
|
52
|
+
readonly forbidDependents: ReachRule;
|
|
53
|
+
readonly requireDependents: ReachRule;
|
|
54
|
+
readonly onlyDependedOnBy: ReachRule;
|
|
55
|
+
readonly acyclic: AcyclicRule;
|
|
56
|
+
readonly resolvable: ResolvableRule;
|
|
57
|
+
readonly declares: DeclaresRule;
|
|
58
|
+
readonly declaresNone: DeclaresRule;
|
|
59
|
+
readonly exportsOnly: ExportsOnlyRule;
|
|
60
|
+
readonly forbidUse: UsesRule;
|
|
61
|
+
readonly requireUse: UsesRule;
|
|
62
|
+
readonly prefix: NamedRule;
|
|
63
|
+
readonly suffix: NamedRule;
|
|
64
|
+
readonly maxLines: MaxLinesRule;
|
|
65
|
+
readonly custom: CustomRule;
|
|
66
|
+
}
|
|
67
|
+
export interface PredicateConstructors {
|
|
68
|
+
readonly kind: (...kinds: ReadonlyArray<DeclarationKind>) => DeclarationPredicate;
|
|
69
|
+
readonly abstract: DeclarationPredicate;
|
|
70
|
+
readonly exported: DeclarationPredicate;
|
|
71
|
+
readonly readonlyProperties: DeclarationPredicate;
|
|
72
|
+
readonly extends: (name: string) => DeclarationPredicate;
|
|
73
|
+
readonly implements: (name: string) => DeclarationPredicate;
|
|
74
|
+
readonly decorator: (name: string) => DeclarationPredicate;
|
|
75
|
+
readonly hasMethods: (names: ReadonlyArray<string>, visibility?: Visibility) => DeclarationPredicate;
|
|
76
|
+
readonly onlyPublicMethods: DeclarationPredicate;
|
|
77
|
+
readonly all: (...predicates: ReadonlyArray<DeclarationPredicate>) => DeclarationPredicate;
|
|
78
|
+
}
|
|
79
|
+
export interface UseConstructors {
|
|
80
|
+
readonly looseEquality: UseSpec;
|
|
81
|
+
readonly globals: (...names: ReadonlyArray<string>) => UseSpec;
|
|
82
|
+
readonly imported: (source: string, ...names: ReadonlyArray<string>) => UseSpec;
|
|
83
|
+
}
|
|
84
|
+
export interface Presets {
|
|
85
|
+
readonly recommended: ReadonlyArray<RuleSpec>;
|
|
86
|
+
}
|
|
87
|
+
/** Rule constructors. Each returns plain data; the first argument is the rule's stable ID. */
|
|
88
|
+
export declare const r: RuleConstructors;
|
|
89
|
+
/** Declaration predicates for `r.declares` and `r.declaresNone`. */
|
|
90
|
+
export declare const p: PredicateConstructors;
|
|
91
|
+
/** Uses for `r.forbidUse` and `r.requireUse`. */
|
|
92
|
+
export declare const use: UseConstructors;
|
|
93
|
+
export declare const presets: Presets;
|
|
94
|
+
//# sourceMappingURL=rules.d.ts.map
|