catlint 1.2.1 → 2.0.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 (143) hide show
  1. package/dist/cjs/cli/commands/init.d.ts +1 -0
  2. package/dist/cjs/cli/commands/lint.d.ts +1 -0
  3. package/dist/cjs/cli/index.d.ts +2 -0
  4. package/dist/cjs/config/api/defineConfig.d.ts +2 -0
  5. package/dist/cjs/config/api/loadConfig.d.ts +3 -0
  6. package/dist/cjs/config/index.d.ts +3 -0
  7. package/dist/cjs/config/types/config.d.ts +17 -0
  8. package/dist/cjs/config/types/configAdapter.d.ts +2 -0
  9. package/dist/cjs/core/api/index.d.ts +3 -0
  10. package/dist/cjs/core/api/lintProject.d.ts +2 -0
  11. package/dist/cjs/core/api/linter.d.ts +5 -0
  12. package/dist/cjs/core/index.d.ts +2 -0
  13. package/dist/cjs/core/models/index.d.ts +1 -0
  14. package/dist/cjs/core/models/lintResult/index.d.ts +1 -0
  15. package/dist/cjs/core/models/lintResult/model.d.ts +7 -0
  16. package/dist/cjs/index.d.ts +4 -0
  17. package/dist/cjs/ir/index.d.ts +1 -0
  18. package/dist/cjs/ir/models/File.d.ts +6 -0
  19. package/dist/cjs/ir/models/IRParser.d.ts +2 -0
  20. package/dist/cjs/ir/models/Node.d.ts +13 -0
  21. package/dist/cjs/ir/models/index.d.ts +3 -0
  22. package/dist/cjs/rules/helpers/defaultAdapter.d.ts +9 -0
  23. package/dist/cjs/rules/index.d.ts +1 -0
  24. package/dist/cjs/rules/models/index.d.ts +2 -0
  25. package/dist/cjs/rules/models/message/index.d.ts +1 -0
  26. package/dist/cjs/rules/models/message/model.d.ts +10 -0
  27. package/dist/cjs/rules/models/rule/index.d.ts +2 -0
  28. package/dist/cjs/rules/models/rule/model.d.ts +12 -0
  29. package/dist/cjs/rules/models/rule/service.d.ts +2 -0
  30. package/dist/cjs/shared/pattern/loadFiles.d.ts +1 -0
  31. package/dist/esm/cli/commands/init.d.ts +1 -0
  32. package/dist/esm/cli/commands/init.js +18 -0
  33. package/dist/esm/cli/commands/lint.d.ts +1 -0
  34. package/dist/esm/cli/commands/lint.js +6 -0
  35. package/dist/esm/cli/index.d.ts +2 -0
  36. package/dist/esm/cli/index.js +15 -0
  37. package/dist/esm/config/api/defineConfig.d.ts +2 -0
  38. package/dist/esm/config/api/defineConfig.js +8 -0
  39. package/dist/esm/config/api/loadConfig.d.ts +3 -0
  40. package/dist/esm/config/api/loadConfig.js +22 -0
  41. package/dist/esm/config/index.d.ts +3 -0
  42. package/dist/esm/config/index.js +3 -0
  43. package/dist/esm/config/types/config.d.ts +17 -0
  44. package/dist/esm/config/types/config.js +8 -0
  45. package/dist/esm/config/types/configAdapter.d.ts +2 -0
  46. package/dist/esm/config/types/configAdapter.js +8 -0
  47. package/dist/esm/core/api/index.d.ts +3 -0
  48. package/dist/esm/core/api/index.js +3 -0
  49. package/dist/esm/core/api/lintProject.d.ts +2 -0
  50. package/dist/esm/core/api/lintProject.js +16 -0
  51. package/dist/esm/core/api/linter.d.ts +5 -0
  52. package/dist/esm/core/api/linter.js +15 -0
  53. package/dist/esm/core/index.d.ts +2 -0
  54. package/dist/esm/core/index.js +2 -0
  55. package/dist/esm/core/models/index.d.ts +1 -0
  56. package/dist/esm/core/models/index.js +1 -0
  57. package/dist/esm/core/models/lintResult/index.d.ts +1 -0
  58. package/dist/esm/core/models/lintResult/index.js +1 -0
  59. package/dist/esm/core/models/lintResult/model.d.ts +7 -0
  60. package/dist/esm/core/models/lintResult/model.js +1 -0
  61. package/dist/esm/index.d.ts +4 -0
  62. package/dist/esm/index.js +4 -0
  63. package/dist/esm/ir/index.d.ts +1 -0
  64. package/dist/esm/ir/index.js +1 -0
  65. package/dist/esm/ir/models/File.d.ts +6 -0
  66. package/dist/esm/ir/models/File.js +1 -0
  67. package/dist/esm/ir/models/IRParser.d.ts +2 -0
  68. package/dist/esm/ir/models/IRParser.js +1 -0
  69. package/dist/esm/ir/models/Node.d.ts +13 -0
  70. package/dist/esm/ir/models/Node.js +8 -0
  71. package/dist/esm/ir/models/index.d.ts +3 -0
  72. package/dist/esm/ir/models/index.js +3 -0
  73. package/dist/esm/rules/helpers/defaultAdapter.d.ts +9 -0
  74. package/dist/esm/rules/helpers/defaultAdapter.js +16 -0
  75. package/dist/esm/rules/index.d.ts +1 -0
  76. package/dist/esm/rules/index.js +1 -0
  77. package/dist/esm/rules/models/index.d.ts +2 -0
  78. package/dist/esm/rules/models/index.js +2 -0
  79. package/dist/esm/rules/models/message/index.d.ts +1 -0
  80. package/dist/esm/rules/models/message/index.js +1 -0
  81. package/dist/esm/rules/models/message/model.d.ts +10 -0
  82. package/dist/esm/rules/models/message/model.js +6 -0
  83. package/dist/esm/rules/models/rule/index.d.ts +2 -0
  84. package/dist/esm/rules/models/rule/index.js +2 -0
  85. package/dist/esm/rules/models/rule/model.d.ts +12 -0
  86. package/dist/esm/rules/models/rule/model.js +1 -0
  87. package/dist/esm/rules/models/rule/service.d.ts +2 -0
  88. package/dist/esm/rules/models/rule/service.js +9 -0
  89. package/dist/esm/shared/pattern/loadFiles.d.ts +1 -0
  90. package/dist/esm/shared/pattern/loadFiles.js +6 -0
  91. package/dist/types/cli/commands/init.d.ts +1 -0
  92. package/dist/types/cli/commands/lint.d.ts +1 -0
  93. package/dist/types/cli/index.d.ts +2 -0
  94. package/dist/types/config/api/defineConfig.d.ts +2 -0
  95. package/dist/types/config/api/loadConfig.d.ts +3 -0
  96. package/dist/types/config/index.d.ts +3 -0
  97. package/dist/types/config/types/config.d.ts +17 -0
  98. package/dist/types/config/types/configAdapter.d.ts +2 -0
  99. package/dist/types/core/api/index.d.ts +3 -0
  100. package/dist/types/core/api/lintProject.d.ts +2 -0
  101. package/dist/types/core/api/linter.d.ts +5 -0
  102. package/dist/types/core/index.d.ts +2 -0
  103. package/dist/types/core/models/index.d.ts +1 -0
  104. package/dist/types/core/models/lintResult/index.d.ts +1 -0
  105. package/dist/types/core/models/lintResult/model.d.ts +7 -0
  106. package/dist/types/index.d.ts +4 -0
  107. package/dist/types/ir/index.d.ts +1 -0
  108. package/dist/types/ir/models/File.d.ts +6 -0
  109. package/dist/types/ir/models/IRParser.d.ts +2 -0
  110. package/dist/types/ir/models/Node.d.ts +13 -0
  111. package/dist/types/ir/models/index.d.ts +3 -0
  112. package/dist/types/rules/helpers/defaultAdapter.d.ts +9 -0
  113. package/dist/types/rules/index.d.ts +1 -0
  114. package/dist/types/rules/models/index.d.ts +2 -0
  115. package/dist/types/rules/models/message/index.d.ts +1 -0
  116. package/dist/types/rules/models/message/model.d.ts +10 -0
  117. package/dist/types/rules/models/rule/index.d.ts +2 -0
  118. package/dist/types/rules/models/rule/model.d.ts +12 -0
  119. package/dist/types/rules/models/rule/service.d.ts +2 -0
  120. package/dist/types/shared/pattern/loadFiles.d.ts +1 -0
  121. package/package.json +40 -15
  122. package/src/cli/commands/init.ts +1 -1
  123. package/src/config/api/loadConfig.ts +1 -1
  124. package/src/core/api/lintProject.ts +1 -1
  125. package/tsconfig.build.json +9 -0
  126. package/tsconfig.cjs.json +11 -0
  127. package/tsconfig.esm.json +11 -0
  128. package/tsconfig.json +3 -2
  129. package/dist/chunk-XMKWAQ3V.js +0 -4934
  130. package/dist/cli/index.cjs +0 -27896
  131. package/dist/cli/index.js +0 -22995
  132. package/dist/index.cjs +0 -4976
  133. package/dist/index.js +0 -50
  134. package/legacy/group/model.ts +0 -6
  135. package/legacy/group/service.ts +0 -13
  136. package/legacy/shared/yagni/index.ts +0 -4
  137. package/legacy/shared/yagni/noUnusedFeatures/index.ts +0 -4
  138. package/legacy/shared/yagni/noUnusedFeatures/main.ts +0 -10
  139. package/legacy/shared/yagni/noUnusedFeatures/noUnusedClasses.ts +0 -26
  140. package/legacy/shared/yagni/noUnusedFeatures/noUnusedFunctions.ts +0 -26
  141. package/legacy/shared/yagni/noUnusedFeatures/noUnusedVariables.ts +0 -26
  142. package/legacy/shared/yagni/utils.ts +0 -5
  143. package/tsup.config.ts +0 -13
package/dist/index.js DELETED
@@ -1,50 +0,0 @@
1
- import {
2
- defaultConfig,
3
- defineConfig,
4
- lintFile,
5
- lintProject,
6
- loadConfig,
7
- loadConfigFromFile,
8
- travelFile
9
- } from "./chunk-XMKWAQ3V.js";
10
-
11
- // src/ir/models/Node.ts
12
- var IRKind = /* @__PURE__ */ ((IRKind2) => {
13
- IRKind2[IRKind2["Codeline"] = 0] = "Codeline";
14
- IRKind2[IRKind2["Literal"] = 1] = "Literal";
15
- IRKind2[IRKind2["Function"] = 2] = "Function";
16
- IRKind2[IRKind2["Class"] = 3] = "Class";
17
- IRKind2[IRKind2["Variable"] = 4] = "Variable";
18
- return IRKind2;
19
- })(IRKind || {});
20
-
21
- // src/rules/models/rule/service.ts
22
- var createRule = (name, fn) => {
23
- const subrules = [];
24
- const ruleFn = fn((subrule) => subrules.push(subrule));
25
- return {
26
- name,
27
- fn: ruleFn,
28
- subrules
29
- };
30
- };
31
-
32
- // src/rules/models/message/model.ts
33
- var Level = /* @__PURE__ */ ((Level2) => {
34
- Level2["Error"] = "ERROR";
35
- Level2["Warning"] = "WARNING";
36
- Level2["Info"] = "INFO";
37
- return Level2;
38
- })(Level || {});
39
- export {
40
- IRKind,
41
- Level,
42
- createRule,
43
- defaultConfig,
44
- defineConfig,
45
- lintFile,
46
- lintProject,
47
- loadConfig,
48
- loadConfigFromFile,
49
- travelFile
50
- };
@@ -1,6 +0,0 @@
1
- import type { Rule } from '@rules/$/models/rule/model';
2
-
3
- export interface Group {
4
- name: string;
5
- rules: Rule[];
6
- }
@@ -1,13 +0,0 @@
1
- import type { Rule } from '@rules/$/models/rule/model';
2
- import type { Group } from './model';
3
-
4
- export const createGroup = (
5
- name: string,
6
- method: (push: (rule: Rule) => void, subgroup: (group: Group) => void) => void,
7
- ): Group => {
8
- const rules: Rule[] = [];
9
- const push = (rule: Rule) => rules.push(rule);
10
- const subgroup = (group: Group) => group.rules.forEach(push);
11
- method(push, subgroup);
12
- return { name, rules };
13
- };
@@ -1,4 +0,0 @@
1
- import { createRule } from '@rules/models/rule/service';
2
- import { noUnusedFeatures } from './noUnusedFeatures';
3
-
4
- export const yagniRules = createRule('YAGNI', () => [], [noUnusedFeatures]);
@@ -1,4 +0,0 @@
1
- export * from './noUnusedClasses';
2
- export * from './noUnusedFunctions';
3
- export * from './noUnusedVariables';
4
- export * from './main';
@@ -1,10 +0,0 @@
1
- import { noUnusedClasses } from './noUnusedClasses';
2
- import { noUnusedFunctions } from './noUnusedFunctions';
3
- import { noUnusedVariables } from './noUnusedVariables';
4
- import { createRule } from '@rules/models/rule/service';
5
-
6
- export const noUnusedFeatures = createRule('No unused features', () => [], [
7
- noUnusedVariables,
8
- noUnusedFunctions,
9
- noUnusedClasses,
10
- ]);
@@ -1,26 +0,0 @@
1
- import { IRKind } from '@ir/models/Node';
2
- import { Level, type Message } from '@rules/models/message/model';
3
- import type { Rule } from '@rules/models/rule/model';
4
- import { flattenNodes } from '../utils';
5
- import { createRule } from '@rules/models/rule/service';
6
-
7
- export const noUnusedClasses: Rule = createRule('No unused classes', (file) => {
8
- const messages: Message[] = [];
9
- const allNodes = flattenNodes(file.program);
10
- const declaredClasses = allNodes.filter((n) => n.kind === IRKind.Class);
11
- const referencedNames = new Set(
12
- allNodes.filter((n) => n.kind !== IRKind.Class).map((n) => n.name),
13
- );
14
-
15
- for (const cls of declaredClasses) {
16
- if (!referencedNames.has(cls.name)) {
17
- messages.push({
18
- message: `Class '${cls.name}' is declared but never used.`,
19
- line: cls.line,
20
- level: Level.Error,
21
- });
22
- }
23
- }
24
-
25
- return messages;
26
- });
@@ -1,26 +0,0 @@
1
- import { IRKind } from '@ir/models/Node';
2
- import { Level, type Message } from '@rules/models/message/model';
3
- import type { Rule } from '@rules/models/rule/model';
4
- import { flattenNodes } from '../utils';
5
- import { createRule } from '@rules/models/rule/service';
6
-
7
- export const noUnusedFunctions: Rule = createRule('No unused functions', (file) => {
8
- const messages: Message[] = [];
9
- const allNodes = flattenNodes(file.program);
10
- const declaredFunctions = allNodes.filter((n) => n.kind === IRKind.Function);
11
- const referencedNames = new Set(
12
- allNodes.filter((n) => n.kind !== IRKind.Function).map((n) => n.name),
13
- );
14
-
15
- for (const fn of declaredFunctions) {
16
- if (!referencedNames.has(fn.name)) {
17
- messages.push({
18
- message: `Function '${fn.name}' is declared but never called.`,
19
- line: fn.line,
20
- level: Level.Error,
21
- });
22
- }
23
- }
24
-
25
- return messages;
26
- });
@@ -1,26 +0,0 @@
1
- import { IRKind } from '@ir/models/Node';
2
- import { Level, type Message } from '@rules/models/message/model';
3
- import type { Rule } from '@rules/models/rule/model';
4
- import { flattenNodes } from '../utils';
5
- import { createRule } from '@rules/models/rule/service';
6
-
7
- export const noUnusedVariables: Rule = createRule('No unused variables', (file) => {
8
- const messages: Message[] = [];
9
- const allNodes = flattenNodes(file.program);
10
- const declaredVariables = allNodes.filter((n) => n.kind === IRKind.Variable);
11
- const referencedNames = new Set(
12
- allNodes.filter((n) => n.kind !== IRKind.Variable).map((n) => n.name),
13
- );
14
-
15
- for (const variable of declaredVariables) {
16
- if (!referencedNames.has(variable.name)) {
17
- messages.push({
18
- message: `Variable '${variable.name}' is declared but never used.`,
19
- line: variable.line,
20
- level: Level.Error,
21
- });
22
- }
23
- }
24
-
25
- return messages;
26
- });
@@ -1,5 +0,0 @@
1
- import type { IRNode } from '@ir/$/models/Node';
2
-
3
- export function flattenNodes(nodes: IRNode[]): IRNode[] {
4
- return nodes.flatMap((node) => [node, ...flattenNodes(node.value)]);
5
- }
package/tsup.config.ts DELETED
@@ -1,13 +0,0 @@
1
- import { defineConfig } from 'tsup';
2
-
3
- export default defineConfig({
4
- entry: ['src/index.ts', 'src/cli/index.ts'],
5
- format: ['esm', 'cjs'],
6
- dts: true,
7
- clean: true,
8
- esbuildOptions(options) {
9
- options.alias = {
10
- src: './src',
11
- };
12
- },
13
- });