@archwall/core 0.2.0 → 0.2.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 +82 -0
- package/package.json +10 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# @archwall/core
|
|
2
|
+
|
|
3
|
+
## 0.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c512a8a: Fix unusable published packages. `0.1.0` and `0.2.0` should not be installed.
|
|
8
|
+
|
|
9
|
+
Both earlier releases went to npm with manifests that were never rewritten for publishing:
|
|
10
|
+
|
|
11
|
+
- `exports` still pointed at `./src/*.ts`, which no tarball contains — `files` is `["dist"]`. Any
|
|
12
|
+
import of any package threw `ERR_MODULE_NOT_FOUND`.
|
|
13
|
+
- Internal dependencies were published as `"@archwall/core": "workspace:^"`, so installing anything
|
|
14
|
+
with an internal dependency failed with `EUNSUPPORTEDPROTOCOL`.
|
|
15
|
+
|
|
16
|
+
Both fields come from Yarn features — `publishConfig.exports` and the `workspace:` protocol — that
|
|
17
|
+
Yarn substitutes when it packs. Releases ran through `changeset publish`, which shells out to
|
|
18
|
+
`npm publish`; npm treats `publishConfig` as npm config, warns `Unknown publishConfig config
|
|
19
|
+
"exports"`, and drops it. The pack smoke test never caught it because it packs with Yarn, so it was
|
|
20
|
+
checking a tarball no release ever uploaded.
|
|
21
|
+
|
|
22
|
+
Releases now pack with Yarn and upload the finished tarball with `npm publish`, which keeps the
|
|
23
|
+
correct manifest and keeps OIDC trusted publishing (Yarn's own publisher has no token exchange).
|
|
24
|
+
`verify:pack` gained two guards: no `workspace:` range in a publishable manifest, and every
|
|
25
|
+
advertised entrypoint must exist in the tarball — including for ESM-only packages, which the CJS
|
|
26
|
+
load check skips.
|
|
27
|
+
|
|
28
|
+
`@archwall/test-utils` is published for the first time in this release.
|
|
29
|
+
|
|
30
|
+
## 0.2.0
|
|
31
|
+
|
|
32
|
+
### Minor Changes
|
|
33
|
+
|
|
34
|
+
- 1321ebb: Contract corrections. These are the changes that are cheap now and a
|
|
35
|
+
major version later, so they are made together while the packages are still 0.x.
|
|
36
|
+
|
|
37
|
+
**Type-only edges are a fact, not a producer's private decision.** `Edge` gains an open
|
|
38
|
+
`attributes` bag, with `typeOnly` as its first well-known member and a `type-only-edges`
|
|
39
|
+
capability gating it. The CLI previously _deleted_ type-only edges during its scan, which made
|
|
40
|
+
it silently disagree with every bundler adapter about what the graph contained, with no way for
|
|
41
|
+
a user to get them back. It now labels them, and whether an erased import counts as a dependency
|
|
42
|
+
is answered by configuration — a new `dropTypeOnlyEdges()` transform — rather than by whichever
|
|
43
|
+
producer happened to build the graph. `kind` keeps answering exactly one question, so a
|
|
44
|
+
re-export that is also type-only is finally expressible.
|
|
45
|
+
|
|
46
|
+
Edges that dedupe onto one another now _merge_ their attributes by intersection rather than
|
|
47
|
+
first-wins. `import type { A } from "./x"` beside `import { b } from "./x"` is one dependency
|
|
48
|
+
and it is not type-only; union semantics there would let a "type-only may cross this boundary"
|
|
49
|
+
rule wave through a real violation.
|
|
50
|
+
|
|
51
|
+
**The CLI no longer passes green over files it never read.** It lexes JavaScript and TypeScript
|
|
52
|
+
only, so `.vue`, `.svelte`, and `.astro` files inside the project boundary produced no module, no
|
|
53
|
+
edge, and no warning — a green CI run over a codebase half of which was invisible. A new
|
|
54
|
+
`unscannable-files` diagnostic names the count, the extensions, and a sample of paths, gated by
|
|
55
|
+
`failOnDiagnostics.unscannableFiles` (default off, so nobody's CI breaks on upgrade).
|
|
56
|
+
**Breaking:** `buildGraphFromFilesystem` now returns `{ graph, diagnostics }` rather than a
|
|
57
|
+
`ProjectGraph`.
|
|
58
|
+
|
|
59
|
+
**Rules receive a `GraphView`, not a `GraphQuery`.** The read surface a rule may rely on is now
|
|
60
|
+
an interface; `GraphQuery` is its sole implementation and has moved to `@archwall/core/internal`.
|
|
61
|
+
Naming the class froze the implementation into the public contract, made test doubles impossible,
|
|
62
|
+
and would have turned any future interned or columnar store into a breaking change.
|
|
63
|
+
**Breaking:** import `GraphQuery` from `@archwall/core/internal` if you were constructing one —
|
|
64
|
+
or, if you were doing so to test a rule, use `@archwall/test-utils` instead.
|
|
65
|
+
|
|
66
|
+
**`@archwall/test-utils` is now published.** There is no rule ecosystem without a supported way
|
|
67
|
+
to test a rule, and `ProjectGraph` is opaque by design, so building a fixture graph by hand is
|
|
68
|
+
not something a third party could otherwise do. `runRule` drives the real engine, so scoping,
|
|
69
|
+
option validation, and message rendering behave in a test exactly as they do in a build.
|
|
70
|
+
|
|
71
|
+
**Reserved seams, declared before they are honoured.** `analyze()` takes an optional third
|
|
72
|
+
parameter (`signal` is honoured between rules; `previous` is accepted and ignored, reserving the
|
|
73
|
+
name for incremental reuse). `ProjectGraph` carries a `revision`. `AnalysisResult` always carries
|
|
74
|
+
a `suppressed` list, `UserConfig` accepts `baseline`, and a `baseline-stale` diagnostic gate
|
|
75
|
+
exists — all inert for now. Each of these lives on a type that is about to be frozen, and adding
|
|
76
|
+
them after the freeze would cost a major apiece.
|
|
77
|
+
|
|
78
|
+
## 0.1.0
|
|
79
|
+
|
|
80
|
+
### Minor Changes
|
|
81
|
+
|
|
82
|
+
- 4415522: Initial release.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@archwall/core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Graph IR, analysis engine, and rule/preset/reporter contracts for ArchWall.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -27,8 +27,14 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"exports": {
|
|
30
|
-
".":
|
|
31
|
-
|
|
30
|
+
".": {
|
|
31
|
+
"import": "./dist/index.mjs",
|
|
32
|
+
"require": "./dist/index.cjs"
|
|
33
|
+
},
|
|
34
|
+
"./internal": {
|
|
35
|
+
"import": "./dist/internal.mjs",
|
|
36
|
+
"require": "./dist/internal.cjs"
|
|
37
|
+
},
|
|
32
38
|
"./package.json": "./package.json"
|
|
33
39
|
},
|
|
34
40
|
"publishConfig": {
|
|
@@ -51,4 +57,4 @@
|
|
|
51
57
|
"devDependencies": {
|
|
52
58
|
"@types/picomatch": "^4.0.3"
|
|
53
59
|
}
|
|
54
|
-
}
|
|
60
|
+
}
|