@shivaedev/quality 0.21.0 → 0.22.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 (125) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +24 -8
  3. package/biome/declarations.json +1 -1
  4. package/biome/preset.json +1 -1
  5. package/dist/biome/exceptionConfig.d.ts +7 -0
  6. package/dist/biome/exceptionConfig.d.ts.map +1 -0
  7. package/dist/biome/exceptionConfig.js +54 -0
  8. package/dist/biome/exceptionConfig.js.map +1 -0
  9. package/dist/biome/report.d.ts +2 -1
  10. package/dist/biome/report.d.ts.map +1 -1
  11. package/dist/biome/report.js +5 -5
  12. package/dist/biome/report.js.map +1 -1
  13. package/dist/biome/run.d.ts +2 -1
  14. package/dist/biome/run.d.ts.map +1 -1
  15. package/dist/biome/run.js +5 -4
  16. package/dist/biome/run.js.map +1 -1
  17. package/dist/cli/args.d.ts +5 -1
  18. package/dist/cli/args.d.ts.map +1 -1
  19. package/dist/cli/args.js +6 -27
  20. package/dist/cli/args.js.map +1 -1
  21. package/dist/cli/fix.d.ts.map +1 -1
  22. package/dist/cli/fix.js +9 -9
  23. package/dist/cli/fix.js.map +1 -1
  24. package/dist/cli/lint.d.ts.map +1 -1
  25. package/dist/cli/lint.js +2 -1
  26. package/dist/cli/lint.js.map +1 -1
  27. package/dist/cli/messages.d.ts +3 -0
  28. package/dist/cli/messages.d.ts.map +1 -0
  29. package/dist/cli/messages.js +30 -0
  30. package/dist/cli/messages.js.map +1 -0
  31. package/dist/cli/migrateExceptions.d.ts +4 -0
  32. package/dist/cli/migrateExceptions.d.ts.map +1 -0
  33. package/dist/cli/migrateExceptions.js +78 -0
  34. package/dist/cli/migrateExceptions.js.map +1 -0
  35. package/dist/cli.js +3 -0
  36. package/dist/cli.js.map +1 -1
  37. package/dist/config/decode.d.ts +6 -0
  38. package/dist/config/decode.d.ts.map +1 -1
  39. package/dist/config/decode.js +2 -0
  40. package/dist/config/decode.js.map +1 -1
  41. package/dist/config/load.d.ts +4 -0
  42. package/dist/config/load.d.ts.map +1 -1
  43. package/dist/config/load.js +10 -1
  44. package/dist/config/load.js.map +1 -1
  45. package/dist/config/resolve.d.ts.map +1 -1
  46. package/dist/config/resolve.js +11 -1
  47. package/dist/config/resolve.js.map +1 -1
  48. package/dist/config.d.ts +2 -0
  49. package/dist/config.d.ts.map +1 -1
  50. package/dist/config.js.map +1 -1
  51. package/dist/engine/run-rules.d.ts +1 -0
  52. package/dist/engine/run-rules.d.ts.map +1 -1
  53. package/dist/engine/run-rules.js +19 -4
  54. package/dist/engine/run-rules.js.map +1 -1
  55. package/dist/engine/session.d.ts.map +1 -1
  56. package/dist/engine/session.js +11 -3
  57. package/dist/engine/session.js.map +1 -1
  58. package/dist/exceptions/biomeFindings.d.ts +4 -0
  59. package/dist/exceptions/biomeFindings.d.ts.map +1 -0
  60. package/dist/exceptions/biomeFindings.js +14 -0
  61. package/dist/exceptions/biomeFindings.js.map +1 -0
  62. package/dist/exceptions/declaration.d.ts +11 -0
  63. package/dist/exceptions/declaration.d.ts.map +1 -0
  64. package/dist/exceptions/declaration.js +24 -0
  65. package/dist/exceptions/declaration.js.map +1 -0
  66. package/dist/exceptions/migrateBiome.d.ts +3 -0
  67. package/dist/exceptions/migrateBiome.d.ts.map +1 -0
  68. package/dist/exceptions/migrateBiome.js +62 -0
  69. package/dist/exceptions/migrateBiome.js.map +1 -0
  70. package/dist/exceptions/migrateConfig.d.ts +3 -0
  71. package/dist/exceptions/migrateConfig.d.ts.map +1 -0
  72. package/dist/exceptions/migrateConfig.js +57 -0
  73. package/dist/exceptions/migrateConfig.js.map +1 -0
  74. package/dist/exceptions/registryEntries.d.ts +4 -0
  75. package/dist/exceptions/registryEntries.d.ts.map +1 -0
  76. package/dist/exceptions/registryEntries.js +6 -0
  77. package/dist/exceptions/registryEntries.js.map +1 -0
  78. package/dist/rule.d.ts +3 -0
  79. package/dist/rule.d.ts.map +1 -1
  80. package/dist/rule.js.map +1 -1
  81. package/dist/rules/biome.js +2 -2
  82. package/dist/rules/biome.js.map +1 -1
  83. package/dist/rules/files/namedAfterExport.d.ts.map +1 -1
  84. package/dist/rules/files/namedAfterExport.js +9 -1
  85. package/dist/rules/files/namedAfterExport.js.map +1 -1
  86. package/dist/rules/suppressions/biome/ConsumerDeclaration.d.ts +7 -0
  87. package/dist/rules/suppressions/biome/ConsumerDeclaration.d.ts.map +1 -0
  88. package/dist/rules/suppressions/biome/ConsumerDeclaration.js +15 -0
  89. package/dist/rules/suppressions/biome/ConsumerDeclaration.js.map +1 -0
  90. package/dist/rules/suppressions/biome-overrides.d.ts.map +1 -1
  91. package/dist/rules/suppressions/biome-overrides.js +7 -16
  92. package/dist/rules/suppressions/biome-overrides.js.map +1 -1
  93. package/docs/debt-and-hooks.md +31 -11
  94. package/docs/modules.md +2 -0
  95. package/docs/naming.md +1 -1
  96. package/docs/north-star.md +4 -4
  97. package/docs/roadmap.md +1 -1
  98. package/docs/rules.md +12 -33
  99. package/docs/tooling.md +2 -2
  100. package/package.json +1 -1
  101. package/src/biome/exceptionConfig.ts +70 -0
  102. package/src/biome/report.ts +11 -5
  103. package/src/biome/run.ts +17 -10
  104. package/src/cli/args.ts +7 -29
  105. package/src/cli/fix.ts +14 -9
  106. package/src/cli/lint.ts +3 -1
  107. package/src/cli/messages.ts +31 -0
  108. package/src/cli/migrateExceptions.ts +87 -0
  109. package/src/cli.ts +3 -0
  110. package/src/config/decode.ts +2 -0
  111. package/src/config/load.ts +15 -1
  112. package/src/config/resolve.ts +12 -1
  113. package/src/config.ts +2 -0
  114. package/src/engine/run-rules.ts +21 -4
  115. package/src/engine/session.ts +11 -3
  116. package/src/exceptions/biomeFindings.ts +20 -0
  117. package/src/exceptions/declaration.ts +38 -0
  118. package/src/exceptions/migrateBiome.ts +78 -0
  119. package/src/exceptions/migrateConfig.ts +64 -0
  120. package/src/exceptions/registryEntries.ts +10 -0
  121. package/src/rule.ts +3 -0
  122. package/src/rules/biome.ts +2 -2
  123. package/src/rules/files/namedAfterExport.ts +9 -1
  124. package/src/rules/suppressions/biome/ConsumerDeclaration.ts +24 -0
  125. package/src/rules/suppressions/biome-overrides.ts +7 -26
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.22.0 - 2026-10-16
4
+
5
+ ### Added
6
+
7
+ - Declare permanent exceptions once in `QualityConfig.exceptions` as `{ files, rules, reason, subject? }`. One declaration covers Quality rules and individual `biome/lint/<group>/<rule>` or `biome/assist/<group>/<action>` rules. Quality merges the Biome settings during lint and fix without editing the repository's Biome config.
8
+ - Move legacy registry entries and reasoned Biome declarations into the config with `quality exceptions migrate [--config <file>] [--from <registry>]`. Matching root Biome overrides are removed; legacy readers remain available during upgrades.
9
+
10
+ ### Changed
11
+
12
+ - Exceptable findings show the config location and declaration shape. Missing Biome exception files fail the gate, and manual Biome overrides still require repair or migration.
13
+
14
+ ### Fixed
15
+
16
+ - Multiple directory exception declarations keep all exclusions and preserve the root Biome config's file selection.
17
+ - Exception migration recognizes literal computed config and legacy rule keys, and rejects dynamic keys before changing the config, Biome settings or registry.
18
+
19
+ ## 0.21.1 - 2026-10-16
20
+
21
+ ### Fixed
22
+
23
+ - Treat `.railway/railway.ts` and its `.py` and `.go` siblings as tool config files at any project root: `files/named-after-export` leaves them alone and the shared Biome preset permits their default export. Other files in `.railway/` and `src/railway.ts` remain checked.
24
+
3
25
  ## 0.21.0 - 2026-10-16
4
26
 
5
27
  ### Added
package/README.md CHANGED
@@ -20,18 +20,18 @@ Adopt Quality's policy as a whole. Quality owns the shared rules, their defaults
20
20
 
21
21
  A **rule** checks a repository and returns **findings**, each naming a file and what to change. Built-in and local rules always run at `error`. A finding normally counts once; a limit rule counts how far the file exceeds its limit. Use the defaults and keep checks strict. The config rejects warning levels, disabled rules, raised thresholds and inventory exclusions.
22
22
 
23
- Two files explain findings the repository deliberately keeps:
23
+ Two records explain findings the repository deliberately keeps:
24
24
 
25
25
  - The **baseline** records existing debt by rule and file, as a maximum count. It makes strict checks usable before every file is cleaned up. `tighten` and `prune` lower the counts as debt disappears; explicitly writing a named rule again can raise them, and that diff needs review.
26
- - The **registry** records permanent exceptions, each with a reason and optionally a finding's `subject`. A rule may refuse registry exceptions. An entry that no longer applies fails the gate instead of silently excusing future code.
26
+ - The config's **exceptions** list records permanent exceptions once, each with files, rules, a reason and optionally a Quality finding's `subject`. One declaration covers both Quality and Biome rules. A rule may refuse exceptions. An entry that no longer applies fails the gate instead of silently excusing future code.
27
27
 
28
- The registry applies first, then the baseline. With the default rule settings, remaining findings fail in one report grouped by rule. A baseline entry with fewer findings left is a note, so removing debt passes immediately. An entry for an unknown or disabled rule fails; debt records must still name a check that runs.
28
+ Exceptions apply first, then the baseline. With the default rule settings, remaining findings fail in one report grouped by rule. A baseline entry with fewer findings left is a note, so removing debt passes immediately. An entry for an unknown or disabled rule fails; debt records must still name a check that runs.
29
29
 
30
30
  The work has three parts: connect the repository to the shared tools once; describe an import boundary when its architecture needs one; run the gate and repair findings every day. Writing local rules is not an adoption requirement.
31
31
 
32
32
  ### 1. Once per repository: connect the shared policy
33
33
 
34
- A new repository needs no `quality.config.ts`. Quality checks sources from the current directory with every built-in rule at its default error level. The default baseline and registry paths are `quality/baseline.jsonl` and `quality/registry.json`.
34
+ A new repository needs no `quality.config.ts`. Quality checks sources from the current directory with every built-in rule at its default error level. The default baseline path is `quality/baseline.jsonl`; permanent exceptions belong in `quality.config.ts`.
35
35
 
36
36
  Create a root `biome.json`:
37
37
 
@@ -164,7 +164,8 @@ Import names from their defining module; there is no root entry. The package's `
164
164
  | `sources` | `["."]` | Directories or files the source rules check, relative to the repository root. |
165
165
  | `extensions` | `.ts`, `.tsx`, `.mts`, `.cts`, `.js`, `.jsx`, `.mjs`, `.cjs` | Source extensions. |
166
166
  | `baseline` | `quality/baseline.jsonl` | Counts of existing findings. |
167
- | `registry` | `quality/registry.json` | Permanent exceptions with reasons. |
167
+ | `exceptions` | `[]` | Permanent exceptions as `{ files, rules, reason, subject? }`. |
168
+ | `registry` | `quality/registry.json` | Legacy input for upgrades; run `quality exceptions migrate`. |
168
169
  | `local` | `[]` | Exposed extension API for rules made with `defineRule`; not required for adoption. |
169
170
  | `rules` | Every rule at `error` | Options by rule id, such as import boundaries. An explicit `error` or `{ level: "error", options }` is also accepted. |
170
171
 
@@ -188,6 +189,7 @@ A limit rule reports its amount over the limit as `count` and the limit as `thre
188
189
  ```text
189
190
  quality lint [--config <file>]
190
191
  quality fix [--config <file>]
192
+ quality exceptions migrate [--config <file>] [--from <registry>]
191
193
  quality baseline write [--config <file>] [--rule <id>]...
192
194
  quality baseline prune [--config <file>] [--against <ref>]
193
195
  quality baseline tighten [--config <file>] [--staged]
@@ -202,7 +204,7 @@ quality hooks pre-commit [--config <file>]
202
204
  | Exit code | Meaning |
203
205
  | --- | --- |
204
206
  | `0` | Passed. Retained debt or loose baseline entries may remain; see the severity limitation below. |
205
- | `1` | Failed: uncovered errors, stale registry entries or baseline entries for unknown or disabled rules. |
207
+ | `1` | Failed: uncovered errors, stale exceptions or baseline entries for unknown or disabled rules. |
206
208
  | `2` | Could not run: invalid input or config, missing files or git history, a failed rule, fixes that do not settle, or invalid usage. |
207
209
 
208
210
  ### Install, shared tooling and limits
@@ -245,7 +247,21 @@ const integration = test.skipIf(databaseUrl === undefined);
245
247
 
246
248
  All built-in and local rules run at `error`. Config settings cannot disable a rule or downgrade it to a warning. Record existing debt in the baseline instead. Source and test line limits can only be lowered from 150 and 300, and the comment limit from 2; custom test-file patterns and inventory exclusions are rejected.
247
249
 
248
- Consumer Biome declarations require a reason and matching scope. An individual lint rule or assist action can be excepted only for explicit files; whole checks, rule groups and blanket scopes are rejected. `files/includes` declarations keep `**` and list named directory exclusions, such as generated test clients. The [rule reference](https://github.com/ShivaeDev/platform/blob/main/packages/quality/docs/rules.md#declared-biome-overrides) describes the matching and stale-declaration checks. Quality's shipped exceptions remain part of its internal policy.
250
+ Declare exceptions in the config once, with a reason:
251
+
252
+ ```ts
253
+ export default defineConfig({
254
+ exceptions: [
255
+ {
256
+ files: ["src/parse.ts"],
257
+ reason: "This parser documents and returns the external format unchanged.",
258
+ rules: ["comments/no-jsdoc", "biome/lint/suspicious/noExplicitAny"],
259
+ },
260
+ ],
261
+ });
262
+ ```
263
+
264
+ Quality merges the Biome settings at lint and fix time; do not add or mirror an override in `biome.json`. Files are explicit repository paths. Biome exceptions cover individual lint rules or assist actions; whole checks, rule groups and globs are rejected. `biome/files/includes` is the directory exclusion form: keep `**` and list negative patterns naming directories, such as `!**/test-support/generated`. Quality's shipped exceptions remain part of its internal policy. [Exceptions and upgrades](https://github.com/ShivaeDev/platform/blob/main/packages/quality/docs/debt-and-hooks.md#exceptions) describes subjects, stale entries and the upgrade command.
249
265
 
250
266
  Local-rule APIs supplement the shared policy. They are not setup requirements. Use the shared defaults; repository-specific inputs such as source locations and fences supply information the policy needs.
251
267
 
@@ -254,4 +270,4 @@ Local-rule APIs supplement the shared policy. They are not setup requirements. U
254
270
  - The installed hook checks files on disk and uses each committing worktree's config and dependencies. It runs later commands after a reported lint failure or a nonzero command exit; a setup or process-launch failure stops the run.
255
271
  - A pre-existing `core.hooksPath` decides which hook git runs. Quality keeps it and reports when its installed hook needs to be called from that hook.
256
272
  - Workspace imports require a declaration in the importing package’s `dependencies`, `peerDependencies` or `optionalDependencies`. Tests, `test-support`, package-root tooling folders (`script`, `scripts`, `tooling`) and package-root config files may also use `devDependencies`. Explicitly export-blocked bundle inputs may use them when no runtime module reaches those inputs in the scanned import graph; an executable or another public export keeps its imports in the runtime boundary. See the [manifest rule](https://github.com/ShivaeDev/platform/blob/main/packages/quality/docs/rules.md#manifest-dependencies).
257
- - Import fences skip test code. Keep the tests honest through their real fixtures and review; use the registry only where the rule allows it.
273
+ - Import fences skip test code. Keep the tests honest through their real fixtures and review; declare exceptions only where the rule allows it.
@@ -10,7 +10,7 @@
10
10
  "rule": "lint/correctness/noUnusedFunctionParameters"
11
11
  },
12
12
  {
13
- "includes": ["**/*.config.*"],
13
+ "includes": ["**/*.config.*", "**/.railway/railway.ts", "**/.railway/railway.py", "**/.railway/railway.go"],
14
14
  "reason": "Tools load their config files through the default export.",
15
15
  "rule": "lint/style/noDefaultExport"
16
16
  },
package/biome/preset.json CHANGED
@@ -625,7 +625,7 @@
625
625
  "includes": ["**", "!**/package.json"]
626
626
  },
627
627
  {
628
- "includes": ["**/*.config.*"],
628
+ "includes": ["**/*.config.*", "**/.railway/railway.ts", "**/.railway/railway.py", "**/.railway/railway.go"],
629
629
  "linter": {
630
630
  "rules": {
631
631
  "style": {
@@ -0,0 +1,7 @@
1
+ import type { ExceptionDeclaration } from "#exceptions/declaration.ts";
2
+ export declare function exceptionConfig(declarations: readonly ExceptionDeclaration[]): {
3
+ readonly includes: readonly string[];
4
+ readonly overrides: readonly unknown[];
5
+ };
6
+ export declare function withExceptionConfig<TValue>(root: string, declarations: readonly ExceptionDeclaration[], run: (args: readonly string[]) => Promise<TValue>): Promise<TValue>;
7
+ //# sourceMappingURL=exceptionConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptionConfig.d.ts","sourceRoot":"","sources":["../../src/biome/exceptionConfig.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AASvE,wBAAgB,eAAe,CAAC,YAAY,EAAE,SAAS,oBAAoB,EAAE,GAAG;IAC/E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;CACvC,CAQA;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAC/C,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,oBAAoB,EAAE,EAC7C,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,GAC/C,OAAO,CAAC,MAAM,CAAC,CAsCjB"}
@@ -0,0 +1,54 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { access, readFile, rm, writeFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { Schema } from "effect";
5
+ import ts from "typescript";
6
+ function nativeOverride(files, rule) {
7
+ const [, tool, group = "", name = ""] = rule.split("/");
8
+ const key = tool === "lint" ? "linter" : "assist";
9
+ const settings = tool === "lint" ? "rules" : "actions";
10
+ return { includes: files, [key]: { [settings]: { [group]: { [name]: "off" } } } };
11
+ }
12
+ export function exceptionConfig(declarations) {
13
+ const includes = declarations.filter((entry) => entry.rules.includes("biome/files/includes")).flatMap((entry) => entry.files);
14
+ return {
15
+ includes: includes.length === 0 ? [] : ["**", ...includes.filter((pattern) => pattern !== "**")],
16
+ overrides: declarations.flatMap(({ files, rules }) => rules.filter((rule) => /^biome\/(?:lint|assist)\//u.test(rule)).map((rule) => nativeOverride(files, rule))),
17
+ };
18
+ }
19
+ export async function withExceptionConfig(root, declarations, run) {
20
+ const { includes, overrides } = exceptionConfig(declarations);
21
+ if (includes.length === 0 && overrides.length === 0) {
22
+ return run([]);
23
+ }
24
+ const name = `.quality-biome-${randomUUID()}.json`;
25
+ const path = join(root, name);
26
+ const config = await access(join(root, "biome.json")).then(() => "biome.json", () => "biome.jsonc");
27
+ const text = await readFile(join(root, config), "utf8");
28
+ const parsed = ts.parseConfigFileTextToJson(config, text);
29
+ if (parsed.error !== undefined) {
30
+ throw new Error(`Cannot load ${config}: ${ts.flattenDiagnosticMessageText(parsed.error.messageText, " ")}`);
31
+ }
32
+ const own = Schema.decodeUnknownSync(Schema.Record(Schema.String, Schema.Unknown))(parsed.config);
33
+ const files = Schema.is(Schema.Record(Schema.String, Schema.Unknown))(own.files) ? own.files : {};
34
+ if ((own.files !== undefined && !Schema.is(Schema.Record(Schema.String, Schema.Unknown))(own.files))
35
+ || (files.includes !== undefined && !Array.isArray(files.includes))
36
+ || (own.overrides !== undefined && !Array.isArray(own.overrides))) {
37
+ throw new Error(`Cannot merge exceptions into invalid ${config}: files, includes or overrides has the wrong shape.`);
38
+ }
39
+ const previousIncludes = Array.isArray(files.includes) ? files.includes : ["**"];
40
+ const previousOverrides = Array.isArray(own.overrides) ? own.overrides : [];
41
+ const generated = {
42
+ ...own,
43
+ files: { ...files, includes: [...previousIncludes, ...includes.filter((pattern) => pattern !== "**"), `!${name}`] },
44
+ overrides: [...previousOverrides, ...overrides],
45
+ };
46
+ try {
47
+ await writeFile(path, JSON.stringify(generated), { flag: "wx" });
48
+ return await run([`--config-path=${path}`]);
49
+ }
50
+ finally {
51
+ await rm(path, { force: true });
52
+ }
53
+ }
54
+ //# sourceMappingURL=exceptionConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptionConfig.js","sourceRoot":"","sources":["../../src/biome/exceptionConfig.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Schema } from "effect";
2
+ import type { ExceptionDeclaration } from "#exceptions/declaration.ts";
2
3
  declare const Diagnostic: Schema.Struct<{
3
4
  readonly category: Schema.optionalKey<Schema.String>;
4
5
  readonly location: Schema.Struct<{
@@ -38,6 +39,6 @@ declare const Report: Schema.Struct<{
38
39
  }>;
39
40
  }>;
40
41
  export type Report = typeof Report.Type;
41
- export declare function biomeReport(root: string, args: readonly string[]): Promise<Report>;
42
+ export declare function biomeReport(root: string, args: readonly string[], exceptions?: readonly ExceptionDeclaration[]): Promise<Report>;
42
43
  export {};
43
44
  //# sourceMappingURL=report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/biome/report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;EAKd,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAEhD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;EAGV,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC;AAkBxC,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAYxF"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/biome/report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAOvE,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;EAKd,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAEhD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;EAGV,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC;AAuBxC,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,GAAE,SAAS,oBAAoB,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1I"}
@@ -18,21 +18,21 @@ const decodeReport = Schema.decodeUnknownOption(Schema.fromJsonString(Report));
18
18
  function failure(args, run) {
19
19
  return new Error(`biome ${args.join(" ")} exited ${run.code} without a report:\n${[run.stdout, run.stderr].join("\n").trim()}`);
20
20
  }
21
- async function reportFor(root, args, paths) {
21
+ async function reportFor(root, args, paths, exceptions) {
22
22
  const command = [...args, "--reporter=json", "--max-diagnostics=none", ...paths];
23
- const run = await runBiome(root, command);
23
+ const run = await runBiome(root, command, exceptions);
24
24
  const report = decodeReport(run.stdout.trim());
25
25
  if (report._tag === "None") {
26
26
  throw failure(command, run);
27
27
  }
28
28
  return report.value;
29
29
  }
30
- export async function biomeReport(root, args) {
31
- const [report, tracked] = await Promise.all([reportFor(root, args, ["."]), ignoredTrackedPaths(root)]);
30
+ export async function biomeReport(root, args, exceptions = []) {
31
+ const [report, tracked] = await Promise.all([reportFor(root, args, ["."], exceptions), ignoredTrackedPaths(root)]);
32
32
  const paths = tracked
33
33
  .map((path) => relative(root, path))
34
34
  .filter((path) => !path.split(sep).some((part) => part === ".git" || part === "node_modules"));
35
- const extra = paths.length === 0 ? undefined : await reportFor(root, [...args, "--vcs-enabled=false"], paths);
35
+ const extra = paths.length === 0 ? undefined : await reportFor(root, [...args, "--vcs-enabled=false"], paths, exceptions);
36
36
  const diagnostics = [...report.diagnostics, ...(extra?.diagnostics ?? [])];
37
37
  const unique = [...new Map(diagnostics.map((diagnostic) => [JSON.stringify(diagnostic), diagnostic])).values()];
38
38
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/biome/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/biome/report.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import type { ExceptionDeclaration } from "#exceptions/declaration.ts";
1
2
  export interface BiomeRun {
2
3
  readonly code: number;
3
4
  readonly stderr: string;
4
5
  readonly stdout: string;
5
6
  }
6
- export declare function runBiome(root: string, args: readonly string[]): Promise<BiomeRun>;
7
+ export declare function runBiome(root: string, args: readonly string[], exceptions?: readonly ExceptionDeclaration[]): Promise<BiomeRun>;
7
8
  //# sourceMappingURL=run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/biome/run.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAUjF"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/biome/run.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,GAAE,SAAS,oBAAoB,EAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAenI"}
package/dist/biome/run.js CHANGED
@@ -1,16 +1,17 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import { createRequire } from "node:module";
3
3
  import process from "node:process";
4
+ import { withExceptionConfig } from "./exceptionConfig.js";
4
5
  const BIN = createRequire(import.meta.url).resolve("@biomejs/biome/bin/biome");
5
- export function runBiome(root, args) {
6
- return new Promise((resolve, reject) => {
7
- execFile(process.execPath, [BIN, ...args, "--colors=off"], { cwd: root, maxBuffer: 2 ** 30 }, (error, stdout, stderr) => {
6
+ export function runBiome(root, args, exceptions = []) {
7
+ return withExceptionConfig(root, exceptions, (configArgs) => new Promise((resolve, reject) => {
8
+ execFile(process.execPath, [BIN, ...args, ...configArgs, "--colors=off"], { cwd: root, maxBuffer: 2 ** 30 }, (error, stdout, stderr) => {
8
9
  if (error !== null && typeof error.code !== "number") {
9
10
  reject(error);
10
11
  return;
11
12
  }
12
13
  resolve({ code: error === null ? 0 : Number(error.code), stderr, stdout });
13
14
  });
14
- });
15
+ }));
15
16
  }
16
17
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/biome/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,OAAO,MAAM,cAAc,CAAC;AAQnC,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAE/E,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAuB;IAC7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACvH,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACR,CAAC;YACD,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/biome/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAE/E,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAuB,EAAE,UAAU,GAAoC,EAAE;IAC/G,OAAO,mBAAmB,CACzB,IAAI,EACJ,UAAU,EACV,CAAC,UAAU,EAAE,EAAE,CACd,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC/B,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,EAAE,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtI,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACR,CAAC;YACD,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACH,CAAC"}
@@ -3,6 +3,10 @@ export type Command = {
3
3
  readonly _tag: "Lint";
4
4
  readonly config: string | undefined;
5
5
  readonly warnings: WarningDetail;
6
+ } | {
7
+ readonly _tag: "ExceptionsMigrate";
8
+ readonly config: string | undefined;
9
+ readonly from: string | undefined;
6
10
  } | {
7
11
  readonly _tag: "Fix";
8
12
  readonly config: string | undefined;
@@ -41,6 +45,6 @@ export type Parsed = {
41
45
  readonly _tag: "Usage";
42
46
  readonly problem: string;
43
47
  };
44
- export declare const USAGE = "Usage:\n quality lint [--config <file>] [--warnings summary|all]\n quality fix [--config <file>]\n quality baseline write [--config <file>] [--rule <id>]...\n quality baseline prune [--config <file>] [--against <ref>]\n quality baseline tighten [--config <file>] [--staged]\n quality baseline migrate [--config <file>] [--from <file>]\n quality hooks install [--config <file>] [--force]\n quality hooks uninstall\n quality hooks pre-commit [--config <file>]\n\nlint Run every rule. Exits 1 on an error-level violation, a file over its baseline, a stale registry entry\n or a baseline entry for a rule that is off or unknown.\nfix Sort every package.json, apply Biome's lint fixes, unsafe ones included, its assist actions and formatting, then format again.\nbaseline write Record current error-level violations. Creates the baseline, or records the named rules again, replacing their entries.\nbaseline prune Drop fixed debt, lower entries to what is left and carry entries to files git saw move. Never adds or raises an entry.\nbaseline tighten Prune only the entries of files changed since HEAD, or with --staged, in the index.\nbaseline migrate Move a baseline from the earlier JSON format (--from, quality/baseline.json by default) to the configured file.\nhooks install Install the git pre-commit hook, shared by every worktree, that runs hooks pre-commit. Keeps a hook that is not quality's\n unless --force replaces it.\nhooks uninstall Remove quality's pre-commit hook. Keeps a hook that is not quality's.\nhooks pre-commit What the hook runs: lint, then package.json scripts typecheck and quality:commit when present.\n\n--config <file> Config file; its directory is the repository root. Without this option, uses ./quality.config.ts when present, otherwise defaults.\n--against <ref> The branch the work merges into, whose merge base prune follows moves from. Defaults to origin/HEAD, then origin/main, then origin/master.\nExit codes: 0 passed, 1 failed the gate, 2 could not run.";
48
+ export declare const USAGE = "Usage:\n quality lint [--config <file>] [--warnings summary|all]\n quality fix [--config <file>]\n quality exceptions migrate [--config <file>] [--from <registry>]\n quality baseline write [--config <file>] [--rule <id>]...\n quality baseline prune [--config <file>] [--against <ref>]\n quality baseline tighten [--config <file>] [--staged]\n quality baseline migrate [--config <file>] [--from <file>]\n quality hooks install [--config <file>] [--force]\n quality hooks uninstall\n quality hooks pre-commit [--config <file>]\n\nlint Run every rule. Exits 1 on an error-level violation, a file over its baseline, a stale registry entry\n or a baseline entry for a rule that is off or unknown.\nfix Sort every package.json, apply Biome's lint fixes, unsafe ones included, its assist actions and formatting, then format again.\nexceptions migrate Move legacy registry entries and Biome declarations into quality.config.ts exceptions and remove matching root overrides.\nbaseline write Record current error-level violations. Creates the baseline, or records the named rules again, replacing their entries.\nbaseline prune Drop fixed debt, lower entries to what is left and carry entries to files git saw move. Never adds or raises an entry.\nbaseline tighten Prune only the entries of files changed since HEAD, or with --staged, in the index.\nbaseline migrate Move a baseline from the earlier JSON format (--from, quality/baseline.json by default) to the configured file.\nhooks install Install the git pre-commit hook, shared by every worktree, that runs hooks pre-commit. Keeps a hook that is not quality's\n unless --force replaces it.\nhooks uninstall Remove quality's pre-commit hook. Keeps a hook that is not quality's.\nhooks pre-commit What the hook runs: lint, then package.json scripts typecheck and quality:commit when present.\n\n--config <file> Config file; its directory is the repository root. Without this option, uses ./quality.config.ts when present, otherwise defaults.\n--against <ref> The branch the work merges into, whose merge base prune follows moves from. Defaults to origin/HEAD, then origin/main, then origin/master.\nExit codes: 0 passed, 1 failed the gate, 2 could not run.";
45
49
  export declare const parseCommand: (args: readonly string[]) => Parsed;
46
50
  //# sourceMappingURL=args.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,MAAM,OAAO,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,GAChG;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC1G;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC7G;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACnG;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC5G;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/F;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7B,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnI,eAAO,MAAM,KAAK,miEAyBwC,CAAC;AAgF3D,eAAO,MAAM,YAAY,SAAU,SAAS,MAAM,EAAE,KAAG,MAuBtD,CAAC"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,MAAM,MAAM,OAAO,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,GAChG;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC9G;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC1G;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC7G;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACnG;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC5G;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/F;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7B,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnI,eAAO,MAAM,KAAK,qvEAAgB,CAAC;AAiFnC,eAAO,MAAM,YAAY,SAAU,SAAS,MAAM,EAAE,KAAG,MAuBtD,CAAC"}
package/dist/cli/args.js CHANGED
@@ -1,31 +1,7 @@
1
1
  import { parseArgs } from "node:util";
2
2
  import { Result } from "effect";
3
- export const USAGE = `Usage:
4
- quality lint [--config <file>] [--warnings summary|all]
5
- quality fix [--config <file>]
6
- quality baseline write [--config <file>] [--rule <id>]...
7
- quality baseline prune [--config <file>] [--against <ref>]
8
- quality baseline tighten [--config <file>] [--staged]
9
- quality baseline migrate [--config <file>] [--from <file>]
10
- quality hooks install [--config <file>] [--force]
11
- quality hooks uninstall
12
- quality hooks pre-commit [--config <file>]
13
-
14
- lint Run every rule. Exits 1 on an error-level violation, a file over its baseline, a stale registry entry
15
- or a baseline entry for a rule that is off or unknown.
16
- fix Sort every package.json, apply Biome's lint fixes, unsafe ones included, its assist actions and formatting, then format again.
17
- baseline write Record current error-level violations. Creates the baseline, or records the named rules again, replacing their entries.
18
- baseline prune Drop fixed debt, lower entries to what is left and carry entries to files git saw move. Never adds or raises an entry.
19
- baseline tighten Prune only the entries of files changed since HEAD, or with --staged, in the index.
20
- baseline migrate Move a baseline from the earlier JSON format (--from, quality/baseline.json by default) to the configured file.
21
- hooks install Install the git pre-commit hook, shared by every worktree, that runs hooks pre-commit. Keeps a hook that is not quality's
22
- unless --force replaces it.
23
- hooks uninstall Remove quality's pre-commit hook. Keeps a hook that is not quality's.
24
- hooks pre-commit What the hook runs: lint, then package.json scripts typecheck and quality:commit when present.
25
-
26
- --config <file> Config file; its directory is the repository root. Without this option, uses ./quality.config.ts when present, otherwise defaults.
27
- --against <ref> The branch the work merges into, whose merge base prune follows moves from. Defaults to origin/HEAD, then origin/main, then origin/master.
28
- Exit codes: 0 passed, 1 failed the gate, 2 could not run.`;
3
+ import { ADOPT_REMOVED, USAGE as COMMAND_USAGE } from "./messages.js";
4
+ export const USAGE = COMMAND_USAGE;
29
5
  const OPTIONS = {
30
6
  against: { type: "string" },
31
7
  config: { type: "string" },
@@ -37,9 +13,9 @@ const OPTIONS = {
37
13
  warnings: { type: "string" },
38
14
  };
39
15
  const usage = (problem) => ({ _tag: "Usage", problem });
40
- const ADOPT_REMOVED = "`quality adopt` was removed in 0.7.0. To record a rule's existing findings in the baseline, run `quality baseline write --rule <id>`; to apply the fixes Biome can make first, run `quality fix`.";
41
16
  const SUBCOMMANDS = {
42
17
  baseline: "baseline takes write, prune, tighten or migrate.",
18
+ exceptions: "exceptions takes migrate.",
43
19
  hooks: "hooks takes install, uninstall or pre-commit.",
44
20
  };
45
21
  const parsed = (command) => ({ _tag: "Parsed", command });
@@ -49,6 +25,7 @@ const ACCEPTS = {
49
25
  "baseline prune": ["against"],
50
26
  "baseline tighten": ["staged"],
51
27
  "baseline write": ["rule"],
28
+ "exceptions migrate": ["from"],
52
29
  fix: [],
53
30
  "hooks install": ["force"],
54
31
  "hooks pre-commit": [],
@@ -70,6 +47,8 @@ const commandFor = (name, values) => {
70
47
  ? parsed({ _tag: "Lint", config, warnings })
71
48
  : usage(`--warnings takes summary or all, not "${warnings}".`);
72
49
  }
50
+ case "exceptions migrate":
51
+ return parsed({ _tag: "ExceptionsMigrate", config, from: values.from });
73
52
  case "fix":
74
53
  return parsed({ _tag: "Fix", config });
75
54
  case "baseline write":
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/cli/fix.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,eAAO,MAAM,cAAc,IAAI,CAAC;AAahC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,CAUxH;AAED,MAAM,WAAW,IAAI,CAAC,QAAQ,EAAE,aAAa;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,QAAQ,CAAC,QAAQ,EAAE,aAAa;IAChD,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;CACvF;AAsDD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,EAC/C,MAAM,EACN,QAAQ,GACR,EAAE,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,EAAE,aAAa,CAAC,CAoBjG;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,CAOrH"}
1
+ {"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/cli/fix.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,eAAO,MAAM,cAAc,IAAI,CAAC;AAahC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,CAUxH;AAED,MAAM,WAAW,IAAI,CAAC,QAAQ,EAAE,aAAa;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,QAAQ,CAAC,QAAQ,EAAE,aAAa;IAChD,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;CACvF;AA0DD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,EAC/C,MAAM,EACN,QAAQ,GACR,EAAE,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,EAAE,aAAa,CAAC,CAoBjG;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,CAOrH"}
package/dist/cli/fix.js CHANGED
@@ -8,10 +8,10 @@ import { walk } from "#inventory/walk.ts";
8
8
  import { sortManifests } from "#manifests/sorted.ts";
9
9
  import { plural } from "#report/plural.ts";
10
10
  export const MAX_FIX_ROUNDS = 5;
11
- function biome(root, args) {
11
+ function biome(root, args, exceptions) {
12
12
  return Effect.tryPromise({
13
13
  catch: (cause) => new SetupFailure({ message: cause instanceof Error ? cause.message : String(cause) }),
14
- try: () => biomeReport(root, args),
14
+ try: () => biomeReport(root, args, exceptions),
15
15
  });
16
16
  }
17
17
  function isBinary(bytes) {
@@ -26,16 +26,16 @@ export function snapshotOf(root) {
26
26
  return new Map(texts.flat());
27
27
  }).pipe(Effect.mapError((failure) => new SetupFailure({ message: failure.message })));
28
28
  }
29
- function changedBy(root, args) {
30
- return Effect.map(biome(root, args), (report) => report.summary.changed);
29
+ function changedBy(root, args, exceptions) {
30
+ return Effect.map(biome(root, args, exceptions), (report) => report.summary.changed);
31
31
  }
32
- function biomePasses(root) {
32
+ function biomePasses(root, exceptions) {
33
33
  return [
34
34
  {
35
35
  label: "with fixes",
36
- run: changedBy(root, ["check", "--write", "--unsafe", "--skip=assist/source/useSortedKeys", "--skip=lint/suspicious/noDuplicateObjectKeys"]),
36
+ run: changedBy(root, ["check", "--write", "--unsafe", "--skip=assist/source/useSortedKeys", "--skip=lint/suspicious/noDuplicateObjectKeys"], exceptions),
37
37
  },
38
- { label: "with the format pass", run: changedBy(root, ["format", "--write"]) },
38
+ { label: "with the format pass", run: changedBy(root, ["format", "--write"], exceptions) },
39
39
  ];
40
40
  }
41
41
  function round(passes, index, afterEachPass) {
@@ -91,10 +91,10 @@ export function settle({ passes, snapshot, }) {
91
91
  }
92
92
  export function fix(cwd, config) {
93
93
  return Effect.gen(function* () {
94
- const { root } = yield* loadConfig(cwd, config);
94
+ const { root, exceptions } = yield* loadConfig(cwd, config);
95
95
  const sorted = yield* Effect.mapError(sortManifests(root), (failure) => new SetupFailure({ message: failure.message }));
96
96
  yield* Console.log(`quality: sort-package-json rewrote ${plural(sorted, "manifest")}.`);
97
- yield* settle({ passes: biomePasses(root), snapshot: snapshotOf(root) });
97
+ yield* settle({ passes: biomePasses(root, exceptions), snapshot: snapshotOf(root) });
98
98
  });
99
99
  }
100
100
  //# sourceMappingURL=fix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/cli/fix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/cli/fix.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAG1D,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE/D,eAAO,MAAM,IAAI,QACX,MAAM,UACH,MAAM,GAAG,SAAS,YAChB,aAAa,KACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,EAAE,UAAU,CAAC,UAAU,CAgBpE,CAAC"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAG1D,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE/D,eAAO,MAAM,IAAI,QACX,MAAM,UACH,MAAM,GAAG,SAAS,YAChB,aAAa,KACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,EAAE,UAAU,CAAC,UAAU,CAiBpE,CAAC"}
package/dist/cli/lint.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { relative } from "node:path";
1
2
  import { Console, Effect } from "effect";
2
3
  import { evaluate, passes } from "#engine/evaluate.ts";
3
4
  import { openSession } from "#engine/session.ts";
@@ -10,7 +11,7 @@ export const lint = (cwd, config, warnings) => Effect.gen(function* () {
10
11
  baseline: session.config.baseline,
11
12
  checked: session.inventory.sources.length,
12
13
  descriptions: new Map(session.config.active.map((rule) => [rule.id, rule.description])),
13
- registry: session.config.registry,
14
+ registry: session.config.exceptions.length === 0 ? session.config.registry : `${relative(session.config.root, session.config.file)} exceptions`,
14
15
  warnings,
15
16
  }));
16
17
  if (!passes(outcome)) {
@@ -1 +1 @@
1
- {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAsB,MAAM,mBAAmB,CAAC;AAE/D,MAAM,CAAC,MAAM,IAAI,GAAG,CACnB,GAAW,EACX,MAA0B,EAC1B,QAAuB,EACiD,EAAE,CAC1E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzG,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CACjB,MAAM,CAAC,OAAO,EAAE;QACf,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;QACjC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;QACzC,YAAY,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACvF,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;QACjC,QAAQ;KACR,CAAC,CACF,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;IAChC,CAAC;AACF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAmB,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAsB,MAAM,mBAAmB,CAAC;AAE/D,MAAM,CAAC,MAAM,IAAI,GAAG,CACnB,GAAW,EACX,MAA0B,EAC1B,QAAuB,EACiD,EAAE,CAC1E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzG,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CACjB,MAAM,CAAC,OAAO,EAAE;QACf,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;QACjC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;QACzC,YAAY,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACvF,QAAQ,EACP,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa;QACtI,QAAQ;KACR,CAAC,CACF,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;IAChC,CAAC;AACF,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const USAGE = "Usage:\n quality lint [--config <file>] [--warnings summary|all]\n quality fix [--config <file>]\n quality exceptions migrate [--config <file>] [--from <registry>]\n quality baseline write [--config <file>] [--rule <id>]...\n quality baseline prune [--config <file>] [--against <ref>]\n quality baseline tighten [--config <file>] [--staged]\n quality baseline migrate [--config <file>] [--from <file>]\n quality hooks install [--config <file>] [--force]\n quality hooks uninstall\n quality hooks pre-commit [--config <file>]\n\nlint Run every rule. Exits 1 on an error-level violation, a file over its baseline, a stale registry entry\n or a baseline entry for a rule that is off or unknown.\nfix Sort every package.json, apply Biome's lint fixes, unsafe ones included, its assist actions and formatting, then format again.\nexceptions migrate Move legacy registry entries and Biome declarations into quality.config.ts exceptions and remove matching root overrides.\nbaseline write Record current error-level violations. Creates the baseline, or records the named rules again, replacing their entries.\nbaseline prune Drop fixed debt, lower entries to what is left and carry entries to files git saw move. Never adds or raises an entry.\nbaseline tighten Prune only the entries of files changed since HEAD, or with --staged, in the index.\nbaseline migrate Move a baseline from the earlier JSON format (--from, quality/baseline.json by default) to the configured file.\nhooks install Install the git pre-commit hook, shared by every worktree, that runs hooks pre-commit. Keeps a hook that is not quality's\n unless --force replaces it.\nhooks uninstall Remove quality's pre-commit hook. Keeps a hook that is not quality's.\nhooks pre-commit What the hook runs: lint, then package.json scripts typecheck and quality:commit when present.\n\n--config <file> Config file; its directory is the repository root. Without this option, uses ./quality.config.ts when present, otherwise defaults.\n--against <ref> The branch the work merges into, whose merge base prune follows moves from. Defaults to origin/HEAD, then origin/main, then origin/master.\nExit codes: 0 passed, 1 failed the gate, 2 could not run.";
2
+ export declare const ADOPT_REMOVED = "`quality adopt` was removed in 0.7.0. To record a rule's existing findings in the baseline, run `quality baseline write --rule <id>`; to apply the fixes Biome can make first, run `quality fix`.";
3
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/cli/messages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,qvEA2BwC,CAAC;AAE3D,eAAO,MAAM,aAAa,sMAC0K,CAAC"}