@shivaedev/quality 0.5.1 → 0.7.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 (102) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +36 -39
  3. package/biome/declarations.json +55 -0
  4. package/biome/preset.json +29 -13
  5. package/dist/baseline/legacy.d.ts +0 -1
  6. package/dist/baseline/legacy.d.ts.map +1 -1
  7. package/dist/baseline/legacy.js +0 -1
  8. package/dist/baseline/legacy.js.map +1 -1
  9. package/dist/cli/args.d.ts +1 -6
  10. package/dist/cli/args.d.ts.map +1 -1
  11. package/dist/cli/args.js +7 -14
  12. package/dist/cli/args.js.map +1 -1
  13. package/dist/cli/fix.d.ts +8 -2
  14. package/dist/cli/fix.d.ts.map +1 -1
  15. package/dist/cli/fix.js +55 -9
  16. package/dist/cli/fix.js.map +1 -1
  17. package/dist/cli.js +1 -4
  18. package/dist/cli.js.map +1 -1
  19. package/dist/config/decode.d.ts +0 -1
  20. package/dist/config/decode.d.ts.map +1 -1
  21. package/dist/config/decode.js +0 -1
  22. package/dist/config/decode.js.map +1 -1
  23. package/dist/config/load.d.ts +0 -1
  24. package/dist/config/load.d.ts.map +1 -1
  25. package/dist/config/load.js +0 -1
  26. package/dist/config/load.js.map +1 -1
  27. package/dist/config/resolve.d.ts +1 -1
  28. package/dist/config/resolve.d.ts.map +1 -1
  29. package/dist/config/resolve.js +0 -3
  30. package/dist/config/resolve.js.map +1 -1
  31. package/dist/config.d.ts +0 -2
  32. package/dist/config.d.ts.map +1 -1
  33. package/dist/config.js.map +1 -1
  34. package/dist/git/base.d.ts.map +1 -1
  35. package/dist/git/base.js +4 -27
  36. package/dist/git/base.js.map +1 -1
  37. package/dist/git/command.d.ts +1 -1
  38. package/dist/git/command.d.ts.map +1 -1
  39. package/dist/git/command.js +2 -2
  40. package/dist/git/command.js.map +1 -1
  41. package/dist/git/history.d.ts +0 -1
  42. package/dist/git/history.d.ts.map +1 -1
  43. package/dist/git/history.js +1 -6
  44. package/dist/git/history.js.map +1 -1
  45. package/dist/imports/departures.d.ts +9 -0
  46. package/dist/imports/departures.d.ts.map +1 -0
  47. package/dist/imports/departures.js +49 -0
  48. package/dist/imports/departures.js.map +1 -0
  49. package/dist/imports/specifiers.d.ts +9 -0
  50. package/dist/imports/specifiers.d.ts.map +1 -0
  51. package/dist/imports/specifiers.js +71 -0
  52. package/dist/imports/specifiers.js.map +1 -0
  53. package/dist/report/render.d.ts.map +1 -1
  54. package/dist/report/render.js +11 -0
  55. package/dist/report/render.js.map +1 -1
  56. package/dist/rule.d.ts +2 -1
  57. package/dist/rule.d.ts.map +1 -1
  58. package/dist/rule.js.map +1 -1
  59. package/dist/rules/biome.js +1 -1
  60. package/dist/rules/biome.js.map +1 -1
  61. package/dist/rules/built-in.d.ts +1 -1
  62. package/dist/rules/built-in.d.ts.map +1 -1
  63. package/dist/rules/built-in.js +2 -0
  64. package/dist/rules/built-in.js.map +1 -1
  65. package/dist/rules/imports/aliased.d.ts +2 -0
  66. package/dist/rules/imports/aliased.d.ts.map +1 -0
  67. package/dist/rules/imports/aliased.js +23 -0
  68. package/dist/rules/imports/aliased.js.map +1 -0
  69. package/package.json +3 -2
  70. package/src/baseline/legacy.ts +0 -2
  71. package/src/cli/args.ts +8 -16
  72. package/src/cli/fix.ts +72 -10
  73. package/src/cli.ts +1 -4
  74. package/src/config/decode.ts +0 -1
  75. package/src/config/load.ts +0 -2
  76. package/src/config/resolve.ts +1 -3
  77. package/src/config.ts +0 -3
  78. package/src/git/base.ts +4 -31
  79. package/src/git/command.ts +2 -2
  80. package/src/git/history.ts +1 -8
  81. package/src/imports/departures.ts +72 -0
  82. package/src/imports/specifiers.ts +94 -0
  83. package/src/report/render.ts +12 -0
  84. package/src/rule.ts +3 -2
  85. package/src/rules/biome.ts +1 -1
  86. package/src/rules/built-in.ts +2 -0
  87. package/src/rules/imports/aliased.ts +26 -0
  88. package/dist/baseline/guard.d.ts +0 -23
  89. package/dist/baseline/guard.d.ts.map +0 -1
  90. package/dist/baseline/guard.js +0 -32
  91. package/dist/baseline/guard.js.map +0 -1
  92. package/dist/cli/check.d.ts +0 -5
  93. package/dist/cli/check.d.ts.map +0 -1
  94. package/dist/cli/check.js +0 -39
  95. package/dist/cli/check.js.map +0 -1
  96. package/dist/report/guard.d.ts +0 -9
  97. package/dist/report/guard.d.ts.map +0 -1
  98. package/dist/report/guard.js +0 -34
  99. package/dist/report/guard.js.map +0 -1
  100. package/src/baseline/guard.ts +0 -48
  101. package/src/cli/check.ts +0 -51
  102. package/src/report/guard.ts +0 -46
@@ -1,46 +0,0 @@
1
- import type { GuardProblem, GuardResult } from "../baseline/guard.ts";
2
- import type { Base } from "../git/base.ts";
3
- import { plural } from "./plural.ts";
4
-
5
- export interface GuardContext {
6
- readonly base: Base;
7
- readonly baseline: string;
8
- readonly config: string;
9
- }
10
-
11
- const problemLine = (problem: GuardProblem, context: GuardContext): string => {
12
- switch (problem._tag) {
13
- case "Added":
14
- return `${problem.entry.rule} ${problem.entry.file} is new, at ${problem.entry.count}.`;
15
- case "Raised":
16
- return `${problem.entry.rule} ${problem.entry.file} rose to ${problem.entry.count} from ${problem.base.count}.`;
17
- case "Unadopted":
18
- return `${problem.rule} is newly baselined in ${plural(problem.entries, "file")} without being named under \`adopt\` in ${context.config}.`;
19
- case "NothingAdopted":
20
- return `\`adopt\` in ${context.config} names ${problem.rule}, which has nothing baselined. Remove it.`;
21
- }
22
- };
23
-
24
- const against = (base: Base): string => `${base.ref} (merge base ${base.commit.slice(0, 12)})`;
25
-
26
- const held = (result: GuardResult): string =>
27
- [
28
- ...(result.moved > 0 ? [`${plural(result.moved, "entry", "entries")} followed moved files`] : []),
29
- ...(result.adopted.length > 0 ? [`adopted ${result.adopted.join(", ")}`] : []),
30
- ]
31
- .map((part) => `; ${part}`)
32
- .join("");
33
-
34
- export const renderGuard = (result: GuardResult, context: GuardContext): string => {
35
- if (result.problems.length === 0) {
36
- return `quality: ${context.baseline} holds against ${against(context.base)}${held(result)}.`;
37
- }
38
- return [
39
- [
40
- `error ${context.baseline} grew against ${against(context.base)}`,
41
- " The baseline only shrinks. Fix new violations instead of baselining them; a rule enters the baseline for the first time only while `adopt` names it.",
42
- ...result.problems.map((problem) => ` ${problemLine(problem, context)}`),
43
- ].join("\n"),
44
- `quality: baseline check failed with ${plural(result.problems.length, "problem")}.`,
45
- ].join("\n\n");
46
- };