@systemfsoftware/arethetypeswrong-cli 2.0.0 → 3.0.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 CHANGED
@@ -1,5 +1,85 @@
1
1
  # @systemfsoftware/arethetypeswrong-cli
2
2
 
3
+ ## 3.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies.
8
+
9
+ - Updated dependencies.
10
+
11
+ - Updated dependencies:
12
+ - @systemfsoftware/arethetypeswrong-core@4.0.0
13
+
14
+ ## 3.0.0
15
+
16
+ ### Major Changes
17
+
18
+ - Collapse projection tags into the ports they projected
19
+
20
+ A `*ExecutorDeps` tag whose service type was indexed off other ports recorded which members
21
+ one operation happened to reach for. Exporting it turned internal composition into a surface
22
+ commitment: a consumer had to discover and provide an aggregator for each operation, where the
23
+ port it came from already served. The tags rode the `R` channel of exported signatures, so a
24
+ consumer met them only at their own call site.
25
+
26
+ Each was removed the way its evidence directed — no tag was renamed, and none was replaced:
27
+
28
+ - `AttwCliExecutorDeps`, `CheckPackageExecutorDeps` — deleted. Zero consumers, no Live layer;
29
+ callers already required the real capabilities directly.
30
+ - `HookDispatcherExecutorDeps` — was a 1:1 alias of `Scope.Scope`. Requiring `Scope` names the
31
+ same service.
32
+ - `InjectInstructionsExecutorDeps` — packed `FileSystem`, `Path` and `TomlLoader` with no logic.
33
+ Consumers require the three ports.
34
+ - `EffectVitestDeps` → `EffectVitestBindings`. Never a `Context.Tag`: a plain type alias already
35
+ passed as an ordinary parameter, so only the name misdescribed it. A stale api report that no
36
+ `api-extractor` regenerates was deleted with it.
37
+
38
+ A consumer providing a port instead of an aggregator provides no more than before, since a
39
+ service `{ a, b }` is assignable to a requirement `{ a }`.
40
+
41
+ ### Minor Changes
42
+
43
+ - cut over to effect v4 (4.0.0-rc.108): public surface derives from effect types; peers flip effect ^3→^4
44
+
45
+ ### Patch Changes
46
+
47
+ - Array types are spelled one way. `Array<T>` and `ReadonlyArray<T>` in emitted
48
+ declarations become `T[]` and `readonly T[]`, which the type checker cannot tell
49
+ apart: no exported type changes, only how it is written.
50
+
51
+ - An `.attw.json` in the working directory is read again. Rules listed under `ignoreRules`
52
+ were being discarded, so a package that had waived a resolution condition still failed on
53
+ it, and the only way to get a passing run was to repeat every rule on the command line
54
+
55
+ - Rename five mislabelled `*.workflow.ts` files to `*.kernel.ts`.
56
+
57
+ `computeExitCode`, `applyProfile`, `renderAnalysis`, `detectEntrypointResolutions`, and
58
+ `detectModuleKindDisagreement` each return a bare value — a decision instance, a string, an array, or
59
+ `undefined` — never an `Either`. None has a failure mode, so none is a workflow, and the suffix was
60
+ claiming a contract the files never held. The `UninhabitedError` marker in
61
+ `@systemfsoftware/effect-cell-types` prescribes exactly this repair: "this workflow cannot fail, so it
62
+ decides nothing; give it an error variant or move it to a `*.kernel.ts`". Wrapping their results in
63
+ `Either.right` to satisfy the constructor was rejected — that manufactures a success-only decision.
64
+
65
+ Neither package takes a dependency on the constructor. Both are listed as `TOOLING` in
66
+ `scripts/guards/check-lint-coverage.mjs` ("port of arethetypeswrong, tooling"), carry no
67
+ `oxlint.config.ts`, and the cell rules deliberately do not reach them.
68
+
69
+ The public symbols and the `export *` surface of `core/src/index.ts` are unchanged, so no consumer
70
+ import breaks. The bump is real rather than empty because both packages ship `dist/` built from these
71
+ sources: the emitted chunk filenames change, and `arethetypeswrong-cli` rebuilds its `bin` target at
72
+ pack time via `prepack`. Test files and one non-UTF-8 property test were repointed alongside.
73
+
74
+ - Packing for analysis (attw --pack) no longer runs the target package's pack lifecycle scripts: packing acquires the artifact for analysis instead of rebuilding it, so analyzing a package never mutates its build output.
75
+
76
+ - New version is published through npm trusted publishing, so it carries a provenance attestation you can verify.
77
+
78
+ - Build the `bin` target during install. Both CLIs point `bin` at gitignored build output, which pnpm's two bin-link passes skip when it is absent, leaving a fresh clone without the command and never retrying. A `prepare` script now builds the target between the passes; `arethetypeswrong-cli` drops its committed `bin/attw.mjs` launcher in favour of the same pattern.
79
+
80
+ - Updated dependencies:
81
+ - @systemfsoftware/arethetypeswrong-core@3.0.0
82
+
3
83
  ## 2.0.0
4
84
 
5
85
  ### Patch Changes
@@ -580,15 +580,15 @@ const registryOptions = () => Flag.string("registry").pipe(Flag.withDescription(
580
580
  const unwrap = (opt) => Option.isSome(opt) ? opt.value : void 0;
581
581
  const attwCommand = Command.make("attw", {
582
582
  fileOrDirectory: Argument.optional(Argument.string("file-directory-or-package-spec")),
583
- pack: Flag.boolean("pack").pipe(Flag.withAlias("P"), Flag.withDescription("Run `npm pack` in the specified directory and delete the resulting .tgz file afterwards")),
584
- fromNpm: Flag.boolean("from-npm").pipe(Flag.withAlias("p"), Flag.withDescription("Read from the npm registry instead of a local file")),
583
+ pack: Flag.boolean("pack").pipe(Flag.withAlias("P"), Flag.withDefault(false), Flag.withDescription("Run `npm pack` in the specified directory and delete the resulting .tgz file afterwards")),
584
+ fromNpm: Flag.boolean("from-npm").pipe(Flag.withAlias("p"), Flag.withDefault(false), Flag.withDescription("Read from the npm registry instead of a local file")),
585
585
  definitelyTyped: definitelyTypedOptions(),
586
586
  format: formatOptions(),
587
- quiet: Flag.boolean("quiet").pipe(Flag.withAlias("q"), Flag.withDescription("Don't print anything to STDOUT (overrides all other options)")),
587
+ quiet: Flag.boolean("quiet").pipe(Flag.withAlias("q"), Flag.withDefault(false), Flag.withDescription("Don't print anything to STDOUT (overrides all other options)")),
588
588
  entrypoints: Flag.optional(Flag.atLeast(1)(Flag.string("entrypoints"))),
589
589
  includeEntrypoints: Flag.optional(Flag.atLeast(1)(Flag.string("include-entrypoints"))),
590
590
  excludeEntrypoints: Flag.optional(Flag.atLeast(1)(Flag.string("exclude-entrypoints"))),
591
- entrypointsLegacy: Flag.boolean("entrypoints-legacy"),
591
+ entrypointsLegacy: Flag.boolean("entrypoints-legacy").pipe(Flag.withDefault(false)),
592
592
  ignoreRules: ignoreRulesOptions(),
593
593
  profile: profileOptions(),
594
594
  summary: Flag.boolean("summary").pipe(Flag.withDefault(true)),
@@ -1,2 +1,2 @@
1
- import { t as attwCommand } from "./AttwHandler-CidnXJbU.mjs";
1
+ import { t as attwCommand } from "./AttwHandler-GdVcA4q8.mjs";
2
2
  export { attwCommand };
package/dist/main.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { a as FilesystemLive, i as PackRunnerLive, n as TerminalLive, r as StdinLive, t as attwCommand } from "./AttwHandler-CidnXJbU.mjs";
2
+ import { a as FilesystemLive, i as PackRunnerLive, n as TerminalLive, r as StdinLive, t as attwCommand } from "./AttwHandler-GdVcA4q8.mjs";
3
3
  import { layer } from "@effect/platform-node-shared/NodeChildProcessSpawner";
4
4
  import { layer as layer$1 } from "@effect/platform-node-shared/NodeFileSystem";
5
5
  import { layer as layer$2 } from "@effect/platform-node-shared/NodePath";
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@systemfsoftware/arethetypeswrong-cli",
3
- "version": "2.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "A CLI tool for arethetypeswrong.github.io — owned and maintained by systemfsoftware",
5
5
  "author": "Ryan Lee <drdgvhbh@gmail.com>",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "https://github.com/systemfsoftware/systemfsoftware.git",
10
- "directory": "packages/arethetypeswrong/cli"
10
+ "directory": "packages/testing/type-testing/arethetypeswrong/cli"
11
11
  },
12
12
  "files": [
13
13
  "dist",
@@ -22,13 +22,13 @@
22
22
  },
23
23
  "type": "module",
24
24
  "dependencies": {
25
- "@effect/platform-node": "^4.0.0-rc.108",
26
- "@effect/platform-node-shared": "^4.0.0-rc.108",
27
- "effect": "4.0.0-rc.108",
28
- "@systemfsoftware/arethetypeswrong-core": "2.0.0"
25
+ "@effect/platform-node": "^4.0.0-rc.111",
26
+ "@effect/platform-node-shared": "^4.0.0-rc.111",
27
+ "effect": "4.0.0-rc.111",
28
+ "@systemfsoftware/arethetypeswrong-core": "4.0.0"
29
29
  },
30
30
  "devDependencies": {
31
- "@effect/vitest": "4.0.0-rc.108",
31
+ "@effect/vitest": "4.0.0-rc.111",
32
32
  "@types/node": "^24",
33
33
  "fast-check": "^4",
34
34
  "oxlint": "^1.77.0",
@@ -37,13 +37,13 @@
37
37
  "tsdown": "^0.22.14",
38
38
  "vite-tsconfig-paths": "^6.1.1",
39
39
  "vitest": "^4.1.10",
40
- "@systemfsoftware/effect-schema-law": "^0.7.0",
41
- "@systemfsoftware/effect-schema-vite": "^1.5.2",
40
+ "@systemfsoftware/effect-gherkin-spec": "^2.0.1",
41
+ "@systemfsoftware/effect-schema-law": "^0.9.0",
42
+ "@systemfsoftware/effect-schema-vite": "^1.5.4",
42
43
  "@systemfsoftware/oxlint-config": "^0.1.0",
43
- "@systemfsoftware/oxlint-plugin-effect-dmmf": "^2.0.0",
44
- "@systemfsoftware/effect-gherkin-spec": "^1.0.0",
45
- "@systemfsoftware/tsconfig": "^1.3.2",
46
- "@systemfsoftware/vitest-config": "^0.1.0"
44
+ "@systemfsoftware/vitest-config": "^0.1.0",
45
+ "@systemfsoftware/tsconfig": "^1.3.3",
46
+ "@systemfsoftware/oxlint-plugin-effect-dmmf": "^4.0.0"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=24"