eslint-interactive 11.0.0 → 11.0.2

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 (181) hide show
  1. package/dist/action/apply-suggestions.d.ts +6 -0
  2. package/dist/action/apply-suggestions.d.ts.map +1 -0
  3. package/dist/action/apply-suggestions.js +28 -0
  4. package/dist/action/apply-suggestions.js.map +1 -0
  5. package/dist/action/convert-error-to-warning-per-file.d.ts +6 -0
  6. package/dist/action/convert-error-to-warning-per-file.d.ts.map +1 -0
  7. package/dist/action/convert-error-to-warning-per-file.js +8 -0
  8. package/dist/action/convert-error-to-warning-per-file.js.map +1 -0
  9. package/dist/action/disable-per-file.d.ts +6 -0
  10. package/dist/action/disable-per-file.d.ts.map +1 -0
  11. package/dist/action/disable-per-file.js +12 -0
  12. package/dist/action/disable-per-file.js.map +1 -0
  13. package/dist/action/disable-per-line.d.ts +6 -0
  14. package/dist/action/disable-per-line.d.ts.map +1 -0
  15. package/dist/action/disable-per-line.js +12 -0
  16. package/dist/action/disable-per-line.js.map +1 -0
  17. package/dist/action/fix.d.ts +6 -0
  18. package/dist/action/fix.d.ts.map +1 -0
  19. package/dist/action/fix.js +6 -0
  20. package/dist/action/fix.js.map +1 -0
  21. package/dist/action/index.d.ts +8 -0
  22. package/dist/action/index.d.ts.map +1 -0
  23. package/dist/action/index.js +8 -0
  24. package/dist/action/index.js.map +1 -0
  25. package/dist/action/make-fixable-and-fix.d.ts +6 -0
  26. package/dist/action/make-fixable-and-fix.d.ts.map +1 -0
  27. package/dist/action/make-fixable-and-fix.js +28 -0
  28. package/dist/action/make-fixable-and-fix.js.map +1 -0
  29. package/dist/action/print-result-details.d.ts +5 -0
  30. package/dist/action/print-result-details.d.ts.map +1 -0
  31. package/dist/action/print-result-details.js +28 -0
  32. package/dist/action/print-result-details.js.map +1 -0
  33. package/dist/cli/log.d.ts +6 -0
  34. package/dist/cli/log.d.ts.map +1 -0
  35. package/dist/cli/log.js +9 -0
  36. package/dist/cli/log.js.map +1 -0
  37. package/dist/cli/ora.d.ts +4 -0
  38. package/dist/cli/ora.d.ts.map +1 -0
  39. package/dist/cli/ora.js +23 -0
  40. package/dist/cli/ora.js.map +1 -0
  41. package/dist/cli/package.d.ts +2 -0
  42. package/dist/cli/package.d.ts.map +1 -0
  43. package/dist/cli/package.js +6 -0
  44. package/dist/cli/package.js.map +1 -0
  45. package/dist/cli/pager.d.ts +2 -0
  46. package/dist/cli/pager.d.ts.map +1 -0
  47. package/dist/cli/pager.js +34 -0
  48. package/dist/cli/pager.js.map +1 -0
  49. package/dist/cli/parse-argv.d.ts +24 -0
  50. package/dist/cli/parse-argv.d.ts.map +1 -0
  51. package/dist/cli/parse-argv.js +102 -0
  52. package/dist/cli/parse-argv.js.map +1 -0
  53. package/dist/cli/prompt.d.ts +61 -0
  54. package/dist/cli/prompt.d.ts.map +1 -0
  55. package/dist/cli/prompt.js +176 -0
  56. package/dist/cli/prompt.js.map +1 -0
  57. package/dist/cli/run.d.ts +8 -0
  58. package/dist/cli/run.d.ts.map +1 -0
  59. package/dist/cli/run.js +66 -0
  60. package/dist/cli/run.js.map +1 -0
  61. package/dist/config.d.ts +46 -0
  62. package/dist/config.d.ts.map +1 -0
  63. package/dist/config.js +91 -0
  64. package/dist/config.js.map +1 -0
  65. package/dist/core-worker.d.ts +23 -0
  66. package/dist/core-worker.d.ts.map +1 -0
  67. package/dist/core-worker.js +55 -0
  68. package/dist/core-worker.js.map +1 -0
  69. package/dist/core.d.ts +79 -0
  70. package/dist/core.d.ts.map +1 -0
  71. package/dist/core.js +159 -0
  72. package/dist/core.js.map +1 -0
  73. package/dist/eslint/linter.d.ts +18 -0
  74. package/dist/eslint/linter.d.ts.map +1 -0
  75. package/dist/eslint/linter.js +67 -0
  76. package/dist/eslint/linter.js.map +1 -0
  77. package/dist/eslint/report-translator.d.ts +9 -0
  78. package/dist/eslint/report-translator.d.ts.map +1 -0
  79. package/dist/eslint/report-translator.js +77 -0
  80. package/dist/eslint/report-translator.js.map +1 -0
  81. package/dist/eslint/rule-fixer.d.ts +80 -0
  82. package/dist/eslint/rule-fixer.d.ts.map +1 -0
  83. package/dist/eslint/rule-fixer.js +118 -0
  84. package/dist/eslint/rule-fixer.js.map +1 -0
  85. package/dist/eslint/source-code-fixer.d.ts +19 -0
  86. package/dist/eslint/source-code-fixer.d.ts.map +1 -0
  87. package/dist/eslint/source-code-fixer.js +131 -0
  88. package/dist/eslint/source-code-fixer.js.map +1 -0
  89. package/dist/fix/apply-auto-fixes.d.ts +8 -0
  90. package/dist/fix/apply-auto-fixes.d.ts.map +1 -0
  91. package/dist/fix/apply-auto-fixes.js +8 -0
  92. package/dist/fix/apply-auto-fixes.js.map +1 -0
  93. package/dist/fix/apply-suggestions.d.ts +11 -0
  94. package/dist/fix/apply-suggestions.d.ts.map +1 -0
  95. package/dist/fix/apply-suggestions.js +25 -0
  96. package/dist/fix/apply-suggestions.js.map +1 -0
  97. package/dist/fix/convert-error-to-warning-per-file.d.ts +10 -0
  98. package/dist/fix/convert-error-to-warning-per-file.d.ts.map +1 -0
  99. package/dist/fix/convert-error-to-warning-per-file.js +28 -0
  100. package/dist/fix/convert-error-to-warning-per-file.js.map +1 -0
  101. package/dist/fix/disable-per-file.d.ts +12 -0
  102. package/dist/fix/disable-per-file.d.ts.map +1 -0
  103. package/dist/fix/disable-per-file.js +63 -0
  104. package/dist/fix/disable-per-file.js.map +1 -0
  105. package/dist/fix/disable-per-line.d.ts +12 -0
  106. package/dist/fix/disable-per-line.d.ts.map +1 -0
  107. package/dist/fix/disable-per-line.js +61 -0
  108. package/dist/fix/disable-per-line.js.map +1 -0
  109. package/dist/fix/index.d.ts +19 -0
  110. package/dist/fix/index.d.ts.map +1 -0
  111. package/dist/fix/index.js +8 -0
  112. package/dist/fix/index.js.map +1 -0
  113. package/dist/fix/make-fixable-and-fix.d.ts +12 -0
  114. package/dist/fix/make-fixable-and-fix.d.ts.map +1 -0
  115. package/dist/fix/make-fixable-and-fix.js +60 -0
  116. package/dist/fix/make-fixable-and-fix.js.map +1 -0
  117. package/dist/formatter/colors.d.ts +4 -0
  118. package/dist/formatter/colors.d.ts.map +1 -0
  119. package/dist/formatter/colors.js +5 -0
  120. package/dist/formatter/colors.js.map +1 -0
  121. package/dist/formatter/format-by-files.d.ts +3 -0
  122. package/dist/formatter/format-by-files.d.ts.map +1 -0
  123. package/dist/formatter/format-by-files.js +41 -0
  124. package/dist/formatter/format-by-files.js.map +1 -0
  125. package/dist/formatter/format-by-rules.d.ts +3 -0
  126. package/dist/formatter/format-by-rules.d.ts.map +1 -0
  127. package/dist/formatter/format-by-rules.js +39 -0
  128. package/dist/formatter/format-by-rules.js.map +1 -0
  129. package/dist/formatter/index.d.ts +4 -0
  130. package/dist/formatter/index.d.ts.map +1 -0
  131. package/dist/formatter/index.js +7 -0
  132. package/dist/formatter/index.js.map +1 -0
  133. package/dist/formatter/take-rule-statistics.d.ts +18 -0
  134. package/dist/formatter/take-rule-statistics.d.ts.map +1 -0
  135. package/dist/formatter/take-rule-statistics.js +51 -0
  136. package/dist/formatter/take-rule-statistics.js.map +1 -0
  137. package/dist/index.d.ts +6 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/index.js +5 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/scene/check-results.d.ts +21 -0
  142. package/dist/scene/check-results.d.ts.map +1 -0
  143. package/dist/scene/check-results.js +22 -0
  144. package/dist/scene/check-results.js.map +1 -0
  145. package/dist/scene/index.d.ts +25 -0
  146. package/dist/scene/index.d.ts.map +1 -0
  147. package/dist/scene/index.js +6 -0
  148. package/dist/scene/index.js.map +1 -0
  149. package/dist/scene/lint.d.ts +8 -0
  150. package/dist/scene/lint.d.ts.map +1 -0
  151. package/dist/scene/lint.js +31 -0
  152. package/dist/scene/lint.js.map +1 -0
  153. package/dist/scene/select-action.d.ts +20 -0
  154. package/dist/scene/select-action.d.ts.map +1 -0
  155. package/dist/scene/select-action.js +50 -0
  156. package/dist/scene/select-action.js.map +1 -0
  157. package/dist/scene/select-rule-ids.d.ts +15 -0
  158. package/dist/scene/select-rule-ids.d.ts.map +1 -0
  159. package/dist/scene/select-rule-ids.js +10 -0
  160. package/dist/scene/select-rule-ids.js.map +1 -0
  161. package/dist/util/array.d.ts +3 -0
  162. package/dist/util/array.d.ts.map +1 -0
  163. package/dist/util/array.js +14 -0
  164. package/dist/util/array.js.map +1 -0
  165. package/dist/util/cache.d.ts +5 -0
  166. package/dist/util/cache.d.ts.map +1 -0
  167. package/dist/util/cache.js +15 -0
  168. package/dist/util/cache.js.map +1 -0
  169. package/dist/util/eslint.d.ts +99 -0
  170. package/dist/util/eslint.d.ts.map +1 -0
  171. package/dist/util/eslint.js +201 -0
  172. package/dist/util/eslint.js.map +1 -0
  173. package/dist/util/filter-script.d.ts +6 -0
  174. package/dist/util/filter-script.d.ts.map +1 -0
  175. package/dist/util/filter-script.js +38 -0
  176. package/dist/util/filter-script.js.map +1 -0
  177. package/dist/util/type-check.d.ts +6 -0
  178. package/dist/util/type-check.d.ts.map +1 -0
  179. package/dist/util/type-check.js +8 -0
  180. package/dist/util/type-check.js.map +1 -0
  181. package/package.json +2 -2
@@ -0,0 +1,201 @@
1
+ import { unique } from './array.js';
2
+ const COMMENT_RE = /^\s*(?<header>eslint-disable|eslint-disable-next-line)\s+(?<ruleList>[@a-z0-9\-_$/]*(?:\s*,\s*[@a-z0-9\-_$/]*)*(?:\s*,)?)(?:\s+--\s+(?<description>.*\S))?\s*$/u;
3
+ const SHEBANG_PATTERN = /^#!.+?\r?\n/u;
4
+ /**
5
+ * Parses the comment as an ESLint disable comment.
6
+ * Returns undefined if the comment cannot be parsed as a disable comment.
7
+ *
8
+ * ## Reference: Structure of a disable comment
9
+ * /* eslint-disable-next-line rule-a, rule-b, rule-c, rule-d -- I'm the rules.
10
+ * ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^
11
+ * | | | |
12
+ * header | | |
13
+ * ruleList | |
14
+ * descriptionHeader |
15
+ * description
16
+ */
17
+ export function parseDisableComment(comment) {
18
+ // NOTE: Comment nodes should always have range and loc, but they are optional in the types.
19
+ // If range or loc is missing, consider the parsing failed.
20
+ if (!comment.range || !comment.loc)
21
+ return undefined;
22
+ const result = COMMENT_RE.exec(comment.value);
23
+ if (!result)
24
+ return undefined;
25
+ if (!result.groups)
26
+ return undefined;
27
+ const { header, ruleList, description } = result.groups;
28
+ if (header === undefined || ruleList === undefined)
29
+ return undefined;
30
+ const ruleIds = ruleList
31
+ .split(',')
32
+ .map((r) => r.trim())
33
+ // Exclude empty strings
34
+ .filter((ruleId) => ruleId !== '');
35
+ const scope = header === 'eslint-disable-next-line' ? 'next-line' : 'file';
36
+ // A file scope comment must be block-style.
37
+ if (scope === 'file' && comment.type === 'Line')
38
+ return undefined;
39
+ return {
40
+ type: comment.type,
41
+ scope: header === 'eslint-disable-next-line' ? 'next-line' : 'file',
42
+ ruleIds,
43
+ // description is optional
44
+ ...(description === '' || description === undefined ? {} : { description }),
45
+ range: comment.range,
46
+ loc: comment.loc,
47
+ };
48
+ }
49
+ /**
50
+ * Convert text to comment text.
51
+ */
52
+ export function toCommentText(args) {
53
+ const { type, text } = args;
54
+ if (type === 'Line') {
55
+ return `// ${text}`;
56
+ }
57
+ else {
58
+ return `/* ${text} */`;
59
+ }
60
+ }
61
+ /**
62
+ * Convert `DisableComment` to comment text.
63
+ */
64
+ export function toDisableCommentText({ type, scope, ruleIds, description, }) {
65
+ const header = scope === 'next-line' ? 'eslint-disable-next-line' : 'eslint-disable';
66
+ const ruleList = unique(ruleIds).join(', ');
67
+ const footer = description === undefined ? '' : ` -- ${description}`;
68
+ return toCommentText({ type, text: `${header} ${ruleList}${footer}` });
69
+ }
70
+ function getIndentFromLine(sourceCode, line) {
71
+ const headNodeIndex = sourceCode.getIndexFromLoc({ line, column: 0 });
72
+ // Extract the same indent as the line we want to fix
73
+ const indent = sourceCode.text.slice(headNodeIndex, headNodeIndex +
74
+ sourceCode.text
75
+ .slice(headNodeIndex)
76
+ // ref: https://tc39.es/ecma262/#sec-white-space
77
+ // eslint-disable-next-line no-control-regex
78
+ .search(/[^\u{0009}\u{000B}\u{000C}\u{FEFF}\p{gc=Space_Separator}]/u));
79
+ return indent;
80
+ }
81
+ function isLineInJSXText(sourceCode, line) {
82
+ const headNodeIndex = sourceCode.getIndexFromLoc({ line, column: 0 });
83
+ const headNode = sourceCode.getNodeByRangeIndex(headNodeIndex);
84
+ return headNode?.type === 'JSXText';
85
+ }
86
+ /**
87
+ * Merge the ruleIds of the disable comments.
88
+ * @param a The ruleIds of first disable comment
89
+ * @param b The ruleIds of second disable comment
90
+ * @returns The ruleIds of merged disable comment
91
+ */
92
+ export function mergeRuleIds(a, b) {
93
+ return unique([...a, ...b]);
94
+ }
95
+ /**
96
+ * Merge the description of the disable comments.
97
+ * @param a The description of first disable comment
98
+ * @param b The description of second disable comment
99
+ * @returns The description of merged disable comment
100
+ */
101
+ export function mergeDescription(a, b) {
102
+ if (a === undefined && b === undefined)
103
+ return undefined;
104
+ if (a === undefined)
105
+ return b;
106
+ if (b === undefined)
107
+ return a;
108
+ return `${a}, ${b}`;
109
+ }
110
+ export function insertDescriptionCommentStatementBeforeLine(args) {
111
+ const { fixer, sourceCode, line, description } = args;
112
+ const indent = getIndentFromLine(sourceCode, line);
113
+ const headNodeIndex = sourceCode.getIndexFromLoc({ line, column: 0 });
114
+ if (isLineInJSXText(sourceCode, line)) {
115
+ const commentText = toCommentText({ type: 'Block', text: description });
116
+ return fixer.insertTextBeforeRange([headNodeIndex, headNodeIndex], `${indent}{${commentText}}\n`);
117
+ }
118
+ else {
119
+ const commentText = toCommentText({ type: 'Line', text: description });
120
+ return fixer.insertTextBeforeRange([headNodeIndex, headNodeIndex], `${indent}${commentText}\n`);
121
+ }
122
+ }
123
+ /**
124
+ * Update existing disable comment.
125
+ * @returns The eslint's fix object
126
+ */
127
+ export function updateDisableComment(args) {
128
+ const { fixer, disableComment: existingDisableComment, newRules, newDescription } = args;
129
+ const newDisableCommentText = toDisableCommentText({
130
+ type: existingDisableComment.type,
131
+ scope: existingDisableComment.scope,
132
+ ruleIds: newRules,
133
+ description: newDescription,
134
+ });
135
+ return fixer.replaceTextRange(existingDisableComment.range, newDisableCommentText);
136
+ }
137
+ export function insertDisableCommentStatementBeforeLine(args) {
138
+ const { fixer, sourceCode, line, scope, ruleIds, description } = args;
139
+ const indent = getIndentFromLine(sourceCode, line);
140
+ const headNodeIndex = sourceCode.getIndexFromLoc({ line, column: 0 });
141
+ const isInJSXText = isLineInJSXText(sourceCode, line);
142
+ const type = isInJSXText || scope === 'file' ? 'Block' : 'Line';
143
+ const disableCommentText = toDisableCommentText({
144
+ type,
145
+ scope,
146
+ ruleIds,
147
+ description,
148
+ });
149
+ if (isInJSXText) {
150
+ return fixer.insertTextBeforeRange([headNodeIndex, headNodeIndex], `${indent}{${disableCommentText}}\n`);
151
+ }
152
+ else {
153
+ return fixer.insertTextBeforeRange([headNodeIndex, headNodeIndex], `${indent}${disableCommentText}\n`);
154
+ }
155
+ }
156
+ /**
157
+ * Convert `InlineConfigComment` to comment text.
158
+ */
159
+ export function toInlineConfigCommentText({ rulesRecord, description }) {
160
+ const header = 'eslint';
161
+ const rulesRecordText = Object.entries(rulesRecord)
162
+ .map(([ruleId, ruleEntry]) => {
163
+ // TODO: Inherit options of the rule set by the user in eslintrc if the option exists.
164
+ return `${ruleId}: ${JSON.stringify(ruleEntry)}`;
165
+ })
166
+ .join(', ');
167
+ if (description === undefined) {
168
+ return `/* ${header} ${rulesRecordText} */`;
169
+ }
170
+ else {
171
+ return `/* ${header} ${rulesRecordText} -- ${description} */`;
172
+ }
173
+ }
174
+ /**
175
+ * Create the results with only messages with the specified rule ids.
176
+ * @param results The lint results.
177
+ * @param ruleIds The rule ids.
178
+ * @returns The results with only messages with the specified rule ids
179
+ */
180
+ export function filterResultsByRuleId(results, ruleIds) {
181
+ return results
182
+ .map((result) => {
183
+ return {
184
+ ...result,
185
+ messages: result.messages.filter((message) => ruleIds.includes(message.ruleId)),
186
+ };
187
+ })
188
+ .filter((result) => result.messages.length > 0);
189
+ }
190
+ /**
191
+ * Find shebang from the first line of the file.
192
+ * @param sourceCodeText The source code text of the file.
193
+ * @returns The information of shebang. If the file does not have shebang, return null.
194
+ */
195
+ export function findShebang(sourceCodeText) {
196
+ const result = SHEBANG_PATTERN.exec(sourceCodeText);
197
+ if (!result)
198
+ return null;
199
+ return { range: [0, result[0].length] };
200
+ }
201
+ //# sourceMappingURL=eslint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../src/util/eslint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function editFileWithEditor(filepath: string): Promise<string>;
2
+ export declare function generateFilterScriptFilePath(ruleIds: string[]): string;
3
+ export declare function generateFixableMakerScriptFilePath(ruleIds: string[]): string;
4
+ export declare function generateExampleFilterScriptFilePath(): string;
5
+ export declare function generateExampleFixableMakerScriptFilePath(): string;
6
+ //# sourceMappingURL=filter-script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-script.d.ts","sourceRoot":"","sources":["../../src/util/filter-script.ts"],"names":[],"mappings":"AAeA,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1E;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAItE;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAI5E;AAED,wBAAgB,mCAAmC,IAAI,MAAM,CAE5D;AAED,wBAAgB,yCAAyC,IAAI,MAAM,CAElE"}
@@ -0,0 +1,38 @@
1
+ import { exec as execOriginal } from 'node:child_process';
2
+ import { mkdir, appendFile, readFile, access } from 'node:fs/promises';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { promisify } from 'node:util';
6
+ import { getCacheDir } from './cache.js';
7
+ const exec = promisify(execOriginal);
8
+ const DEFAULT_EDITOR_COMMAND = 'vi';
9
+ function getEditorCommand() {
10
+ return process.env['EDITOR'] ?? DEFAULT_EDITOR_COMMAND;
11
+ }
12
+ export async function editFileWithEditor(filepath) {
13
+ const command = getEditorCommand();
14
+ await mkdir(dirname(filepath), { recursive: true });
15
+ await access(filepath).catch(async () => {
16
+ await appendFile(filepath, '', 'utf8');
17
+ });
18
+ await exec(`${command} ${filepath}`);
19
+ const newContent = await readFile(filepath, 'utf8');
20
+ return newContent;
21
+ }
22
+ export function generateFilterScriptFilePath(ruleIds) {
23
+ const basename = `${ruleIds.join('_').replace(/[^\w-]/gu, '')}.js`;
24
+ const filepath = join(getCacheDir(), 'filter-script', basename);
25
+ return filepath;
26
+ }
27
+ export function generateFixableMakerScriptFilePath(ruleIds) {
28
+ const basename = `${ruleIds.join('_').replace(/[^\w-]/gu, '')}.js`;
29
+ const filepath = join(getCacheDir(), 'fixable-maker-script', basename);
30
+ return filepath;
31
+ }
32
+ export function generateExampleFilterScriptFilePath() {
33
+ return join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'static', 'example-filter-script.js');
34
+ }
35
+ export function generateExampleFixableMakerScriptFilePath() {
36
+ return join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'static', 'example-fixable-maker-script.js');
37
+ }
38
+ //# sourceMappingURL=filter-script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-script.js","sourceRoot":"","sources":["../../src/util/filter-script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAErC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QACtC,MAAM,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAiB;IAC5D,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,OAAiB;IAClE,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mCAAmC;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,0BAA0B,CAAC,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,yCAAyC;IACvD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AAChH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function unreachable(message?: string): never;
2
+ export declare function notEmpty<TValue>(value: TValue | null | undefined): value is TValue;
3
+ export type DeepPartial<T> = {
4
+ [P in keyof T]?: T[P] extends Record<string, unknown> ? DeepPartial<T[P]> : T[P];
5
+ };
6
+ //# sourceMappingURL=type-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-check.d.ts","sourceRoot":"","sources":["../../src/util/type-check.ts"],"names":[],"mappings":"AACA,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAEnD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAElF;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /* istanbul ignore next */
2
+ export function unreachable(message) {
3
+ throw new Error(message ?? 'unreachable code');
4
+ }
5
+ export function notEmpty(value) {
6
+ return value !== null && value !== undefined;
7
+ }
8
+ //# sourceMappingURL=type-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-check.js","sourceRoot":"","sources":["../../src/util/type-check.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,kBAAkB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAS,KAAgC;IAC/D,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eslint-interactive",
3
3
  "description": "The CLI tool to run `eslint --fix` for each rule",
4
- "version": "11.0.0",
4
+ "version": "11.0.2",
5
5
  "repository": "https://github.com/mizdra/eslint-interactive.git",
6
6
  "author": "mizdra <pp.mizdra@gmail.com>",
7
7
  "license": "MIT",
@@ -56,7 +56,7 @@
56
56
  "yargs": "^17.7.2"
57
57
  },
58
58
  "peerDependencies": {
59
- "eslint": ">=8.45.0, 9.0.0-alpha.0"
59
+ "eslint": "^8.45.0 || ^9.0.0"
60
60
  },
61
61
  "engines": {
62
62
  "node": ">=18.0.0"