@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.
Files changed (2) hide show
  1. package/CHANGELOG.md +85 -0
  2. 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.0.0",
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-plugins/cell-vocabulary"
9
+ "directory": "packages/lint/oxlint/plugins/cells/cell-vocabulary"
10
10
  },
11
- "homepage": "https://github.com/systemfsoftware/systemfsoftware/tree/main/packages/oxlint-plugins/cell-vocabulary#readme",
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": "^1.0.1"
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.1",
55
+ "@systemfsoftware/tsconfig": "^1.3.3",
56
56
  "@systemfsoftware/vitest-config": "^0.1.0"
57
57
  },
58
58
  "peerDependencies": {