@checkdigit/eslint-plugin 7.0.0-PR.88-cd9f → 7.0.0-PR.88-5561

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/README.md CHANGED
@@ -14,6 +14,10 @@ Copyright (c) 2021-2024 [Check Digit, LLC](https://checkdigit.com)
14
14
  - `@checkdigit/object-literal-response`
15
15
  - `@checkdigit/no-test-import`
16
16
  - `@checkdigit/no-promise-instance-method`
17
+ - `@checkdigit/invalid-json-stringify`
18
+ - `@checkdigit/no-full-response`
19
+ - `@checkdigit/require-resolve-full-response`
20
+ - `@checkdigit/require-type-out-of-type-only-imports`
17
21
 
18
22
  ## Configurations
19
23
 
@@ -1,8 +1,6 @@
1
1
  // src/agent/no-full-response.ts
2
- import { strict as assert } from "node:assert";
3
- import { ESLintUtils, TSESTree } from "@typescript-eslint/utils";
2
+ import { ESLintUtils } from "@typescript-eslint/utils";
4
3
  import getDocumentationUrl from "../get-documentation-url.mjs";
5
- import { getTypeParentNode } from "../library/ts-tree.mjs";
6
4
  var ruleId = "no-full-response";
7
5
  var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
8
6
  var rule = createRule({
@@ -10,51 +8,21 @@ var rule = createRule({
10
8
  meta: {
11
9
  type: "suggestion",
12
10
  docs: {
13
- description: "Remove the usage of FullResponse type."
11
+ description: "FullResponse type should not be used."
14
12
  },
15
13
  messages: {
16
- removeFullResponse: "Removing the usage of FullResponse type.",
17
- unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.'
14
+ noFullResponse: "Please remove the usage of FullResponse type."
18
15
  },
19
- fixable: "code",
20
16
  schema: []
21
17
  },
22
18
  defaultOptions: [],
23
19
  create(context) {
24
- const sourceCode = context.sourceCode;
25
20
  return {
26
21
  'TSTypeReference[typeName.name="FullResponse"]': (typeReference) => {
27
- try {
28
- const typeParentNode = getTypeParentNode(typeReference);
29
- assert.ok(typeParentNode);
30
- if (typeParentNode.type === TSESTree.AST_NODE_TYPES.TSAsExpression) {
31
- context.report({
32
- messageId: "removeFullResponse",
33
- node: typeReference,
34
- fix(fixer) {
35
- return fixer.replaceText(typeParentNode, sourceCode.getText(typeParentNode.expression));
36
- }
37
- });
38
- } else {
39
- context.report({
40
- messageId: "removeFullResponse",
41
- node: typeReference,
42
- fix(fixer) {
43
- return fixer.remove(typeParentNode);
44
- }
45
- });
46
- }
47
- } catch (error) {
48
- console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
49
- context.report({
50
- node: typeReference,
51
- messageId: "unknownError",
52
- data: {
53
- fileName: context.filename,
54
- error: error instanceof Error ? error.toString() : JSON.stringify(error)
55
- }
56
- });
57
- }
22
+ context.report({
23
+ messageId: "noFullResponse",
24
+ node: typeReference
25
+ });
58
26
  }
59
27
  };
60
28
  }
@@ -64,4 +32,4 @@ export {
64
32
  no_full_response_default as default,
65
33
  ruleId
66
34
  };
67
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZ1bGwtcmVzcG9uc2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxVQUFVLGNBQWM7QUFDakMsU0FBUyxhQUFhLGdCQUFnQjtBQUN0QyxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLHlCQUF5QjtBQUUzQixJQUFNLFNBQVM7QUFFdEIsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQUU5RSxJQUFNLE9BQXNFLFdBQVc7QUFBQSxFQUNyRixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1Isb0JBQW9CO0FBQUEsTUFDcEIsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRO0FBRTNCLFdBQU87QUFBQSxNQUNMLGlEQUFpRCxDQUFDLGtCQUE0QztBQUM1RixZQUFJO0FBQ0YsZ0JBQU0saUJBQWlCLGtCQUFrQixhQUFhO0FBQ3RELGlCQUFPLEdBQUcsY0FBYztBQUN4QixjQUFJLGVBQWUsU0FBUyxTQUFTLGVBQWUsZ0JBQWdCO0FBQ2xFLG9CQUFRLE9BQU87QUFBQSxjQUNiLFdBQVc7QUFBQSxjQUNYLE1BQU07QUFBQSxjQUNOLElBQUksT0FBTztBQUNULHVCQUFPLE1BQU0sWUFBWSxnQkFBZ0IsV0FBVyxRQUFRLGVBQWUsVUFBVSxDQUFDO0FBQUEsY0FDeEY7QUFBQSxZQUNGLENBQUM7QUFBQSxVQUNILE9BQU87QUFDTCxvQkFBUSxPQUFPO0FBQUEsY0FDYixXQUFXO0FBQUEsY0FDWCxNQUFNO0FBQUEsY0FDTixJQUFJLE9BQU87QUFDVCx1QkFBTyxNQUFNLE9BQU8sY0FBYztBQUFBLGNBQ3BDO0FBQUEsWUFDRixDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0YsU0FBUyxPQUFPO0FBRWQsa0JBQVEsTUFBTSxtQkFBbUIsTUFBTSxtQkFBbUIsUUFBUSxRQUFRLE1BQU0sS0FBSztBQUNyRixrQkFBUSxPQUFPO0FBQUEsWUFDYixNQUFNO0FBQUEsWUFDTixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsY0FDSixVQUFVLFFBQVE7QUFBQSxjQUNsQixPQUFPLGlCQUFpQixRQUFRLE1BQU0sU0FBUyxJQUFJLEtBQUssVUFBVSxLQUFLO0FBQUEsWUFDekU7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sMkJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
35
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZ1bGwtcmVzcG9uc2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxtQkFBNkI7QUFDdEMsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFpRCxXQUFXO0FBQUEsRUFDaEUsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLGdCQUFnQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLGlEQUFpRCxDQUFDLGtCQUE0QztBQUM1RixnQkFBUSxPQUFPO0FBQUEsVUFDYixXQUFXO0FBQUEsVUFDWCxNQUFNO0FBQUEsUUFDUixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sMkJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,5 +1,5 @@
1
1
  // src/index.ts
2
- import _package from "../package.json" with { type: "json" };
2
+ import fs from "node:fs";
3
3
  import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from "./invalid-json-stringify.mjs";
4
4
  import noFullResponse, { ruleId as noFullResponseRuleId } from "./agent/no-full-response.mjs";
5
5
  import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from "./no-promise-instance-method.mjs";
@@ -34,10 +34,11 @@ var rules = {
34
34
  [requireResolveFullResponseRuleId]: requireResolveFullResponse,
35
35
  [requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports
36
36
  };
37
+ var packageJson = JSON.parse(fs.readFileSync("package.json", "utf-8"));
37
38
  var plugin = {
38
39
  meta: {
39
- name: _package.name,
40
- version: _package.version
40
+ name: packageJson.name,
41
+ version: packageJson.version
41
42
  },
42
43
  rules
43
44
  };
@@ -90,4 +91,4 @@ var src_default = pluginToExport;
90
91
  export {
91
92
  src_default as default
92
93
  };
93
- //# sourceMappingURL=data:application/json;base64,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
94
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLE9BQU8sUUFBUTtBQUlmLE9BQU8sd0JBQXdCLFVBQVUsa0NBQWtDO0FBQzNFLE9BQU8sa0JBQWtCLFVBQVUsNEJBQTRCO0FBQy9ELE9BQU8sMkJBQTJCLFVBQVUscUNBQXFDO0FBQ2pGLE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTztBQUFBLEVBQ0wsVUFBVTtBQUFBLE9BQ0w7QUFDUCxPQUFPLHFCQUFxQjtBQUM1QixPQUFPLG1CQUFtQjtBQUMxQixPQUFPLGtCQUFrQjtBQUN6QixPQUFPLFlBQVk7QUFDbkIsT0FBTyxzQkFBc0I7QUFDN0IsT0FBTywyQkFBMkI7QUFDbEMsT0FBTyxrQkFBa0I7QUFDekIsT0FBTyx5Q0FBeUM7QUFDaEQsT0FBTyx5QkFBeUI7QUFFaEMsSUFBTSxRQUFzRDtBQUFBLEVBQzFELHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLFdBQVc7QUFBQSxFQUNYLHlCQUF5QjtBQUFBLEVBQ3pCLGtCQUFrQjtBQUFBLEVBQ2xCLHNCQUFzQjtBQUFBLEVBQ3RCLDhCQUE4QjtBQUFBLEVBQzlCLDJDQUEyQztBQUFBLEVBQzNDLDJCQUEyQjtBQUFBLEVBQzNCLENBQUMsMEJBQTBCLEdBQUc7QUFBQSxFQUM5QixDQUFDLDZCQUE2QixHQUFHO0FBQUEsRUFDakMsQ0FBQyxvQkFBb0IsR0FBRztBQUFBLEVBQ3hCLENBQUMsZ0NBQWdDLEdBQUc7QUFBQSxFQUNwQyxDQUFDLHFDQUFxQyxHQUFHO0FBQzNDO0FBRUEsSUFBTSxjQUFjLEtBQUssTUFBTSxHQUFHLGFBQWEsZ0JBQWdCLE9BQU8sQ0FBQztBQUN2RSxJQUFNLFNBQXFDO0FBQUEsRUFDekMsTUFBTTtBQUFBLElBQ0osTUFBTSxZQUFZO0FBQUEsSUFDbEIsU0FBUyxZQUFZO0FBQUEsRUFDdkI7QUFBQSxFQUNBO0FBQ0Y7QUFFQSxJQUFNLFVBQXNEO0FBQUEsRUFDMUQsS0FBSztBQUFBLElBQ0gsU0FBUztBQUFBLE1BQ1AsZUFBZTtBQUFBLElBQ2pCO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTCwrQkFBK0I7QUFBQSxNQUMvQixpQ0FBaUM7QUFBQSxNQUNqQyx1QkFBdUI7QUFBQSxNQUN2QixxQ0FBcUM7QUFBQSxNQUNyQyxrQ0FBa0M7QUFBQSxNQUNsQywwQ0FBMEM7QUFBQSxNQUMxQyx1REFBdUQ7QUFBQSxNQUN2RCx1Q0FBdUM7QUFBQSxNQUN2Qyw4QkFBOEI7QUFBQSxNQUM5QixDQUFDLGVBQWUsMEJBQTBCLEVBQUUsR0FBRztBQUFBLE1BQy9DLENBQUMsZUFBZSw2QkFBNkIsRUFBRSxHQUFHO0FBQUEsTUFDbEQsQ0FBQyxlQUFlLG9CQUFvQixFQUFFLEdBQUc7QUFBQSxNQUN6QyxDQUFDLGVBQWUsZ0NBQWdDLEVBQUUsR0FBRztBQUFBLE1BQ3JELENBQUMsZUFBZSxxQ0FBcUMsRUFBRSxHQUFHO0FBQUEsSUFDNUQ7QUFBQSxFQUNGO0FBQUEsRUFDQSxhQUFhO0FBQUEsSUFDWCxTQUFTO0FBQUEsTUFDUCxlQUFlO0FBQUEsSUFDakI7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLCtCQUErQjtBQUFBLE1BQy9CLGlDQUFpQztBQUFBLE1BQ2pDLHVCQUF1QjtBQUFBLE1BQ3ZCLHFDQUFxQztBQUFBLE1BQ3JDLGtDQUFrQztBQUFBLE1BQ2xDLDBDQUEwQztBQUFBLE1BQzFDLHVEQUF1RDtBQUFBLE1BQ3ZELHVDQUF1QztBQUFBLE1BQ3ZDLDhCQUE4QjtBQUFBLE1BQzlCLENBQUMsZUFBZSwwQkFBMEIsRUFBRSxHQUFHO0FBQUEsTUFDL0MsQ0FBQyxlQUFlLDZCQUE2QixFQUFFLEdBQUc7QUFBQSxJQUNwRDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLElBQU0saUJBQTZDO0FBQUEsRUFDakQsR0FBRztBQUFBLEVBQ0g7QUFDRjtBQUNBLElBQU8sY0FBUTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,4 +1,4 @@
1
1
  import { ESLintUtils } from '@typescript-eslint/utils';
2
2
  export declare const ruleId = "no-full-response";
3
- declare const rule: ESLintUtils.RuleModule<'removeFullResponse' | 'unknownError'>;
3
+ declare const rule: ESLintUtils.RuleModule<'noFullResponse'>;
4
4
  export default rule;
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"7.0.0-PR.88-cd9f","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 .","lint:fix":"eslint --max-warnings 0 --fix .","prepare":"","prepublishOnly":"npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"^8.10.0","@typescript-eslint/utils":"^8.10.0","ts-api-utils":"^1.3.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.1","@checkdigit/typescript-config":"8.0.0","@eslint/js":"^9.12.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.10.0","@typescript-eslint/rule-tester":"^8.10.0","eslint":"^9.12.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","http-status-codes":"^2.3.0","rimraf":"^6.0.1","typescript-eslint":"^8.10.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
1
+ {"name":"@checkdigit/eslint-plugin","version":"7.0.0-PR.88-5561","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 .","lint:fix":"eslint --max-warnings 0 --fix .","prepare":"","prepublishOnly":"npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"^8.10.0","@typescript-eslint/utils":"^8.10.0","ts-api-utils":"^1.3.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.1","@checkdigit/typescript-config":"8.0.0","@eslint/js":"^9.12.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.10.0","@typescript-eslint/rule-tester":"^8.10.0","eslint":"^9.12.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.2.0","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^1.0.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","http-status-codes":"^2.3.0","rimraf":"^6.0.1","typescript-eslint":"^8.10.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
@@ -6,67 +6,33 @@
6
6
  * This code is licensed under the MIT license (see LICENSE.txt for details).
7
7
  */
8
8
 
9
- import { strict as assert } from 'node:assert';
10
9
  import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
11
10
  import getDocumentationUrl from '../get-documentation-url';
12
- import { getTypeParentNode } from '../library/ts-tree';
13
11
 
14
12
  export const ruleId = 'no-full-response';
15
13
 
16
14
  const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
17
15
 
18
- const rule: ESLintUtils.RuleModule<'removeFullResponse' | 'unknownError'> = createRule({
16
+ const rule: ESLintUtils.RuleModule<'noFullResponse'> = createRule({
19
17
  name: ruleId,
20
18
  meta: {
21
19
  type: 'suggestion',
22
20
  docs: {
23
- description: 'Remove the usage of FullResponse type.',
21
+ description: 'FullResponse type should not be used.',
24
22
  },
25
23
  messages: {
26
- removeFullResponse: 'Removing the usage of FullResponse type.',
27
- unknownError: 'Unknown error occurred in file "{{fileName}}": {{ error }}.',
24
+ noFullResponse: 'Please remove the usage of FullResponse type.',
28
25
  },
29
- fixable: 'code',
30
26
  schema: [],
31
27
  },
32
28
  defaultOptions: [],
33
29
  create(context) {
34
- const sourceCode = context.sourceCode;
35
-
36
30
  return {
37
31
  'TSTypeReference[typeName.name="FullResponse"]': (typeReference: TSESTree.TSTypeReference) => {
38
- try {
39
- const typeParentNode = getTypeParentNode(typeReference);
40
- assert.ok(typeParentNode);
41
- if (typeParentNode.type === TSESTree.AST_NODE_TYPES.TSAsExpression) {
42
- context.report({
43
- messageId: 'removeFullResponse',
44
- node: typeReference,
45
- fix(fixer) {
46
- return fixer.replaceText(typeParentNode, sourceCode.getText(typeParentNode.expression));
47
- },
48
- });
49
- } else {
50
- context.report({
51
- messageId: 'removeFullResponse',
52
- node: typeReference,
53
- fix(fixer) {
54
- return fixer.remove(typeParentNode);
55
- },
56
- });
57
- }
58
- } catch (error) {
59
- // eslint-disable-next-line no-console
60
- console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
61
- context.report({
62
- node: typeReference,
63
- messageId: 'unknownError',
64
- data: {
65
- fileName: context.filename,
66
- error: error instanceof Error ? error.toString() : JSON.stringify(error),
67
- },
68
- });
69
- }
32
+ context.report({
33
+ messageId: 'noFullResponse',
34
+ node: typeReference,
35
+ });
70
36
  },
71
37
  };
72
38
  },
package/src/index.ts CHANGED
@@ -6,9 +6,10 @@
6
6
  * This code is licensed under the MIT license (see LICENSE.txt for details).
7
7
  */
8
8
 
9
+ import fs from 'node:fs';
10
+
9
11
  import type { TSESLint } from '@typescript-eslint/utils';
10
12
 
11
- import _package from '../package.json' with { type: 'json' };
12
13
  import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
13
14
  import noFullResponse, { ruleId as noFullResponseRuleId } from './agent/no-full-response';
14
15
  import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method';
@@ -45,10 +46,11 @@ const rules: Record<string, TSESLint.LooseRuleDefinition> = {
45
46
  [requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
46
47
  };
47
48
 
49
+ const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf-8')) as { name: string; version: string };
48
50
  const plugin: TSESLint.FlatConfig.Plugin = {
49
51
  meta: {
50
- name: _package.name,
51
- version: _package.version,
52
+ name: packageJson.name,
53
+ version: packageJson.version,
52
54
  },
53
55
  rules,
54
56
  };