ignore-lint-errors 1.1.4 → 1.2.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.
@@ -1,7 +1,8 @@
1
1
  import { readFileSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { removeFiles } from '@codemod-utils/files';
4
- import { ignoreErrors } from '../../utils/ignore-errors/eslint.js';
4
+ import { ignoreErrors, ignoreErrorsTemplateTag, } from '../../utils/ignore-errors/eslint.js';
5
+ import { isTemplateTag } from '../../utils/ignore-errors/shared/index.js';
5
6
  import { outputFilePath, parseOutputFile } from '../../utils/linters/eslint.js';
6
7
  export function ignoreErrorsFromEslint(options) {
7
8
  const { dependencies, projectRoot } = options;
@@ -12,7 +13,13 @@ export function ignoreErrorsFromEslint(options) {
12
13
  const filesWithErrors = parseOutputFile(outputFile, projectRoot);
13
14
  filesWithErrors.forEach(({ filePath, lintErrors }) => {
14
15
  const file = readFileSync(join(projectRoot, filePath), 'utf8');
15
- const newFile = ignoreErrors(file, lintErrors);
16
+ let newFile;
17
+ if (isTemplateTag(filePath)) {
18
+ newFile = ignoreErrorsTemplateTag(file, lintErrors);
19
+ }
20
+ else {
21
+ newFile = ignoreErrors(file, lintErrors);
22
+ }
16
23
  writeFileSync(join(projectRoot, filePath), newFile, 'utf8');
17
24
  });
18
25
  removeFiles([outputFilePath], { projectRoot });
@@ -1,8 +1,8 @@
1
1
  import { readFileSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { removeFiles } from '@codemod-utils/files';
4
- import { areTemplateTagsValid } from '../../utils/ignore-errors/shared/index.js';
5
- import { ignoreErrors, ignoreErrorsFallback, } from '../../utils/ignore-errors/typescript.js';
4
+ import { areTemplateTagsValid, isTemplateTag, } from '../../utils/ignore-errors/shared/index.js';
5
+ import { ignoreErrors, ignoreErrorsFallback, ignoreErrorsTemplateTag, } from '../../utils/ignore-errors/typescript.js';
6
6
  import { outputFilePath, parseOutputFile, } from '../../utils/linters/typescript.js';
7
7
  export function ignoreErrorsFromTypescript(options) {
8
8
  const { dependencies, projectRoot } = options;
@@ -13,9 +13,15 @@ export function ignoreErrorsFromTypescript(options) {
13
13
  const filesWithErrors = parseOutputFile(outputFile);
14
14
  filesWithErrors.forEach(({ filePath, lintErrors }) => {
15
15
  const file = readFileSync(join(projectRoot, filePath), 'utf8');
16
- let newFile = ignoreErrors(file, lintErrors);
17
- if (!areTemplateTagsValid(newFile)) {
18
- newFile = ignoreErrorsFallback(file, lintErrors);
16
+ let newFile;
17
+ if (isTemplateTag(filePath)) {
18
+ newFile = ignoreErrorsTemplateTag(file, lintErrors);
19
+ if (!areTemplateTagsValid(newFile)) {
20
+ newFile = ignoreErrorsFallback(file, lintErrors);
21
+ }
22
+ }
23
+ else {
24
+ newFile = ignoreErrors(file, lintErrors);
19
25
  }
20
26
  writeFileSync(join(projectRoot, filePath), newFile, 'utf8');
21
27
  });
@@ -1,23 +1,47 @@
1
1
  import { EOL } from 'node:os';
2
- import { getIgnoredRules } from './shared/index.js';
2
+ import { findTemplateTags, ignoreError } from './shared/index.js';
3
+ const ignoreDirective = 'eslint-disable-next-line';
3
4
  export function ignoreErrors(file, lintErrors) {
4
5
  const lines = file.split(EOL);
5
- const ignoreDirective = 'eslint-disable-next-line';
6
- lintErrors.forEach(({ line, message }) => {
7
- const currentIndex = line - 1;
8
- const previousIndex = Math.max(currentIndex - 1, 0);
9
- const ignoredRules = getIgnoredRules(lines[previousIndex], {
6
+ lintErrors.forEach((lintError) => {
7
+ ignoreError(lintError, {
8
+ commentStyle: 'javascript-inline',
10
9
  ignoreDirective,
10
+ lines,
11
11
  });
12
- if (ignoredRules.length === 0) {
13
- lines.splice(currentIndex, 0, `// ${ignoreDirective} ${message}`);
12
+ });
13
+ return lines.join(EOL);
14
+ }
15
+ export function ignoreErrorsTemplateTag(file, lintErrors) {
16
+ const lines = file.split(EOL);
17
+ const templateTags = findTemplateTags(file);
18
+ lintErrors.forEach((lintError) => {
19
+ const { line, message } = lintError;
20
+ const templateTagIndex = templateTags.findIndex(({ lineRange }) => {
21
+ return lineRange.start <= line && line <= lineRange.end;
22
+ });
23
+ const erroredInTemplate = templateTagIndex >= 0;
24
+ if (!erroredInTemplate) {
25
+ ignoreError(lintError, {
26
+ commentStyle: 'javascript-inline',
27
+ ignoreDirective,
28
+ lines,
29
+ });
30
+ return;
14
31
  }
15
- else {
16
- const newMessage = [...ignoredRules, ...message.split(', ')]
17
- .sort()
18
- .join(', ');
19
- lines.splice(previousIndex, 1, `// ${ignoreDirective} ${newMessage}`);
32
+ const { contents, lineRange } = templateTags[templateTagIndex];
33
+ if (lineRange.start < lineRange.end) {
34
+ ignoreError(lintError, {
35
+ commentStyle: 'template-inline',
36
+ ignoreDirective,
37
+ lines,
38
+ });
39
+ return;
20
40
  }
41
+ const currentIndex = line - 1;
42
+ const comment = `{{! ${ignoreDirective} ${message} }}`;
43
+ const newTemplate = lines[currentIndex].replace(/<template>(.+)<\/template>/, [`<template>${comment}`, `${contents}</template>`].join(EOL));
44
+ lines.splice(currentIndex, 1, newTemplate);
21
45
  });
22
46
  return lines.join(EOL);
23
47
  }
@@ -1,23 +1,14 @@
1
1
  import { EOL } from 'node:os';
2
- import { getIgnoredRules } from './shared/index.js';
2
+ import { ignoreError } from './shared/index.js';
3
+ const ignoreDirective = 'oxlint-disable-next-line';
3
4
  export function ignoreErrors(file, lintErrors) {
4
5
  const lines = file.split(EOL);
5
- const ignoreDirective = 'oxlint-disable-next-line';
6
- lintErrors.forEach(({ line, message }) => {
7
- const currentIndex = line - 1;
8
- const previousIndex = Math.max(currentIndex - 1, 0);
9
- const ignoredRules = getIgnoredRules(lines[previousIndex], {
6
+ lintErrors.forEach((lintError) => {
7
+ ignoreError(lintError, {
8
+ commentStyle: 'javascript-inline',
10
9
  ignoreDirective,
10
+ lines,
11
11
  });
12
- if (ignoredRules.length === 0) {
13
- lines.splice(currentIndex, 0, `// ${ignoreDirective} ${message}`);
14
- }
15
- else {
16
- const newMessage = [...ignoredRules, ...message.split(', ')]
17
- .sort()
18
- .join(', ');
19
- lines.splice(previousIndex, 1, `// ${ignoreDirective} ${newMessage}`);
20
- }
21
12
  });
22
13
  return lines.join(EOL);
23
14
  }
@@ -0,0 +1,15 @@
1
+ import { AST } from '@codemod-utils/ast-template';
2
+ import { findTemplateTags } from '@codemod-utils/ast-template-tag';
3
+ export function areTemplateTagsValid(file) {
4
+ let isValid = true;
5
+ try {
6
+ const templateTags = findTemplateTags(file);
7
+ templateTags.forEach(({ contents }) => {
8
+ AST.traverse(contents);
9
+ });
10
+ }
11
+ catch {
12
+ isValid = false;
13
+ }
14
+ return isValid;
15
+ }
@@ -0,0 +1,21 @@
1
+ import { findTemplateTags as upstreamFindTemplateTags } from '@codemod-utils/ast-template-tag';
2
+ export function findTemplateTags(file) {
3
+ function getLOC(file) {
4
+ const matches = file.match(/\r?\n/g);
5
+ return (matches ?? []).length;
6
+ }
7
+ const templateTags = upstreamFindTemplateTags(file);
8
+ return templateTags.map((templateTag) => {
9
+ const { contents, range } = templateTag;
10
+ const lineStart = getLOC(file.substring(0, range.startChar)) + 1;
11
+ const lineEnd = getLOC(file.substring(0, range.endChar)) + 1;
12
+ const lineRange = {
13
+ end: lineEnd,
14
+ start: lineStart,
15
+ };
16
+ return {
17
+ contents,
18
+ lineRange,
19
+ };
20
+ });
21
+ }
@@ -0,0 +1,29 @@
1
+ import { AST } from '@codemod-utils/ast-template';
2
+ export function getIgnoredRulesInTemplate(lineOfCode, data) {
3
+ const { ignoreDirective } = data;
4
+ let ignoredRules = [];
5
+ try {
6
+ AST.traverse(lineOfCode, {
7
+ MustacheCommentStatement(node) {
8
+ const comment = node.value.trim();
9
+ if (!comment.startsWith(ignoreDirective)) {
10
+ return;
11
+ }
12
+ ignoredRules = comment
13
+ .replace(new RegExp(`^${ignoreDirective}\\s*`, 'g'), '')
14
+ .split(',')
15
+ .reduce((accumulator, token) => {
16
+ const rule = token.trim();
17
+ if (rule) {
18
+ accumulator.push(rule);
19
+ }
20
+ return accumulator;
21
+ }, []);
22
+ },
23
+ });
24
+ }
25
+ catch {
26
+ // Do nothing
27
+ }
28
+ return ignoredRules;
29
+ }
@@ -0,0 +1,31 @@
1
+ import { AST } from '@codemod-utils/ast-javascript';
2
+ export function getIgnoredRules(lineOfCode, data) {
3
+ const { ignoreDirective } = data;
4
+ let ignoredRules = [];
5
+ try {
6
+ AST.traverse(lineOfCode, {
7
+ visitComment(path) {
8
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
9
+ const comment = path.value.value.trim();
10
+ if (!comment.startsWith(ignoreDirective)) {
11
+ return false;
12
+ }
13
+ ignoredRules = comment
14
+ .replace(new RegExp(`^${ignoreDirective}\\s*`, 'g'), '')
15
+ .split(',')
16
+ .reduce((accumulator, token) => {
17
+ const rule = token.trim();
18
+ if (rule) {
19
+ accumulator.push(rule);
20
+ }
21
+ return accumulator;
22
+ }, []);
23
+ return false;
24
+ },
25
+ });
26
+ }
27
+ catch {
28
+ // Do nothing
29
+ }
30
+ return ignoredRules;
31
+ }
@@ -0,0 +1,39 @@
1
+ import { getIgnoredRules } from './get-ignored-rules.js';
2
+ import { getIgnoredRulesInTemplate } from './get-ignored-rules-in-template.js';
3
+ function append(ignoredRules, message) {
4
+ return [...ignoredRules, ...message.split(', ')].sort().join(', ');
5
+ }
6
+ function getComment(message, data) {
7
+ const { commentStyle, ignoreDirective } = data;
8
+ switch (commentStyle) {
9
+ case 'javascript-block': {
10
+ return `/* ${ignoreDirective} ${message} */`;
11
+ }
12
+ case 'javascript-inline': {
13
+ return `// ${ignoreDirective} ${message}`;
14
+ }
15
+ case 'template-inline': {
16
+ return `{{! ${ignoreDirective} ${message} }}`;
17
+ }
18
+ }
19
+ }
20
+ export function ignoreError(lintError, data) {
21
+ // eslint-disable-next-line prefer-const
22
+ let { line, message } = lintError;
23
+ const { commentStyle, ignoreDirective, lines } = data;
24
+ const currentIndex = line - 1;
25
+ const previousIndex = Math.max(currentIndex - 1, 0);
26
+ const ignoredRules = commentStyle === 'template-inline'
27
+ ? getIgnoredRulesInTemplate(lines[previousIndex], { ignoreDirective })
28
+ : getIgnoredRules(lines[previousIndex], { ignoreDirective });
29
+ if (ignoredRules.length > 0) {
30
+ message = append(ignoredRules, message);
31
+ }
32
+ const comment = getComment(message, data);
33
+ if (ignoredRules.length === 0) {
34
+ lines.splice(currentIndex, 0, comment);
35
+ }
36
+ else {
37
+ lines.splice(previousIndex, 1, comment);
38
+ }
39
+ }
@@ -1,65 +1,6 @@
1
- import { AST as ASTJavaScript } from '@codemod-utils/ast-javascript';
2
- import { AST as ASTTemplate } from '@codemod-utils/ast-template';
3
- import { findTemplateTags as upstreamFindTemplateTags } from '@codemod-utils/ast-template-tag';
4
- export function areTemplateTagsValid(file) {
5
- let isValid = true;
6
- try {
7
- const templateTags = upstreamFindTemplateTags(file);
8
- templateTags.forEach(({ contents }) => {
9
- ASTTemplate.traverse(contents);
10
- });
11
- }
12
- catch {
13
- isValid = false;
14
- }
15
- return isValid;
16
- }
17
- export function findTemplateTags(file) {
18
- function getLOC(file) {
19
- const matches = file.match(/\r?\n/g);
20
- return (matches ?? []).length;
21
- }
22
- const templateTags = upstreamFindTemplateTags(file);
23
- return templateTags.map((templateTag) => {
24
- const { contents, range } = templateTag;
25
- const lineStart = getLOC(file.substring(0, range.startChar)) + 1;
26
- const lineEnd = getLOC(file.substring(0, range.endChar)) + 1;
27
- const lineRange = {
28
- end: lineEnd,
29
- start: lineStart,
30
- };
31
- return {
32
- contents,
33
- lineRange,
34
- };
35
- });
36
- }
37
- export function getIgnoredRules(lineOfCode, options) {
38
- let ignoredRules = [];
39
- try {
40
- ASTJavaScript.traverse(lineOfCode, {
41
- visitComment(path) {
42
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
43
- const comment = path.value.value.trim();
44
- if (!comment.startsWith(options.ignoreDirective)) {
45
- return false;
46
- }
47
- ignoredRules = comment
48
- .replace(new RegExp(`^${options.ignoreDirective}\\s*`, 'g'), '')
49
- .split(',')
50
- .reduce((accumulator, token) => {
51
- const rule = token.trim();
52
- if (rule) {
53
- accumulator.push(rule);
54
- }
55
- return accumulator;
56
- }, []);
57
- return false;
58
- },
59
- });
60
- }
61
- catch {
62
- // Do nothing
63
- }
64
- return ignoredRules;
65
- }
1
+ export * from './are-template-tags-valid.js';
2
+ export * from './find-template-tags.js';
3
+ export * from './get-ignored-rules.js';
4
+ export * from './get-ignored-rules-in-template.js';
5
+ export * from './ignore-error.js';
6
+ export * from './is-template-tag.js';
@@ -0,0 +1,3 @@
1
+ export function isTemplateTag(filePath) {
2
+ return filePath.endsWith('.gjs') || filePath.endsWith('.gts');
3
+ }
@@ -1,23 +1,14 @@
1
1
  import { EOL } from 'node:os';
2
- import { getIgnoredRules } from './shared/index.js';
2
+ import { ignoreError } from './shared/index.js';
3
+ const ignoreDirective = 'stylelint-disable-next-line';
3
4
  export function ignoreErrors(file, lintErrors) {
4
5
  const lines = file.split(EOL);
5
- const ignoreDirective = 'stylelint-disable-next-line';
6
- lintErrors.forEach(({ line, message }) => {
7
- const currentIndex = line - 1;
8
- const previousIndex = Math.max(currentIndex - 1, 0);
9
- const ignoredRules = getIgnoredRules(lines[previousIndex], {
6
+ lintErrors.forEach((lintError) => {
7
+ ignoreError(lintError, {
8
+ commentStyle: 'javascript-block',
10
9
  ignoreDirective,
10
+ lines,
11
11
  });
12
- if (ignoredRules.length === 0) {
13
- lines.splice(currentIndex, 0, `/* ${ignoreDirective} ${message} */`);
14
- }
15
- else {
16
- const newMessage = [...ignoredRules, ...message.split(', ')]
17
- .sort()
18
- .join(', ');
19
- lines.splice(previousIndex, 1, `/* ${ignoreDirective} ${newMessage} */`);
20
- }
21
12
  });
22
13
  return lines.join(EOL);
23
14
  }
@@ -1,38 +1,34 @@
1
1
  import { EOL } from 'node:os';
2
2
  import { updateTemplates } from '@codemod-utils/ast-template-tag';
3
3
  import { findTemplateTags, getIgnoredRules } from './shared/index.js';
4
+ function getComment(message, data) {
5
+ const { ignoreDirective } = data;
6
+ return `// ${ignoreDirective}: ${message}`;
7
+ }
8
+ function ignoreError(lintError, data) {
9
+ const { line, message } = lintError;
10
+ const { lines } = data;
11
+ const currentIndex = line - 1;
12
+ const previousIndex = Math.max(currentIndex - 1, 0);
13
+ const ignoredRules = getIgnoredRules(lines[previousIndex], {
14
+ ignoreDirective: 'eslint-disable-next-line',
15
+ });
16
+ const comment = getComment(message, data);
17
+ if (ignoredRules.length === 0) {
18
+ lines.splice(currentIndex, 0, comment);
19
+ }
20
+ else {
21
+ lines.splice(previousIndex, 0, comment);
22
+ }
23
+ }
24
+ const ignoreDirective = '@ts-expect-error';
4
25
  export function ignoreErrors(file, lintErrors) {
5
26
  const lines = file.split(EOL);
6
- const templateTags = findTemplateTags(file);
7
- lintErrors.forEach(({ line, message }) => {
8
- const currentIndex = line - 1;
9
- const previousIndex = Math.max(currentIndex - 1, 0);
10
- const templateTagIndex = templateTags.findIndex(({ lineRange }) => {
11
- return lineRange.start <= line && line <= lineRange.end;
27
+ lintErrors.forEach((lintError) => {
28
+ ignoreError(lintError, {
29
+ ignoreDirective,
30
+ lines,
12
31
  });
13
- const erroredInTemplate = templateTagIndex >= 0;
14
- if (erroredInTemplate) {
15
- const comment = `{{! @glint-expect-error: ${message} }}`;
16
- const { contents, lineRange } = templateTags[templateTagIndex];
17
- if (lineRange.start === lineRange.end) {
18
- const newTemplate = lines[currentIndex].replace(/<template>(.+)<\/template>/, [`<template>${comment}`, `${contents}</template>`].join(EOL));
19
- lines.splice(currentIndex, 1, newTemplate);
20
- }
21
- else {
22
- lines.splice(currentIndex, 0, comment);
23
- }
24
- return;
25
- }
26
- const comment = `// @ts-expect-error: ${message}`;
27
- const ignoredRules = getIgnoredRules(lines[previousIndex], {
28
- ignoreDirective: 'eslint-disable-next-line',
29
- });
30
- if (ignoredRules.length === 0) {
31
- lines.splice(currentIndex, 0, comment);
32
- }
33
- else {
34
- lines.splice(previousIndex, 0, comment);
35
- }
36
32
  });
37
33
  return lines.join(EOL);
38
34
  }
@@ -41,26 +37,19 @@ export function ignoreErrorsFallback(file, lintErrors) {
41
37
  const lines = file.split(EOL);
42
38
  const templateTags = findTemplateTags(file);
43
39
  let hasErrorInTemplate = false;
44
- lintErrors.forEach(({ line, message }) => {
45
- const currentIndex = line - 1;
46
- const previousIndex = Math.max(currentIndex - 1, 0);
40
+ lintErrors.forEach((lintError) => {
41
+ const { line } = lintError;
47
42
  const erroredInTemplate = templateTags.some(({ lineRange }) => {
48
43
  return lineRange.start <= line && line <= lineRange.end;
49
44
  });
50
- if (erroredInTemplate) {
51
- hasErrorInTemplate = true;
45
+ if (!erroredInTemplate) {
46
+ ignoreError(lintError, {
47
+ ignoreDirective,
48
+ lines,
49
+ });
52
50
  return;
53
51
  }
54
- const comment = `// @ts-expect-error: ${message}`;
55
- const ignoredRules = getIgnoredRules(lines[previousIndex], {
56
- ignoreDirective: 'eslint-disable-next-line',
57
- });
58
- if (ignoredRules.length === 0) {
59
- lines.splice(currentIndex, 0, comment);
60
- }
61
- else {
62
- lines.splice(previousIndex, 0, comment);
63
- }
52
+ hasErrorInTemplate = true;
64
53
  });
65
54
  let newFile = lines.join(EOL);
66
55
  if (hasErrorInTemplate) {
@@ -71,3 +60,31 @@ export function ignoreErrorsFallback(file, lintErrors) {
71
60
  }
72
61
  return newFile;
73
62
  }
63
+ export function ignoreErrorsTemplateTag(file, lintErrors) {
64
+ const lines = file.split(EOL);
65
+ const templateTags = findTemplateTags(file);
66
+ lintErrors.forEach((lintError) => {
67
+ const { line, message } = lintError;
68
+ const templateTagIndex = templateTags.findIndex(({ lineRange }) => {
69
+ return lineRange.start <= line && line <= lineRange.end;
70
+ });
71
+ const erroredInTemplate = templateTagIndex >= 0;
72
+ if (!erroredInTemplate) {
73
+ ignoreError(lintError, {
74
+ ignoreDirective,
75
+ lines,
76
+ });
77
+ return;
78
+ }
79
+ const { contents, lineRange } = templateTags[templateTagIndex];
80
+ const currentIndex = line - 1;
81
+ const comment = `{{! @glint-expect-error: ${message} }}`;
82
+ if (lineRange.start < lineRange.end) {
83
+ lines.splice(currentIndex, 0, comment);
84
+ return;
85
+ }
86
+ const newTemplate = lines[currentIndex].replace(/<template>(.+)<\/template>/, [`<template>${comment}`, `${contents}</template>`].join(EOL));
87
+ lines.splice(currentIndex, 1, newTemplate);
88
+ });
89
+ return lines.join(EOL);
90
+ }
@@ -0,0 +1,29 @@
1
+ export function getFilesWithErrors(filePathToData) {
2
+ const filesWithErrors = [];
3
+ filePathToData.forEach((data, filePath) => {
4
+ const lintErrors = [];
5
+ data.forEach((message, line) => {
6
+ lintErrors.push({
7
+ line,
8
+ message,
9
+ });
10
+ });
11
+ if (lintErrors.length === 0) {
12
+ return;
13
+ }
14
+ lintErrors.sort((a, b) => {
15
+ if (a.line < b.line) {
16
+ return 1;
17
+ }
18
+ if (b.line < a.line) {
19
+ return -1;
20
+ }
21
+ return 0;
22
+ });
23
+ filesWithErrors.push({
24
+ filePath,
25
+ lintErrors,
26
+ });
27
+ });
28
+ return filesWithErrors;
29
+ }
@@ -0,0 +1,3 @@
1
+ export function getMessage(rules) {
2
+ return Array.from(new Set(rules.sort())).join(', ');
3
+ }
@@ -0,0 +1,4 @@
1
+ import { relative, sep } from 'node:path';
2
+ export function getRelativePath(absoluteFilePath, projectRoot) {
3
+ return relative(projectRoot, absoluteFilePath).replaceAll(sep, '/');
4
+ }
@@ -1,36 +1,3 @@
1
- import { relative, sep } from 'node:path';
2
- export function getFilesWithErrors(filePathToData) {
3
- const filesWithErrors = [];
4
- filePathToData.forEach((data, filePath) => {
5
- const lintErrors = [];
6
- data.forEach((message, line) => {
7
- lintErrors.push({
8
- line,
9
- message,
10
- });
11
- });
12
- if (lintErrors.length === 0) {
13
- return;
14
- }
15
- lintErrors.sort((a, b) => {
16
- if (a.line < b.line) {
17
- return 1;
18
- }
19
- if (b.line < a.line) {
20
- return -1;
21
- }
22
- return 0;
23
- });
24
- filesWithErrors.push({
25
- filePath,
26
- lintErrors,
27
- });
28
- });
29
- return filesWithErrors;
30
- }
31
- export function getMessage(rules) {
32
- return Array.from(new Set(rules.sort())).join(', ');
33
- }
34
- export function getRelativePath(absoluteFilePath, projectRoot) {
35
- return relative(projectRoot, absoluteFilePath).replaceAll(sep, '/');
36
- }
1
+ export * from './get-files-with-errors.js';
2
+ export * from './get-message.js';
3
+ export * from './get-relative-path.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ignore-lint-errors",
3
- "version": "1.1.4",
3
+ "version": "1.2.0",
4
4
  "description": "Codemod to ignore lint errors per line",
5
5
  "keywords": [
6
6
  "codemod",
@@ -23,27 +23,27 @@
23
23
  "dist"
24
24
  ],
25
25
  "dependencies": {
26
- "@codemod-utils/ast-javascript": "^4.2.1",
26
+ "@codemod-utils/ast-javascript": "^4.3.2",
27
27
  "@codemod-utils/ast-template": "^4.1.0",
28
28
  "@codemod-utils/ast-template-tag": "^2.7.0",
29
29
  "@codemod-utils/files": "^4.1.0",
30
30
  "@codemod-utils/package-json": "^4.1.0",
31
- "yargs": "^18.0.0"
31
+ "yargs": "^18.1.0"
32
32
  },
33
33
  "devDependencies": {
34
- "@changesets/cli": "^2.31.0",
34
+ "@changesets/cli": "^3.0.0",
35
35
  "@codemod-utils/tests": "^3.1.0",
36
- "@ijlee2-frontend-configs/changesets": "^2.1.1",
37
- "@ijlee2-frontend-configs/eslint-config-node": "^4.1.1",
38
- "@ijlee2-frontend-configs/prettier": "^3.3.1",
36
+ "@ijlee2-frontend-configs/changesets": "^3.0.1",
37
+ "@ijlee2-frontend-configs/eslint-config-node": "^4.2.2",
38
+ "@ijlee2-frontend-configs/prettier": "^3.3.3",
39
39
  "@sondr3/minitest": "^0.1.2",
40
40
  "@tsconfig/node22": "^22.0.5",
41
41
  "@tsconfig/strictest": "^2.0.8",
42
42
  "@types/node": "^22.20.1",
43
43
  "@types/yargs": "^17.0.35",
44
- "concurrently": "^10.0.3",
45
- "eslint": "^10.7.0",
46
- "prettier": "^3.9.5",
44
+ "concurrently": "^10.0.4",
45
+ "eslint": "^10.8.1",
46
+ "prettier": "^3.9.6",
47
47
  "typescript": "^6.0.3"
48
48
  },
49
49
  "engines": {