@shivaedev/quality 0.7.0 → 0.7.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 +6 -0
- package/README.md +4 -2
- package/biome/preset.json +18 -17
- package/dist/cli/fix.d.ts.map +1 -1
- package/dist/cli/fix.js +7 -1
- package/dist/cli/fix.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/fix.ts +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.1 - 2026-10-04
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- Autofixes that can change behavior or delete something written on purpose now report only, for 20 lint rules and one assist, and the author decides the fix: an autofix added the `u` flag to a regex later compiled by Go's regexp, and another dropped the sign of a computed index. The preset keeps `noAccessKey`, `noAriaHiddenOnFocusable`, `noAutofocus`, `noInteractiveElementToNoninteractiveRole`, `noNoninteractiveElementToInteractiveRole`, `noNoninteractiveTabindex`, `noRedundantRoles`, `useValidAriaProps`, `useValidAriaRole`, `noImportantStyles`, `noConstAssign`, `useExhaustiveDependencies`, `noFloatingPromises`, `useRegexpTest`, `useUnicodeRegex`, `noNonNullAssertion`, `useAtIndex` and `noParametersOnlyUsedInRecursion` at `error` with their fixes off, as `noUnusedPrivateClassMembers` already was, and `quality fix` skips `noDuplicateObjectKeys` and the `useSortedKeys` assist, whose fixes Biome's config cannot turn off. `quality lint` reports them all as before.
|
|
8
|
+
|
|
3
9
|
## 0.7.0 - 2026-10-04
|
|
4
10
|
|
|
5
11
|
### Changed
|
package/README.md
CHANGED
|
@@ -386,15 +386,17 @@ The preset sets:
|
|
|
386
386
|
- **Formatting:** tabs, a line width of 150, double quotes, semicolons, trailing commas and operators at the start of a wrapped line.
|
|
387
387
|
- **Lint:** every rule Biome recommends, at `error`, and a list of stricter rules on top, among them `noUnsafeTypeAssertion`, `useBlockStatements`, `useNumericSeparators`, `useUnicodeRegex`, `useLiteralKeys`, `noFloatingPromises`, `useExhaustiveDependencies`, `it` for every test, function declarations over function expressions, interfaces for object types, a cognitive complexity limit of 15, no nested ternaries, no barrel files and no `export *`.
|
|
388
388
|
- **Imports:** organized in five groups: Node and Bun builtins, packages, `@shivaedev/*` packages, aliases and relative paths. Biome counts as an alias a specifier that starts with `#`, `@/`, `~`, `$` or `%`; a tsconfig path such as `@app/*` sorts with the packages, and Biome's `noUndeclaredDependencies` takes it for one, so name aliases in a form Biome recognizes.
|
|
389
|
-
- **Assist:** organized imports and sorted keys, attributes, enum members, interface members and properties. Keys are sorted in JSON and in object literals alike
|
|
389
|
+
- **Assist:** organized imports and sorted keys, attributes, enum members, interface members and properties. Keys are sorted in JSON and in object literals alike, but only reported: `quality fix` leaves the order to the author. `package.json` is left out, because `manifests/sorted` gives it the order npm users expect.
|
|
390
390
|
- **Plugins:** GritQL rules that ban ambient time, randomness, `console` and `process.env` for Effect's services, and that ask `Effect.fn` for a literal span name shaped `Owner.operation`. They load from `./node_modules/@shivaedev/quality/biome/plugins`, so the package must be installed at the repository root.
|
|
391
391
|
- Files ignored by git are skipped.
|
|
392
392
|
|
|
393
393
|
The preset turns off `noUnusedVariables` and `noUnusedFunctionParameters`, because the tsconfig presets report them through TypeScript, and allows default exports in `*.config.*` files, which tools load through the default export. It also turns off `noProcessGlobal`, `useJsonImportAttributes`, `noMisusedPromises`, `useExhaustiveSwitchCases`, `useSortedClasses`, `noDelete`, `useConsistentArrayType`, `useConsistentCurlyBraces`, `noEqualsToNull` and `noSkippedTests`, because `quality fix` applies every lint fix and their fixes changed behavior or did not terminate on real code. It declares these weakenings in its `declarations.json`, so `suppressions/biome-overrides` takes them as declared. Every other weakening a repository adds is an override it declares with a reason.
|
|
394
394
|
|
|
395
|
+
An autofix applies only a change that removes no decision; a fix that can change behavior or delete something written on purpose reports only, and the author decides. The preset keeps `noAccessKey`, `noAriaHiddenOnFocusable`, `noAutofocus`, `noInteractiveElementToNoninteractiveRole`, `noNoninteractiveElementToInteractiveRole`, `noNoninteractiveTabindex`, `noRedundantRoles`, `useValidAriaProps`, `useValidAriaRole`, `noImportantStyles`, `noConstAssign`, `noUnusedPrivateClassMembers`, `useExhaustiveDependencies`, `noFloatingPromises`, `useRegexpTest`, `useUnicodeRegex`, `noNonNullAssertion`, `useAtIndex` and `noParametersOnlyUsedInRecursion` at `error` with their fixes off, and `quality fix` skips `noDuplicateObjectKeys` and `useSortedKeys`, whose fixes Biome's config cannot turn off.
|
|
396
|
+
|
|
395
397
|
The `biome` rule runs `biome check` with the repository's config and reports each finding as `biome/<category>`, such as `biome/lint/style/useBlockStatements`, `biome/assist/source/useSortedKeys`, `biome/format` or `biome/plugin`, so Biome's findings go through the baseline like any other rule's. `quality baseline write --rule biome` takes in every Biome category at once. A finding below `error`, such as a rule a repository declared at `warn`, is not reported. The rule also asks for a root `biome.json` or `biome.jsonc` that extends the preset, and it takes no registry exceptions. A Biome config that Biome cannot load stops the run with Biome's message.
|
|
396
398
|
|
|
397
|
-
`quality fix` sorts every `package.json`, then runs `biome check --write --unsafe`, which applies Biome's lint fixes, unsafe ones included, its assist actions, such as organized imports and
|
|
399
|
+
`quality fix` sorts every `package.json`, then runs `biome check --write --unsafe`, which applies Biome's lint fixes, unsafe ones included, its assist actions, such as organized imports, and its formatting, except the fixes that report only. It then runs Biome's formatter once more, because a lint fix can leave code unformatted. One fix can make room for another, so it repeats both passes until a round rewrites nothing, at most 5 rounds; when files still change in the fifth round, it names them and exits 2. An unsafe fix can change behavior, such as `==` becoming `===`, so review what it changed. An editor that runs Biome on save uses the same version when it resolves Biome from the root `node_modules`, so a repository that wants that installs `@biomejs/biome` at the version this package pins.
|
|
398
400
|
|
|
399
401
|
## Vitest projects
|
|
400
402
|
|
package/biome/preset.json
CHANGED
|
@@ -97,21 +97,21 @@
|
|
|
97
97
|
"enabled": true,
|
|
98
98
|
"rules": {
|
|
99
99
|
"a11y": {
|
|
100
|
-
"noAccessKey": "error",
|
|
100
|
+
"noAccessKey": { "fix": "none", "level": "error" },
|
|
101
101
|
"noAmbiguousAnchorText": "error",
|
|
102
|
-
"noAriaHiddenOnFocusable": "error",
|
|
102
|
+
"noAriaHiddenOnFocusable": { "fix": "none", "level": "error" },
|
|
103
103
|
"noAriaUnsupportedElements": "error",
|
|
104
|
-
"noAutofocus": "error",
|
|
104
|
+
"noAutofocus": { "fix": "none", "level": "error" },
|
|
105
105
|
"noDistractingElements": "error",
|
|
106
106
|
"noHeaderScope": "error",
|
|
107
|
-
"noInteractiveElementToNoninteractiveRole": "error",
|
|
107
|
+
"noInteractiveElementToNoninteractiveRole": { "fix": "none", "level": "error" },
|
|
108
108
|
"noLabelWithoutControl": "error",
|
|
109
109
|
"noNoninteractiveElementInteractions": "error",
|
|
110
|
-
"noNoninteractiveElementToInteractiveRole": "error",
|
|
111
|
-
"noNoninteractiveTabindex": "error",
|
|
110
|
+
"noNoninteractiveElementToInteractiveRole": { "fix": "none", "level": "error" },
|
|
111
|
+
"noNoninteractiveTabindex": { "fix": "none", "level": "error" },
|
|
112
112
|
"noPositiveTabindex": "error",
|
|
113
113
|
"noRedundantAlt": "error",
|
|
114
|
-
"noRedundantRoles": "error",
|
|
114
|
+
"noRedundantRoles": { "fix": "none", "level": "error" },
|
|
115
115
|
"noStaticElementInteractions": "error",
|
|
116
116
|
"noSvgWithoutTitle": "error",
|
|
117
117
|
"useAltText": "error",
|
|
@@ -130,8 +130,8 @@
|
|
|
130
130
|
"useMediaCaption": "error",
|
|
131
131
|
"useSemanticElements": "error",
|
|
132
132
|
"useValidAnchor": "error",
|
|
133
|
-
"useValidAriaProps": "error",
|
|
134
|
-
"useValidAriaRole": "error",
|
|
133
|
+
"useValidAriaProps": { "fix": "none", "level": "error" },
|
|
134
|
+
"useValidAriaRole": { "fix": "none", "level": "error" },
|
|
135
135
|
"useValidAriaValues": "error",
|
|
136
136
|
"useValidAutocomplete": "error",
|
|
137
137
|
"useValidLang": "error"
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
"noFlatMapIdentity": "error",
|
|
155
155
|
"noForEach": "error",
|
|
156
156
|
"noImplicitCoercions": "error",
|
|
157
|
-
"noImportantStyles": "error",
|
|
157
|
+
"noImportantStyles": { "fix": "none", "level": "error" },
|
|
158
158
|
"noRedundantDefaultExport": "error",
|
|
159
159
|
"noStaticOnlyClass": "error",
|
|
160
160
|
"noThisInStatic": "error",
|
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
"correctness": {
|
|
193
193
|
"noBeforeInteractiveScriptOutsideDocument": "error",
|
|
194
194
|
"noChildrenProp": "error",
|
|
195
|
-
"noConstAssign": "error",
|
|
195
|
+
"noConstAssign": { "fix": "none", "level": "error" },
|
|
196
196
|
"noConstantCondition": "error",
|
|
197
197
|
"noConstantMathMinMaxClamp": "error",
|
|
198
198
|
"noConstructorReturn": "error",
|
|
@@ -247,6 +247,7 @@
|
|
|
247
247
|
"noVoidElementsWithChildren": "error",
|
|
248
248
|
"noVoidTypeReturn": "error",
|
|
249
249
|
"useExhaustiveDependencies": {
|
|
250
|
+
"fix": "none",
|
|
250
251
|
"level": "error",
|
|
251
252
|
"options": {
|
|
252
253
|
"reportMissingDependenciesArray": true
|
|
@@ -284,7 +285,7 @@
|
|
|
284
285
|
}
|
|
285
286
|
},
|
|
286
287
|
"noExtendNative": "error",
|
|
287
|
-
"noFloatingPromises": "error",
|
|
288
|
+
"noFloatingPromises": { "fix": "none", "level": "error" },
|
|
288
289
|
"noIdenticalTestTitle": "error",
|
|
289
290
|
"noInvalidFileInputAccept": "error",
|
|
290
291
|
"noInvalidPropertyInitValue": "error",
|
|
@@ -352,7 +353,7 @@
|
|
|
352
353
|
"useReactAsyncServerFunction": "error",
|
|
353
354
|
"useReduceTypeParameter": "error",
|
|
354
355
|
"useRegexpExec": "error",
|
|
355
|
-
"useRegexpTest": "error",
|
|
356
|
+
"useRegexpTest": { "fix": "none", "level": "error" },
|
|
356
357
|
"useSortedClasses": {
|
|
357
358
|
"level": "off",
|
|
358
359
|
"options": {
|
|
@@ -363,7 +364,7 @@
|
|
|
363
364
|
"useTailwindShorthandClasses": "error",
|
|
364
365
|
"useTestHooksInOrder": "error",
|
|
365
366
|
"useTestHooksOnTop": "error",
|
|
366
|
-
"useUnicodeRegex": "error",
|
|
367
|
+
"useUnicodeRegex": { "fix": "none", "level": "error" },
|
|
367
368
|
"useValidTestTitle": "error"
|
|
368
369
|
},
|
|
369
370
|
"performance": {
|
|
@@ -394,7 +395,7 @@
|
|
|
394
395
|
"noMultilineString": "error",
|
|
395
396
|
"noNegationElse": "error",
|
|
396
397
|
"noNestedTernary": "error",
|
|
397
|
-
"noNonNullAssertion": "error",
|
|
398
|
+
"noNonNullAssertion": { "fix": "none", "level": "error" },
|
|
398
399
|
"noParameterAssign": "error",
|
|
399
400
|
"noShoutyConstants": "error",
|
|
400
401
|
"noSubstr": "error",
|
|
@@ -404,7 +405,7 @@
|
|
|
404
405
|
"noYodaExpression": "error",
|
|
405
406
|
"useArrayLiterals": "error",
|
|
406
407
|
"useAsConstAssertion": "error",
|
|
407
|
-
"useAtIndex": "error",
|
|
408
|
+
"useAtIndex": { "fix": "none", "level": "error" },
|
|
408
409
|
"useBlockStatements": "error",
|
|
409
410
|
"useCollapsedElseIf": "error",
|
|
410
411
|
"useCollapsedIf": "error",
|
|
@@ -531,7 +532,7 @@
|
|
|
531
532
|
"noNestedPromises": "error",
|
|
532
533
|
"noNonNullAssertedOptionalChain": "error",
|
|
533
534
|
"noOctalEscape": "error",
|
|
534
|
-
"noParametersOnlyUsedInRecursion": "error",
|
|
535
|
+
"noParametersOnlyUsedInRecursion": { "fix": "none", "level": "error" },
|
|
535
536
|
"noProto": "error",
|
|
536
537
|
"noPrototypeBuiltins": "error",
|
|
537
538
|
"noQuickfixBiome": "error",
|
package/dist/cli/fix.d.ts.map
CHANGED
|
@@ -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,eAAe,CAAC;AAM7C,eAAO,MAAM,cAAc,IAAI,CAAC;
|
|
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,eAAe,CAAC;AAM7C,eAAO,MAAM,cAAc,IAAI,CAAC;AAqChC,MAAM,WAAW,QAAQ,CAAC,OAAO,EAAE,YAAY;IAC9C,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAChF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;CACrF;AAeD,wBAAgB,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,EAC7C,KAAK,EACL,QAAQ,GACR,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,EAAE,YAAY,CAAC,CAa7F;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
|
@@ -24,7 +24,13 @@ function snapshotOf(root) {
|
|
|
24
24
|
}
|
|
25
25
|
function biomeRound(root, index) {
|
|
26
26
|
return Effect.gen(function* () {
|
|
27
|
-
const fixed = (yield* biome(root, [
|
|
27
|
+
const fixed = (yield* biome(root, [
|
|
28
|
+
"check",
|
|
29
|
+
"--write",
|
|
30
|
+
"--unsafe",
|
|
31
|
+
"--skip=assist/source/useSortedKeys",
|
|
32
|
+
"--skip=lint/suspicious/noDuplicateObjectKeys",
|
|
33
|
+
])).summary.changed;
|
|
28
34
|
const formatted = (yield* biome(root, ["format", "--write"])).summary.changed;
|
|
29
35
|
yield* Console.log(`quality: Biome round ${index} rewrote ${plural(fixed, "file")} with fixes and ${plural(formatted, "file")} with the format pass.`);
|
|
30
36
|
return fixed + formatted;
|
package/dist/cli/fix.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/cli/fix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,WAAW,EAAe,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,SAAS,KAAK,CAAC,IAAY,EAAE,IAAuB;IACnD,OAAO,MAAM,CAAC,UAAU,CAAC;QACxB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACvG,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;KAClC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CACtD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAU,CAAC,CACvH,CAAC;QACF,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAa;IAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/cli/fix.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shivaedev/quality",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Repository quality gate with typed rules, a baseline of existing debt and a registry of reasoned exceptions",
|
|
5
5
|
"homepage": "https://github.com/ShivaeDev/platform/tree/main/packages/quality#readme",
|
|
6
6
|
"bugs": {
|
package/src/cli/fix.ts
CHANGED
|
@@ -30,7 +30,13 @@ function snapshotOf(root: string): Effect.Effect<ReadonlyMap<string, string>, Se
|
|
|
30
30
|
|
|
31
31
|
function biomeRound(root: string, index: number): Effect.Effect<number, SetupFailure> {
|
|
32
32
|
return Effect.gen(function* () {
|
|
33
|
-
const fixed = (yield* biome(root, [
|
|
33
|
+
const fixed = (yield* biome(root, [
|
|
34
|
+
"check",
|
|
35
|
+
"--write",
|
|
36
|
+
"--unsafe",
|
|
37
|
+
"--skip=assist/source/useSortedKeys",
|
|
38
|
+
"--skip=lint/suspicious/noDuplicateObjectKeys",
|
|
39
|
+
])).summary.changed;
|
|
34
40
|
const formatted = (yield* biome(root, ["format", "--write"])).summary.changed;
|
|
35
41
|
yield* Console.log(
|
|
36
42
|
`quality: Biome round ${index} rewrote ${plural(fixed, "file")} with fixes and ${plural(formatted, "file")} with the format pass.`,
|