archprint 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +48 -26
- package/dist/cli/wiring.d.ts.map +1 -1
- package/dist/cli/wiring.js +6 -3
- package/dist/cli/wiring.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# archprint
|
|
2
2
|
|
|
3
|
+
## 0.8.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- `archprint eject` now restores an ESLint config exactly when its array starts on the same line as its first entry (for example `export default [{ ignores: ['dist/'] }, ...]`). `wire` used to break that line to insert its reference, and `eject` left the line break behind. `wire` now inserts the reference inline on that line, and `eject` removes exactly what it added. Configs with a multi-line array are unchanged.
|
|
8
|
+
- Scanning now skips the same files git does for `.gitignore` patterns where a wildcard has to reach past a partial match, such as `f*o/*/*` matching `foo/b/c`. Before, a few such patterns failed to match and those files were scanned. Scan output is unchanged on the large repositories we checked.
|
|
9
|
+
- The README and docs show three short recordings (scan, explain, and asking Claude Code in plain words) and a measured comparison of the same question in Claude Code with and without archprint on the demo app, with the method, harness and every answer published alongside.
|
|
10
|
+
|
|
3
11
|
## 0.8.0
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -13,13 +13,35 @@ already respects, and turns the ones that pass a statistical confidence gate int
|
|
|
13
13
|
install lint rules. Every rule ships with the evidence behind it: how many files conform, how many break it,
|
|
14
14
|
and how confident the inference is.
|
|
15
15
|
|
|
16
|
-
**Find the rules your code already follows
|
|
16
|
+
**Find the rules your code already follows:**
|
|
17
17
|
|
|
18
|
-

|
|
19
19
|
|
|
20
|
-
**
|
|
20
|
+
**See the evidence behind one:**
|
|
21
21
|
|
|
22
|
-

|
|
23
|
+
|
|
24
|
+
**Or just ask your agent.** Claude Code calls archprint over MCP on its own:
|
|
25
|
+
|
|
26
|
+

|
|
27
|
+
|
|
28
|
+
**Measured, with and without archprint.** The same question in Claude Code (Opus 5.5) on the demo app (70
|
|
29
|
+
files), five runs each, median [range]:
|
|
30
|
+
|
|
31
|
+
| | Without archprint | With archprint |
|
|
32
|
+
| ----------------- | ------------------------- | ------------------------- |
|
|
33
|
+
| Tokens read | 81k [58k to 96k] | 52k [52k to 52k] |
|
|
34
|
+
| Tokens written | 1.1k [1.1k to 1.4k] | 0.6k [0.6k to 0.6k] |
|
|
35
|
+
| Cost per question | $0.083 [$0.078 to $0.153] | $0.037 [$0.032 to $0.076] |
|
|
36
|
+
| Time | 17 s [15 to 19] | 10 s [9 to 31] |
|
|
37
|
+
| Tool calls | 5 [4 to 10] | 2 [2 to 2] |
|
|
38
|
+
|
|
39
|
+
Both found the main rule (routes reach the database only through `lib/services/`). With archprint, every run gave
|
|
40
|
+
the evidence for each rule and named the one file that breaks one (`lib/db.ts` reads `process.env` outside the
|
|
41
|
+
config layer); no run without it noticed that. Without archprint, Claude also described naming conventions
|
|
42
|
+
archprint does not check. About 50k of the tokens read in both columns are Claude Code's own system prompt. This
|
|
43
|
+
is one small repo; larger ones are not measured yet.
|
|
44
|
+
[Method, harness and every answer](https://github.com/Tommkruix/archprint-demo/tree/main/bench).
|
|
23
45
|
|
|
24
46
|
**Try it in your browser, nothing to install:** [open the demo in StackBlitz](https://stackblitz.com/github/Tommkruix/archprint-demo).
|
|
25
47
|
The scan runs as soon as it opens, and the [demo's README](https://github.com/Tommkruix/archprint-demo#try-it)
|
|
@@ -181,28 +203,28 @@ components across React (`.tsx`), Angular (`.component.ts`, `.directive.ts`), an
|
|
|
181
203
|
components (it reads the `<script>` block of `.vue`/`.svelte` files), so the component-aware rules apply
|
|
182
204
|
regardless of framework.
|
|
183
205
|
|
|
184
|
-
| Detector
|
|
185
|
-
|
|
|
186
|
-
| Forbidden imports (
|
|
187
|
-
| Circular dependencies
|
|
188
|
-
| Test isolation
|
|
189
|
-
| Dependency hygiene
|
|
190
|
-
| Dependency declaration
|
|
191
|
-
| Import style
|
|
192
|
-
| Console isolation
|
|
193
|
-
| Public API (barrel) boundaries
|
|
194
|
-
| Layer boundaries
|
|
195
|
-
| Role layering
|
|
196
|
-
| Entry purity
|
|
197
|
-
| UI / data separation
|
|
198
|
-
| Server / client boundary
|
|
199
|
-
| Feature-slice isolation
|
|
200
|
-
| App isolation
|
|
201
|
-
| Env access
|
|
202
|
-
| Workspace package API
|
|
203
|
-
| Stories isolation
|
|
204
|
-
| Orphan modules
|
|
205
|
-
| Transitive reachability
|
|
206
|
+
| Detector | Rule it can infer | Ships as |
|
|
207
|
+
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------- |
|
|
208
|
+
| Forbidden imports (AP-001, AP-002) | AP-001: a request entry (route handler) must not import the DB client. AP-002: a server entry must not import the UI layer | Auto |
|
|
209
|
+
| Circular dependencies | The module graph should stay acyclic (gated on how cycle free it already is) | Auto |
|
|
210
|
+
| Test isolation | Production (non-test) code must not import test or spec files | Auto |
|
|
211
|
+
| Dependency hygiene | Import third-party packages by their public entry, not a dependency's `src`/`internal` internals | Review |
|
|
212
|
+
| Dependency declaration | Every imported third-party package must be declared in `package.json` (no phantom/transitive deps) | Review |
|
|
213
|
+
| Import style | Prefer workspace aliases over deep relative imports (`../../../`) | Auto |
|
|
214
|
+
| Console isolation | Library (non-CLI) code must not call `console.*` | Auto |
|
|
215
|
+
| Public API (barrel) boundaries | Files outside a feature or package must import it through its `index` barrel, not deep import its internals | Auto |
|
|
216
|
+
| Layer boundaries | Files in one layer must not import another, inferred from the dominant dependency direction | Review |
|
|
217
|
+
| Role layering | Semantic tiers keep their direction (a REPOSITORY must not import a SERVICE, a SERVICE must not import a CONTROLLER) | Review |
|
|
218
|
+
| Entry purity | Framework entries (pages, routes, layouts) must not be imported by other first-party code | Review |
|
|
219
|
+
| UI / data separation | Reusable UI components must not import the DB/data layer directly | Review |
|
|
220
|
+
| Server / client boundary | A Next.js `"use client"` module must not import a `server-only` module | Review |
|
|
221
|
+
| Feature-slice isolation | Sibling slices under a `features`/`modules`/`slices`/`domains` container must not import each other | Review |
|
|
222
|
+
| App isolation | Sibling apps under an `apps`/`services` container must not import each other directly | Review |
|
|
223
|
+
| Env access | Read `process.env` only in the config/env layer | Review |
|
|
224
|
+
| Workspace package API | Import a monorepo workspace package by its name, not a deep path into its source | Review |
|
|
225
|
+
| Stories isolation | Storybook `.stories` files must not be imported by other code | Review |
|
|
226
|
+
| Orphan modules | Files nothing imports and that are not framework entries (dead code candidates) | Report |
|
|
227
|
+
| Transitive reachability | A layer boundary that a plain import rule passes but that leaks through an intermediary layer | Report |
|
|
206
228
|
|
|
207
229
|
## The confidence gate
|
|
208
230
|
|
package/dist/cli/wiring.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wiring.d.ts","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,+EACoD,CAAC;AAC/E,eAAO,MAAM,WAAW,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"wiring.d.ts","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,+EACoD,CAAC;AAC/E,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAgD9C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK7E;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,GAAG,iBAAiB,GAAG,aAAa,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAWhF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWjD;AAgBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAaxF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASnE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,UAAU,CAAC;IAC1D,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAUD,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAyB7C,CAAC"}
|
package/dist/cli/wiring.js
CHANGED
|
@@ -5,6 +5,7 @@ import { DEPCRUISE_FILE, ESLINT_FILE } from './generate.js';
|
|
|
5
5
|
export const MANAGED_START = '// archprint:start (managed by archprint; run `archprint eject` to remove)';
|
|
6
6
|
export const MANAGED_END = '// archprint:end';
|
|
7
7
|
const SPREAD_MARK = '// archprint:managed';
|
|
8
|
+
const INLINE_SPREAD = '...archprintRules /* archprint:managed */, ';
|
|
8
9
|
const ESLINT_CONFIG_NAMES = [
|
|
9
10
|
'eslint.config.js',
|
|
10
11
|
'eslint.config.mjs',
|
|
@@ -72,8 +73,10 @@ export function wireEslintContent(content, reference) {
|
|
|
72
73
|
if (insertAt === null)
|
|
73
74
|
return { changed: false, reason: 'no-array-export' };
|
|
74
75
|
const remainder = content.slice(insertAt);
|
|
75
|
-
const
|
|
76
|
-
|
|
76
|
+
const spread = remainder.startsWith('\n')
|
|
77
|
+
? `\n ...archprintRules, ${SPREAD_MARK}`
|
|
78
|
+
: INLINE_SPREAD;
|
|
79
|
+
const withSpread = `${content.slice(0, insertAt)}${spread}${remainder}`;
|
|
77
80
|
const importBlock = `${MANAGED_START}\nimport archprintRules from '${reference}';\n${MANAGED_END}\n`;
|
|
78
81
|
return { changed: true, content: importBlock + withSpread };
|
|
79
82
|
}
|
|
@@ -95,7 +98,7 @@ export function unwireEslintContent(content) {
|
|
|
95
98
|
continue;
|
|
96
99
|
kept.push(line);
|
|
97
100
|
}
|
|
98
|
-
return kept.join('\n');
|
|
101
|
+
return kept.join('\n').replace(INLINE_SPREAD, '');
|
|
99
102
|
}
|
|
100
103
|
export function rewriteEslintReference(content, newRef) {
|
|
101
104
|
return content.replace(/(import archprintRules from )(['"`])[^'"`]*\2/, `$1$2${newRef}$2`);
|
package/dist/cli/wiring.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GACxB,4EAA4E,CAAC;AAC/E,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAC9C,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAC3C,MAAM,aAAa,GAAG,6CAA6C,CAAC;AACpE,MAAM,mBAAmB,GAAG;IAC1B,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;CACnB,CAAC;AAEF,SAAS,oBAAoB,CAAC,IAAU,EAAE,YAAqB;IAC7D,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/D,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,cAAc;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAI;aAClB,YAAY,EAAE;aACd,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,IAAI;aACrB,aAAa,EAAE;aACf,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,EAAE,cAAc,EAAE,CAAC;QACrB,OAAO,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC;QAC7B,qBAAqB,EAAE,IAAI;QAC3B,2BAA2B,EAAE,IAAI;KAClC,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,UAAU,CAAC,wBAAwB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC1F,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3D,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,aAAa,GAAG,UAAU;SAC7B,oBAAoB,CAAC,UAAU,CAAC,gBAAgB,CAAC;SACjD,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,gBAAgB,CAAC,CAAC;IAC7E,OAAO,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,UAAkB;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;QACxF,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;AACtB,CAAC;AAQD,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,SAAiB;IAClE,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACxF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QACvC,CAAC,CAAC,0BAA0B,WAAW,EAAE;QACzC,CAAC,CAAC,aAAa,CAAC;IAClB,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;IACxE,MAAM,WAAW,GAAG,GAAG,aAAa,iCAAiC,SAAS,OAAO,WAAW,IAAI,CAAC;IACrG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,UAAU,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO,GAAG,KAAK,CAAC;YAChD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,SAAS;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,MAAc;IACpE,OAAO,OAAO,CAAC,OAAO,CAAC,+CAA+C,EAAE,OAAO,MAAM,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,SAAiB;IACvC,OAAO;QACL,GAAG,aAAa,EAAE;QAClB,+BAA+B,SAAS,IAAI;QAC5C,GAAG,WAAW,EAAE;QAChB,EAAE;QACF,kBAAkB;QAClB,wBAAwB,WAAW,EAAE;QACrC,8BAA8B;QAC9B,IAAI;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,eAAe,GAAG;IACtB,0BAA0B;IAC1B,wBAAwB;IACxB,yBAAyB;IACzB,yBAAyB;CAC1B,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAc,EAAY,EAAE,CAC/C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;IACzD,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,CAAC,CAAC,KAAK,CAAC;QACT,CAAC,CAAC,EAAE,CAAC;AAEX,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,SAAiB;IAC1E,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnD,CAAC;IACD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACrF,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACzF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;;QACxC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,IAAI,CAAC;QACH,OAAO,WAAW,CAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAA6B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1F,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC5B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,OAAO,CAAC,GAAG,EAAE,iBAAiB,SAAS,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpF,CAAC;AAeD,SAAS,UAAU,CAAC,GAAW,EAAE,KAAwB;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD;QACE,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAClE,UAAU,EAAE,gBAAgB;QAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;QACnB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;QACzD,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,mBAAmB;QAC3B,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QACrD,OAAO;KACR;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACrE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC;QACrD,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC;QAC5D,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,yBAAyB;QAChC,MAAM,EAAE,2BAA2B;QACnC,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE,wBAAwB;KAClC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "archprint",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Mine the architecture rules your TypeScript repo already enforces, with the evidence attached.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"dependencies": {
|
|
76
76
|
"@modelcontextprotocol/sdk": "^1.31.0",
|
|
77
77
|
"commander": "^15.0.0",
|
|
78
|
-
"ignore": "7.0.
|
|
78
|
+
"ignore": "7.0.10",
|
|
79
79
|
"ts-morph": "28.0.0",
|
|
80
80
|
"typescript": "6.0.3"
|
|
81
81
|
},
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"@commitlint/config-conventional": "^21.2.0",
|
|
86
86
|
"@eslint/js": "^10.0.1",
|
|
87
87
|
"@types/node": "^26.1.0",
|
|
88
|
-
"@vitest/coverage-v8": "^
|
|
88
|
+
"@vitest/coverage-v8": "^5.0.3",
|
|
89
89
|
"chart.js": "^4.5.1",
|
|
90
90
|
"eslint": "^10.6.0",
|
|
91
91
|
"eslint-config-prettier": "^10.1.8",
|
|
@@ -98,6 +98,6 @@
|
|
|
98
98
|
"tsx": "^4.22.4",
|
|
99
99
|
"typescript-eslint": "^8.62.1",
|
|
100
100
|
"vitepress": "^1.6.4",
|
|
101
|
-
"vitest": "^
|
|
101
|
+
"vitest": "^5.0.3"
|
|
102
102
|
}
|
|
103
103
|
}
|