@systemfsoftware/all 0.2.0 → 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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @systemfsoftware/all
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Preset configuration for Effect domain modelling, schema boundaries, test placement, property-based testing, entrypoint termination, and cell vocabulary. Peer dependencies are streamlined to core language and static analysis tools.
8
+
9
+ ### Patch Changes
10
+
11
+ - Introduce `@systemfsoftware/omp-typescript-discipline` plugin and rules for TypeScript configuration discipline
12
+
13
+ - Updated dependencies:
14
+ - @systemfsoftware/oxlint-plugin@2.0.0
15
+ - @systemfsoftware/oxlint-plugin-effect-dmmf@3.0.0
16
+ - @systemfsoftware/oxlint-plugin-effect-schema@3.0.0
17
+ - @systemfsoftware/oxlint-plugin-effect-workflow@3.0.0
18
+ - @systemfsoftware/oxlint-plugin-test-placement@3.0.0
19
+
3
20
  ## 0.2.0
4
21
 
5
22
  ### Minor Changes
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @systemfsoftware/all
2
2
 
3
- The whole stack in one install, plus the oxlint preset that turns every recommended rule on.
3
+ Complete [oxlint](https://oxc.rs/docs/guide/usage/linter.html) preset for Effect-TS and the functional core / imperative shell architecture.
4
4
 
5
- Installing this package installs every published `@systemfsoftware/*` package — the Effect runtime libraries, the schema and cell types, the Gherkin spec runners, the Stryker fork and its plugins, and every custom lint plugin at versions that are known to work together. Its own export is one thing: a ready-made oxlint configuration.
5
+ Extends oxlint with custom rule plugins for Effect domain modelling, schema boundaries, test placement, property-based testing, entrypoint termination, and cell vocabularypre-configured with type awareness and correctness defaults in a single import.
6
6
 
7
7
  ## Install
8
8
 
@@ -10,11 +10,11 @@ Installing this package installs every published `@systemfsoftware/*` package
10
10
  pnpm add -D @systemfsoftware/all effect oxlint oxlint-tsgolint typescript
11
11
  ```
12
12
 
13
- `effect`, `oxlint`, `oxlint-tsgolint` and `typescript` are peer dependencies, so your project keeps one copy of each. `oxlint-tsgolint` is the engine oxlint delegates type-aware rules to: without it the first lint run stops at `Failed to find tsgolint executable`. Everything else the stack needs is pulled in for you.
13
+ `effect`, `oxlint`, `oxlint-tsgolint`, and `typescript` are peer dependencies so your project controls its own versions. `oxlint-tsgolint` is the type-aware evaluation engine required for semantic rules (e.g. boundary assertions and schema codecs).
14
14
 
15
- Some packages serve one framework and declare their own optional peers — `react`, `react-dom` and `scheduler` for the React bindings, `vitest` and `@effect/vitest` for the test-time libraries, `vite`, `storybook`, `rxjs`, `@stryker-mutator/api`, `@effect/platform-node` and `@oh-my-pi/pi-coding-agent`. They are optional: install one only when you use the part that needs it, and nothing warns about the ones you skip.
15
+ ## Quick Start
16
16
 
17
- ## Turn every rule on
17
+ Export the preset from your `oxlint.config.ts`:
18
18
 
19
19
  ```ts
20
20
  // oxlint.config.ts
@@ -23,20 +23,57 @@ import all from '@systemfsoftware/all'
23
23
  export default all
24
24
  ```
25
25
 
26
- That single import delivers:
26
+ Run oxlint against your project:
27
27
 
28
- - the built-in `correctness` category at `error`, with the `oxc`, `typescript`, `import`, `unicorn`, `vitest`, `jsdoc`, `node` and `promise` namespaces registered
29
- - the universal defect tier and the test-file hygiene tier
30
- - every custom rule this architecture recommends: the workflow, schema, test-placement, property-testing, hygiene, entrypoint and cell-vocabulary tiers, each at `error`
28
+ ```sh
29
+ pnpm oxlint
30
+ ```
31
+
32
+ > [!NOTE]
33
+ > Type-aware rules require a `tsconfig.json` covering the files being linted. Without type information, type-dependent rules are skipped.
34
+
35
+ ## What's Included
36
+
37
+ The preset registers and enables four custom plugin suites alongside stock oxlint correctness rules at `error`:
38
+
39
+ ### Custom Rule Plugins
40
+
41
+ | Plugin | Scope | Key Invariants Enforced |
42
+ | -------------------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
43
+ | `@systemfsoftware/oxlint-plugin` | Core Effect & architecture | Ban native `Date.now()`, `Map`, `Set`, `setTimeout`, and `Promise` inside Effect blocks; require structured errors over string errors; forbid boundary tests in unit suites |
44
+ | `@systemfsoftware/oxlint-plugin-cell-vocabulary` | Cell architecture | Enforce kernel/executor boundary conventions and domain naming structures by walking cell descriptions |
45
+ | `@systemfsoftware/oxlint-plugin-effect-dmmf` | DMMF aggregate suite | Bundles schema codec checks, workflow step structure, property-based test isolation, and test hygiene |
46
+ | `@systemfsoftware/oxlint-plugin-effect-entrypoint` | Application runtime | Require explicit top-level runtime entrypoints (`runMain`, `ManagedRuntime`) and forbid leaking intermediate runtimes |
31
47
 
32
- Type-aware rules are enabled, so the files you lint must be covered by a `tsconfig.json`. Without one, roughly half of these rules produce no diagnostics and say nothing about being inert.
48
+ ### Stock Namespaces & Defaults
33
49
 
34
- Named exports are available for partial adoption — `rules`, `plugins` and `ignorePatterns` — if you would rather compose than extend.
50
+ - **`categories`**: `correctness: 'error'`
51
+ - **Registered namespaces**: `oxc`, `typescript`, `import`, `unicorn`, `vitest`, `jsdoc`, `node`, `promise`
52
+ - **Default ignore patterns**: `dist/**`, `build/**`, `coverage/**`, `**/*.d.ts`, `.turbo/**`, `.stryker-tmp/**`
53
+
54
+ ## Composition & Customization
55
+
56
+ If you need to override rules or extend existing settings, import individual configuration blocks or spread the preset:
57
+
58
+ ```ts
59
+ // oxlint.config.ts
60
+ import all, { ignorePatterns, plugins, rules } from '@systemfsoftware/all'
61
+
62
+ export default {
63
+ ...all,
64
+ ignorePatterns: [...ignorePatterns, 'generated/**'],
65
+ rules: {
66
+ ...rules,
67
+ // downgrade or customize specific rules
68
+ '@systemfsoftware/oxlint-plugin/no-logging-in-catch': 'warn',
69
+ },
70
+ }
71
+ ```
35
72
 
36
- ## Using one package instead
73
+ ## Contributing
37
74
 
38
- Every package in the stack is published on its own and installs independently. Reach for this one when you want the set; reach for the individual package when you want one library and its own peers.
75
+ Development setup and repo workflow: [AGENTS.md](../../../AGENTS.md).
39
76
 
40
77
  ## License
41
78
 
42
- Apache-2.0. Part of [systemfsoftware](https://github.com/systemfsoftware/systemfsoftware).
79
+ [Apache-2.0](LICENSE). Part of [systemfsoftware](https://github.com/systemfsoftware/systemfsoftware).
package/dist/index.d.ts CHANGED
@@ -30,7 +30,7 @@ declare const rules: NonNullable<OxlintConfig['rules']>;
30
30
  */
31
31
  declare const ignorePatterns: readonly string[];
32
32
  /**
33
- * The whole stack as one `extends`-consumable oxlint config, and this package's
33
+ * The complete preset as one `extends`-consumable oxlint config, and this package's
34
34
  * default export: `export default all` in an `oxlint.config.ts` delivers the
35
35
  * plugins, type awareness, the correctness category, the stock defect and
36
36
  * test-hygiene tiers, and every recommended cell rule at `error`.
package/dist/index.mjs CHANGED
@@ -72,7 +72,7 @@ const ignorePatterns = [
72
72
  "**/*.tsbuildinfo"
73
73
  ];
74
74
  /**
75
- * The whole stack as one `extends`-consumable oxlint config, and this package's
75
+ * The complete preset as one `extends`-consumable oxlint config, and this package's
76
76
  * default export: `export default all` in an `oxlint.config.ts` delivers the
77
77
  * plugins, type awareness, the correctness category, the stock defect and
78
78
  * test-hygiene tiers, and every recommended cell rule at `error`.
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@systemfsoftware/all",
3
3
  "license": "Apache-2.0",
4
- "version": "0.2.0",
4
+ "version": "0.3.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/all"
9
+ "directory": "packages/lint/oxlint/all"
10
10
  },
11
- "homepage": "https://github.com/systemfsoftware/systemfsoftware/tree/main/packages/all#readme",
11
+ "homepage": "https://github.com/systemfsoftware/systemfsoftware/tree/main/packages/lint/oxlint/all#readme",
12
12
  "bugs": "https://github.com/systemfsoftware/systemfsoftware/issues",
13
- "description": "The whole stack in one install: every published @systemfsoftware package, plus an oxlint preset whose default export turns on every recommended cell rule the workflow, schema, test-placement, property-testing, hygiene and vocabulary tiers without any repo-internal config.",
13
+ "description": "Complete oxlint preset for Effect and cell architecture: bundles all custom rule plugins (workflow, schema, entrypoint, cell vocabulary, property testing, test placement, hygiene) with type-aware correctness settings in a single config.",
14
14
  "keywords": [
15
15
  "effect",
16
16
  "effect-ts",
@@ -18,8 +18,6 @@
18
18
  "oxlint",
19
19
  "oxlint-config",
20
20
  "preset",
21
- "meta-package",
22
- "monorepo",
23
21
  "schema",
24
22
  "workflow",
25
23
  "typescript"
@@ -29,43 +27,19 @@
29
27
  "dist"
30
28
  ],
31
29
  "dependencies": {
32
- "@systemfsoftware/arethetypeswrong-core": "^2.0.0",
33
- "@systemfsoftware/arethetypeswrong-cli": "^2.0.0",
34
- "@systemfsoftware/effect-cell-types": "^2.0.0",
35
- "@systemfsoftware/effect-atom": "^1.0.0",
36
- "@systemfsoftware/effect-atom-react": "^0.6.0",
37
- "@systemfsoftware/effect-schema-extensions": "^0.8.0",
38
- "@systemfsoftware/effect-gherkin-spec": "^1.0.0",
39
- "@systemfsoftware/effect-daemon-spec": "^1.0.0",
40
- "@systemfsoftware/effect-memfs": "^1.2.0",
41
- "@systemfsoftware/effect-schema-law": "^0.7.0",
42
- "@systemfsoftware/effect-schema-vite": "^1.5.2",
43
- "@systemfsoftware/hex-schema": "^1.7.0",
44
- "@systemfsoftware/omp-agent-discipline": "^2.0.0",
45
- "@systemfsoftware/oxlint-plugin-cell-vocabulary": "^1.1.0",
46
- "@systemfsoftware/oxlint-plugin-effect-dmmf": "^2.0.0",
47
- "@systemfsoftware/omp-claude-compat": "^2.0.0",
48
- "@systemfsoftware/oxlint-plugin-effect-entrypoint": "^1.0.3",
49
- "@systemfsoftware/oxlint-plugin": "^1.0.0",
50
- "@systemfsoftware/oxlint-plugin-effect-schema": "^2.0.0",
51
- "@systemfsoftware/oxlint-plugin-effect-workflow": "^2.0.0",
52
- "@systemfsoftware/oxlint-plugin-recommended": "^1.1.2",
53
- "@systemfsoftware/oxlint-plugin-test-hygiene": "^1.1.3",
54
- "@systemfsoftware/oxlint-plugin-test-placement": "^2.0.0",
55
- "@systemfsoftware/rx-effect": "^0.6.0",
56
- "@systemfsoftware/oxlint-plugin-property-testing": "^1.2.0",
57
- "@systemfsoftware/storybook-gherkin": "^1.0.0",
58
- "@systemfsoftware/stryker-js-mutation-report": "^1.2.6",
59
- "@systemfsoftware/stryker-js-cli": "^2.0.0",
60
- "@systemfsoftware/stryker-js-mutation-run": "^2.0.0",
61
- "@systemfsoftware/stryker-js-plugin-api": "^1.0.0",
62
- "@systemfsoftware/stryker-js-typescript-checker": "^1.3.0",
63
- "@systemfsoftware/stryker-plugins": "^0.12.0",
64
- "@systemfsoftware/stryker-js-vitest-runner": "^0.1.1",
65
- "@systemfsoftware/tsconfig": "^1.3.2"
30
+ "@systemfsoftware/oxlint-plugin-effect-dmmf": "^3.0.0",
31
+ "@systemfsoftware/oxlint-plugin-cell-vocabulary": "^1.2.0",
32
+ "@systemfsoftware/oxlint-plugin-effect-entrypoint": "^1.0.4",
33
+ "@systemfsoftware/oxlint-plugin-effect-schema": "^3.0.0",
34
+ "@systemfsoftware/oxlint-plugin": "^2.0.0",
35
+ "@systemfsoftware/oxlint-plugin-property-testing": "^1.3.0",
36
+ "@systemfsoftware/oxlint-plugin-test-hygiene": "^1.1.4",
37
+ "@systemfsoftware/oxlint-plugin-effect-workflow": "^3.0.0",
38
+ "@systemfsoftware/oxlint-plugin-recommended": "^1.1.3",
39
+ "@systemfsoftware/oxlint-plugin-test-placement": "^3.0.0"
66
40
  },
67
41
  "devDependencies": {
68
- "@microsoft/api-extractor": "^7.58.7",
42
+ "@systemfsoftware/arethetypeswrong-cli": "^1.1.1",
69
43
  "@types/node": "^24",
70
44
  "effect": "4.0.0-rc.108",
71
45
  "oxlint": "^1.77.0",
@@ -73,80 +47,29 @@
73
47
  "rimraf": "^6.1.3",
74
48
  "tsdown": "^0.22.14",
75
49
  "typescript": "^7",
76
- "vitest": "^4.1.10",
77
- "@systemfsoftware/oxlint-config": "^0.1.0",
78
- "@systemfsoftware/vitest-config": "^0.1.0"
50
+ "@systemfsoftware/tsconfig": "^1.3.3",
51
+ "@systemfsoftware/oxlint-config": "^0.1.0"
79
52
  },
80
53
  "peerDependencies": {
81
- "@effect/platform-node": "^4.0.0-rc.108",
82
- "@effect/vitest": "4.0.0-rc.108",
83
- "@oh-my-pi/pi-coding-agent": "^17.0.5",
84
- "@stryker-mutator/api": "^9.6.1",
85
54
  "effect": "4.0.0-rc.108",
86
55
  "oxlint": "^1.77.0",
87
56
  "oxlint-tsgolint": ">=0.24.0",
88
- "react": "^19.2.8",
89
- "react-dom": "^19.2.8",
90
- "rxjs": "^7",
91
- "scheduler": "*",
92
- "storybook": ">=10.0.0",
93
- "typescript": ">=5.0.0",
94
- "vite": ">5.0.0",
95
- "vitest": ">=4.1.0 <5.0.0"
96
- },
97
- "peerDependenciesMeta": {
98
- "@effect/platform-node": {
99
- "optional": true
100
- },
101
- "@effect/vitest": {
102
- "optional": true
103
- },
104
- "@oh-my-pi/pi-coding-agent": {
105
- "optional": true
106
- },
107
- "@stryker-mutator/api": {
108
- "optional": true
109
- },
110
- "react": {
111
- "optional": true
112
- },
113
- "react-dom": {
114
- "optional": true
115
- },
116
- "rxjs": {
117
- "optional": true
118
- },
119
- "scheduler": {
120
- "optional": true
121
- },
122
- "storybook": {
123
- "optional": true
124
- },
125
- "vite": {
126
- "optional": true
127
- },
128
- "vitest": {
129
- "optional": true
130
- }
57
+ "typescript": ">=5.0.0"
131
58
  },
132
59
  "publishConfig": {
133
60
  "provenance": true
134
61
  },
135
62
  "exports": {
136
63
  ".": {
137
- "types": "./dist/all.d.ts",
64
+ "types": "./dist/index.d.ts",
138
65
  "default": "./dist/index.mjs"
139
66
  },
140
67
  "./package.json": "./package.json"
141
68
  },
142
69
  "scripts": {
143
70
  "clean": "rimraf dist",
144
- "build": "tsdown && pnpm api:check",
71
+ "build": "tsdown",
145
72
  "typecheck": "tsc --noEmit --incremental",
146
- "test": "vitest run",
147
- "test:run": "vitest run",
148
- "api:check": "api-extractor run",
149
- "api:update": "api-extractor run --local",
150
73
  "lint": "f=${OXLINT_FORMAT:-${AGENT:+agent}}; oxlint . --format=${f:-default}",
151
74
  "attw": "attw --pack ."
152
75
  }
package/dist/all.d.ts DELETED
@@ -1,50 +0,0 @@
1
- import { OxlintConfig } from 'oxlint';
2
-
3
- /**
4
- * The whole stack as one `extends`-consumable oxlint config, and this package's
5
- * default export: `export default all` in an `oxlint.config.ts` delivers the
6
- * plugins, type awareness, the correctness category, the stock defect and
7
- * test-hygiene tiers, and every recommended cell rule at `error`.
8
- *
9
- * Type awareness is on, so a consumer needs a `tsconfig.json` that includes the
10
- * files being linted; half of these rules produce no diagnostics without it and
11
- * say nothing about being inert.
12
- *
13
- * @public
14
- */
15
- declare const all: OxlintConfig;
16
- export default all;
17
-
18
- /**
19
- * Paths that are never source. Build output and generated declarations are the
20
- * load-bearing entries: a `dist/` left unignored makes a type-aware run read
21
- * emitted code and report findings no edit can fix.
22
- *
23
- * @public
24
- */
25
- export declare const ignorePatterns: readonly string[];
26
-
27
- /**
28
- * Built-in namespaces the enabled rules key on.
29
- *
30
- * Setting `plugins` REPLACES oxlint's default set rather than merging into it,
31
- * and there is no flag that reveals the loss — only `--disable-oxc-plugin`. So
32
- * `oxc` is listed explicitly: omitting it silently drops every oxc correctness
33
- * rule while `correctness: 'error'` still reads as enabled.
34
- *
35
- * @public
36
- */
37
- export declare const plugins: NonNullable<OxlintConfig['plugins']>;
38
-
39
- /**
40
- * Every rule this stack recommends, taken from each plugin's own
41
- * `configs.recommended` rather than transcribed here. A copied rule list drifts
42
- * from the plugin that owns it and the drift is invisible: the misspelled or
43
- * retired key is reported as unknown at most once, and the rule it named is
44
- * simply absent from then on.
45
- *
46
- * @public
47
- */
48
- export declare const rules: NonNullable<OxlintConfig['rules']>;
49
-
50
- export { }