@checkdigit/eslint-plugin 7.4.1 → 7.5.0-PR.93-6f1c

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
@@ -17,7 +17,7 @@ Copyright (c) 2021-2024 [Check Digit, LLC](https://checkdigit.com)
17
17
  - `@checkdigit/no-side-effects`
18
18
  - `@checkdigit/no-promise-instance-method`
19
19
  - `@checkdigit/invalid-json-stringify`
20
- - `@checkdigit/no-full-response`
20
+ - `@checkdigit/no-legacy-service-typing`
21
21
  - `@checkdigit/require-resolve-full-response`
22
22
  - `@checkdigit/require-type-out-of-type-only-imports`
23
23
 
@@ -1,7 +1,7 @@
1
1
  // src/index.ts
2
2
  import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from "./invalid-json-stringify.mjs";
3
3
  import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from "./no-duplicated-imports.mjs";
4
- import noFullResponse, { ruleId as noFullResponseRuleId } from "./agent/no-full-response.mjs";
4
+ import noLegacyServiceTyping, { ruleId as noLegacyServiceTypingRuleId } from "./no-legacy-service-typing.mjs";
5
5
  import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from "./no-promise-instance-method.mjs";
6
6
  import requireFixedServicesImport, {
7
7
  ruleId as requireFixedServicesImportRuleId
@@ -12,7 +12,7 @@ import requireResolveFullResponse, {
12
12
  import requireTypeOutOfTypeOnlyImports, {
13
13
  ruleId as requireTypeOutOfTypeOnlyImportsRuleId
14
14
  } from "./require-type-out-of-type-only-imports.mjs";
15
- import noServeRuntime, { ruleId as noServeRuntimeRuleId } from "./agent/no-serve-runtime.mjs";
15
+ import noServeRuntime, { ruleId as noServeRuntimeRuleId } from "./no-serve-runtime.mjs";
16
16
  import filePathComment from "./file-path-comment.mjs";
17
17
  import noCardNumbers from "./no-card-numbers.mjs";
18
18
  import noSideEffects from "./no-side-effects.mjs";
@@ -38,70 +38,82 @@ var rules = {
38
38
  "object-literal-response": objectLiteralResponse,
39
39
  [invalidJsonStringifyRuleId]: invalidJsonStringify,
40
40
  [noPromiseInstanceMethodRuleId]: noPromiseInstanceMethod,
41
- [noFullResponseRuleId]: noFullResponse,
41
+ [noLegacyServiceTypingRuleId]: noLegacyServiceTyping,
42
42
  [requireResolveFullResponseRuleId]: requireResolveFullResponse,
43
- [requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
44
43
  [noDuplicatedImportsRuleId]: noDuplicatedImports,
44
+ [noServeRuntimeRuleId]: noServeRuntime,
45
45
  [requireFixedServicesImportRuleId]: requireFixedServicesImport,
46
- [noServeRuntimeRuleId]: noServeRuntime
46
+ [requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports
47
47
  };
48
48
  var plugin = {
49
49
  rules
50
50
  };
51
51
  var configs = {
52
- all: {
53
- plugins: {
54
- "@checkdigit": plugin
55
- },
56
- rules: {
57
- "@checkdigit/no-card-numbers": "error",
58
- "@checkdigit/file-path-comment": "error",
59
- "@checkdigit/no-random-v4-uuid": "error",
60
- "@checkdigit/no-uuid": "error",
61
- "@checkdigit/require-strict-assert": "error",
62
- "@checkdigit/no-wallaby-comment": "error",
63
- "@checkdigit/no-side-effects": ["error", { excludedIdentifiers: ["assert", "debug", "log", "promisify"] }],
64
- "@checkdigit/regular-expression-comment": "error",
65
- "@checkdigit/require-assert-predicate-rejects-throws": "error",
66
- "@checkdigit/object-literal-response": "error",
67
- "@checkdigit/no-test-import": "error",
68
- [`@checkdigit/${invalidJsonStringifyRuleId}`]: "error",
69
- [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: "error",
70
- [`@checkdigit/${noFullResponseRuleId}`]: "error",
71
- [`@checkdigit/${requireResolveFullResponseRuleId}`]: "error",
72
- [`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: "error",
73
- [`@checkdigit/${noDuplicatedImportsRuleId}`]: "error",
74
- [`@checkdigit/${requireFixedServicesImportRuleId}`]: "error",
75
- [`@checkdigit/${noServeRuntimeRuleId}`]: "error"
52
+ all: [
53
+ {
54
+ files: ["**/*.ts"],
55
+ plugins: {
56
+ "@checkdigit": plugin
57
+ },
58
+ rules: {
59
+ "@checkdigit/no-card-numbers": "error",
60
+ "@checkdigit/file-path-comment": "error",
61
+ "@checkdigit/no-random-v4-uuid": "error",
62
+ "@checkdigit/no-uuid": "error",
63
+ "@checkdigit/require-strict-assert": "error",
64
+ "@checkdigit/no-wallaby-comment": "error",
65
+ "@checkdigit/no-side-effects": ["error", { excludedIdentifiers: ["assert", "debug", "log", "promisify"] }],
66
+ "@checkdigit/regular-expression-comment": "error",
67
+ "@checkdigit/require-assert-predicate-rejects-throws": "error",
68
+ "@checkdigit/object-literal-response": "error",
69
+ "@checkdigit/no-test-import": "error",
70
+ [`@checkdigit/${invalidJsonStringifyRuleId}`]: "error",
71
+ [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: "error",
72
+ [`@checkdigit/${noLegacyServiceTypingRuleId}`]: "error",
73
+ [`@checkdigit/${requireResolveFullResponseRuleId}`]: "error",
74
+ [`@checkdigit/${noDuplicatedImportsRuleId}`]: "error",
75
+ [`@checkdigit/${requireFixedServicesImportRuleId}`]: "error",
76
+ [`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: "error",
77
+ [`@checkdigit/${noServeRuntimeRuleId}`]: "error"
78
+ }
76
79
  }
77
- },
78
- recommended: {
79
- plugins: {
80
- "@checkdigit": plugin
81
- },
82
- rules: {
83
- "@checkdigit/no-card-numbers": "error",
84
- "@checkdigit/file-path-comment": "off",
85
- "@checkdigit/no-random-v4-uuid": "error",
86
- "@checkdigit/no-uuid": "error",
87
- "@checkdigit/require-strict-assert": "error",
88
- "@checkdigit/no-wallaby-comment": "off",
89
- "@checkdigit/no-side-effects": "error",
90
- "@checkdigit/regular-expression-comment": "error",
91
- "@checkdigit/require-assert-predicate-rejects-throws": "error",
92
- "@checkdigit/object-literal-response": "error",
93
- "@checkdigit/no-test-import": "error",
94
- [`@checkdigit/${invalidJsonStringifyRuleId}`]: "error",
95
- [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: "error"
80
+ ],
81
+ recommended: [
82
+ {
83
+ files: ["**/*.ts"],
84
+ plugins: {
85
+ "@checkdigit": plugin
86
+ },
87
+ rules: {
88
+ "@checkdigit/no-card-numbers": "error",
89
+ "@checkdigit/file-path-comment": "off",
90
+ "@checkdigit/no-random-v4-uuid": "error",
91
+ "@checkdigit/no-uuid": "error",
92
+ "@checkdigit/require-strict-assert": "error",
93
+ "@checkdigit/no-wallaby-comment": "off",
94
+ "@checkdigit/no-side-effects": "error",
95
+ "@checkdigit/regular-expression-comment": "error",
96
+ "@checkdigit/require-assert-predicate-rejects-throws": "error",
97
+ "@checkdigit/object-literal-response": "error",
98
+ "@checkdigit/no-test-import": "error",
99
+ [`@checkdigit/${invalidJsonStringifyRuleId}`]: "error",
100
+ [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: "off",
101
+ [`@checkdigit/${noLegacyServiceTypingRuleId}`]: "off",
102
+ [`@checkdigit/${requireResolveFullResponseRuleId}`]: "off",
103
+ [`@checkdigit/${noDuplicatedImportsRuleId}`]: "error",
104
+ [`@checkdigit/${requireFixedServicesImportRuleId}`]: "off",
105
+ [`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: "error",
106
+ [`@checkdigit/${noServeRuntimeRuleId}`]: "off"
107
+ }
96
108
  }
97
- }
109
+ ]
98
110
  };
99
- var pluginToExport = {
111
+ var defaultToExport = {
100
112
  ...plugin,
101
113
  configs
102
114
  };
103
- var src_default = pluginToExport;
115
+ var src_default = defaultToExport;
104
116
  export {
105
117
  src_default as default
106
118
  };
107
- //# sourceMappingURL=data:application/json;base64,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
119
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVVBLE9BQU8sd0JBQXdCLFVBQVUsa0NBQWtDO0FBQzNFLE9BQU8sdUJBQXVCLFVBQVUsaUNBQWlDO0FBQ3pFLE9BQU8seUJBQXlCLFVBQVUsbUNBQW1DO0FBQzdFLE9BQU8sMkJBQTJCLFVBQVUscUNBQXFDO0FBQ2pGLE9BQU87QUFBQSxFQUNMLFVBQVU7QUFBQSxPQUNMO0FBQ1AsT0FBTztBQUFBLEVBQ0wsVUFBVTtBQUFBLE9BQ0w7QUFDUCxPQUFPO0FBQUEsRUFDTCxVQUFVO0FBQUEsT0FDTDtBQUNQLE9BQU8sa0JBQWtCLFVBQVUsNEJBQTRCO0FBQy9ELE9BQU8scUJBQXFCO0FBQzVCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sbUJBQW1CO0FBQzFCLE9BQU8sb0JBQW9CO0FBQzNCLE9BQU8sa0JBQWtCO0FBQ3pCLE9BQU8sWUFBWTtBQUNuQixPQUFPLHNCQUFzQjtBQUM3QixPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLGtCQUFrQjtBQUN6QixPQUFPLHlDQUF5QztBQUNoRCxPQUFPLHlCQUF5QjtBQUVoQyxJQUFNLFFBQXNEO0FBQUEsRUFDMUQscUJBQXFCO0FBQUEsRUFDckIsbUJBQW1CO0FBQUEsRUFDbkIscUJBQXFCO0FBQUEsRUFDckIsV0FBVztBQUFBLEVBQ1gseUJBQXlCO0FBQUEsRUFDekIsa0JBQWtCO0FBQUEsRUFDbEIsc0JBQXNCO0FBQUEsRUFDdEIsbUJBQW1CO0FBQUEsRUFDbkIsOEJBQThCO0FBQUEsRUFDOUIsMkNBQTJDO0FBQUEsRUFDM0MsMkJBQTJCO0FBQUEsRUFDM0IsQ0FBQywwQkFBMEIsR0FBRztBQUFBLEVBQzlCLENBQUMsNkJBQTZCLEdBQUc7QUFBQSxFQUNqQyxDQUFDLDJCQUEyQixHQUFHO0FBQUEsRUFDL0IsQ0FBQyxnQ0FBZ0MsR0FBRztBQUFBLEVBQ3BDLENBQUMseUJBQXlCLEdBQUc7QUFBQSxFQUM3QixDQUFDLG9CQUFvQixHQUFHO0FBQUEsRUFDeEIsQ0FBQyxnQ0FBZ0MsR0FBRztBQUFBLEVBQ3BDLENBQUMscUNBQXFDLEdBQUc7QUFDM0M7QUFFQSxJQUFNLFNBQXFDO0FBQUEsRUFDekM7QUFDRjtBQUVBLElBQU0sVUFBd0Q7QUFBQSxFQUM1RCxLQUFLO0FBQUEsSUFDSDtBQUFBLE1BQ0UsT0FBTyxDQUFDLFNBQVM7QUFBQSxNQUNqQixTQUFTO0FBQUEsUUFDUCxlQUFlO0FBQUEsTUFDakI7QUFBQSxNQUNBLE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLGtDQUFrQztBQUFBLFFBQ2xDLCtCQUErQixDQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVLFNBQVMsT0FBTyxXQUFXLEVBQUUsQ0FBQztBQUFBLFFBQ3pHLDBDQUEwQztBQUFBLFFBQzFDLHVEQUF1RDtBQUFBLFFBQ3ZELHVDQUF1QztBQUFBLFFBQ3ZDLDhCQUE4QjtBQUFBLFFBQzlCLENBQUMsZUFBZSwwQkFBMEIsRUFBRSxHQUFHO0FBQUEsUUFDL0MsQ0FBQyxlQUFlLDZCQUE2QixFQUFFLEdBQUc7QUFBQSxRQUNsRCxDQUFDLGVBQWUsMkJBQTJCLEVBQUUsR0FBRztBQUFBLFFBQ2hELENBQUMsZUFBZSxnQ0FBZ0MsRUFBRSxHQUFHO0FBQUEsUUFDckQsQ0FBQyxlQUFlLHlCQUF5QixFQUFFLEdBQUc7QUFBQSxRQUM5QyxDQUFDLGVBQWUsZ0NBQWdDLEVBQUUsR0FBRztBQUFBLFFBQ3JELENBQUMsZUFBZSxxQ0FBcUMsRUFBRSxHQUFHO0FBQUEsUUFDMUQsQ0FBQyxlQUFlLG9CQUFvQixFQUFFLEdBQUc7QUFBQSxNQUMzQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxhQUFhO0FBQUEsSUFDWDtBQUFBLE1BQ0UsT0FBTyxDQUFDLFNBQVM7QUFBQSxNQUNqQixTQUFTO0FBQUEsUUFDUCxlQUFlO0FBQUEsTUFDakI7QUFBQSxNQUNBLE9BQU87QUFBQSxRQUNMLCtCQUErQjtBQUFBLFFBQy9CLGlDQUFpQztBQUFBLFFBQ2pDLGlDQUFpQztBQUFBLFFBQ2pDLHVCQUF1QjtBQUFBLFFBQ3ZCLHFDQUFxQztBQUFBLFFBQ3JDLGtDQUFrQztBQUFBLFFBQ2xDLCtCQUErQjtBQUFBLFFBQy9CLDBDQUEwQztBQUFBLFFBQzFDLHVEQUF1RDtBQUFBLFFBQ3ZELHVDQUF1QztBQUFBLFFBQ3ZDLDhCQUE4QjtBQUFBLFFBQzlCLENBQUMsZUFBZSwwQkFBMEIsRUFBRSxHQUFHO0FBQUEsUUFDL0MsQ0FBQyxlQUFlLDZCQUE2QixFQUFFLEdBQUc7QUFBQSxRQUNsRCxDQUFDLGVBQWUsMkJBQTJCLEVBQUUsR0FBRztBQUFBLFFBQ2hELENBQUMsZUFBZSxnQ0FBZ0MsRUFBRSxHQUFHO0FBQUEsUUFDckQsQ0FBQyxlQUFlLHlCQUF5QixFQUFFLEdBQUc7QUFBQSxRQUM5QyxDQUFDLGVBQWUsZ0NBQWdDLEVBQUUsR0FBRztBQUFBLFFBQ3JELENBQUMsZUFBZSxxQ0FBcUMsRUFBRSxHQUFHO0FBQUEsUUFDMUQsQ0FBQyxlQUFlLG9CQUFvQixFQUFFLEdBQUc7QUFBQSxNQUMzQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxJQUFNLGtCQUVGO0FBQUEsRUFDRixHQUFHO0FBQUEsRUFDSDtBQUNGO0FBQ0EsSUFBTyxjQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -37,7 +37,7 @@ function isUsedInArrayOrAsArgument(node) {
37
37
  if (!parent) {
38
38
  return false;
39
39
  }
40
- if (parent.type === "ArrayExpression" || parent.type === "CallExpression" && parent.arguments.includes(node)) {
40
+ if (parent.type === "ArrayExpression" || parent.type === "ArrowFunctionExpression" || parent.type === "CallExpression" && parent.arguments.includes(node)) {
41
41
  return true;
42
42
  }
43
43
  return isUsedInArrayOrAsArgument(parent);
@@ -61,4 +61,4 @@ export {
61
61
  isBlockStatement,
62
62
  isUsedInArrayOrAsArgument
63
63
  };
64
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xpYnJhcnkvdHJlZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFnQk8sU0FBUyxVQUFVLE1BQXFDO0FBQzdELFNBQVEsS0FBd0M7QUFDbEQ7QUFFTyxTQUFTLFlBQ2QsTUFDQSxTQUNBLGFBQ2tCO0FBQ2xCLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsTUFBSSxDQUFDLFFBQVE7QUFDWCxXQUFPO0FBQUEsRUFDVCxXQUFXLE9BQU8sWUFBWSxZQUFZLE9BQU8sU0FBUyxTQUFTO0FBQ2pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxZQUFZLGNBQWMsUUFBUSxNQUFNLEdBQUc7QUFDM0QsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLGdCQUFnQixZQUFZLE9BQU8sU0FBUyxhQUFhO0FBQ3pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxnQkFBZ0IsY0FBYyxZQUFZLE1BQU0sR0FBRztBQUNuRSxXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8sWUFBWSxRQUFRLFNBQVMsV0FBVztBQUNqRDtBQUVPLFNBQVMsaUJBQWlCLE1BQXFCO0FBQ3BELFNBQU8sS0FBSyxLQUFLLFNBQVMsV0FBVyxLQUFLLEtBQUssS0FBSyxTQUFTLGFBQWE7QUFDNUU7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPLFlBQVksTUFBTSxnQkFBZ0I7QUFDM0M7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPO0FBQUEsSUFBWTtBQUFBLElBQU0sQ0FBQyxlQUN4QixDQUFDLHNCQUFzQix1QkFBdUIsMkJBQTJCLFNBQVMsRUFBRSxTQUFTLFdBQVcsSUFBSTtBQUFBLEVBQzlHO0FBQ0Y7QUFFTyxTQUFTLDBCQUEwQixNQUFxQjtBQUM3RCxNQUFJLGlCQUFpQixJQUFJLEdBQUc7QUFDMUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsVUFBVSxJQUFJO0FBQzdCLE1BQUksQ0FBQyxRQUFRO0FBQ1gsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUNFLE9BQU8sU0FBUyxxQkFDZixPQUFPLFNBQVMsb0JBQW9CLE9BQU8sVUFBVSxTQUFTLElBQWtCLEdBQ2pGO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFHQSxTQUFPLDBCQUEwQixNQUFNO0FBQ3pDO0FBRU8sU0FBUyxxQkFDZCxNQUtZO0FBQ1osTUFDRSxLQUFLLFNBQVMseUJBQ2QsS0FBSyxTQUFTLHdCQUNkLEtBQUssU0FBUywyQkFDZDtBQUNBLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxTQUFTLFVBQVUsSUFBSTtBQUM3QixNQUFJLENBQUMsUUFBUTtBQUNYO0FBQUEsRUFDRjtBQUNBLFNBQU8scUJBQXFCLE1BQU07QUFDcEM7IiwKICAibmFtZXMiOiBbXQp9Cg==
64
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xpYnJhcnkvdHJlZS50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFnQk8sU0FBUyxVQUFVLE1BQXFDO0FBQzdELFNBQVEsS0FBd0M7QUFDbEQ7QUFFTyxTQUFTLFlBQ2QsTUFDQSxTQUNBLGFBQ2tCO0FBQ2xCLFFBQU0sU0FBUyxVQUFVLElBQUk7QUFDN0IsTUFBSSxDQUFDLFFBQVE7QUFDWCxXQUFPO0FBQUEsRUFDVCxXQUFXLE9BQU8sWUFBWSxZQUFZLE9BQU8sU0FBUyxTQUFTO0FBQ2pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxZQUFZLGNBQWMsUUFBUSxNQUFNLEdBQUc7QUFDM0QsV0FBTztBQUFBLEVBQ1QsV0FBVyxPQUFPLGdCQUFnQixZQUFZLE9BQU8sU0FBUyxhQUFhO0FBQ3pFLFdBQU87QUFBQSxFQUNULFdBQVcsT0FBTyxnQkFBZ0IsY0FBYyxZQUFZLE1BQU0sR0FBRztBQUNuRSxXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8sWUFBWSxRQUFRLFNBQVMsV0FBVztBQUNqRDtBQUVPLFNBQVMsaUJBQWlCLE1BQXFCO0FBQ3BELFNBQU8sS0FBSyxLQUFLLFNBQVMsV0FBVyxLQUFLLEtBQUssS0FBSyxTQUFTLGFBQWE7QUFDNUU7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPLFlBQVksTUFBTSxnQkFBZ0I7QUFDM0M7QUFFTyxTQUFTLHNCQUFzQixNQUE4QjtBQUNsRSxTQUFPO0FBQUEsSUFBWTtBQUFBLElBQU0sQ0FBQyxlQUN4QixDQUFDLHNCQUFzQix1QkFBdUIsMkJBQTJCLFNBQVMsRUFBRSxTQUFTLFdBQVcsSUFBSTtBQUFBLEVBQzlHO0FBQ0Y7QUFFTyxTQUFTLDBCQUEwQixNQUFxQjtBQUM3RCxNQUFJLGlCQUFpQixJQUFJLEdBQUc7QUFDMUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsVUFBVSxJQUFJO0FBQzdCLE1BQUksQ0FBQyxRQUFRO0FBQ1gsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUNFLE9BQU8sU0FBUyxxQkFDaEIsT0FBTyxTQUFTLDZCQUNmLE9BQU8sU0FBUyxvQkFBb0IsT0FBTyxVQUFVLFNBQVMsSUFBa0IsR0FDakY7QUFDQSxXQUFPO0FBQUEsRUFDVDtBQUdBLFNBQU8sMEJBQTBCLE1BQU07QUFDekM7QUFFTyxTQUFTLHFCQUNkLE1BS1k7QUFDWixNQUNFLEtBQUssU0FBUyx5QkFDZCxLQUFLLFNBQVMsd0JBQ2QsS0FBSyxTQUFTLDJCQUNkO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFNBQVMsVUFBVSxJQUFJO0FBQzdCLE1BQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxFQUNGO0FBQ0EsU0FBTyxxQkFBcUIsTUFBTTtBQUNwQzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,39 @@
1
+ // src/no-legacy-service-typing.ts
2
+ import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
3
+ import getDocumentationUrl from "./get-documentation-url.mjs";
4
+ var ruleId = "no-legacy-service-typing";
5
+ var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
6
+ var DISALLOWED_SERVICE_TYPINGS = ["FullResponse", "Endpoint"];
7
+ var rule = createRule({
8
+ name: ruleId,
9
+ meta: {
10
+ type: "problem",
11
+ docs: {
12
+ description: "Legacy service typings should not be used."
13
+ },
14
+ messages: {
15
+ noLegacyServiceTyping: "Please remove the usage of legacy service typings."
16
+ },
17
+ schema: [{ type: "array", items: { type: "string" } }]
18
+ },
19
+ defaultOptions: [DISALLOWED_SERVICE_TYPINGS],
20
+ create(context) {
21
+ return {
22
+ TSTypeReference: (typeReference) => {
23
+ if (typeReference.typeName.type === AST_NODE_TYPES.Identifier && // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
24
+ (context.options[0] ?? DISALLOWED_SERVICE_TYPINGS).includes(typeReference.typeName.name)) {
25
+ context.report({
26
+ messageId: "noLegacyServiceTyping",
27
+ node: typeReference
28
+ });
29
+ }
30
+ }
31
+ };
32
+ }
33
+ });
34
+ var no_legacy_service_typing_default = rule;
35
+ export {
36
+ no_legacy_service_typing_default as default,
37
+ ruleId
38
+ };
39
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLWxlZ2FjeS1zZXJ2aWNlLXR5cGluZy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGdCQUFnQixtQkFBNkI7QUFDdEQsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSw2QkFBbUQsQ0FBQyxnQkFBZ0IsVUFBVTtBQUVwRixJQUFNLE9BQTZGLFdBQVc7QUFBQSxFQUM1RyxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsdUJBQXVCO0FBQUEsSUFDekI7QUFBQSxJQUNBLFFBQVEsQ0FBQyxFQUFFLE1BQU0sU0FBUyxPQUFPLEVBQUUsTUFBTSxTQUFTLEVBQUUsQ0FBQztBQUFBLEVBQ3ZEO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQywwQkFBMEI7QUFBQSxFQUMzQyxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxpQkFBaUIsQ0FBQyxrQkFBNEM7QUFDNUQsWUFDRSxjQUFjLFNBQVMsU0FBUyxlQUFlO0FBQUEsU0FFOUMsUUFBUSxRQUFRLENBQUMsS0FBSyw0QkFBNEIsU0FBUyxjQUFjLFNBQVMsSUFBSSxHQUN2RjtBQUNBLGtCQUFRLE9BQU87QUFBQSxZQUNiLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sbUNBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,6 +1,6 @@
1
- // src/agent/no-serve-runtime.ts
1
+ // src/no-serve-runtime.ts
2
2
  import { ESLintUtils } from "@typescript-eslint/utils";
3
- import getDocumentationUrl from "../get-documentation-url.mjs";
3
+ import getDocumentationUrl from "./get-documentation-url.mjs";
4
4
  var ruleId = "no-serve-runtime";
5
5
  var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
6
6
  var rule = createRule({
@@ -34,4 +34,4 @@ export {
34
34
  no_serve_runtime_default as default,
35
35
  ruleId
36
36
  };
37
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLXNlcnZlLXJ1bnRpbWUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxtQkFBNkI7QUFDdEMsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFpRCxXQUFXO0FBQUEsRUFDaEUsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLGdCQUFnQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLG1CQUFtQixDQUFDLHNCQUFrRDtBQUNwRSxZQUFJLGtCQUFrQixPQUFPLFVBQVUsNkJBQTZCO0FBQ2xFLGtCQUFRLE9BQU87QUFBQSxZQUNiLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sMkJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXNlcnZlLXJ1bnRpbWUudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxtQkFBNkI7QUFDdEMsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFpRCxXQUFXO0FBQUEsRUFDaEUsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLGdCQUFnQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLG1CQUFtQixDQUFDLHNCQUFrRDtBQUNwRSxZQUFJLGtCQUFrQixPQUFPLFVBQVUsNkJBQTZCO0FBQ2xFLGtCQUFRLE9BQU87QUFBQSxZQUNiLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sMkJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -36,10 +36,12 @@ var rule = createRule({
36
36
  const foundVariable = scope.variables.find((variable) => variable.name === urlArgument.name);
37
37
  if (foundVariable) {
38
38
  const variableDefinition = foundVariable.defs.find((def) => def.type === DefinitionType.Variable);
39
- assert.ok(variableDefinition, `Variable "${urlArgument.name}" not defined in scope`);
40
- const variableDefinitionNode = variableDefinition.node;
41
- assert.ok(variableDefinitionNode.init, "Variable definition node has no init property");
42
- return isUrlArgumentValid(variableDefinitionNode.init, scope);
39
+ if (variableDefinition) {
40
+ const variableDefinitionNode = variableDefinition.node;
41
+ assert.ok(variableDefinitionNode.init, "Variable definition node has no init property");
42
+ return isUrlArgumentValid(variableDefinitionNode.init, scope);
43
+ }
44
+ return true;
43
45
  }
44
46
  }
45
47
  return false;
@@ -116,23 +118,36 @@ var rule = createRule({
116
118
  assert.ok(serviceCall.callee.property.type === AST_NODE_TYPES.Identifier);
117
119
  const method = serviceCall.callee.property.name;
118
120
  const optionsArgument = ["get", "head", "del"].includes(method) ? serviceCall.arguments[1] : serviceCall.arguments[2];
119
- if (optionsArgument === void 0 || optionsArgument.type !== AST_NODE_TYPES.ObjectExpression) {
121
+ if (optionsArgument === void 0) {
120
122
  context.report({
121
123
  node: serviceCall,
122
124
  messageId: "invalidOptions"
123
125
  });
124
126
  return;
125
127
  }
126
- const resolveWithFullResponseProperty = optionsArgument.properties.find(
127
- (property) => property.type === AST_NODE_TYPES.Property && property.key.type === AST_NODE_TYPES.Identifier && property.key.name === "resolveWithFullResponse"
128
- );
129
- if (resolveWithFullResponseProperty?.type !== AST_NODE_TYPES.Property || resolveWithFullResponseProperty.value.type !== AST_NODE_TYPES.Literal || resolveWithFullResponseProperty.value.value !== true) {
130
- context.report({
131
- node: optionsArgument,
132
- messageId: "invalidOptions"
133
- });
134
- return;
128
+ if (optionsArgument.type === AST_NODE_TYPES.Identifier) {
129
+ const optionsTypeString = getType(optionsArgument);
130
+ if (optionsTypeString === "FullResponseOptions") {
131
+ return;
132
+ }
133
+ const variable = parserService.esTreeNodeToTSNodeMap.get(optionsArgument);
134
+ const optionType = typeChecker.getTypeAtLocation(variable);
135
+ const resolveWithFullResponseProperty = optionType.getProperty("resolveWithFullResponse");
136
+ if (resolveWithFullResponseProperty?.declarations?.[0]?.getText() === "resolveWithFullResponse: true") {
137
+ return;
138
+ }
139
+ } else if (optionsArgument.type === AST_NODE_TYPES.ObjectExpression) {
140
+ const resolveWithFullResponseProperty = optionsArgument.properties.find(
141
+ (property) => property.type === AST_NODE_TYPES.Property && property.key.type === AST_NODE_TYPES.Identifier && property.key.name === "resolveWithFullResponse"
142
+ );
143
+ if (resolveWithFullResponseProperty?.type === AST_NODE_TYPES.Property && resolveWithFullResponseProperty.value.type === AST_NODE_TYPES.Literal && resolveWithFullResponseProperty.value.value === true) {
144
+ return;
145
+ }
135
146
  }
147
+ context.report({
148
+ node: optionsArgument,
149
+ messageId: "invalidOptions"
150
+ });
136
151
  } catch (error) {
137
152
  console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
138
153
  context.report({
@@ -155,4 +170,4 @@ export {
155
170
  require_resolve_full_response_default as default,
156
171
  ruleId
157
172
  };
158
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtcmVzb2x2ZS1mdWxsLXJlc3BvbnNlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLFNBQVMsZ0JBQWdCLG1CQUE2QjtBQUN0RCxTQUFTLHNCQUFrQztBQUMzQyxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLDZCQUE2QjtBQUUvQixJQUFNLFNBQVM7QUFFZixJQUFNLG1CQUEyQjtBQUVqQyxJQUFNLHVCQUErQjtBQUU1QyxJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBa0UsV0FBVztBQUFBLEVBQ2pGLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixnQkFDRTtBQUFBLE1BQ0YsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRO0FBQzNCLFVBQU0sZUFBZSxXQUFXO0FBQ2hDLFVBQU0sZ0JBQWdCLFlBQVksa0JBQWtCLE9BQU87QUFDM0QsVUFBTSxjQUFjLGNBQWMsUUFBUSxlQUFlO0FBRXpELGFBQVMsbUJBQW1CLGFBQXdDLE9BQWM7QUFDaEYsVUFDRyxhQUFhLFNBQVMsZUFBZSxXQUFXLE9BQU8sWUFBWSxVQUFVLFlBQzlFLGFBQWEsU0FBUyxlQUFlLGlCQUNyQztBQUNBLGNBQU0sVUFBVSxXQUFXLFFBQVEsV0FBVztBQUM5QyxlQUFPLGlCQUFpQixLQUFLLE9BQU8sS0FBSyxxQkFBcUIsS0FBSyxPQUFPO0FBQUEsTUFDNUU7QUFFQSxVQUFJLGFBQWEsU0FBUyxlQUFlLFlBQVk7QUFDbkQsY0FBTSxnQkFBZ0IsTUFBTSxVQUFVLEtBQUssQ0FB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
173
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlcXVpcmUtcmVzb2x2ZS1mdWxsLXJlc3BvbnNlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQVFBLFNBQVMsVUFBVSxjQUFjO0FBQ2pDLFNBQVMsZ0JBQWdCLG1CQUE2QjtBQUN0RCxTQUFTLHNCQUFrQztBQUMzQyxPQUFPLHlCQUF5QjtBQUNoQyxTQUFTLDZCQUE2QjtBQUUvQixJQUFNLFNBQVM7QUFFZixJQUFNLG1CQUEyQjtBQUVqQyxJQUFNLHVCQUErQjtBQUU1QyxJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBa0UsV0FBVztBQUFBLEVBQ2pGLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixnQkFDRTtBQUFBLE1BQ0YsY0FBYztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRO0FBQzNCLFVBQU0sZUFBZSxXQUFXO0FBQ2hDLFVBQU0sZ0JBQWdCLFlBQVksa0JBQWtCLE9BQU87QUFDM0QsVUFBTSxjQUFjLGNBQWMsUUFBUSxlQUFlO0FBRXpELGFBQVMsbUJBQW1CLGFBQXdDLE9BQWM7QUFDaEYsVUFDRyxhQUFhLFNBQVMsZUFBZSxXQUFXLE9BQU8sWUFBWSxVQUFVLFlBQzlFLGFBQWEsU0FBUyxlQUFlLGlCQUNyQztBQUNBLGNBQU0sVUFBVSxXQUFXLFFBQVEsV0FBVztBQUM5QyxlQUFPLGlCQUFpQixLQUFLLE9BQU8sS0FBSyxxQkFBcUIsS0FBSyxPQUFPO0FBQUEsTUFDNUU7QUFFQSxVQUFJLGFBQWEsU0FBUyxlQUFlLFlBQVk7QUFDbkQsY0FBTSxnQkFBZ0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxhQUFhLFNBQVMsU0FBUyxZQUFZLElBQUk7QUFDM0YsWUFBSSxlQUFlO0FBQ2pCLGdCQUFNLHFCQUFxQixjQUFjLEtBQUssS0FBSyxDQUFDLFFBQVEsSUFBSSxTQUFTLGVBQWUsUUFBUTtBQUNoRyxjQUFJLG9CQUFvQjtBQUN0QixrQkFBTSx5QkFBeUIsbUJBQW1CO0FBQ2xELG1CQUFPLEdBQUcsdUJBQXVCLE1BQU0sK0NBQStDO0FBQ3RGLG1CQUFPLG1CQUFtQix1QkFBdUIsTUFBTSxLQUFLO0FBQUEsVUFDOUQ7QUFDQSxpQkFBTztBQUFBLFFBQ1Q7QUFBQSxNQUNGO0FBRUEsYUFBTztBQUFBLElBQ1Q7QUFFQSxhQUFTLFFBQVEsWUFBaUM7QUFDaEQsWUFBTSxXQUFXLGNBQWMsc0JBQXNCLElBQUksVUFBVTtBQUNuRSxZQUFNLGVBQWUsWUFBWSxrQkFBa0IsUUFBUTtBQUMzRCxhQUFPLFlBQVksYUFBYSxZQUFZO0FBQUEsSUFDOUM7QUFFQSxhQUFTLGtCQUFrQixNQUFjO0FBQ3ZDLGFBQU8saUJBQWlCLEtBQUssSUFBSTtBQUFBLElBQ25DO0FBRUEsYUFBUyx1QkFBdUIsYUFBc0M7QUFDcEUsWUFBTSxTQUFTLFlBQVk7QUFDM0IsVUFBSSxPQUFPLFNBQVMsZUFBZSxrQkFBa0I7QUFDbkQsZUFBTztBQUFBLE1BQ1Q7QUFFQSxZQUFNLFdBQVcsT0FBTztBQUN4QixVQUFJLFNBQVMsU0FBUyxlQUFlLFlBQVk7QUFDL0MsZUFBTyxRQUFRLFFBQVEsTUFBTSxjQUFjLGtCQUFrQixTQUFTLElBQUk7QUFBQSxNQUM1RTtBQUNBLFVBQUksU0FBUyxTQUFTLGVBQWUsZ0JBQWdCO0FBQ25ELGVBQU87QUFBQSxNQUNUO0FBRUEsWUFBTSxDQUFDLGVBQWUsSUFBSSxTQUFTO0FBQ25DLFVBQUksaUJBQWlCLFNBQVMsZUFBZSxZQUFZO0FBQ3ZELGVBQU87QUFBQSxNQUNUO0FBQ0EsVUFBSSxnQkFBZ0IsU0FBUyxtQkFBbUIsUUFBUSxlQUFlLE1BQU0sa0JBQWtCO0FBQzdGLGVBQU87QUFBQSxNQUNUO0FBQ0EsWUFBTSxVQUFVLFNBQVM7QUFDekIsVUFBSSxRQUFRLFNBQVMsZUFBZSxZQUFZO0FBQzlDLGVBQU8sUUFBUSxPQUFPLE1BQU07QUFBQSxNQUM5QjtBQUVBLFVBQUksUUFBUSxTQUFTLGVBQWUsa0JBQWtCO0FBQ3BELGVBQU87QUFBQSxNQUNUO0FBQ0EsWUFBTSxXQUFXLFFBQVE7QUFDekIsVUFBSSxTQUFTLFNBQVMsZUFBZSxZQUFZO0FBQy9DLGVBQU8sUUFBUSxRQUFRLE1BQU07QUFBQSxNQUMvQjtBQUVBLFVBQUksU0FBUyxTQUFTLGVBQWUsa0JBQWtCO0FBQ3JELGVBQU87QUFBQSxNQUNUO0FBQ0EsWUFBTSxnQkFBZ0IsU0FBUztBQUMvQixVQUFJLGNBQWMsU0FBUyxlQUFlLFlBQVk7QUFDcEQsZUFBTyxDQUFDLGlCQUFpQixpQ0FBaUMsRUFBRSxTQUFTLFFBQVEsYUFBYSxDQUFDO0FBQUEsTUFDN0Y7QUFHQSxVQUFJLGNBQWMsU0FBUyxlQUFlLGtCQUFrQjtBQUMxRCxlQUFPO0FBQUEsTUFDVDtBQUNBLFlBQU0sVUFBVSxjQUFjO0FBQzlCLFVBQUksUUFBUSxTQUFTLGVBQWUsWUFBWTtBQUM5QyxlQUFPLFFBQVEsU0FBUyxhQUFhLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDNUQ7QUFFQSxhQUFPO0FBQUEsSUFDVDtBQUVBLFdBQU87QUFBQSxNQUNMLDBFQUEwRSxDQUN4RSxnQkFDRztBQUNILFlBQUk7QUFDRixjQUFJLENBQUMsdUJBQXVCLFdBQVcsR0FBRztBQUN4QztBQUFBLFVBQ0Y7QUFFQSxnQkFBTSxxQkFBcUIsc0JBQXNCLFdBQVc7QUFDNUQsaUJBQU8sR0FBRyxvQkFBb0IsaUNBQWlDO0FBQy9ELGdCQUFNLFFBQVEsY0FBYyxRQUFRLGtCQUFrQjtBQUN0RCxpQkFBTyxHQUFHLE9BQU8sb0JBQW9CO0FBQ3JDLGdCQUFNLGNBQWMsWUFBWSxVQUFVLENBQUM7QUFDM0MsY0FBSSxDQUFDLG1CQUFtQixhQUFhLEtBQUssR0FBRztBQUMzQztBQUFBLFVBQ0Y7QUFFQSxpQkFBTyxHQUFHLFlBQVksT0FBTyxTQUFTLGVBQWUsZ0JBQWdCO0FBQ3JFLGlCQUFPLEdBQUcsWUFBWSxPQUFPLFNBQVMsU0FBUyxlQUFlLFVBQVU7QUFHeEUsZ0JBQU0sU0FBUyxZQUFZLE9BQU8sU0FBUztBQUczQyxnQkFBTSxrQkFBa0IsQ0FBQyxPQUFPLFFBQVEsS0FBSyxFQUFFLFNBQVMsTUFBTSxJQUMxRCxZQUFZLFVBQVUsQ0FBQyxJQUN2QixZQUFZLFVBQVUsQ0FBQztBQUMzQixjQUFJLG9CQUFvQixRQUFXO0FBQ2pDLG9CQUFRLE9BQU87QUFBQSxjQUNiLE1BQU07QUFBQSxjQUNOLFdBQVc7QUFBQSxZQUNiLENBQUM7QUFDRDtBQUFBLFVBQ0Y7QUFFQSxjQUFJLGdCQUFnQixTQUFTLGVBQWUsWUFBWTtBQUN0RCxrQkFBTSxvQkFBb0IsUUFBUSxlQUFlO0FBQ2pELGdCQUFJLHNCQUFzQix1QkFBdUI7QUFDL0M7QUFBQSxZQUNGO0FBQ0Esa0JBQU0sV0FBVyxjQUFjLHNCQUFzQixJQUFJLGVBQWU7QUFDeEUsa0JBQU0sYUFBYSxZQUFZLGtCQUFrQixRQUFRO0FBQ3pELGtCQUFNLGtDQUFrQyxXQUFXLFlBQVkseUJBQXlCO0FBQ3hGLGdCQUFJLGlDQUFpQyxlQUFlLENBQUMsR0FBRyxRQUFRLE1BQU0saUNBQWlDO0FBQ3JHO0FBQUEsWUFDRjtBQUFBLFVBQ0YsV0FBVyxnQkFBZ0IsU0FBUyxlQUFlLGtCQUFrQjtBQUNuRSxrQkFBTSxrQ0FBa0MsZ0JBQWdCLFdBQVc7QUFBQSxjQUNqRSxDQUFDLGFBQ0MsU0FBUyxTQUFTLGVBQWUsWUFDakMsU0FBUyxJQUFJLFNBQVMsZUFBZSxjQUNyQyxTQUFTLElBQUksU0FBUztBQUFBLFlBQzFCO0FBQ0EsZ0JBQ0UsaUNBQWlDLFNBQVMsZUFBZSxZQUN6RCxnQ0FBZ0MsTUFBTSxTQUFTLGVBQWUsV0FDOUQsZ0NBQWdDLE1BQU0sVUFBVSxNQUNoRDtBQUNBO0FBQUEsWUFDRjtBQUFBLFVBQ0Y7QUFDQSxrQkFBUSxPQUFPO0FBQUEsWUFDYixNQUFNO0FBQUEsWUFDTixXQUFXO0FBQUEsVUFDYixDQUFDO0FBQUEsUUFDSCxTQUFTLE9BQU87QUFFZCxrQkFBUSxNQUFNLG1CQUFtQixNQUFNLG1CQUFtQixRQUFRLFFBQVEsTUFBTSxLQUFLO0FBQ3JGLGtCQUFRLE9BQU87QUFBQSxZQUNiLE1BQU07QUFBQSxZQUNOLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxjQUNKLFVBQVUsUUFBUTtBQUFBLGNBQ2xCLE9BQU8saUJBQWlCLFFBQVEsTUFBTSxTQUFTLElBQUksS0FBSyxVQUFVLEtBQUs7QUFBQSxZQUN6RTtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDO0FBRUQsSUFBTyx3Q0FBUTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,3 +1,5 @@
1
1
  import type { TSESLint } from '@typescript-eslint/utils';
2
- declare const pluginToExport: TSESLint.FlatConfig.Plugin;
3
- export default pluginToExport;
2
+ declare const defaultToExport: Exclude<TSESLint.FlatConfig.Plugin, 'config'> & {
3
+ configs: Record<string, TSESLint.FlatConfig.Config[]>;
4
+ };
5
+ export default defaultToExport;
@@ -0,0 +1,5 @@
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+ export declare const ruleId = "no-legacy-service-typing";
3
+ declare const DISALLOWED_SERVICE_TYPINGS: string[] | undefined;
4
+ declare const rule: ESLintUtils.RuleModule<'noLegacyServiceTyping', [typeof DISALLOWED_SERVICE_TYPINGS]>;
5
+ export default rule;
package/package.json CHANGED
@@ -1,96 +1 @@
1
- {
2
- "name": "@checkdigit/eslint-plugin",
3
- "version": "7.4.1",
4
- "description": "Check Digit eslint plugins",
5
- "keywords": [
6
- "eslint",
7
- "eslintplugin"
8
- ],
9
- "homepage": "https://github.com/checkdigit/eslint-plugin#readme",
10
- "bugs": {
11
- "url": "https://github.com/checkdigit/eslint-plugin/issues"
12
- },
13
- "repository": {
14
- "type": "git",
15
- "url": "https://github.com/checkdigit/eslint-plugin"
16
- },
17
- "license": "MIT",
18
- "author": "Check Digit, LLC",
19
- "sideEffects": false,
20
- "type": "module",
21
- "exports": {
22
- ".": {
23
- "types": "./dist-types/index.d.ts",
24
- "import": "./dist-mjs/index.mjs",
25
- "default": "./dist-mjs/index.mjs"
26
- }
27
- },
28
- "files": [
29
- "src",
30
- "dist-types",
31
- "dist-mjs",
32
- "!src/**/test/**",
33
- "!src/**/*.test.ts",
34
- "!src/**/*.spec.ts",
35
- "!dist-types/**/test/**",
36
- "!dist-types/**/*.test.d.ts",
37
- "!dist-types/**/*.spec.d.ts",
38
- "!dist-mjs/**/test/**",
39
- "!dist-mjs/**/*.test.mjs",
40
- "!dist-mjs/**/*.spec.mjs",
41
- "SECURITY.md"
42
- ],
43
- "scripts": {
44
- "build:dist-mjs": "rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs",
45
- "build:dist-types": "rimraf dist-types && npx builder --type=types --outDir=dist-types",
46
- "ci:compile": "tsc --noEmit",
47
- "ci:coverage": "NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true",
48
- "ci:lint": "npm run lint",
49
- "ci:style": "npm run prettier",
50
- "ci:test": "NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false",
51
- "lint": "eslint --max-warnings 0 .",
52
- "lint:fix": "eslint --max-warnings 0 --fix .",
53
- "prepare": "",
54
- "prepublishOnly": "npm run build:dist-types && npm run build:dist-mjs",
55
- "prettier": "prettier --ignore-path .gitignore --list-different .",
56
- "prettier:fix": "prettier --ignore-path .gitignore --write .",
57
- "test": "npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"
58
- },
59
- "prettier": "@checkdigit/prettier-config",
60
- "jest": {
61
- "preset": "@checkdigit/jest-config"
62
- },
63
- "dependencies": {
64
- "@typescript-eslint/type-utils": "^8.15.0",
65
- "@typescript-eslint/utils": "^8.15.0",
66
- "ts-api-utils": "^1.4.0"
67
- },
68
- "devDependencies": {
69
- "@checkdigit/jest-config": "^6.0.2",
70
- "@checkdigit/prettier-config": "^5.5.1",
71
- "@checkdigit/typescript-config": "^8.0.0",
72
- "@eslint/js": "^9.15.0",
73
- "@types/eslint": "^9.6.1",
74
- "@types/eslint-config-prettier": "^6.11.3",
75
- "@typescript-eslint/parser": "^8.15.0",
76
- "@typescript-eslint/rule-tester": "^8.15.0",
77
- "eslint": "^9.15.0",
78
- "eslint-config-prettier": "^9.1.0",
79
- "eslint-import-resolver-typescript": "^3.6.3",
80
- "eslint-plugin-eslint-plugin": "^6.3.2",
81
- "eslint-plugin-import": "^2.31.0",
82
- "eslint-plugin-no-only-tests": "^3.3.0",
83
- "eslint-plugin-no-secrets": "^1.1.2",
84
- "eslint-plugin-node": "^11.1.0",
85
- "eslint-plugin-sonarjs": "1.0.4",
86
- "http-status-codes": "^2.3.0",
87
- "rimraf": "^6.0.1",
88
- "typescript-eslint": "^8.15.0"
89
- },
90
- "peerDependencies": {
91
- "eslint": ">=9 <10"
92
- },
93
- "engines": {
94
- "node": ">=20.17"
95
- }
96
- }
1
+ {"name":"@checkdigit/eslint-plugin","version":"7.5.0-PR.93-6f1c","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.15.0","@typescript-eslint/utils":"^8.15.0","debug":"^4.3.7","ts-api-utils":"^1.4.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.1","@checkdigit/typescript-config":"^8.0.0","@eslint/js":"^9.15.0","@types/debug":"^4.1.12","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.15.0","@typescript-eslint/rule-tester":"^8.15.0","eslint":"^9.15.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.3.2","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^1.1.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.15.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
package/src/index.ts CHANGED
@@ -10,7 +10,7 @@ import type { TSESLint } from '@typescript-eslint/utils';
10
10
 
11
11
  import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
12
12
  import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from './no-duplicated-imports';
13
- import noFullResponse, { ruleId as noFullResponseRuleId } from './agent/no-full-response';
13
+ import noLegacyServiceTyping, { ruleId as noLegacyServiceTypingRuleId } from './no-legacy-service-typing';
14
14
  import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method';
15
15
  import requireFixedServicesImport, {
16
16
  ruleId as requireFixedServicesImportRuleId,
@@ -21,7 +21,7 @@ import requireResolveFullResponse, {
21
21
  import requireTypeOutOfTypeOnlyImports, {
22
22
  ruleId as requireTypeOutOfTypeOnlyImportsRuleId,
23
23
  } from './require-type-out-of-type-only-imports';
24
- import noServeRuntime, { ruleId as noServeRuntimeRuleId } from './agent/no-serve-runtime';
24
+ import noServeRuntime, { ruleId as noServeRuntimeRuleId } from './no-serve-runtime';
25
25
  import filePathComment from './file-path-comment';
26
26
  import noCardNumbers from './no-card-numbers';
27
27
  import noSideEffects from './no-side-effects';
@@ -48,69 +48,83 @@ const rules: Record<string, TSESLint.LooseRuleDefinition> = {
48
48
  'object-literal-response': objectLiteralResponse,
49
49
  [invalidJsonStringifyRuleId]: invalidJsonStringify,
50
50
  [noPromiseInstanceMethodRuleId]: noPromiseInstanceMethod,
51
- [noFullResponseRuleId]: noFullResponse,
51
+ [noLegacyServiceTypingRuleId]: noLegacyServiceTyping,
52
52
  [requireResolveFullResponseRuleId]: requireResolveFullResponse,
53
- [requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
54
53
  [noDuplicatedImportsRuleId]: noDuplicatedImports,
55
- [requireFixedServicesImportRuleId]: requireFixedServicesImport,
56
54
  [noServeRuntimeRuleId]: noServeRuntime,
55
+ [requireFixedServicesImportRuleId]: requireFixedServicesImport,
56
+ [requireTypeOutOfTypeOnlyImportsRuleId]: requireTypeOutOfTypeOnlyImports,
57
57
  };
58
58
 
59
59
  const plugin: TSESLint.FlatConfig.Plugin = {
60
60
  rules,
61
61
  };
62
62
 
63
- const configs: Record<string, TSESLint.FlatConfig.Config> = {
64
- all: {
65
- plugins: {
66
- '@checkdigit': plugin,
67
- },
68
- rules: {
69
- '@checkdigit/no-card-numbers': 'error',
70
- '@checkdigit/file-path-comment': 'error',
71
- '@checkdigit/no-random-v4-uuid': 'error',
72
- '@checkdigit/no-uuid': 'error',
73
- '@checkdigit/require-strict-assert': 'error',
74
- '@checkdigit/no-wallaby-comment': 'error',
75
- '@checkdigit/no-side-effects': ['error', { excludedIdentifiers: ['assert', 'debug', 'log', 'promisify'] }],
76
- '@checkdigit/regular-expression-comment': 'error',
77
- '@checkdigit/require-assert-predicate-rejects-throws': 'error',
78
- '@checkdigit/object-literal-response': 'error',
79
- '@checkdigit/no-test-import': 'error',
80
- [`@checkdigit/${invalidJsonStringifyRuleId}`]: 'error',
81
- [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: 'error',
82
- [`@checkdigit/${noFullResponseRuleId}`]: 'error',
83
- [`@checkdigit/${requireResolveFullResponseRuleId}`]: 'error',
84
- [`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: 'error',
85
- [`@checkdigit/${noDuplicatedImportsRuleId}`]: 'error',
86
- [`@checkdigit/${requireFixedServicesImportRuleId}`]: 'error',
87
- [`@checkdigit/${noServeRuntimeRuleId}`]: 'error',
88
- },
89
- },
90
- recommended: {
91
- plugins: {
92
- '@checkdigit': plugin,
63
+ const configs: Record<string, TSESLint.FlatConfig.Config[]> = {
64
+ all: [
65
+ {
66
+ files: ['**/*.ts'],
67
+ plugins: {
68
+ '@checkdigit': plugin,
69
+ },
70
+ rules: {
71
+ '@checkdigit/no-card-numbers': 'error',
72
+ '@checkdigit/file-path-comment': 'error',
73
+ '@checkdigit/no-random-v4-uuid': 'error',
74
+ '@checkdigit/no-uuid': 'error',
75
+ '@checkdigit/require-strict-assert': 'error',
76
+ '@checkdigit/no-wallaby-comment': 'error',
77
+ '@checkdigit/no-side-effects': ['error', { excludedIdentifiers: ['assert', 'debug', 'log', 'promisify'] }],
78
+ '@checkdigit/regular-expression-comment': 'error',
79
+ '@checkdigit/require-assert-predicate-rejects-throws': 'error',
80
+ '@checkdigit/object-literal-response': 'error',
81
+ '@checkdigit/no-test-import': 'error',
82
+ [`@checkdigit/${invalidJsonStringifyRuleId}`]: 'error',
83
+ [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: 'error',
84
+ [`@checkdigit/${noLegacyServiceTypingRuleId}`]: 'error',
85
+ [`@checkdigit/${requireResolveFullResponseRuleId}`]: 'error',
86
+ [`@checkdigit/${noDuplicatedImportsRuleId}`]: 'error',
87
+ [`@checkdigit/${requireFixedServicesImportRuleId}`]: 'error',
88
+ [`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: 'error',
89
+ [`@checkdigit/${noServeRuntimeRuleId}`]: 'error',
90
+ },
93
91
  },
94
- rules: {
95
- '@checkdigit/no-card-numbers': 'error',
96
- '@checkdigit/file-path-comment': 'off',
97
- '@checkdigit/no-random-v4-uuid': 'error',
98
- '@checkdigit/no-uuid': 'error',
99
- '@checkdigit/require-strict-assert': 'error',
100
- '@checkdigit/no-wallaby-comment': 'off',
101
- '@checkdigit/no-side-effects': 'error',
102
- '@checkdigit/regular-expression-comment': 'error',
103
- '@checkdigit/require-assert-predicate-rejects-throws': 'error',
104
- '@checkdigit/object-literal-response': 'error',
105
- '@checkdigit/no-test-import': 'error',
106
- [`@checkdigit/${invalidJsonStringifyRuleId}`]: 'error',
107
- [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: 'error',
92
+ ],
93
+ recommended: [
94
+ {
95
+ files: ['**/*.ts'],
96
+ plugins: {
97
+ '@checkdigit': plugin,
98
+ },
99
+ rules: {
100
+ '@checkdigit/no-card-numbers': 'error',
101
+ '@checkdigit/file-path-comment': 'off',
102
+ '@checkdigit/no-random-v4-uuid': 'error',
103
+ '@checkdigit/no-uuid': 'error',
104
+ '@checkdigit/require-strict-assert': 'error',
105
+ '@checkdigit/no-wallaby-comment': 'off',
106
+ '@checkdigit/no-side-effects': 'error',
107
+ '@checkdigit/regular-expression-comment': 'error',
108
+ '@checkdigit/require-assert-predicate-rejects-throws': 'error',
109
+ '@checkdigit/object-literal-response': 'error',
110
+ '@checkdigit/no-test-import': 'error',
111
+ [`@checkdigit/${invalidJsonStringifyRuleId}`]: 'error',
112
+ [`@checkdigit/${noPromiseInstanceMethodRuleId}`]: 'off',
113
+ [`@checkdigit/${noLegacyServiceTypingRuleId}`]: 'off',
114
+ [`@checkdigit/${requireResolveFullResponseRuleId}`]: 'off',
115
+ [`@checkdigit/${noDuplicatedImportsRuleId}`]: 'error',
116
+ [`@checkdigit/${requireFixedServicesImportRuleId}`]: 'off',
117
+ [`@checkdigit/${requireTypeOutOfTypeOnlyImportsRuleId}`]: 'error',
118
+ [`@checkdigit/${noServeRuntimeRuleId}`]: 'off',
119
+ },
108
120
  },
109
- },
121
+ ],
110
122
  };
111
123
 
112
- const pluginToExport: TSESLint.FlatConfig.Plugin = {
124
+ const defaultToExport: Exclude<TSESLint.FlatConfig.Plugin, 'config'> & {
125
+ configs: Record<string, TSESLint.FlatConfig.Config[]>;
126
+ } = {
113
127
  ...plugin,
114
128
  configs,
115
129
  };
116
- export default pluginToExport;
130
+ export default defaultToExport;
@@ -64,6 +64,7 @@ export function isUsedInArrayOrAsArgument(node: Node): boolean {
64
64
 
65
65
  if (
66
66
  parent.type === 'ArrayExpression' ||
67
+ parent.type === 'ArrowFunctionExpression' ||
67
68
  (parent.type === 'CallExpression' && parent.arguments.includes(node as Expression))
68
69
  ) {
69
70
  return true;
@@ -0,0 +1,49 @@
1
+ // no-legacy-service-typing.ts
2
+
3
+ /*
4
+ * Copyright (c) 2021-2024 Check Digit, LLC
5
+ *
6
+ * This code is licensed under the MIT license (see LICENSE.txt for details).
7
+ */
8
+
9
+ import { AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
10
+ import getDocumentationUrl from './get-documentation-url';
11
+
12
+ export const ruleId = 'no-legacy-service-typing';
13
+
14
+ const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
15
+
16
+ const DISALLOWED_SERVICE_TYPINGS: string[] | undefined = ['FullResponse', 'Endpoint'];
17
+
18
+ const rule: ESLintUtils.RuleModule<'noLegacyServiceTyping', [typeof DISALLOWED_SERVICE_TYPINGS]> = createRule({
19
+ name: ruleId,
20
+ meta: {
21
+ type: 'problem',
22
+ docs: {
23
+ description: 'Legacy service typings should not be used.',
24
+ },
25
+ messages: {
26
+ noLegacyServiceTyping: 'Please remove the usage of legacy service typings.',
27
+ },
28
+ schema: [{ type: 'array', items: { type: 'string' } }],
29
+ },
30
+ defaultOptions: [DISALLOWED_SERVICE_TYPINGS],
31
+ create(context) {
32
+ return {
33
+ TSTypeReference: (typeReference: TSESTree.TSTypeReference) => {
34
+ if (
35
+ typeReference.typeName.type === AST_NODE_TYPES.Identifier &&
36
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
37
+ (context.options[0] ?? DISALLOWED_SERVICE_TYPINGS).includes(typeReference.typeName.name)
38
+ ) {
39
+ context.report({
40
+ messageId: 'noLegacyServiceTyping',
41
+ node: typeReference,
42
+ });
43
+ }
44
+ },
45
+ };
46
+ },
47
+ });
48
+
49
+ export default rule;
@@ -1,4 +1,4 @@
1
- // agent/no-serve-runtime.ts
1
+ // no-serve-runtime.ts
2
2
 
3
3
  /*
4
4
  * Copyright (c) 2021-2024 Check Digit, LLC
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
10
- import getDocumentationUrl from '../get-documentation-url';
10
+ import getDocumentationUrl from './get-documentation-url';
11
11
 
12
12
  export const ruleId = 'no-serve-runtime';
13
13
 
@@ -54,10 +54,12 @@ const rule: ESLintUtils.RuleModule<'invalidOptions' | 'unknownError'> = createRu
54
54
  const foundVariable = scope.variables.find((variable) => variable.name === urlArgument.name);
55
55
  if (foundVariable) {
56
56
  const variableDefinition = foundVariable.defs.find((def) => def.type === DefinitionType.Variable);
57
- assert.ok(variableDefinition, `Variable "${urlArgument.name}" not defined in scope`);
58
- const variableDefinitionNode = variableDefinition.node;
59
- assert.ok(variableDefinitionNode.init, 'Variable definition node has no init property');
60
- return isUrlArgumentValid(variableDefinitionNode.init, scope);
57
+ if (variableDefinition) {
58
+ const variableDefinitionNode = variableDefinition.node;
59
+ assert.ok(variableDefinitionNode.init, 'Variable definition node has no init property');
60
+ return isUrlArgumentValid(variableDefinitionNode.init, scope);
61
+ }
62
+ return true;
61
63
  }
62
64
  }
63
65
 
@@ -156,7 +158,7 @@ const rule: ESLintUtils.RuleModule<'invalidOptions' | 'unknownError'> = createRu
156
158
  const optionsArgument = ['get', 'head', 'del'].includes(method)
157
159
  ? serviceCall.arguments[1]
158
160
  : serviceCall.arguments[2];
159
- if (optionsArgument === undefined || optionsArgument.type !== AST_NODE_TYPES.ObjectExpression) {
161
+ if (optionsArgument === undefined) {
160
162
  context.report({
161
163
  node: serviceCall,
162
164
  messageId: 'invalidOptions',
@@ -164,23 +166,36 @@ const rule: ESLintUtils.RuleModule<'invalidOptions' | 'unknownError'> = createRu
164
166
  return;
165
167
  }
166
168
 
167
- const resolveWithFullResponseProperty = optionsArgument.properties.find(
168
- (property) =>
169
- property.type === AST_NODE_TYPES.Property &&
170
- property.key.type === AST_NODE_TYPES.Identifier &&
171
- property.key.name === 'resolveWithFullResponse',
172
- );
173
- if (
174
- resolveWithFullResponseProperty?.type !== AST_NODE_TYPES.Property ||
175
- resolveWithFullResponseProperty.value.type !== AST_NODE_TYPES.Literal ||
176
- resolveWithFullResponseProperty.value.value !== true
177
- ) {
178
- context.report({
179
- node: optionsArgument,
180
- messageId: 'invalidOptions',
181
- });
182
- return;
169
+ if (optionsArgument.type === AST_NODE_TYPES.Identifier) {
170
+ const optionsTypeString = getType(optionsArgument);
171
+ if (optionsTypeString === 'FullResponseOptions') {
172
+ return;
173
+ }
174
+ const variable = parserService.esTreeNodeToTSNodeMap.get(optionsArgument);
175
+ const optionType = typeChecker.getTypeAtLocation(variable);
176
+ const resolveWithFullResponseProperty = optionType.getProperty('resolveWithFullResponse');
177
+ if (resolveWithFullResponseProperty?.declarations?.[0]?.getText() === 'resolveWithFullResponse: true') {
178
+ return;
179
+ }
180
+ } else if (optionsArgument.type === AST_NODE_TYPES.ObjectExpression) {
181
+ const resolveWithFullResponseProperty = optionsArgument.properties.find(
182
+ (property) =>
183
+ property.type === AST_NODE_TYPES.Property &&
184
+ property.key.type === AST_NODE_TYPES.Identifier &&
185
+ property.key.name === 'resolveWithFullResponse',
186
+ );
187
+ if (
188
+ resolveWithFullResponseProperty?.type === AST_NODE_TYPES.Property &&
189
+ resolveWithFullResponseProperty.value.type === AST_NODE_TYPES.Literal &&
190
+ resolveWithFullResponseProperty.value.value === true
191
+ ) {
192
+ return;
193
+ }
183
194
  }
195
+ context.report({
196
+ node: optionsArgument,
197
+ messageId: 'invalidOptions',
198
+ });
184
199
  } catch (error) {
185
200
  // eslint-disable-next-line no-console
186
201
  console.error(`Failed to apply ${ruleId} rule for file "${context.filename}":`, error);
@@ -1,35 +0,0 @@
1
- // src/agent/no-full-response.ts
2
- import { ESLintUtils } from "@typescript-eslint/utils";
3
- import getDocumentationUrl from "../get-documentation-url.mjs";
4
- var ruleId = "no-full-response";
5
- var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
6
- var rule = createRule({
7
- name: ruleId,
8
- meta: {
9
- type: "suggestion",
10
- docs: {
11
- description: "FullResponse type should not be used."
12
- },
13
- messages: {
14
- noFullResponse: "Please remove the usage of FullResponse type."
15
- },
16
- schema: []
17
- },
18
- defaultOptions: [],
19
- create(context) {
20
- return {
21
- 'TSTypeReference[typeName.name="FullResponse"]': (typeReference) => {
22
- context.report({
23
- messageId: "noFullResponse",
24
- node: typeReference
25
- });
26
- }
27
- };
28
- }
29
- });
30
- var no_full_response_default = rule;
31
- export {
32
- no_full_response_default as default,
33
- ruleId
34
- };
35
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FnZW50L25vLWZ1bGwtcmVzcG9uc2UudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsU0FBUyxtQkFBNkI7QUFDdEMsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBRXRCLElBQU0sYUFBYSxZQUFZLFlBQVksQ0FBQyxTQUFTLG9CQUFvQixJQUFJLENBQUM7QUFFOUUsSUFBTSxPQUFpRCxXQUFXO0FBQUEsRUFDaEUsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLGdCQUFnQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDQSxnQkFBZ0IsQ0FBQztBQUFBLEVBQ2pCLE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLGlEQUFpRCxDQUFDLGtCQUE0QztBQUM1RixnQkFBUSxPQUFPO0FBQUEsVUFDYixXQUFXO0FBQUEsVUFDWCxNQUFNO0FBQUEsUUFDUixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sMkJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,4 +0,0 @@
1
- import { ESLintUtils } from '@typescript-eslint/utils';
2
- export declare const ruleId = "no-full-response";
3
- declare const rule: ESLintUtils.RuleModule<'noFullResponse'>;
4
- export default rule;
@@ -1,41 +0,0 @@
1
- // agent/no-full-response.ts
2
-
3
- /*
4
- * Copyright (c) 2021-2024 Check Digit, LLC
5
- *
6
- * This code is licensed under the MIT license (see LICENSE.txt for details).
7
- */
8
-
9
- import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
10
- import getDocumentationUrl from '../get-documentation-url';
11
-
12
- export const ruleId = 'no-full-response';
13
-
14
- const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
15
-
16
- const rule: ESLintUtils.RuleModule<'noFullResponse'> = createRule({
17
- name: ruleId,
18
- meta: {
19
- type: 'suggestion',
20
- docs: {
21
- description: 'FullResponse type should not be used.',
22
- },
23
- messages: {
24
- noFullResponse: 'Please remove the usage of FullResponse type.',
25
- },
26
- schema: [],
27
- },
28
- defaultOptions: [],
29
- create(context) {
30
- return {
31
- 'TSTypeReference[typeName.name="FullResponse"]': (typeReference: TSESTree.TSTypeReference) => {
32
- context.report({
33
- messageId: 'noFullResponse',
34
- node: typeReference,
35
- });
36
- },
37
- };
38
- },
39
- });
40
-
41
- export default rule;