v11y-check 0.16.0 → 0.17.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.
@@ -1,4 +1,33 @@
1
1
  [
2
+ {
3
+ "version": "0.17.0",
4
+ "date": "2026-09-15",
5
+ "sections": [
6
+ {
7
+ "title": "🎉 Features",
8
+ "audience": "all",
9
+ "items": [
10
+ {
11
+ "description": "Fix scaffold error handling and cover every scaffolded workflow (#806)",
12
+ "body": "- Adds a `create-github-release.yaml matches template` check to release-kit's ReadyUp kit, which warns when `.github/workflows/create-github-release.yaml` differs from the template for the detected repo type and skips in a repo that has not installed that workflow.\n- Stops `v11y init --force` from replacing an existing `.config/v11y-check.config.json` with the defaults, which discarded the repo's thresholds and the allowlist maintained by `v11y sync`.\n\nMigration: To reset `.config/v11y-check.config.json` to its defaults, delete the file and run `v11y init`, because `v11y init --force` now overwrites only `.github/workflows/audit.yaml`.",
13
+ "migration": "To reset `.config/v11y-check.config.json` to its defaults, delete the file and run `v11y init`, because `v11y init --force` now overwrites only `.github/workflows/audit.yaml`.",
14
+ "hash": "1e197577c6c60678b5d6522f58b3211f3b10c752"
15
+ }
16
+ ]
17
+ },
18
+ {
19
+ "title": "⚙️ Tooling",
20
+ "audience": "dev",
21
+ "items": [
22
+ {
23
+ "description": "Upgrade eslint-config-typescript to v17 and adopt its ignore lists (#797)",
24
+ "body": "- Declares `vitest` as `catalog:` in every workspace that imports it, with the pnpm catalog pinning 4.1.11, because v17 no longer exempts `vitest` from `n/no-extraneous-import`.\n- Builds the global ignores in `eslint.config.ts` from the published `commonIgnores` and `toolIgnores`, which also exclude `pnpm-lock.yaml` and each `.readyup/manifest.json`, so the `eslint --fix` in `nmr lint` can no longer rewrite a kit manifest and make the next build's `rdy verify` fail.",
25
+ "hash": "b201669444763ad5bef85730b114098ef352e09b"
26
+ }
27
+ ]
28
+ }
29
+ ]
30
+ },
2
31
  {
3
32
  "version": "0.16.0",
4
33
  "date": "2026-09-08",
@@ -1,6 +1,6 @@
1
1
  /** @noformat -- @generated. Do not edit. Compiled by rdy. */
2
2
  /* eslint-disable */
3
- export const __readyupVersion = "0.35.0";
3
+ export const __readyupVersion = "0.36.0";
4
4
 
5
5
 
6
6
  // .readyup/kits/default.ts
@@ -54,7 +54,7 @@ var default_default = defineRdyKit({
54
54
  name: "audit.yaml matches template",
55
55
  severity: "warn",
56
56
  check: () => fileMatchesHash(".github/workflows/audit.yaml", AUDIT_WORKFLOW_HASH),
57
- fix: "Replace .github/workflows/audit.yaml with the current template at williamthorsen/node-monorepo-tools:.github/workflows/audit.yaml"
57
+ fix: "Run `v11y init --force` to regenerate audit.yaml from the current template"
58
58
  }
59
59
  ]
60
60
  }
@@ -63,7 +63,7 @@ var default_default = defineRdyKit({
63
63
  ]
64
64
  });
65
65
  function getMinVersion() {
66
- const picked = { "version": "0.16.0" };
66
+ const picked = { "version": "0.17.0" };
67
67
  if (typeof picked["version"] !== "string") {
68
68
  throw new TypeError("v11y-check/package.json: 'version' must be a string");
69
69
  }
@@ -8,12 +8,12 @@
8
8
  "esbuildVersion": "0.28.2",
9
9
  "inputs": [
10
10
  {
11
- "hash": "52754bbb",
11
+ "hash": "5600fe16",
12
12
  "kind": "module",
13
13
  "path": "kits/default.ts"
14
14
  },
15
15
  {
16
- "hash": "85008b8a",
16
+ "hash": "7316a587",
17
17
  "kind": "inline",
18
18
  "path": "../package.json",
19
19
  "paths": [
@@ -23,10 +23,10 @@
23
23
  ],
24
24
  "name": "default",
25
25
  "path": "kits/default.js",
26
- "readyupVersion": "0.35.0",
26
+ "readyupVersion": "0.36.0",
27
27
  "source": "kits/default.ts",
28
- "sourceHash": "52754bbb",
29
- "targetHash": "7de75704"
28
+ "sourceHash": "5600fe16",
29
+ "targetHash": "37393c2b"
30
30
  }
31
31
  ]
32
32
  }
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## 0.17.0 — 2026-09-15
6
+
7
+ ### 🎉 Features
8
+
9
+ - Fix scaffold error handling and cover every scaffolded workflow (#806)
10
+
11
+ - Adds a `create-github-release.yaml matches template` check to release-kit's ReadyUp kit, which warns when `.github/workflows/create-github-release.yaml` differs from the template for the detected repo type and skips in a repo that has not installed that workflow.
12
+ - Stops `v11y init --force` from replacing an existing `.config/v11y-check.config.json` with the defaults, which discarded the repo's thresholds and the allowlist maintained by `v11y sync`.
13
+
14
+ Migration: To reset `.config/v11y-check.config.json` to its defaults, delete the file and run `v11y init`, because `v11y init --force` now overwrites only `.github/workflows/audit.yaml`.
15
+
16
+ ### ⚙️ Tooling
17
+
18
+ - Upgrade eslint-config-typescript to v17 and adopt its ignore lists (#797)
19
+
20
+ - Declares `vitest` as `catalog:` in every workspace that imports it, with the pnpm catalog pinning 4.1.11, because v17 no longer exempts `vitest` from `n/no-extraneous-import`.
21
+ - Builds the global ignores in `eslint.config.ts` from the published `commonIgnores` and `toolIgnores`, which also exclude `pnpm-lock.yaml` and each `.readyup/manifest.json`, so the `eslint --fix` in `nmr lint` can no longer rewrite a kit manifest and make the next build's `rdy verify` fail.
22
+
5
23
  ## 0.16.0 — 2026-09-08
6
24
 
7
25
  ### 🎉 Features
package/README.md CHANGED
@@ -3,13 +3,16 @@
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
5
  <!-- section:release-notes -->
6
- ## Release notes — v0.16.0 (2026-09-08)
6
+ ## Release notes — v0.17.0 (2026-09-15)
7
7
 
8
8
  ### 🎉 Features
9
9
 
10
- - Report a package whose tarball would omit its changelog (#768)
10
+ - Fix scaffold error handling and cover every scaffolded workflow (#806)
11
11
 
12
- Adds ReadyUp checks to verify that every published package bundles its changelog files: the human-readable `CHANGELOG.md` and the machine-readable `changelog.json`.
12
+ - Adds a `create-github-release.yaml matches template` check to release-kit's ReadyUp kit, which warns when `.github/workflows/create-github-release.yaml` differs from the template for the detected repo type and skips in a repo that has not installed that workflow.
13
+ - Stops `v11y init --force` from replacing an existing `.config/v11y-check.config.json` with the defaults, which discarded the repo's thresholds and the allowlist maintained by `v11y sync`.
14
+
15
+ Migration: To reset `.config/v11y-check.config.json` to its defaults, delete the file and run `v11y init`, because `v11y init --force` now overwrites only `.github/workflows/audit.yaml`.
13
16
  <!-- /section:release-notes -->
14
17
 
15
18
  ## Installation
@@ -101,7 +104,7 @@ Other options:
101
104
 
102
105
  ```
103
106
  --dry-run, -n Preview changes without writing files
104
- --force, -f Overwrite existing files
107
+ --force, -f Overwrite an existing workflow (an existing config is never overwritten)
105
108
  ```
106
109
 
107
110
  ### JSON output shape
@@ -173,5 +176,5 @@ To migrate an existing config:
173
176
 
174
177
  1. Remove the `outDir` field.
175
178
  2. Replace severity booleans with `severityThreshold` in each scope.
176
- 3. Optionally add a `$schema` field (run `v11y init --force` to regenerate, or add it manually).
179
+ 3. Optionally add a `$schema` field set to `https://github.com/williamthorsen/node-monorepo-tools/raw/v11y-check-v<version>/packages/v11y-check/schemas/config.json`, with `<version>` replaced by the installed v11y-check version.
177
180
  4. Delete any generated `audit-ci.*.json` files that were in your config directory.
@@ -36,7 +36,7 @@ Scaffold a starter config file and GitHub Actions workflow.
36
36
 
37
37
  Options:
38
38
  --dry-run, -n Preview changes without writing files
39
- --force, -f Overwrite existing files
39
+ --force, -f Overwrite an existing workflow (an existing config is never overwritten)
40
40
  --help, -h Show this help message
41
41
  `);
42
42
  }
package/dist/esm/cli.js CHANGED
@@ -157,7 +157,7 @@ export async function syncCommand(options) {
157
157
  }
158
158
  const { configSource } = loaded;
159
159
  if (configSource === 'defaults') {
160
- const { configResult } = scaffoldConfig({ dryRun: false, force: false });
160
+ const { configResult } = scaffoldConfig({ dryRun: false });
161
161
  if (configResult.outcome === 'failed') {
162
162
  reportError('Failed to create config file');
163
163
  return 1;
@@ -7,12 +7,15 @@ interface ScaffoldResult {
7
7
  configResult: WriteResult;
8
8
  }
9
9
  /**
10
- * Scaffold the v11y-check config file with sensible defaults.
10
+ * Scaffold the v11y-check config file with sensible defaults, never overwriting an existing one, whose allowlist
11
+ * `v11y sync` maintains.
11
12
  *
12
13
  * Returns `{ configResult }` to preserve the signature consumed by `syncCommand`, which predates
13
14
  * the workflow scaffolding and treats the config result as a named field.
14
15
  */
15
- export declare function scaffoldConfig({ dryRun, force }: ScaffoldOptions): ScaffoldResult;
16
+ export declare function scaffoldConfig({ dryRun }: {
17
+ dryRun: boolean;
18
+ }): ScaffoldResult;
16
19
  /** Copy the bundled audit.yaml.template to `.github/workflows/audit.yaml` in the target repo. */
17
20
  export declare function copyWorkflowTemplate(dryRun: boolean, overwrite: boolean): WriteResult;
18
21
  /**
@@ -27,7 +30,7 @@ export declare function scaffoldWorkflow(dryRun: boolean, overwrite: boolean): W
27
30
  *
28
31
  * Writes both the config file and the GitHub Actions workflow. Returns a flat array of write
29
32
  * results in the order [config, workflow]. `ScaffoldOptions.force` is translated to `overwrite`
30
- * when calling the workflow helpers.
33
+ * for the workflow alone; an existing config is never overwritten.
31
34
  */
32
35
  export declare function scaffoldFiles({ dryRun, force }: ScaffoldOptions): WriteResult[];
33
36
  export {};
@@ -1,12 +1,12 @@
1
- import { existsSync, readFileSync } from 'node:fs';
1
+ import { readFileSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
3
  import { findPackageRoot, writeFileWithCheck } from '@williamthorsen/nmr-core';
4
4
  import { describeError } from '@williamthorsen/toolbelt.errors';
5
5
  import { v11yCheckConfigTemplate } from "./templates.js";
6
6
  const CONFIG_PATH = '.config/v11y-check.config.json';
7
7
  const WORKFLOW_PATH = '.github/workflows/audit.yaml';
8
- export function scaffoldConfig({ dryRun, force }) {
9
- const configResult = writeFileWithCheck(CONFIG_PATH, v11yCheckConfigTemplate, { dryRun, overwrite: force });
8
+ export function scaffoldConfig({ dryRun }) {
9
+ const configResult = writeFileWithCheck(CONFIG_PATH, v11yCheckConfigTemplate, { dryRun, overwrite: false });
10
10
  return { configResult };
11
11
  }
12
12
  export function copyWorkflowTemplate(dryRun, overwrite) {
@@ -19,16 +19,17 @@ export function copyWorkflowTemplate(dryRun, overwrite) {
19
19
  return { filePath: WORKFLOW_PATH, outcome: 'failed', error: `Failed to resolve package root: ${message}` };
20
20
  }
21
21
  const templatePath = resolve(root, 'templates', 'audit.yaml.template');
22
- if (!existsSync(templatePath)) {
23
- return { filePath: WORKFLOW_PATH, outcome: 'failed', error: `Could not find bundled template at ${templatePath}` };
24
- }
25
22
  let content;
26
23
  try {
27
24
  content = readFileSync(templatePath, 'utf8');
28
25
  }
29
26
  catch (error) {
30
27
  const message = describeError(error);
31
- return { filePath: WORKFLOW_PATH, outcome: 'failed', error: `Failed to read template ${templatePath}: ${message}` };
28
+ return {
29
+ filePath: WORKFLOW_PATH,
30
+ outcome: 'failed',
31
+ error: `Failed to read bundled template at ${templatePath}: ${message}`,
32
+ };
32
33
  }
33
34
  return writeFileWithCheck(WORKFLOW_PATH, content, { dryRun, overwrite });
34
35
  }
@@ -36,7 +37,7 @@ export function scaffoldWorkflow(dryRun, overwrite) {
36
37
  return copyWorkflowTemplate(dryRun, overwrite);
37
38
  }
38
39
  export function scaffoldFiles({ dryRun, force }) {
39
- const { configResult } = scaffoldConfig({ dryRun, force });
40
+ const { configResult } = scaffoldConfig({ dryRun });
40
41
  const workflowResult = scaffoldWorkflow(dryRun, force);
41
42
  return [configResult, workflowResult];
42
43
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "v11y-check",
3
- "version": "0.16.0",
3
+ "version": "0.17.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": [
@@ -45,7 +45,7 @@
45
45
  "templates"
46
46
  ],
47
47
  "dependencies": {
48
- "@williamthorsen/nmr-core": "0.11.0",
48
+ "@williamthorsen/nmr-core": "0.11.1",
49
49
  "@williamthorsen/toolbelt.errors": "0.7.0",
50
50
  "audit-ci": "7.1.0",
51
51
  "zod": "4.5.4"
@@ -54,7 +54,8 @@
54
54
  "@williamthorsen/toolbelt.filesystem": "0.8.3",
55
55
  "@williamthorsen/toolbelt.testing": "0.5.1",
56
56
  "@williamthorsen/toolbelt.vitest": "0.9.0",
57
- "readyup": "0.35.0"
57
+ "readyup": "0.36.0",
58
+ "vitest": "4.1.11"
58
59
  },
59
60
  "engines": {
60
61
  "node": ">=24"