@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.
Files changed (214) hide show
  1. package/README.md +144 -387
  2. package/dist/analyzer/Analyzer.d.ts +17 -0
  3. package/dist/analyzer/Analyzer.d.ts.map +1 -0
  4. package/dist/analyzer/Analyzer.js +15 -0
  5. package/dist/analyzer/Analyzer.js.map +1 -0
  6. package/dist/analyzer/bindings.d.ts +26 -0
  7. package/dist/analyzer/bindings.d.ts.map +1 -0
  8. package/dist/analyzer/bindings.js +61 -0
  9. package/dist/analyzer/bindings.js.map +1 -0
  10. package/dist/analyzer/errors.d.ts +34 -0
  11. package/dist/analyzer/errors.d.ts.map +1 -0
  12. package/dist/analyzer/errors.js +20 -0
  13. package/dist/analyzer/errors.js.map +1 -0
  14. package/dist/analyzer/graph-file.d.ts +13 -0
  15. package/dist/analyzer/graph-file.d.ts.map +1 -0
  16. package/dist/analyzer/graph-file.js +22 -0
  17. package/dist/analyzer/graph-file.js.map +1 -0
  18. package/dist/analyzer/paths.d.ts +12 -0
  19. package/dist/analyzer/paths.d.ts.map +1 -0
  20. package/dist/analyzer/paths.js +26 -0
  21. package/dist/analyzer/paths.js.map +1 -0
  22. package/dist/analyzer/server-exit.d.ts +19 -0
  23. package/dist/analyzer/server-exit.d.ts.map +1 -0
  24. package/dist/analyzer/server-exit.js +70 -0
  25. package/dist/analyzer/server-exit.js.map +1 -0
  26. package/dist/analyzer/source.d.ts +29 -0
  27. package/dist/analyzer/source.d.ts.map +1 -0
  28. package/dist/analyzer/source.js +58 -0
  29. package/dist/analyzer/source.js.map +1 -0
  30. package/dist/analyzer/syntax.d.ts +29 -0
  31. package/dist/analyzer/syntax.d.ts.map +1 -0
  32. package/dist/analyzer/syntax.js +226 -0
  33. package/dist/analyzer/syntax.js.map +1 -0
  34. package/dist/analyzer/targets.d.ts +26 -0
  35. package/dist/analyzer/targets.d.ts.map +1 -0
  36. package/dist/analyzer/targets.js +84 -0
  37. package/dist/analyzer/targets.js.map +1 -0
  38. package/dist/analyzer/typescript.d.ts +5 -0
  39. package/dist/analyzer/typescript.d.ts.map +1 -0
  40. package/dist/analyzer/typescript.js +221 -0
  41. package/dist/analyzer/typescript.js.map +1 -0
  42. package/dist/analyzer/workspace.d.ts +24 -0
  43. package/dist/analyzer/workspace.d.ts.map +1 -0
  44. package/dist/analyzer/workspace.js +9 -0
  45. package/dist/analyzer/workspace.js.map +1 -0
  46. package/dist/cli/explain.d.ts +3 -0
  47. package/dist/cli/explain.d.ts.map +1 -0
  48. package/dist/cli/explain.js +21 -0
  49. package/dist/cli/explain.js.map +1 -0
  50. package/dist/cli/main.d.ts +3 -0
  51. package/dist/cli/main.d.ts.map +1 -0
  52. package/dist/cli/main.js +159 -0
  53. package/dist/cli/main.js.map +1 -0
  54. package/dist/config/input.d.ts +59 -0
  55. package/dist/config/input.d.ts.map +1 -0
  56. package/dist/config/input.js +115 -0
  57. package/dist/config/input.js.map +1 -0
  58. package/dist/config/rules.d.ts +94 -0
  59. package/dist/config/rules.d.ts.map +1 -0
  60. package/dist/config/rules.js +130 -0
  61. package/dist/config/rules.js.map +1 -0
  62. package/dist/core/baseline.d.ts +16 -0
  63. package/dist/core/baseline.d.ts.map +1 -0
  64. package/dist/core/baseline.js +25 -0
  65. package/dist/core/baseline.js.map +1 -0
  66. package/dist/core/check.d.ts +16 -0
  67. package/dist/core/check.d.ts.map +1 -0
  68. package/dist/core/check.js +271 -0
  69. package/dist/core/check.js.map +1 -0
  70. package/dist/core/config.d.ts +72 -0
  71. package/dist/core/config.d.ts.map +1 -0
  72. package/dist/core/config.js +78 -0
  73. package/dist/core/config.js.map +1 -0
  74. package/dist/core/fingerprint.d.ts +54 -0
  75. package/dist/core/fingerprint.d.ts.map +1 -0
  76. package/dist/core/fingerprint.js +182 -0
  77. package/dist/core/fingerprint.js.map +1 -0
  78. package/dist/core/keys.d.ts +10 -0
  79. package/dist/core/keys.d.ts.map +1 -0
  80. package/dist/core/keys.js +16 -0
  81. package/dist/core/keys.js.map +1 -0
  82. package/dist/core/lower.d.ts +13 -0
  83. package/dist/core/lower.d.ts.map +1 -0
  84. package/dist/core/lower.js +82 -0
  85. package/dist/core/lower.js.map +1 -0
  86. package/dist/core/model.d.ts +155 -0
  87. package/dist/core/model.d.ts.map +1 -0
  88. package/dist/core/model.js +116 -0
  89. package/dist/core/model.js.map +1 -0
  90. package/dist/core/pattern.d.ts +13 -0
  91. package/dist/core/pattern.d.ts.map +1 -0
  92. package/dist/core/pattern.js +29 -0
  93. package/dist/core/pattern.js.map +1 -0
  94. package/dist/core/reach.d.ts +10 -0
  95. package/dist/core/reach.d.ts.map +1 -0
  96. package/dist/core/reach.js +81 -0
  97. package/dist/core/reach.js.map +1 -0
  98. package/dist/core/rule.d.ts +200 -0
  99. package/dist/core/rule.d.ts.map +1 -0
  100. package/dist/core/rule.js +162 -0
  101. package/dist/core/rule.js.map +1 -0
  102. package/dist/core/selector.d.ts +7 -0
  103. package/dist/core/selector.d.ts.map +1 -0
  104. package/dist/core/selector.js +27 -0
  105. package/dist/core/selector.js.map +1 -0
  106. package/dist/core/structural.d.ts +10 -0
  107. package/dist/core/structural.d.ts.map +1 -0
  108. package/dist/core/structural.js +24 -0
  109. package/dist/core/structural.js.map +1 -0
  110. package/dist/core/text.d.ts +26 -0
  111. package/dist/core/text.d.ts.map +1 -0
  112. package/dist/core/text.js +144 -0
  113. package/dist/core/text.js.map +1 -0
  114. package/dist/effect.d.ts +19 -0
  115. package/dist/effect.d.ts.map +1 -0
  116. package/dist/effect.js +21 -0
  117. package/dist/effect.js.map +1 -0
  118. package/dist/index.d.ts +24 -44
  119. package/dist/index.d.ts.map +1 -0
  120. package/dist/index.js +59 -52
  121. package/dist/index.js.map +1 -0
  122. package/dist/report/agent.d.ts +3 -0
  123. package/dist/report/agent.d.ts.map +1 -0
  124. package/dist/report/agent.js +35 -0
  125. package/dist/report/agent.js.map +1 -0
  126. package/dist/report/dot.d.ts +4 -0
  127. package/dist/report/dot.d.ts.map +1 -0
  128. package/dist/report/dot.js +15 -0
  129. package/dist/report/dot.js.map +1 -0
  130. package/dist/report/github.d.ts +3 -0
  131. package/dist/report/github.d.ts.map +1 -0
  132. package/dist/report/github.js +18 -0
  133. package/dist/report/github.js.map +1 -0
  134. package/dist/report/json.d.ts +3 -0
  135. package/dist/report/json.d.ts.map +1 -0
  136. package/dist/report/json.js +4 -0
  137. package/dist/report/json.js.map +1 -0
  138. package/dist/report/message.d.ts +20 -0
  139. package/dist/report/message.d.ts.map +1 -0
  140. package/dist/report/message.js +73 -0
  141. package/dist/report/message.js.map +1 -0
  142. package/dist/report/pretty.d.ts +8 -0
  143. package/dist/report/pretty.d.ts.map +1 -0
  144. package/dist/report/pretty.js +89 -0
  145. package/dist/report/pretty.js.map +1 -0
  146. package/dist/report/render.d.ts +9 -0
  147. package/dist/report/render.d.ts.map +1 -0
  148. package/dist/report/render.js +10 -0
  149. package/dist/report/render.js.map +1 -0
  150. package/dist/report/report.d.ts +44 -0
  151. package/dist/report/report.d.ts.map +1 -0
  152. package/dist/report/report.js +49 -0
  153. package/dist/report/report.js.map +1 -0
  154. package/dist/report/sarif.d.ts +3 -0
  155. package/dist/report/sarif.d.ts.map +1 -0
  156. package/dist/report/sarif.js +68 -0
  157. package/dist/report/sarif.js.map +1 -0
  158. package/dist/run.d.ts +49 -0
  159. package/dist/run.d.ts.map +1 -0
  160. package/dist/run.js +87 -0
  161. package/dist/run.js.map +1 -0
  162. package/dist/shell/baseline-file.d.ts +20 -0
  163. package/dist/shell/baseline-file.d.ts.map +1 -0
  164. package/dist/shell/baseline-file.js +46 -0
  165. package/dist/shell/baseline-file.js.map +1 -0
  166. package/dist/shell/load-config.d.ts +19 -0
  167. package/dist/shell/load-config.d.ts.map +1 -0
  168. package/dist/shell/load-config.js +39 -0
  169. package/dist/shell/load-config.js.map +1 -0
  170. package/package.json +29 -177
  171. package/skills/archer/SKILL.md +127 -45
  172. package/skills/archer/agents/openai.yaml +2 -2
  173. package/skills/archer/references/rules.md +267 -54
  174. package/dist/bun/plugin.cjs +0 -85
  175. package/dist/bun/plugin.d.cts +0 -7
  176. package/dist/bun/plugin.d.ts +0 -7
  177. package/dist/bun/plugin.js +0 -11
  178. package/dist/bun.cjs +0 -2238
  179. package/dist/bun.d.cts +0 -13
  180. package/dist/bun.d.ts +0 -13
  181. package/dist/bun.js +0 -28
  182. package/dist/chunk-2AKMBLHG.js +0 -2165
  183. package/dist/chunk-67YEOTXP.js +0 -25
  184. package/dist/chunk-IDVLHNL2.js +0 -46
  185. package/dist/chunk-ZZ6TR4PO.js +0 -201
  186. package/dist/cli.js +0 -2643
  187. package/dist/index.cjs +0 -2484
  188. package/dist/index.d.cts +0 -45
  189. package/dist/jest/plugin.cjs +0 -85
  190. package/dist/jest/plugin.d.cts +0 -7
  191. package/dist/jest/plugin.d.ts +0 -7
  192. package/dist/jest/plugin.js +0 -11
  193. package/dist/jest.cjs +0 -2237
  194. package/dist/jest.d.cts +0 -13
  195. package/dist/jest.d.ts +0 -13
  196. package/dist/jest.js +0 -27
  197. package/dist/matchers-Cqnbsyxe.d.cts +0 -11
  198. package/dist/matchers-Cqnbsyxe.d.ts +0 -11
  199. package/dist/node.cjs +0 -2237
  200. package/dist/node.d.cts +0 -13
  201. package/dist/node.d.ts +0 -13
  202. package/dist/node.js +0 -27
  203. package/dist/reporters-BbAXMpuW.d.cts +0 -6
  204. package/dist/reporters-xh-HQneS.d.ts +0 -6
  205. package/dist/suite-BwnPDCvU.d.cts +0 -337
  206. package/dist/suite-BwnPDCvU.d.ts +0 -337
  207. package/dist/vitest/plugin.cjs +0 -85
  208. package/dist/vitest/plugin.d.cts +0 -7
  209. package/dist/vitest/plugin.d.ts +0 -7
  210. package/dist/vitest/plugin.js +0 -11
  211. package/dist/vitest.cjs +0 -2531
  212. package/dist/vitest.d.cts +0 -37
  213. package/dist/vitest.d.ts +0 -37
  214. 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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"}
@@ -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"}