@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":"rule.d.ts","sourceRoot":"","sources":["../../src/core/rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/** Schemas and semantics of lean/Archer/Rule.lean. */
|
|
2
|
+
import { Match, Schema } from "effect";
|
|
3
|
+
import { DeclarationKind, Dependency, EdgeFilter, FilePath, Location, Selector, Target, Use, Visibility, } from "./model.js";
|
|
4
|
+
import { dedupStructural, structuralEquals } from "./structural.js";
|
|
5
|
+
export const Severity = Schema.Literals(["error", "warning", "info"]);
|
|
6
|
+
export const Direction = Schema.Literals(["outgoing", "incoming"]);
|
|
7
|
+
export const Relation = Schema.Literals(["forbid", "require"]);
|
|
8
|
+
export const Quantifier = Schema.Literals(["every", "none"]);
|
|
9
|
+
export const DeclarationPredicate = Schema.Union([
|
|
10
|
+
Schema.TaggedStruct("Kind", { kinds: Schema.Array(DeclarationKind) }),
|
|
11
|
+
Schema.TaggedStruct("Abstract", {}),
|
|
12
|
+
Schema.TaggedStruct("Exported", {}),
|
|
13
|
+
Schema.TaggedStruct("ReadonlyProperties", {}),
|
|
14
|
+
Schema.TaggedStruct("Extends", { name: Schema.String }),
|
|
15
|
+
Schema.TaggedStruct("Implements", { name: Schema.String }),
|
|
16
|
+
Schema.TaggedStruct("Decorator", { name: Schema.String }),
|
|
17
|
+
Schema.TaggedStruct("HasMethods", { names: Schema.Array(Schema.String), visibility: Schema.optionalKey(Visibility) }),
|
|
18
|
+
Schema.TaggedStruct("OnlyPublicMethods", {}),
|
|
19
|
+
Schema.TaggedStruct("All", {
|
|
20
|
+
predicates: Schema.Array(Schema.suspend(() => DeclarationPredicate)),
|
|
21
|
+
}),
|
|
22
|
+
]);
|
|
23
|
+
export const holds = (predicate, declaration) => Match.valueTags(predicate, {
|
|
24
|
+
Kind: ({ kinds }) => kinds.includes(declaration.kind),
|
|
25
|
+
Abstract: () => declaration.abstract,
|
|
26
|
+
Exported: () => declaration.exported,
|
|
27
|
+
ReadonlyProperties: () => declaration.readonlyProperties,
|
|
28
|
+
Extends: ({ name }) => declaration.extended.includes(name),
|
|
29
|
+
Implements: ({ name }) => declaration.implemented.includes(name),
|
|
30
|
+
Decorator: ({ name }) => declaration.decorators.includes(name),
|
|
31
|
+
HasMethods: ({ names, visibility }) => names.every((name) => declaration.methods.some((method) => method.name === name && (visibility === undefined || method.visibility === visibility))),
|
|
32
|
+
OnlyPublicMethods: () => declaration.methods.every((method) => method.visibility === "public"),
|
|
33
|
+
All: ({ predicates }) => predicates.every((inner) => holds(inner, declaration)),
|
|
34
|
+
});
|
|
35
|
+
export const UseSpec = Schema.Union([
|
|
36
|
+
Schema.TaggedStruct("LooseEquality", {}),
|
|
37
|
+
/** Calls of these names that resolve to no declaration. */
|
|
38
|
+
Schema.TaggedStruct("Globals", { names: Schema.Array(Schema.String) }),
|
|
39
|
+
/** Calls that resolve to these exports of `source`. */
|
|
40
|
+
Schema.TaggedStruct("Imported", { source: Schema.String, names: Schema.Array(Schema.String) }),
|
|
41
|
+
]);
|
|
42
|
+
export const matchesUse = (spec, use) => Match.valueTags(spec, {
|
|
43
|
+
LooseEquality: () => use.kind === "looseEquality",
|
|
44
|
+
Globals: ({ names }) => use.kind === "call" && use.binding._tag === "Global" && names.includes(use.name),
|
|
45
|
+
Imported: ({ source, names }) => use.kind === "call" &&
|
|
46
|
+
Match.valueTags(use.binding, {
|
|
47
|
+
Global: () => false,
|
|
48
|
+
Local: () => false,
|
|
49
|
+
Imported: ({ name }) => name.source === source && names.includes(name.name),
|
|
50
|
+
}),
|
|
51
|
+
});
|
|
52
|
+
export const Affix = Schema.Literals(["prefix", "suffix"]);
|
|
53
|
+
/** Compares code points, as Lean's `String.toList`. */
|
|
54
|
+
export const affixHolds = (affix, value, name) => {
|
|
55
|
+
const needle = Array.from(value);
|
|
56
|
+
const hay = Array.from(name);
|
|
57
|
+
return Match.value(affix).pipe(Match.when("prefix", () => needle.every((char, index) => hay[index] === char)), Match.when("suffix", () => {
|
|
58
|
+
const offset = hay.length - needle.length;
|
|
59
|
+
return offset >= 0 && needle.every((char, index) => hay[offset + index] === char);
|
|
60
|
+
}), Match.exhaustive);
|
|
61
|
+
};
|
|
62
|
+
export const assertionOf = (selector) => Schema.Union([
|
|
63
|
+
Schema.TaggedStruct("Reach", { direction: Direction, relation: Relation, object: selector, edges: EdgeFilter }),
|
|
64
|
+
Schema.TaggedStruct("Acyclic", {
|
|
65
|
+
edges: EdgeFilter,
|
|
66
|
+
folderDepth: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),
|
|
67
|
+
}),
|
|
68
|
+
Schema.TaggedStruct("Resolvable", { allowComputed: Schema.Boolean }),
|
|
69
|
+
Schema.TaggedStruct("Declares", { quantifier: Quantifier, predicate: DeclarationPredicate }),
|
|
70
|
+
Schema.TaggedStruct("ExportsOnly", { names: Schema.Array(Schema.String) }),
|
|
71
|
+
Schema.TaggedStruct("Uses", { relation: Relation, use: UseSpec }),
|
|
72
|
+
Schema.TaggedStruct("Named", { relation: Relation, affix: Affix, value: Schema.String }),
|
|
73
|
+
Schema.TaggedStruct("MaxLines", { max: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)) }),
|
|
74
|
+
Schema.TaggedStruct("Custom", { name: Schema.String }),
|
|
75
|
+
]);
|
|
76
|
+
export const ruleOf = (selector) => Schema.Struct({ id: Schema.String, severity: Severity, subject: selector, assertion: assertionOf(selector) });
|
|
77
|
+
export const Rule = ruleOf(Selector);
|
|
78
|
+
export const Edge = Schema.Struct({ source: FilePath, dependency: Dependency });
|
|
79
|
+
export const Evidence = Schema.Union([
|
|
80
|
+
/** A forbidden target and the shortest considered walk to it. */
|
|
81
|
+
Schema.TaggedStruct("Walk", { target: Target, edges: Schema.Array(Edge) }),
|
|
82
|
+
/** A `require` assertion found nothing. */
|
|
83
|
+
Schema.TaggedStruct("Missing", {}),
|
|
84
|
+
/** The shortest cycle through the subject. */
|
|
85
|
+
Schema.TaggedStruct("Cycle", { edges: Schema.Array(Edge) }),
|
|
86
|
+
Schema.TaggedStruct("Dependency", { edge: Edge }),
|
|
87
|
+
Schema.TaggedStruct("Declaration", { name: Schema.String, location: Location }),
|
|
88
|
+
Schema.TaggedStruct("Export", { name: Schema.String }),
|
|
89
|
+
Schema.TaggedStruct("Use", { use: Use }),
|
|
90
|
+
Schema.TaggedStruct("Name", { basename: Schema.String }),
|
|
91
|
+
Schema.TaggedStruct("Lines", { count: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)) }),
|
|
92
|
+
Schema.TaggedStruct("Custom", { message: Schema.String }),
|
|
93
|
+
]);
|
|
94
|
+
export const EvidenceKey = Schema.Union([
|
|
95
|
+
Schema.TaggedStruct("Target", { target: Target }),
|
|
96
|
+
Schema.TaggedStruct("Missing", {}),
|
|
97
|
+
Schema.TaggedStruct("Cycle", {}),
|
|
98
|
+
Schema.TaggedStruct("Dependency", { edge: Edge }),
|
|
99
|
+
Schema.TaggedStruct("Declaration", { name: Schema.String, location: Location }),
|
|
100
|
+
Schema.TaggedStruct("Export", { name: Schema.String }),
|
|
101
|
+
Schema.TaggedStruct("Use", { use: Use }),
|
|
102
|
+
Schema.TaggedStruct("Name", {}),
|
|
103
|
+
Schema.TaggedStruct("Lines", {}),
|
|
104
|
+
Schema.TaggedStruct("Custom", { message: Schema.String }),
|
|
105
|
+
]);
|
|
106
|
+
export const evidenceKey = (evidence) => Match.valueTags(evidence, {
|
|
107
|
+
Walk: ({ target }) => ({ _tag: "Target", target }),
|
|
108
|
+
Missing: () => ({ _tag: "Missing" }),
|
|
109
|
+
Cycle: () => ({ _tag: "Cycle" }),
|
|
110
|
+
Dependency: ({ edge }) => ({ _tag: "Dependency", edge }),
|
|
111
|
+
Declaration: ({ name, location }) => ({ _tag: "Declaration", name, location }),
|
|
112
|
+
Export: ({ name }) => ({ _tag: "Export", name }),
|
|
113
|
+
Use: ({ use }) => ({ _tag: "Use", use }),
|
|
114
|
+
Name: () => ({ _tag: "Name" }),
|
|
115
|
+
Lines: () => ({ _tag: "Lines" }),
|
|
116
|
+
Custom: ({ message }) => ({ _tag: "Custom", message }),
|
|
117
|
+
});
|
|
118
|
+
export const Violation = Schema.Struct({
|
|
119
|
+
ruleId: Schema.String,
|
|
120
|
+
severity: Severity,
|
|
121
|
+
/** A source file, or a folder for a collapsed cycle rule. */
|
|
122
|
+
subject: FilePath,
|
|
123
|
+
evidence: Evidence,
|
|
124
|
+
});
|
|
125
|
+
export const violationKey = (violation) => [
|
|
126
|
+
violation.ruleId,
|
|
127
|
+
violation.subject,
|
|
128
|
+
evidenceKey(violation.evidence),
|
|
129
|
+
];
|
|
130
|
+
export const basename = (path) => path.at(-1) ?? "";
|
|
131
|
+
/** Lean `Graph.restrict`: the given files, and only the dependencies between them. */
|
|
132
|
+
export const restrict = (graph, keep) => ({
|
|
133
|
+
files: graph.files
|
|
134
|
+
.filter((file) => keep(file.path))
|
|
135
|
+
.map((file) => ({
|
|
136
|
+
...file,
|
|
137
|
+
dependencies: file.dependencies.filter(({ target }) => target._tag === "File" && keep(target.path)),
|
|
138
|
+
})),
|
|
139
|
+
});
|
|
140
|
+
/** Lean `folderOf`: the first `depth` segments of the file's directory. */
|
|
141
|
+
export const folderOf = (depth, path) => path.slice(0, -1).slice(0, depth);
|
|
142
|
+
/** Lean `Graph.collapse`: one node per folder, an edge per dependency that crosses folders. */
|
|
143
|
+
export const collapse = (graph, depth) => ({
|
|
144
|
+
files: dedupStructural(graph.files.map((file) => folderOf(depth, file.path))).map((folder) => ({
|
|
145
|
+
path: folder,
|
|
146
|
+
dependencies: graph.files
|
|
147
|
+
.filter((file) => structuralEquals(folderOf(depth, file.path), folder))
|
|
148
|
+
.flatMap((file) => file.dependencies.flatMap((dependency) => Match.value(dependency.target).pipe(Match.tag("File", ({ path }) => {
|
|
149
|
+
const targetFolder = folderOf(depth, path);
|
|
150
|
+
return structuralEquals(targetFolder, folder)
|
|
151
|
+
? []
|
|
152
|
+
: [{ ...dependency, target: { _tag: "File", path: targetFolder } }];
|
|
153
|
+
}), Match.orElse(() => [])))),
|
|
154
|
+
declarations: [],
|
|
155
|
+
exports: [],
|
|
156
|
+
uses: [],
|
|
157
|
+
lines: 0,
|
|
158
|
+
})),
|
|
159
|
+
});
|
|
160
|
+
export const assertionSelectors = (assertion) => Match.value(assertion).pipe(Match.tag("Reach", ({ object }) => [object]), Match.orElse(() => []));
|
|
161
|
+
export const mapAssertion = (assertion, f) => Match.value(assertion).pipe(Match.tag("Reach", (reach) => ({ ...reach, object: f(reach.object) })), Match.orElse((other) => other));
|
|
162
|
+
//# sourceMappingURL=rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/core/rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FilePath, Graph, PathToken, SegmentToken, Selector, SourceFile, Target } from "./model.ts";
|
|
2
|
+
/** Matches by code point, as Lean's `String.toList`, not by UTF-16 unit. */
|
|
3
|
+
export declare const segmentAccepts: (tokens: ReadonlyArray<SegmentToken>, segment: string) => boolean;
|
|
4
|
+
export declare const pathAccepts: (tokens: ReadonlyArray<PathToken>, path: FilePath) => boolean;
|
|
5
|
+
export declare const selects: (selector: Selector, target: Target) => boolean;
|
|
6
|
+
export declare const subjects: (graph: Graph, selector: Selector) => Array<SourceFile>;
|
|
7
|
+
//# sourceMappingURL=selector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/core/selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAUxG,4EAA4E;AAC5E,eAAO,MAAM,cAAc,WAAY,aAAa,CAAC,YAAY,CAAC,WAAW,MAAM,KAAG,OAC7B,CAAA;AAQzD,eAAO,MAAM,WAAW,WAAY,aAAa,CAAC,SAAS,CAAC,QAAQ,QAAQ,KAAG,OACxC,CAAA;AAEvC,eAAO,MAAM,OAAO,aAAc,QAAQ,UAAU,MAAM,KAAG,OAWzD,CAAA;AAEJ,eAAO,MAAM,QAAQ,UAAW,KAAK,YAAY,QAAQ,KAAG,KAAK,CAAC,UAAU,CACQ,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Port of `Archer.Selector.selects` and the token denotations in lean/Archer/Model.lean. */
|
|
2
|
+
import { Match } from "effect";
|
|
3
|
+
import { accepts } from "./pattern.js";
|
|
4
|
+
const segmentDenote = (token) => Match.valueTags(token, {
|
|
5
|
+
Literal: ({ char }) => ({ _tag: "Sat", test: (value) => value === char }),
|
|
6
|
+
One: () => ({ _tag: "Sat", test: () => true }),
|
|
7
|
+
Star: () => ({ _tag: "Many" }),
|
|
8
|
+
});
|
|
9
|
+
/** Matches by code point, as Lean's `String.toList`, not by UTF-16 unit. */
|
|
10
|
+
export const segmentAccepts = (tokens, segment) => accepts(tokens.map(segmentDenote), Array.from(segment));
|
|
11
|
+
const pathDenote = (token) => Match.valueTags(token, {
|
|
12
|
+
Segment: ({ tokens }) => ({ _tag: "Sat", test: (segment) => segmentAccepts(tokens, segment) }),
|
|
13
|
+
Globstar: () => ({ _tag: "Many" }),
|
|
14
|
+
});
|
|
15
|
+
export const pathAccepts = (tokens, path) => accepts(tokens.map(pathDenote), path);
|
|
16
|
+
export const selects = (selector, target) => Match.valueTags(selector, {
|
|
17
|
+
Glob: ({ tokens }) => target._tag === "File" && pathAccepts(tokens, target.path),
|
|
18
|
+
Package: ({ name }) => target._tag === "Package" && (name === undefined || name === target.name),
|
|
19
|
+
Builtin: ({ runtime, name }) => target._tag === "Builtin" && runtime === target.runtime && (name === undefined || name === target.name),
|
|
20
|
+
Unresolved: () => target._tag === "Unresolved",
|
|
21
|
+
Computed: () => target._tag === "Computed",
|
|
22
|
+
Any: ({ selectors }) => selectors.some((inner) => selects(inner, target)),
|
|
23
|
+
All: ({ selectors }) => selectors.every((inner) => selects(inner, target)),
|
|
24
|
+
Not: ({ selector: inner }) => !selects(inner, target),
|
|
25
|
+
});
|
|
26
|
+
export const subjects = (graph, selector) => graph.files.filter((file) => selects(selector, { _tag: "File", path: file.path }));
|
|
27
|
+
//# sourceMappingURL=selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/core/selector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lean derives `DecidableEq` structurally. Values here are plain JSON data,
|
|
3
|
+
* so equality is equality of canonical JSON: object keys sorted, array order
|
|
4
|
+
* kept, optional fields absent rather than `undefined`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const structuralKey: (value: unknown) => string;
|
|
7
|
+
export declare const structuralEquals: (a: unknown, b: unknown) => boolean;
|
|
8
|
+
/** Lean `List.eraseDups` and `Baseline.dedup`: first occurrences, in order. */
|
|
9
|
+
export declare const dedupStructural: <A>(items: ReadonlyArray<A>) => Array<A>;
|
|
10
|
+
//# sourceMappingURL=structural.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../src/core/structural.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,MAAyC,CAAA;AAExF,eAAO,MAAM,gBAAgB,MAAO,OAAO,KAAK,OAAO,KAAG,OAAgD,CAAA;AAE1G,+EAA+E;AAC/E,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,CAWnE,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lean derives `DecidableEq` structurally. Values here are plain JSON data,
|
|
3
|
+
* so equality is equality of canonical JSON: object keys sorted, array order
|
|
4
|
+
* kept, optional fields absent rather than `undefined`.
|
|
5
|
+
*/
|
|
6
|
+
const sortKeys = (_key, value) => typeof value === "object" && value !== null && !Array.isArray(value)
|
|
7
|
+
? Object.fromEntries(Object.entries(value).sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0)))
|
|
8
|
+
: value;
|
|
9
|
+
export const structuralKey = (value) => JSON.stringify(value, sortKeys);
|
|
10
|
+
export const structuralEquals = (a, b) => structuralKey(a) === structuralKey(b);
|
|
11
|
+
/** Lean `List.eraseDups` and `Baseline.dedup`: first occurrences, in order. */
|
|
12
|
+
export const dedupStructural = (items) => {
|
|
13
|
+
const seen = new Set();
|
|
14
|
+
const kept = [];
|
|
15
|
+
for (const item of items) {
|
|
16
|
+
const key = structuralKey(item);
|
|
17
|
+
if (!seen.has(key)) {
|
|
18
|
+
seen.add(key);
|
|
19
|
+
kept.push(item);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return kept;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=structural.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural.js","sourceRoot":"","sources":["../../src/core/structural.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,KAAc,EAAW,EAAE,CACzD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAClE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,KAAK,CAAA;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;AAExF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAU,EAAE,CAAU,EAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAA;AAE1G,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,KAAuB,EAAY,EAAE;IACtE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Port of lean/Archer/Impl/Text.lean; the algorithm and its error order follow the Lean definitions. */
|
|
2
|
+
import { Option, Result, Schema } from "effect";
|
|
3
|
+
import { ConfigSelector } from "./config.ts";
|
|
4
|
+
export type ParseError = {
|
|
5
|
+
readonly _tag: "Empty";
|
|
6
|
+
} | {
|
|
7
|
+
readonly _tag: "InvalidName";
|
|
8
|
+
readonly kind: string;
|
|
9
|
+
readonly name: string;
|
|
10
|
+
} | {
|
|
11
|
+
readonly _tag: "InvalidSegment";
|
|
12
|
+
readonly text: string;
|
|
13
|
+
} | {
|
|
14
|
+
readonly _tag: "Unsupported";
|
|
15
|
+
readonly char: string;
|
|
16
|
+
} | {
|
|
17
|
+
readonly _tag: "UnbalancedBraces";
|
|
18
|
+
};
|
|
19
|
+
export declare const ParseError: Schema.Codec<ParseError>;
|
|
20
|
+
/** Errors in this order: `Empty`, `UnbalancedBraces`, then the first failing alternative. */
|
|
21
|
+
export declare const parse: (input: string) => Result.Result<ConfigSelector, ParseError>;
|
|
22
|
+
/** `none` for selectors that `parse` never produces. A glob without wildcard tokens is not checked. */
|
|
23
|
+
export declare const print: (selector: ConfigSelector) => Option.Option<string>;
|
|
24
|
+
/** Selector text and its selector: decoding parses, encoding prints. */
|
|
25
|
+
export declare const SelectorText: Schema.Codec<ConfigSelector, string>;
|
|
26
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,OAAO,EAA+B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAqC,MAAM,QAAQ,CAAA;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAK5C,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAA;AAEzC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAO9C,CAAA;AAyKF,6FAA6F;AAC7F,eAAO,MAAM,KAAK,UAAW,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAO1E,CAAA;AAsCJ,uGAAuG;AACvG,eAAO,MAAM,KAAK,aAAc,cAAc,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAQlE,CAAA;AAYH,wEAAwE;AACxE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAuB7D,CAAA"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/** Port of lean/Archer/Impl/Text.lean; the algorithm and its error order follow the Lean definitions. */
|
|
2
|
+
import { Array as Arr, Effect, Match, Option, Result, Schema, SchemaIssue, SchemaTransformation } from "effect";
|
|
3
|
+
import { ConfigSelector } from "./config.js";
|
|
4
|
+
const Char = Schema.String.check(Schema.isBetweenCodePoints(1, 1));
|
|
5
|
+
export const ParseError = Schema.Union([
|
|
6
|
+
Schema.TaggedStruct("Empty", {}),
|
|
7
|
+
/** `kind` is the prefix without its colon. */
|
|
8
|
+
Schema.TaggedStruct("InvalidName", { kind: Schema.String, name: Schema.String }),
|
|
9
|
+
Schema.TaggedStruct("InvalidSegment", { text: Schema.String }),
|
|
10
|
+
Schema.TaggedStruct("Unsupported", { char: Char }),
|
|
11
|
+
Schema.TaggedStruct("UnbalancedBraces", {}),
|
|
12
|
+
]);
|
|
13
|
+
const text = (chars) => chars.join("");
|
|
14
|
+
const unbalanced = { _tag: "UnbalancedBraces" };
|
|
15
|
+
const scanStep = (scan, char) => {
|
|
16
|
+
const group = scan.open.at(-1);
|
|
17
|
+
const outer = scan.open.slice(0, -1);
|
|
18
|
+
return Match.value(char).pipe(Match.when("{", () => Result.succeed({ current: [[]], open: [...scan.open, { before: scan.current, done: [] }] })), Match.when(",", () => group === undefined
|
|
19
|
+
? Result.fail(unbalanced)
|
|
20
|
+
: Result.succeed({
|
|
21
|
+
current: [[]],
|
|
22
|
+
open: [...outer, { before: group.before, done: [...group.done, ...scan.current] }],
|
|
23
|
+
})), Match.when("}", () => group === undefined
|
|
24
|
+
? Result.fail(unbalanced)
|
|
25
|
+
: Result.succeed({
|
|
26
|
+
current: group.before.flatMap((head) => [...group.done, ...scan.current].map((tail) => [...head, ...tail])),
|
|
27
|
+
open: outer,
|
|
28
|
+
})), Match.orElse(() => Result.succeed({ current: scan.current.map((alt) => [...alt, char]), open: scan.open })));
|
|
29
|
+
};
|
|
30
|
+
/** Brace expansion into brace-free alternatives, nested groups flattened in left-major order. */
|
|
31
|
+
const expand = (chars) => Result.flatMap(chars.reduce((scan, char) => Result.flatMap(scan, (state) => scanStep(state, char)), Result.succeed({ current: [[]], open: [] })), (scan) => (scan.open.length === 0 ? Result.succeed(scan.current) : Result.fail(unbalanced)));
|
|
32
|
+
const prefixes = ["npm:", "node:", "bun:", "layer:", "unresolved:", "computed:"];
|
|
33
|
+
/** The first entry of `prefixes` that the alternative starts with, and the rest. */
|
|
34
|
+
const prefixOf = (alt) => Arr.findFirst(prefixes, (prefix) => {
|
|
35
|
+
const head = Array.from(prefix);
|
|
36
|
+
return head.every((char, index) => alt[index] === char)
|
|
37
|
+
? Option.some([prefix, alt.slice(head.length)])
|
|
38
|
+
: Option.none();
|
|
39
|
+
});
|
|
40
|
+
const unsupportedChars = ["\\", "[", "]"];
|
|
41
|
+
const dropLeadingDotSlash = (alt) => (alt[0] === "." && alt[1] === "/" ? alt.slice(2) : alt);
|
|
42
|
+
const isInvalidSegment = (segment) => segment === "" || segment === "." || segment === "..";
|
|
43
|
+
const isWild = (chars) => chars.some((char) => char === "*" || char === "?");
|
|
44
|
+
const segmentToken = (char) => Match.value(char).pipe(Match.when("*", () => ({ _tag: "Star" })), Match.when("?", () => ({ _tag: "One" })), Match.orElse((literal) => ({ _tag: "Literal", char: literal })));
|
|
45
|
+
/** `**` as a whole segment is a globstar; `*` and `?` elsewhere are wildcards. */
|
|
46
|
+
const globToken = (segment) => segment === "**" ? { _tag: "Globstar" } : { _tag: "Segment", tokens: Array.from(segment, segmentToken) };
|
|
47
|
+
const base = (selector) => ({ _tag: "Base", selector });
|
|
48
|
+
const failOnSome = (found, error) => Option.match(found, { onNone: () => Result.void, onSome: (value) => Result.fail(error(value)) });
|
|
49
|
+
/** Errors in this order: the first unsupported character, then the first invalid segment. */
|
|
50
|
+
const parsePath = (alt) => Result.gen(function* () {
|
|
51
|
+
yield* failOnSome(Arr.findFirst(alt, (char) => unsupportedChars.includes(char)), (char) => ({ _tag: "Unsupported", char }));
|
|
52
|
+
const body = dropLeadingDotSlash(alt);
|
|
53
|
+
// "/" is one UTF-16 unit, so splitting the joined text is splitting the code points.
|
|
54
|
+
const segments = text(body).split("/");
|
|
55
|
+
yield* failOnSome(Arr.findFirst(segments, isInvalidSegment), (segment) => ({
|
|
56
|
+
_tag: "InvalidSegment",
|
|
57
|
+
text: segment,
|
|
58
|
+
}));
|
|
59
|
+
const tokens = segments.map(globToken);
|
|
60
|
+
return base({ _tag: "Glob", tokens: isWild(body) ? tokens : [...tokens, { _tag: "Globstar" }] });
|
|
61
|
+
});
|
|
62
|
+
const isStar = (rest) => rest.length === 1 && rest[0] === "*";
|
|
63
|
+
/** `name` or `@scope/name`, with non-empty parts and no other `/`. `@scope` alone is a plain name. */
|
|
64
|
+
const validPackage = (rest) => {
|
|
65
|
+
const slash = rest.indexOf("/");
|
|
66
|
+
const scope = rest.slice(0, slash);
|
|
67
|
+
const name = rest.slice(slash + 1);
|
|
68
|
+
return (rest.length > 0 &&
|
|
69
|
+
(slash < 0 || (scope[0] === "@" && scope.length >= 2 && name.length > 0 && !name.includes("/"))));
|
|
70
|
+
};
|
|
71
|
+
const invalidName = (kind, rest) => Result.fail({ _tag: "InvalidName", kind, name: text(rest) });
|
|
72
|
+
const builtin = (runtime, rest) => isStar(rest)
|
|
73
|
+
? Result.succeed(base({ _tag: "Builtin", runtime }))
|
|
74
|
+
: rest.length === 0
|
|
75
|
+
? invalidName(runtime, rest)
|
|
76
|
+
: Result.succeed(base({ _tag: "Builtin", runtime, name: text(rest) }));
|
|
77
|
+
const parsePrefixed = (prefix, rest) => Match.value(prefix).pipe(Match.when("npm:", () => isStar(rest)
|
|
78
|
+
? Result.succeed(base({ _tag: "Package" }))
|
|
79
|
+
: validPackage(rest)
|
|
80
|
+
? Result.succeed(base({ _tag: "Package", name: text(rest) }))
|
|
81
|
+
: invalidName("npm", rest)), Match.when("node:", () => builtin("node", rest)), Match.when("bun:", () => builtin("bun", rest)), Match.when("layer:", () => rest.length === 0
|
|
82
|
+
? invalidName("layer", rest)
|
|
83
|
+
: Result.succeed({ _tag: "Layer", name: text(rest) })), Match.when("unresolved:", () => isStar(rest) ? Result.succeed(base({ _tag: "Unresolved" })) : invalidName("unresolved", rest)), Match.when("computed:", () => isStar(rest) ? Result.succeed(base({ _tag: "Computed" })) : invalidName("computed", rest)), Match.exhaustive);
|
|
84
|
+
const parseAlt = (alt) => Option.match(prefixOf(alt), {
|
|
85
|
+
onNone: () => parsePath(alt),
|
|
86
|
+
onSome: ([prefix, rest]) => parsePrefixed(prefix, rest),
|
|
87
|
+
});
|
|
88
|
+
const unionOf = (selectors) => {
|
|
89
|
+
const [only] = selectors;
|
|
90
|
+
return only !== undefined && selectors.length === 1 ? only : { _tag: "Any", selectors };
|
|
91
|
+
};
|
|
92
|
+
/** Errors in this order: `Empty`, `UnbalancedBraces`, then the first failing alternative. */
|
|
93
|
+
export const parse = (input) => Result.gen(function* () {
|
|
94
|
+
const chars = Array.from(input);
|
|
95
|
+
if (chars.length === 0)
|
|
96
|
+
return yield* Result.fail({ _tag: "Empty" });
|
|
97
|
+
const alternatives = yield* expand(chars);
|
|
98
|
+
const selectors = yield* Result.all(alternatives.map(parseAlt));
|
|
99
|
+
return unionOf(selectors);
|
|
100
|
+
});
|
|
101
|
+
const renderToken = (token) => Match.valueTags(token, { Literal: ({ char }) => char, One: () => "?", Star: () => "*" });
|
|
102
|
+
const renderPathToken = (token) => Match.valueTags(token, {
|
|
103
|
+
Segment: ({ tokens }) => tokens.map(renderToken).join(""),
|
|
104
|
+
Globstar: () => "**",
|
|
105
|
+
});
|
|
106
|
+
/** `./` keeps a glob from reading as a prefixed form, and keeps its own leading `./`. */
|
|
107
|
+
const guardDot = (body) => {
|
|
108
|
+
const chars = Array.from(body);
|
|
109
|
+
return Option.isNone(prefixOf(chars)) && dropLeadingDotSlash(chars).length === chars.length ? body : `./${body}`;
|
|
110
|
+
};
|
|
111
|
+
const printBase = (selector) => Match.valueTags(selector, {
|
|
112
|
+
Glob: ({ tokens }) => Option.some(guardDot(tokens.map(renderPathToken).join("/"))),
|
|
113
|
+
Package: ({ name }) => Option.some(`npm:${name ?? "*"}`),
|
|
114
|
+
Builtin: ({ runtime, name }) => Option.some(`${runtime}:${name ?? "*"}`),
|
|
115
|
+
Unresolved: () => Option.some("unresolved:*"),
|
|
116
|
+
Computed: () => Option.some("computed:*"),
|
|
117
|
+
Any: () => Option.none(),
|
|
118
|
+
All: () => Option.none(),
|
|
119
|
+
Not: () => Option.none(),
|
|
120
|
+
});
|
|
121
|
+
const printOne = (selector) => Match.valueTags(selector, {
|
|
122
|
+
Base: ({ selector: inner }) => printBase(inner),
|
|
123
|
+
Layer: ({ name }) => Option.some(`layer:${name}`),
|
|
124
|
+
Any: () => Option.none(),
|
|
125
|
+
All: () => Option.none(),
|
|
126
|
+
Not: () => Option.none(),
|
|
127
|
+
});
|
|
128
|
+
/** `none` for selectors that `parse` never produces. A glob without wildcard tokens is not checked. */
|
|
129
|
+
export const print = (selector) => Match.value(selector).pipe(Match.tag("Any", ({ selectors }) => selectors.length < 2
|
|
130
|
+
? Option.none()
|
|
131
|
+
: Option.map(Option.all(selectors.map(printOne)), (texts) => `{${texts.join(",")}}`)), Match.orElse(printOne));
|
|
132
|
+
const explain = (error) => Match.valueTags(error, {
|
|
133
|
+
Empty: () => "Empty: the selector is an empty string",
|
|
134
|
+
InvalidName: ({ kind, name }) => `InvalidName: "${name}" is not a valid name after "${kind}:"`,
|
|
135
|
+
InvalidSegment: ({ text: segment }) => `InvalidSegment: "${segment}" is not a path segment (segments are not empty, "." or "..")`,
|
|
136
|
+
Unsupported: ({ char }) => `Unsupported: "${char}" is not allowed (use "/" and no character classes)`,
|
|
137
|
+
UnbalancedBraces: () => "UnbalancedBraces: a brace or a comma has no partner",
|
|
138
|
+
});
|
|
139
|
+
/** Selector text and its selector: decoding parses, encoding prints. */
|
|
140
|
+
export const SelectorText = Schema.String.pipe(Schema.decodeTo(ConfigSelector, SchemaTransformation.transformEffect({
|
|
141
|
+
decode: (input, options) => Effect.fromResult(Result.mapError(parse(input), (error) => new SchemaIssue.InvalidValue({ message: explain(error) }, input, options))),
|
|
142
|
+
encode: (selector, options) => Effect.fromOption(print(selector), () => new SchemaIssue.InvalidValue({ message: "this selector has no text form; only the selectors that parse produces can be printed" }, selector, options)),
|
|
143
|
+
})));
|
|
144
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"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"}
|
package/dist/effect.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type FileSystem, Layer, type Path } from "effect";
|
|
2
|
+
import { Analyzer } from "./analyzer/Analyzer.ts";
|
|
3
|
+
export { Analyzer, Workspace } from "./analyzer/Analyzer.ts";
|
|
4
|
+
export { AnalyzerUnavailable, GraphFileInvalid, ProjectNotFound, ProjectParseFailed, type AnalysisError } from "./analyzer/errors.ts";
|
|
5
|
+
export { formatGraphFile, GraphFile, readGraphFile } from "./analyzer/graph-file.ts";
|
|
6
|
+
export { ArcherConfig, ConfigInvalid, type Configuration, decodeConfiguration } from "./config/input.ts";
|
|
7
|
+
export { ConfigSelector } from "./core/config.ts";
|
|
8
|
+
export { Graph, Selector, SourceFile, Target } from "./core/model.ts";
|
|
9
|
+
export { Rule, Violation } from "./core/rule.ts";
|
|
10
|
+
export { SelectorText } from "./core/text.ts";
|
|
11
|
+
export { Format, render } from "./report/render.ts";
|
|
12
|
+
export { Report } from "./report/report.ts";
|
|
13
|
+
export { checkGraph, ConfigNotFound, ConfigRejected, run, type BaselineMode, type RunError, type RunOptions, type RunResult } from "./run.ts";
|
|
14
|
+
export { BaselineError } from "./shell/baseline-file.ts";
|
|
15
|
+
export { ConfigLoadError } from "./shell/load-config.ts";
|
|
16
|
+
export type ArcherServices = Analyzer | FileSystem.FileSystem | Path.Path;
|
|
17
|
+
/** The TypeScript analyzer and Node's platform services. */
|
|
18
|
+
export declare const ArcherLive: Layer.Layer<ArcherServices>;
|
|
19
|
+
//# sourceMappingURL=effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect.d.ts","sourceRoot":"","sources":["../src/effect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACrI,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAA;AAC7I,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAA;AAEzE,4DAA4D;AAC5D,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,CAElD,CAAA"}
|
package/dist/effect.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** The Effect surface that the root export wraps. */
|
|
2
|
+
import * as NodeFileSystem from "@effect/platform-node/NodeFileSystem";
|
|
3
|
+
import * as NodePath from "@effect/platform-node/NodePath";
|
|
4
|
+
import { Layer } from "effect";
|
|
5
|
+
import { Analyzer } from "./analyzer/Analyzer.js";
|
|
6
|
+
export { Analyzer, Workspace } from "./analyzer/Analyzer.js";
|
|
7
|
+
export { AnalyzerUnavailable, GraphFileInvalid, ProjectNotFound, ProjectParseFailed } from "./analyzer/errors.js";
|
|
8
|
+
export { formatGraphFile, GraphFile, readGraphFile } from "./analyzer/graph-file.js";
|
|
9
|
+
export { ArcherConfig, ConfigInvalid, decodeConfiguration } from "./config/input.js";
|
|
10
|
+
export { ConfigSelector } from "./core/config.js";
|
|
11
|
+
export { Graph, Selector, SourceFile, Target } from "./core/model.js";
|
|
12
|
+
export { Rule, Violation } from "./core/rule.js";
|
|
13
|
+
export { SelectorText } from "./core/text.js";
|
|
14
|
+
export { Format, render } from "./report/render.js";
|
|
15
|
+
export { Report } from "./report/report.js";
|
|
16
|
+
export { checkGraph, ConfigNotFound, ConfigRejected, run } from "./run.js";
|
|
17
|
+
export { BaselineError } from "./shell/baseline-file.js";
|
|
18
|
+
export { ConfigLoadError } from "./shell/load-config.js";
|
|
19
|
+
/** The TypeScript analyzer and Node's platform services. */
|
|
20
|
+
export const ArcherLive = Analyzer.typescript.pipe(Layer.provideMerge(Layer.mergeAll(NodeFileSystem.layer, NodePath.layer)));
|
|
21
|
+
//# sourceMappingURL=effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect.js","sourceRoot":"","sources":["../src/effect.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,OAAO,KAAK,cAAc,MAAM,sCAAsC,CAAA;AACtE,OAAO,KAAK,QAAQ,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAmB,KAAK,EAAa,MAAM,QAAQ,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAsB,MAAM,sBAAsB,CAAA;AACrI,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAsB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,EAAqE,MAAM,UAAU,CAAA;AAC7I,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAIxD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAgC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAC7E,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CACzE,CAAA"}
|