@systemfsoftware/oxlint-plugin-cell-vocabulary 1.0.0 → 1.2.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/CHANGELOG.md +85 -0
- package/package.json +5 -5
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# @systemfsoftware/oxlint-plugin-cell-vocabulary
|
|
2
|
+
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- New oxlint plugin whose rule vocabulary is derived, not declared: `no-io-in-phase-bodies` reads the pure-phase set, the description's module name and the I/O-cell classification off `Cell.vocabulary` at load time, so reclassifying a cell or changing a phase's kind moves the rule with no edit here.
|
|
8
|
+
|
|
9
|
+
The rule reports an I/O call reached from a pure phase body, directly or through a module-level helper it calls. That wording is the predicate's exact reach: a binding captured from an enclosing closure is not followed, and the message does not claim it is.
|
|
10
|
+
|
|
11
|
+
An empty walk throws at load rather than matching nothing, because a set-membership rule over an empty set stays registered and green while deciding nothing.
|
|
12
|
+
|
|
13
|
+
Delivered consumer-side through each consumer's own `jsPlugins`, never through the aggregate config: the plugin depends on `@systemfsoftware/effect-cell-types`, and declaring it in the aggregate would close a build cycle.
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- New version is published through npm trusted publishing, so it carries a provenance attestation you can verify.
|
|
18
|
+
|
|
19
|
+
- State the canonical-identifier contract once
|
|
20
|
+
|
|
21
|
+
Six leaves carried the same rule: a rule matches the canonical identifier only, its suite
|
|
22
|
+
carries a near-miss valid case proving the alias does not fire, and widening the match makes
|
|
23
|
+
every one of those cases pass vacuously. It now lives once in the hub leaf that governs the
|
|
24
|
+
whole family, so a leaf below inherits it rather than restating it.
|
|
25
|
+
|
|
26
|
+
One clause was genuinely package-specific and stayed: a computed `Effect['fn']` still counts
|
|
27
|
+
as an exported `Effect` value under `store-effect-fn-required`, which the shared rule does
|
|
28
|
+
not say.
|
|
29
|
+
|
|
30
|
+
Also corrects the turbo cycle recorded in two places. Both chains from `effect-executor` to
|
|
31
|
+
`effect-dmmf` are real — `effect-cell-types` dev-depends on `oxlint-config` directly and
|
|
32
|
+
again through `effect-gherkin-spec` — so the two were true at different granularity rather
|
|
33
|
+
than in conflict, and both now say so. The closing edge is absent today; the rules exist to
|
|
34
|
+
keep it absent.
|
|
35
|
+
|
|
36
|
+
- Each of these packages now has a README, so its registry page says what the package is, how
|
|
37
|
+
to install it, and what to import or register — previously the page was blank. The lint
|
|
38
|
+
plugins show the configuration line that enables what they recommend.
|
|
39
|
+
|
|
40
|
+
`@systemfsoftware/stryker-js-mutation-report` also carries its licence text
|
|
41
|
+
|
|
42
|
+
- Updated dependencies:
|
|
43
|
+
- @systemfsoftware/effect-cell-types@3.0.0
|
|
44
|
+
|
|
45
|
+
## 1.1.0
|
|
46
|
+
|
|
47
|
+
### Minor Changes
|
|
48
|
+
|
|
49
|
+
- New oxlint plugin whose rule vocabulary is derived, not declared: `no-io-in-phase-bodies` reads the pure-phase set, the description's module name and the I/O-cell classification off `Cell.vocabulary` at load time, so reclassifying a cell or changing a phase's kind moves the rule with no edit here.
|
|
50
|
+
|
|
51
|
+
The rule reports an I/O call reached from a pure phase body, directly or through a module-level helper it calls. That wording is the predicate's exact reach: a binding captured from an enclosing closure is not followed, and the message does not claim it is.
|
|
52
|
+
|
|
53
|
+
An empty walk throws at load rather than matching nothing, because a set-membership rule over an empty set stays registered and green while deciding nothing.
|
|
54
|
+
|
|
55
|
+
Delivered consumer-side through each consumer's own `jsPlugins`, never through the aggregate config: the plugin depends on `@systemfsoftware/effect-cell-types`, and declaring it in the aggregate would close a build cycle.
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- New version is published through npm trusted publishing, so it carries a provenance attestation you can verify.
|
|
60
|
+
|
|
61
|
+
- State the canonical-identifier contract once
|
|
62
|
+
|
|
63
|
+
Six leaves carried the same rule: a rule matches the canonical identifier only, its suite
|
|
64
|
+
carries a near-miss valid case proving the alias does not fire, and widening the match makes
|
|
65
|
+
every one of those cases pass vacuously. It now lives once in the hub leaf that governs the
|
|
66
|
+
whole family, so a leaf below inherits it rather than restating it.
|
|
67
|
+
|
|
68
|
+
One clause was genuinely package-specific and stayed: a computed `Effect['fn']` still counts
|
|
69
|
+
as an exported `Effect` value under `store-effect-fn-required`, which the shared rule does
|
|
70
|
+
not say.
|
|
71
|
+
|
|
72
|
+
Also corrects the turbo cycle recorded in two places. Both chains from `effect-executor` to
|
|
73
|
+
`effect-dmmf` are real — `effect-cell-types` dev-depends on `oxlint-config` directly and
|
|
74
|
+
again through `effect-gherkin-spec` — so the two were true at different granularity rather
|
|
75
|
+
than in conflict, and both now say so. The closing edge is absent today; the rules exist to
|
|
76
|
+
keep it absent.
|
|
77
|
+
|
|
78
|
+
- Each of these packages now has a README, so its registry page says what the package is, how
|
|
79
|
+
to install it, and what to import or register — previously the page was blank. The lint
|
|
80
|
+
plugins show the configuration line that enables what they recommend.
|
|
81
|
+
|
|
82
|
+
`@systemfsoftware/stryker-js-mutation-report` also carries its licence text
|
|
83
|
+
|
|
84
|
+
- Updated dependencies:
|
|
85
|
+
- @systemfsoftware/effect-cell-types@2.0.0
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@systemfsoftware/oxlint-plugin-cell-vocabulary",
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.2.0",
|
|
5
5
|
"author": "Ryan Lee <drdgvhbh@gmail.com>",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/systemfsoftware/systemfsoftware.git",
|
|
9
|
-
"directory": "packages/oxlint
|
|
9
|
+
"directory": "packages/lint/oxlint/plugins/cells/cell-vocabulary"
|
|
10
10
|
},
|
|
11
|
-
"homepage": "https://github.com/systemfsoftware/systemfsoftware/tree/main/packages/oxlint
|
|
11
|
+
"homepage": "https://github.com/systemfsoftware/systemfsoftware/tree/main/packages/lint/oxlint/plugins/cells/cell-vocabulary#readme",
|
|
12
12
|
"bugs": "https://github.com/systemfsoftware/systemfsoftware/issues",
|
|
13
13
|
"description": "Oxlint rules that decide the phase purity and I/O-cell vocabulary of a Cell description by walking Cell.vocabulary, and report I/O reached from the body of a phase whose kind forbids it.",
|
|
14
14
|
"keywords": [
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@oxc-project/types": "^0.140.0",
|
|
41
41
|
"@oxlint/plugins": "^1.77.0",
|
|
42
|
-
"@systemfsoftware/effect-cell-types": "^
|
|
42
|
+
"@systemfsoftware/effect-cell-types": "^3.0.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@microsoft/api-extractor": "^7.58.7",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"tsdown": "^0.22.14",
|
|
53
53
|
"typescript": "^7",
|
|
54
54
|
"vitest": "^4.1.10",
|
|
55
|
-
"@systemfsoftware/tsconfig": "^1.3.
|
|
55
|
+
"@systemfsoftware/tsconfig": "^1.3.3",
|
|
56
56
|
"@systemfsoftware/vitest-config": "^0.1.0"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|