v11y-check 0.7.1 → 0.9.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/README.md CHANGED
@@ -2,7 +2,21 @@
2
2
 
3
3
  Wraps [audit-ci](https://github.com/IBM/audit-ci) with a richer config model, typed JSON source of truth, and a sync workflow that automates allowlist management.
4
4
 
5
- <!-- section:release-notes --><!-- /section:release-notes -->
5
+ <!-- section:release-notes -->
6
+ ## Release notes — v0.9.0 (2026-06-30)
7
+
8
+ ### 🎉 Features
9
+
10
+ - 🚨 **Breaking:** Auto-activate integration test variant from config presence (#448)
11
+
12
+ A package can now separate its integration tests from its standalone suite simply by including a `vitest.integration.config.ts` (alongside a `vitest.standalone.config.ts`). The `--int-test` flag that previously enabled this is removed — that config-file pairing is now the only way to activate the separation. In such a package, `test` and `test:coverage` run only the standalone suite and skip integration tests, while a new `test:all` runs both suites together. The separation now holds even when tests run across every package at once, so a full-workspace `test` run still keeps integration tests out of the default suite. Packages that previously hand-copied these test scripts no longer need to.
13
+
14
+ ### 🐛 Bug fixes
15
+
16
+ - Prevent CLI output truncation when piped before exit (#446)
17
+
18
+ Fixes an issue where large output from the `nmr` and `v11y` commands could be truncated when captured through a pipe — for example, by a CI job.
19
+ <!-- /section:release-notes -->
6
20
 
7
21
  ## Installation
8
22
 
package/dist/esm/.cache CHANGED
@@ -1 +1 @@
1
- 731c9699e3aaaa4a03d70310c103e10f7670c19299c4a20428e5b9ca2c55eb15
1
+ 3212b9610d8d35e990af90c896cc18411959dd3c5885a72d641764a6d054b814
@@ -1,5 +1,4 @@
1
- import process from "node:process";
2
- import { parseArgs, readPackageVersion, translateParseError } from "@williamthorsen/nmr-core";
1
+ import { parseArgs, readPackageVersion, reportError } from "@williamthorsen/nmr-core";
3
2
  import { auditCommand, checkCommand, extractMessage, syncCommand } from "../cli.js";
4
3
  import { initCommand } from "../init/initCommand.js";
5
4
  const VERSION = readPackageVersion(import.meta.url);
@@ -111,12 +110,10 @@ async function routeCommand(args) {
111
110
  if (command !== void 0 && !command.startsWith("-")) {
112
111
  const typoMatch = findTypoMatch(command);
113
112
  if (typoMatch !== void 0) {
114
- process.stderr.write(`Error: Unknown command '${command}'. Did you mean 'v11y ${typoMatch}'?
115
- `);
113
+ reportError(`Unknown command '${command}'. Did you mean 'v11y ${typoMatch}'?`);
116
114
  return 1;
117
115
  }
118
- process.stderr.write(`Error: Unknown command '${command}'.
119
- `);
116
+ reportError(`Unknown command '${command}'.`);
120
117
  return 1;
121
118
  }
122
119
  if (args.includes("--raw")) {
@@ -134,15 +131,13 @@ async function handleSubcommand(flags, handler, helpFn = showHelp) {
134
131
  try {
135
132
  options = parseSharedFlags(flags);
136
133
  } catch (error) {
137
- process.stderr.write(`Error: ${translateParseError(error)}
138
- `);
134
+ reportError(extractMessage(error));
139
135
  return 1;
140
136
  }
141
137
  try {
142
138
  return await handler(options);
143
139
  } catch (error) {
144
- process.stderr.write(`Error: ${extractMessage(error)}
145
- `);
140
+ reportError(extractMessage(error));
146
141
  return 1;
147
142
  }
148
143
  }
@@ -159,8 +154,7 @@ function handleInit(flags) {
159
154
  try {
160
155
  parsed = parseArgs(flags, initFlagSchema);
161
156
  } catch (error) {
162
- process.stderr.write(`Error: ${translateParseError(error)}
163
- `);
157
+ reportError(extractMessage(error));
164
158
  return 1;
165
159
  }
166
160
  return initCommand({ dryRun: parsed.flags.dryRun, force: parsed.flags.force });
@@ -9,4 +9,4 @@ try {
9
9
  `);
10
10
  exitCode = 1;
11
11
  }
12
- process.exit(exitCode);
12
+ process.exitCode = exitCode;
package/dist/esm/cli.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import process from "node:process";
2
+ import { reportError } from "@williamthorsen/nmr-core";
2
3
  import { loadConfig } from "./config.js";
3
4
  import { formatCheckJson, formatCheckText } from "./format-check.js";
4
5
  import { formatCheckVerboseText } from "./format-verbose.js";
@@ -16,8 +17,7 @@ async function auditCommand(options) {
16
17
  try {
17
18
  loaded = await loadConfig(options.configPath);
18
19
  } catch (error) {
19
- process.stderr.write(`Error: ${extractMessage(error)}
20
- `);
20
+ reportError(extractMessage(error));
21
21
  return 1;
22
22
  }
23
23
  const { config } = loaded;
@@ -66,8 +66,7 @@ async function auditCommand(options) {
66
66
  return exitCode;
67
67
  });
68
68
  } catch (error) {
69
- process.stderr.write(`Error: ${extractMessage(error)}
70
- `);
69
+ reportError(extractMessage(error));
71
70
  return 1;
72
71
  }
73
72
  }
@@ -77,8 +76,7 @@ async function checkCommand(options) {
77
76
  try {
78
77
  loaded = await loadConfig(options.configPath);
79
78
  } catch (error) {
80
- process.stderr.write(`Error: ${extractMessage(error)}
81
- `);
79
+ reportError(extractMessage(error));
82
80
  return 1;
83
81
  }
84
82
  const { config } = loaded;
@@ -141,8 +139,7 @@ async function checkCommand(options) {
141
139
  return hasUnallowed ? 1 : 0;
142
140
  });
143
141
  } catch (error) {
144
- process.stderr.write(`Error: ${extractMessage(error)}
145
- `);
142
+ reportError(extractMessage(error));
146
143
  return 1;
147
144
  }
148
145
  }
@@ -151,16 +148,14 @@ async function syncCommand(options) {
151
148
  try {
152
149
  loaded = await loadConfig(options.configPath);
153
150
  } catch (error) {
154
- process.stderr.write(`Error: ${extractMessage(error)}
155
- `);
151
+ reportError(extractMessage(error));
156
152
  return 1;
157
153
  }
158
154
  const { configSource } = loaded;
159
155
  if (configSource === "defaults") {
160
156
  const { configResult } = scaffoldConfig({ dryRun: false, force: false });
161
157
  if (configResult.outcome === "failed") {
162
- process.stderr.write(`Error: Failed to create config file
163
- `);
158
+ reportError("Failed to create config file");
164
159
  return 1;
165
160
  }
166
161
  loaded = await loadConfig(options.configPath);
@@ -202,8 +197,7 @@ async function syncCommand(options) {
202
197
  return 0;
203
198
  });
204
199
  } catch (error) {
205
- process.stderr.write(`Error: ${extractMessage(error)}
206
- `);
200
+ reportError(extractMessage(error));
207
201
  return 1;
208
202
  }
209
203
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "v11y-check",
3
- "version": "0.7.1",
3
+ "version": "0.9.0",
4
4
  "private": false,
5
5
  "description": "Wrap audit-ci with a richer config model, typed JSON source of truth, and sync workflow",
6
6
  "keywords": [
@@ -40,15 +40,10 @@
40
40
  "dependencies": {
41
41
  "audit-ci": "7.1.0",
42
42
  "zod": "4.4.3",
43
- "@williamthorsen/nmr-core": "0.3.2"
43
+ "@williamthorsen/nmr-core": "0.5.0"
44
44
  },
45
45
  "engines": {
46
46
  "node": ">=18.17.0"
47
47
  },
48
- "scripts": {
49
- "test": "pnpm exec vitest --config=vitest.standalone.config.ts",
50
- "test:coverage": "pnpm exec vitest --config=vitest.standalone.config.ts --coverage",
51
- "test:integration": "pnpm exec vitest --config=vitest.integration.config.ts",
52
- "test:watch": "pnpm exec vitest --config=vitest.standalone.config.ts --watch"
53
- }
48
+ "scripts": {}
54
49
  }