@codeperfect/eslint-plugin 2.10.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/application/index.d.ts +1 -1
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +2 -2
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +4 -5
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +12 -15
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +8 -17
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +6 -8
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/rule.js +4 -5
- package/dist/domain/architecture/consistent-barrel-files/types.js +0 -1
- package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.d.ts.map +1 -1
- package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.js +6 -13
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.js +11 -10
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.js +5 -9
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +6 -9
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.js +5 -10
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.js +4 -8
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.js +4 -5
- package/dist/domain/architecture/no-unused-exports/types.js +0 -1
- package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/rule-utilities.js +13 -19
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/rule.js +4 -5
- package/dist/domain/core/no-useless-delegation/rule.d.ts.map +1 -1
- package/dist/domain/core/no-useless-delegation/rule.js +5 -6
- package/dist/domain/core/prefer-interface-types/autofix.js +4 -5
- package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts.map +1 -1
- package/dist/domain/core/prefer-interface-types/rule-utilities.js +7 -9
- package/dist/domain/core/prefer-interface-types/types.js +0 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +10 -8
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +4 -5
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +7 -9
- package/dist/domain/docs/no-interface-member-docs/types.js +0 -1
- package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/empty-fence-fixes.js +2 -5
- package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/example-utilities.js +3 -9
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/examples.js +6 -13
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/fixes.js +8 -13
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/reporting.js +4 -5
- package/dist/domain/docs/require-example-language/types.js +0 -1
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/rule.js +5 -11
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +5 -14
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +5 -9
- package/dist/domain/index.d.ts +1 -1
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +2 -2
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +2 -5
- package/dist/domain/testing/aaa/analyzer.analysis.js +5 -5
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +5 -14
- package/dist/domain/testing/aaa/analyzer.assertions.js +0 -1
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +12 -16
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +11 -21
- package/dist/domain/testing/aaa/analyzer.classification.js +0 -1
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.super.js +5 -6
- package/dist/domain/testing/aaa/index.js +0 -1
- package/dist/domain/testing/aaa/types.js +0 -1
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +4 -5
- package/dist/domain/testing/index.d.ts +0 -1
- package/dist/domain/testing/index.d.ts.map +1 -1
- package/dist/domain/testing/index.js +1 -2
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +9 -7
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +3 -5
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +6 -4
- package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.js +5 -6
- package/dist/domain/testing/prefer-vi-mocked-import/types.js +0 -1
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-act-result-capture/rule.js +9 -12
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +5 -11
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +4 -5
- package/dist/domain/testing/require-test-companion/types.js +0 -1
- package/dist/infrastructure/codeperfect-plugin.d.ts +0 -2
- package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -1
- package/dist/infrastructure/codeperfect-plugin.js +2 -3
- package/dist/infrastructure/presets.d.ts.map +1 -1
- package/dist/infrastructure/presets.js +1 -3
- package/package.json +21 -20
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.d.ts +0 -2
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.d.ts.map +0 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.js +0 -2
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts +0 -29
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts.map +0 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.js +0 -200
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts +0 -12
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts.map +0 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.js +0 -151
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts +0 -16
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts.map +0 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.js +0 -109
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts +0 -5
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +0 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.js +0 -41
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codeperfect/eslint-plugin",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Custom ESLint rules for TypeScript repositories",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "github:parloti/eslint-plugin",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"\n# ------------------ SCM ------------------ #": "",
|
|
29
29
|
"commit": "npx --yes git-cz",
|
|
30
30
|
"\n# ---------------- BUILDING ---------------- #": "",
|
|
31
|
-
"build": "
|
|
31
|
+
"build": "npx --yes tsx scripts/managed-tasks.ts build",
|
|
32
32
|
"clean": "npx --yes rimraf dist",
|
|
33
33
|
"\n • ---------- compilation ---------- •": "",
|
|
34
34
|
"pack": "npm pack --pack-destination dist",
|
|
@@ -37,12 +37,11 @@
|
|
|
37
37
|
"\n# ---------------- LINTING ---------------- #": "",
|
|
38
38
|
"\n • ------------ checking ------------ •": "",
|
|
39
39
|
"eslint": "npx --yes eslint --max-warnings=0",
|
|
40
|
-
"lint": "
|
|
41
|
-
"lint:run": "concurrently --names=\"prettier,eslint\" --timestamp-format=\"HH:mm:ss\" --prefix=\"[{time} {name}]\" --kill-others-on-fail \"npm run prettier\" \"npm run eslint\"",
|
|
40
|
+
"lint": "npx --yes tsx scripts/managed-tasks.ts lint",
|
|
42
41
|
"prettier": "npx --yes prettier --ignore-unknown --check .",
|
|
43
42
|
"\n • ------------- fixing ------------- •": "",
|
|
44
|
-
"eslint:fix": "
|
|
45
|
-
"lint:fix": "
|
|
43
|
+
"eslint:fix": "npx --yes tsx scripts/managed-tasks.ts eslint:fix",
|
|
44
|
+
"lint:fix": "npx --yes tsx scripts/managed-tasks.ts lint:fix",
|
|
46
45
|
"lint:staged": "npx --yes tsx scripts/lint-staged.ts",
|
|
47
46
|
"fmt": "npm run prettier -- --write",
|
|
48
47
|
"\n • ------------ helpers ------------ •": "",
|
|
@@ -51,9 +50,9 @@
|
|
|
51
50
|
"\n# ---------------- TESTING ---------------- #": "",
|
|
52
51
|
"e2e": "npx --yes vitest run --config vitest.config.e2e.ts",
|
|
53
52
|
"mutation": "npx --yes stryker run",
|
|
54
|
-
"test:all": "
|
|
55
|
-
"typecheck": "tsc --
|
|
56
|
-
"validate": "
|
|
53
|
+
"test:all": "npx --yes tsx scripts/managed-tasks.ts test:all",
|
|
54
|
+
"typecheck": "tsc --project tsconfig.types.json",
|
|
55
|
+
"validate": "npx --yes tsx scripts/managed-tasks.ts validate",
|
|
57
56
|
"\n • -------------- unit -------------- •": "",
|
|
58
57
|
"test": "npx --yes vitest run",
|
|
59
58
|
"tdd": "npm run test -- --watch --silent=true --coverage.enabled=false",
|
|
@@ -71,16 +70,17 @@
|
|
|
71
70
|
"eslint-plugin",
|
|
72
71
|
"custom-rules",
|
|
73
72
|
"typescript",
|
|
74
|
-
"linting"
|
|
73
|
+
"linting",
|
|
74
|
+
"nodejs"
|
|
75
75
|
],
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"@typescript-eslint/utils": "^8.70.
|
|
77
|
+
"@typescript-eslint/utils": "^8.70.1",
|
|
78
78
|
"minimatch": "^10.2.6"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
81
|
"@codeperfect/commitlint-config-emoji": "^1.1.0",
|
|
82
|
-
"@codeperfect/eslint-config": "^1.
|
|
83
|
-
"@commitlint/cz-commitlint": "^21.2.
|
|
82
|
+
"@codeperfect/eslint-config": "^1.19.0",
|
|
83
|
+
"@commitlint/cz-commitlint": "^21.2.3",
|
|
84
84
|
"@eslint-community/eslint-plugin-eslint-comments": "^4.8.1",
|
|
85
85
|
"@eslint/js": "^10.0.1",
|
|
86
86
|
"@stryker-mutator/core": "^10.0.0",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"@stryker-mutator/vitest-runner": "^10.0.0",
|
|
89
89
|
"@stylistic/eslint-plugin": "^5.10.0",
|
|
90
90
|
"@types/lodash-es": "^4.17.12",
|
|
91
|
-
"@types/node": "^26.6.
|
|
92
|
-
"@typescript-eslint/rule-tester": "^8.70.
|
|
91
|
+
"@types/node": "^26.6.3",
|
|
92
|
+
"@typescript-eslint/rule-tester": "^8.70.1",
|
|
93
93
|
"@vitest/coverage-v8": "^4.1.11",
|
|
94
94
|
"@vitest/eslint-plugin": "^1.6.27",
|
|
95
95
|
"chalk": "^6.0.0",
|
|
@@ -103,24 +103,25 @@
|
|
|
103
103
|
"eslint-plugin-jasmine": "^4.2.2",
|
|
104
104
|
"eslint-plugin-jest": "^29.16.6",
|
|
105
105
|
"eslint-plugin-jsdoc": "^64.5.4",
|
|
106
|
-
"eslint-plugin-perfectionist": "^5.
|
|
106
|
+
"eslint-plugin-perfectionist": "^5.12.1",
|
|
107
107
|
"eslint-plugin-prettier": "^5.5.6",
|
|
108
108
|
"eslint-plugin-rxjs-x": "^1.0.6",
|
|
109
|
-
"eslint-plugin-unicorn": "^
|
|
109
|
+
"eslint-plugin-unicorn": "^76.0.0",
|
|
110
110
|
"globals": "^17.12.0",
|
|
111
111
|
"husky": "^9.1.7",
|
|
112
112
|
"jiti": "^2.7.0",
|
|
113
|
-
"lint-staged": "^17.
|
|
113
|
+
"lint-staged": "^17.6.0",
|
|
114
|
+
"listr2": "^11.1.0",
|
|
114
115
|
"lodash-es": "^4.18.1",
|
|
115
116
|
"patch-package": "^8.0.1",
|
|
116
|
-
"prettier": "^3.9.
|
|
117
|
+
"prettier": "^3.9.9",
|
|
117
118
|
"rimraf": "^6.1.3",
|
|
118
119
|
"semantic-release": "^25.0.9",
|
|
119
120
|
"tsc-alias": "^1.9.5",
|
|
120
121
|
"typedoc": "^0.28.20",
|
|
121
122
|
"typedoc-plugin-markdown": "^4.13.1",
|
|
122
123
|
"typescript": "^6.0.3",
|
|
123
|
-
"typescript-eslint": "^8.70.
|
|
124
|
+
"typescript-eslint": "^8.70.1",
|
|
124
125
|
"vitest": "^4.1.11"
|
|
125
126
|
},
|
|
126
127
|
"peerDependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/no-unsafe-vitest-mock-factory-cast/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { noUnsafeVitestMockFactoryCastRule } from "./rule.js";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3Rpbmcvbm8tdW5zYWZlLXZpdGVzdC1tb2NrLWZhY3RvcnktY2FzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBub1Vuc2FmZVZpdGVzdE1vY2tGYWN0b3J5Q2FzdFJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG4iXX0=
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { type TSESTree } from "@typescript-eslint/utils";
|
|
2
|
-
/** Unsafe mock-factory match details. */
|
|
3
|
-
interface MockFactoryMatch {
|
|
4
|
-
/** Whether the match can be safely autofixed. */
|
|
5
|
-
canAutofix: boolean;
|
|
6
|
-
/** Cast-free partial mock expression. */
|
|
7
|
-
mockExpression: TSESTree.Expression;
|
|
8
|
-
/** Second argument to the Vitest mock call. */
|
|
9
|
-
mockFactoryNode: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression;
|
|
10
|
-
/** First argument to the Vitest mock call. */
|
|
11
|
-
mockSpecifierNode: TSESTree.Expression;
|
|
12
|
-
/** Mocked module specifier. */
|
|
13
|
-
moduleSpecifier: string;
|
|
14
|
-
/** Report node. */
|
|
15
|
-
node: TSESTree.Node;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Collects the most appropriate mock-factory match from a `CallExpression`.
|
|
19
|
-
* @param node Call expression to inspect.
|
|
20
|
-
* @returns Unsafe mock factory details when the factory uses a cast.
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
declare function getMockFactoryMatch(node: TSESTree.CallExpression): MockFactoryMatch | undefined;
|
|
27
|
-
export type { MockFactoryMatch };
|
|
28
|
-
export { getMockFactoryMatch };
|
|
29
|
-
//# sourceMappingURL=rule-detection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule-detection.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzE,yCAAyC;AACzC,UAAU,gBAAgB;IACxB,iDAAiD;IACjD,UAAU,EAAE,OAAO,CAAC;IAEpB,yCAAyC;IACzC,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC;IAEpC,+CAA+C;IAC/C,eAAe,EACb,QAAQ,CAAC,uBAAuB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;IAEjE,8CAA8C;IAC9C,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC;IAEvC,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IAExB,mBAAmB;IACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;CACrB;AAiHD;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAC1B,IAAI,EAAE,QAAQ,CAAC,cAAc,GAC5B,gBAAgB,GAAG,SAAS,CA6C9B;AAoGD,YAAY,EAAE,gBAAgB,EAAE,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
|
-
/** Supported `vi` mock method names. */
|
|
3
|
-
const supportedMockNames = new Set(["doMock", "mock"]);
|
|
4
|
-
/**
|
|
5
|
-
* Returns the casted expression only when the factory is safe to autofix.
|
|
6
|
-
* @param node Factory expression to inspect.
|
|
7
|
-
* @returns Cast-free expression when the factory can be safely replaced.
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
11
|
-
* ```
|
|
12
|
-
*/
|
|
13
|
-
function getAutofixableMockExpression(node) {
|
|
14
|
-
if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) {
|
|
15
|
-
if (node.async || node.params.length > 0) {
|
|
16
|
-
return void 0;
|
|
17
|
-
}
|
|
18
|
-
if (node.body.type === AST_NODE_TYPES.BlockStatement) {
|
|
19
|
-
return getAutofixableReturnedCastedExpression(node.body.body);
|
|
20
|
-
}
|
|
21
|
-
return getCastedExpression(node.body);
|
|
22
|
-
}
|
|
23
|
-
if (node.async || node.generator || node.params.length > 0) {
|
|
24
|
-
return void 0;
|
|
25
|
-
}
|
|
26
|
-
return getAutofixableReturnedCastedExpression(node.body.body);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Finds a casted return value from a single-return factory body.
|
|
30
|
-
* @param statements Function body statements.
|
|
31
|
-
* @returns Returned expression when the factory has exactly one return statement.
|
|
32
|
-
* @example
|
|
33
|
-
* ```ts
|
|
34
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
function getAutofixableReturnedCastedExpression(statements) {
|
|
38
|
-
if (statements.length !== 1) {
|
|
39
|
-
return void 0;
|
|
40
|
-
}
|
|
41
|
-
const [statement] = statements;
|
|
42
|
-
if (statement.argument === null) {
|
|
43
|
-
return void 0;
|
|
44
|
-
}
|
|
45
|
-
return getCastedExpression(statement.argument);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Returns the inner expression if the input is a cast expression.
|
|
49
|
-
* @param expression Expression to inspect.
|
|
50
|
-
* @returns Inner expression when the input contains a cast.
|
|
51
|
-
* @example
|
|
52
|
-
* ```ts
|
|
53
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
function getCastedExpression(expression) {
|
|
57
|
-
if (expression.type === AST_NODE_TYPES.TSAsExpression) {
|
|
58
|
-
return stripCastExpressions(expression.expression);
|
|
59
|
-
}
|
|
60
|
-
if (expression.type === AST_NODE_TYPES.TSTypeAssertion) {
|
|
61
|
-
const innerExpression = expression.expression;
|
|
62
|
-
return stripCastExpressions(innerExpression);
|
|
63
|
-
}
|
|
64
|
-
return void 0;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Returns the partial mock expression after removing a cast wrapper.
|
|
68
|
-
* @param node Factory expression to inspect.
|
|
69
|
-
* @returns Cast-free expression when the factory is unsafe.
|
|
70
|
-
* @example
|
|
71
|
-
* ```ts
|
|
72
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
function getCastedMockExpression(node) {
|
|
76
|
-
if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) {
|
|
77
|
-
if (node.body.type === AST_NODE_TYPES.BlockStatement) {
|
|
78
|
-
return getReturnedCastedExpression(node.body.body);
|
|
79
|
-
}
|
|
80
|
-
return getCastedExpression(node.body);
|
|
81
|
-
}
|
|
82
|
-
return getReturnedCastedExpression(node.body.body);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Collects the most appropriate mock-factory match from a `CallExpression`.
|
|
86
|
-
* @param node Call expression to inspect.
|
|
87
|
-
* @returns Unsafe mock factory details when the factory uses a cast.
|
|
88
|
-
* @example
|
|
89
|
-
* ```ts
|
|
90
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
91
|
-
* ```
|
|
92
|
-
*/
|
|
93
|
-
function getMockFactoryMatch(node) {
|
|
94
|
-
if (!isVitestMockCall(node) || node.arguments.length < 2) {
|
|
95
|
-
return void 0;
|
|
96
|
-
}
|
|
97
|
-
const [mockSpecifierNode, mockFactoryNode] = node.arguments;
|
|
98
|
-
if (mockSpecifierNode.type === AST_NODE_TYPES.SpreadElement ||
|
|
99
|
-
mockFactoryNode.type === AST_NODE_TYPES.SpreadElement) {
|
|
100
|
-
return void 0;
|
|
101
|
-
}
|
|
102
|
-
if (mockFactoryNode.type !== AST_NODE_TYPES.ArrowFunctionExpression &&
|
|
103
|
-
mockFactoryNode.type !== AST_NODE_TYPES.FunctionExpression) {
|
|
104
|
-
return void 0;
|
|
105
|
-
}
|
|
106
|
-
const moduleSpecifier = getModuleSpecifier(mockSpecifierNode);
|
|
107
|
-
if (moduleSpecifier === void 0) {
|
|
108
|
-
return void 0;
|
|
109
|
-
}
|
|
110
|
-
const mockExpression = getCastedMockExpression(mockFactoryNode);
|
|
111
|
-
if (mockExpression === void 0) {
|
|
112
|
-
return void 0;
|
|
113
|
-
}
|
|
114
|
-
const autofixableExpression = getAutofixableMockExpression(mockFactoryNode);
|
|
115
|
-
return {
|
|
116
|
-
canAutofix: autofixableExpression !== void 0,
|
|
117
|
-
mockExpression: autofixableExpression ?? mockExpression,
|
|
118
|
-
mockFactoryNode,
|
|
119
|
-
mockSpecifierNode,
|
|
120
|
-
moduleSpecifier,
|
|
121
|
-
node,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Extracts a string module specifier from the first mock argument.
|
|
126
|
-
* @param node First mock argument.
|
|
127
|
-
* @returns Module specifier when statically known.
|
|
128
|
-
* @example
|
|
129
|
-
* ```ts
|
|
130
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
133
|
-
function getModuleSpecifier(node) {
|
|
134
|
-
if (node.type === AST_NODE_TYPES.Literal && typeof node.value === "string") {
|
|
135
|
-
return node.value;
|
|
136
|
-
}
|
|
137
|
-
if (node.type === AST_NODE_TYPES.ImportExpression &&
|
|
138
|
-
node.source.type === AST_NODE_TYPES.Literal &&
|
|
139
|
-
typeof node.source.value === "string") {
|
|
140
|
-
return node.source.value;
|
|
141
|
-
}
|
|
142
|
-
return void 0;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Finds the casted return value inside a function body.
|
|
146
|
-
* @param statements Function body statements.
|
|
147
|
-
* @returns Returned expression when it is casted.
|
|
148
|
-
* @example
|
|
149
|
-
* ```ts
|
|
150
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
151
|
-
* ```
|
|
152
|
-
*/
|
|
153
|
-
function getReturnedCastedExpression(statements) {
|
|
154
|
-
for (const statement of statements) {
|
|
155
|
-
if (statement.type !== AST_NODE_TYPES.ReturnStatement) {
|
|
156
|
-
continue;
|
|
157
|
-
}
|
|
158
|
-
return statement.argument === null
|
|
159
|
-
? void 0
|
|
160
|
-
: getCastedExpression(statement.argument);
|
|
161
|
-
}
|
|
162
|
-
return void 0;
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Checks whether a call targets `vi.mock` or `vi.doMock`.
|
|
166
|
-
* @param node Call expression to inspect.
|
|
167
|
-
* @returns True when the callee is a supported Vitest mock method.
|
|
168
|
-
* @example
|
|
169
|
-
* ```ts
|
|
170
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
171
|
-
* ```
|
|
172
|
-
*/
|
|
173
|
-
function isVitestMockCall(node) {
|
|
174
|
-
if (node.callee.type !== AST_NODE_TYPES.MemberExpression ||
|
|
175
|
-
node.callee.object.type !== AST_NODE_TYPES.Identifier ||
|
|
176
|
-
node.callee.object.name !== "vi" ||
|
|
177
|
-
node.callee.property.type !== AST_NODE_TYPES.Identifier) {
|
|
178
|
-
return false;
|
|
179
|
-
}
|
|
180
|
-
return supportedMockNames.has(node.callee.property.name);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Removes nested cast wrappers from an expression.
|
|
184
|
-
* @param expression Expression to normalize.
|
|
185
|
-
* @returns Expression without any surrounding casts.
|
|
186
|
-
* @example
|
|
187
|
-
* ```ts
|
|
188
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
189
|
-
* ```
|
|
190
|
-
*/
|
|
191
|
-
function stripCastExpressions(expression) {
|
|
192
|
-
let currentExpression = expression;
|
|
193
|
-
while (currentExpression.type === AST_NODE_TYPES.TSAsExpression ||
|
|
194
|
-
currentExpression.type === AST_NODE_TYPES.TSTypeAssertion) {
|
|
195
|
-
currentExpression = currentExpression.expression;
|
|
196
|
-
}
|
|
197
|
-
return currentExpression;
|
|
198
|
-
}
|
|
199
|
-
export { getMockFactoryMatch };
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1kZXRlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3Rpbmcvbm8tdW5zYWZlLXZpdGVzdC1tb2NrLWZhY3RvcnktY2FzdC9ydWxlLWRldGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBd0J6RSx3Q0FBd0M7QUFDeEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBUXZEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyw0QkFBNEIsQ0FDbkMsSUFBb0U7SUFFcEUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNyRCxPQUFPLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFD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LE9BQU8sS0FBSyxDQUFDLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxJQUE2QjtJQUNyRCxJQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxnQkFBZ0I7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxVQUFVO1FBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsVUFBVSxFQUN2RCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsVUFBK0I7SUFFL0IsSUFBSSxpQkFBaUIsR0FBRyxVQUFVLENBQUM7SUFFbkMsT0FDRSxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLGNBQWM7UUFDeEQsaUJBQWlCLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxlQUFlLEVBQ3pELENBQUM7UUFDRCxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7SUFDbkQsQ0FBQztJQUVELE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQztBQUdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVNUX05PREVfVFlQRVMsIHR5cGUgVFNFU1RyZWUgfSBmcm9tIFwiQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzXCI7XG5cbi8qKiBVbnNhZmUgbW9jay1mYWN0b3J5IG1hdGNoIGRldGFpbHMuICovXG5pbnRlcmZhY2UgTW9ja0ZhY3RvcnlNYXRjaCB7XG4gIC8qKiBXaGV0aGVyIHRoZSBtYXRjaCBjYW4gYmUgc2FmZWx5IGF1dG9maXhlZC4gKi9cbiAgY2FuQXV0b2ZpeDogYm9vbGVhbjtcblxuICAvKiogQ2FzdC1mcmVlIHBhcnRpYWwgbW9jayBleHByZXNzaW9uLiAqL1xuICBtb2NrRXhwcmVzc2lvbjogVFNFU1RyZWUuRXhwcmVzc2lvbjtcblxuICAvKiogU2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBWaXRlc3QgbW9jayBjYWxsLiAqL1xuICBtb2NrRmFjdG9yeU5vZGU6XG4gICAgVFNFU1RyZWUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gfCBUU0VTVHJlZS5GdW5jdGlvbkV4cHJlc3Npb247XG5cbiAgLyoqIEZpcnN0IGFyZ3VtZW50IHRvIHRoZSBWaXRlc3QgbW9jayBjYWxsLiAqL1xuICBtb2NrU3BlY2lmaWVyTm9kZTogVFNFU1RyZWUuRXhwcmVzc2lvbjtcblxuICAvKiogTW9ja2VkIG1vZHVsZSBzcGVjaWZpZXIuICovXG4gIG1vZHVsZVNwZWNpZmllcjogc3RyaW5nO1xuXG4gIC8qKiBSZXBvcnQgbm9kZS4gKi9cbiAgbm9kZTogVFNFU1RyZWUuTm9kZTtcbn1cblxuLyoqIFN1cHBvcnRlZCBgdmlgIG1vY2sgbWV0aG9kIG5hbWVzLiAqL1xuY29uc3Qgc3VwcG9ydGVkTW9ja05hbWVzID0gbmV3IFNldChbXCJkb01vY2tcIiwgXCJtb2NrXCJdKTtcblxuLyoqIENhbGxFeHByZXNzaW9uIGFyZ3VtZW50IHRoYXQgaXMgbm90IGEgc3ByZWFkIGVsZW1lbnQuICovXG50eXBlIE5vblNwcmVhZENhbGxFeHByZXNzaW9uQXJndW1lbnQgPSBFeGNsdWRlPFxuICBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbkFyZ3VtZW50LFxuICBUU0VTVHJlZS5TcHJlYWRFbGVtZW50XG4+O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGNhc3RlZCBleHByZXNzaW9uIG9ubHkgd2hlbiB0aGUgZmFjdG9yeSBpcyBzYWZlIHRvIGF1dG9maXguXG4gKiBAcGFyYW0gbm9kZSBGYWN0b3J5IGV4cHJlc3Npb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIENhc3QtZnJlZSBleHByZXNzaW9uIHdoZW4gdGhlIGZhY3RvcnkgY2FuIGJlIHNhZmVseSByZXBsYWNlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW50ZXJuYWwgaGVscGVyIGZvciBuby11bnNhZmUtdml0ZXN0LW1vY2stZmFjdG9yeS1jYXN0LlxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldEF1dG9maXhhYmxlTW9ja0V4cHJlc3Npb24oXG4gIG5vZGU6IFRTRVNUcmVlLkFycm93RnVuY3Rpb25FeHByZXNzaW9uIHwgVFNFU1RyZWUuRnVuY3Rpb25FeHByZXNzaW9uLFxuKTogVFNFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCB7XG4gIGlmIChub2RlLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkFycm93RnVuY3Rpb25FeHByZXNzaW9uKSB7XG4gICAgaWYgKG5vZGUuYXN5bmMgfHwgbm9kZS5wYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ib2R5LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkJsb2NrU3RhdGVtZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QXV0b2ZpeGFibGVSZXR1cm5lZENhc3RlZEV4cHJlc3Npb24obm9kZS5ib2R5LmJvZHkpO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRDYXN0ZWRFeHByZXNzaW9uKG5vZGUuYm9keSk7XG4gIH1cblxuICBpZiAobm9kZS5hc3luYyB8fCBub2RlLmdlbmVyYXRvciB8fCBub2RlLnBhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBnZXRBdXRvZml4YWJsZVJldHVybmVkQ2FzdGVkRXhwcmVzc2lvbihub2RlLmJvZHkuYm9keSk7XG59XG5cbi8qKlxuICogRmluZHMgYSBjYXN0ZWQgcmV0dXJuIHZhbHVlIGZyb20gYSBzaW5nbGUtcmV0dXJuIGZhY3RvcnkgYm9keS5cbiAqIEBwYXJhbSBzdGF0ZW1lbnRzIEZ1bmN0aW9uIGJvZHkgc3RhdGVtZW50cy5cbiAqIEByZXR1cm5zIFJldHVybmVkIGV4cHJlc3Npb24gd2hlbiB0aGUgZmFjdG9yeSBoYXMgZXhhY3RseSBvbmUgcmV0dXJuIHN0YXRlbWVudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW50ZXJuYWwgaGVscGVyIGZvciBuby11bnNhZmUtdml0ZXN0LW1vY2stZmFjdG9yeS1jYXN0LlxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldEF1dG9maXhhYmxlUmV0dXJuZWRDYXN0ZWRFeHByZXNzaW9uKFxuICBzdGF0ZW1lbnRzOiBUU0VTVHJlZS5TdGF0ZW1lbnRbXSxcbik6IFRTRVNUcmVlLkV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xuICBpZiAoc3RhdGVtZW50cy5sZW5ndGggIT09IDEpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgW3N0YXRlbWVudF0gPSBzdGF0ZW1lbnRzIGFzIFtUU0VTVHJlZS5SZXR1cm5TdGF0ZW1lbnRdO1xuICBpZiAoc3RhdGVtZW50LmFyZ3VtZW50ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBnZXRDYXN0ZWRFeHByZXNzaW9uKHN0YXRlbWVudC5hcmd1bWVudCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW5uZXIgZXhwcmVzc2lvbiBpZiB0aGUgaW5wdXQgaXMgYSBjYXN0IGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBFeHByZXNzaW9uIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBJbm5lciBleHByZXNzaW9uIHdoZW4gdGhlIGlucHV0IGNvbnRhaW5zIGEgY2FzdC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW50ZXJuYWwgaGVscGVyIGZvciBuby11bnNhZmUtdml0ZXN0LW1vY2stZmFjdG9yeS1jYXN0LlxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldENhc3RlZEV4cHJlc3Npb24oXG4gIGV4cHJlc3Npb246IFRTRVNUcmVlLkV4cHJlc3Npb24sXG4pOiBUU0VTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGV4cHJlc3Npb24udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVFNBc0V4cHJlc3Npb24pIHtcbiAgICByZXR1cm4gc3RyaXBDYXN0RXhwcmVzc2lvbnMoZXhwcmVzc2lvbi5leHByZXNzaW9uKTtcbiAgfVxuXG4gIGlmIChleHByZXNzaW9uLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLlRTVHlwZUFzc2VydGlvbikge1xuICAgIGNvbnN0IGlubmVyRXhwcmVzc2lvbiA9IGV4cHJlc3Npb24uZXhwcmVzc2lvbjtcbiAgICByZXR1cm4gc3RyaXBDYXN0RXhwcmVzc2lvbnMoaW5uZXJFeHByZXNzaW9uKTtcbiAgfVxuXG4gIHJldHVybiB2b2lkIDA7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFydGlhbCBtb2NrIGV4cHJlc3Npb24gYWZ0ZXIgcmVtb3ZpbmcgYSBjYXN0IHdyYXBwZXIuXG4gKiBAcGFyYW0gbm9kZSBGYWN0b3J5IGV4cHJlc3Npb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIENhc3QtZnJlZSBleHByZXNzaW9uIHdoZW4gdGhlIGZhY3RvcnkgaXMgdW5zYWZlLlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBJbnRlcm5hbCBoZWxwZXIgZm9yIG5vLXVuc2FmZS12aXRlc3QtbW9jay1mYWN0b3J5LWNhc3QuXG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0Q2FzdGVkTW9ja0V4cHJlc3Npb24oXG4gIG5vZGU6IFRTRVNUcmVlLkFycm93RnVuY3Rpb25FeHByZXNzaW9uIHwgVFNFU1RyZWUuRnVuY3Rpb25FeHByZXNzaW9uLFxuKTogVFNFU1RyZWUuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCB7XG4gIGlmIChub2RlLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkFycm93RnVuY3Rpb25FeHByZXNzaW9uKSB7XG4gICAgaWYgKG5vZGUuYm9keS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5CbG9ja1N0YXRlbWVudCkge1xuICAgICAgcmV0dXJuIGdldFJldHVybmVkQ2FzdGVkRXhwcmVzc2lvbihub2RlLmJvZHkuYm9keSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldENhc3RlZEV4cHJlc3Npb24obm9kZS5ib2R5KTtcbiAgfVxuXG4gIHJldHVybiBnZXRSZXR1cm5lZENhc3RlZEV4cHJlc3Npb24obm9kZS5ib2R5LmJvZHkpO1xufVxuXG4vKipcbiAqIENvbGxlY3RzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIG1vY2stZmFjdG9yeSBtYXRjaCBmcm9tIGEgYENhbGxFeHByZXNzaW9uYC5cbiAqIEBwYXJhbSBub2RlIENhbGwgZXhwcmVzc2lvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVW5zYWZlIG1vY2sgZmFjdG9yeSBkZXRhaWxzIHdoZW4gdGhlIGZhY3RvcnkgdXNlcyBhIGNhc3QuXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIEludGVybmFsIGhlbHBlciBmb3Igbm8tdW5zYWZlLXZpdGVzdC1tb2NrLWZhY3RvcnktY2FzdC5cbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRNb2NrRmFjdG9yeU1hdGNoKFxuICBub2RlOiBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbixcbik6IE1vY2tGYWN0b3J5TWF0Y2ggfCB1bmRlZmluZWQge1xuICBpZiAoIWlzVml0ZXN0TW9ja0NhbGwobm9kZSkgfHwgbm9kZS5hcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBbbW9ja1NwZWNpZmllck5vZGUsIG1vY2tGYWN0b3J5Tm9kZV0gPSBub2RlLmFyZ3VtZW50cyBhcyBbXG4gICAgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb25Bcmd1bWVudCxcbiAgICBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbkFyZ3VtZW50LFxuICAgIC4uLlRTRVNUcmVlLkNhbGxFeHByZXNzaW9uQXJndW1lbnRbXSxcbiAgXTtcblxuICBpZiAoXG4gICAgbW9ja1NwZWNpZmllck5vZGUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuU3ByZWFkRWxlbWVudCB8fFxuICAgIG1vY2tGYWN0b3J5Tm9kZS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5TcHJlYWRFbGVtZW50XG4gICkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBpZiAoXG4gICAgbW9ja0ZhY3RvcnlOb2RlLnR5cGUgIT09IEFTVF9OT0RFX1RZUEVTLkFycm93RnVuY3Rpb25FeHByZXNzaW9uICYmXG4gICAgbW9ja0ZhY3RvcnlOb2RlLnR5cGUgIT09IEFTVF9OT0RFX1RZUEVTLkZ1bmN0aW9uRXhwcmVzc2lvblxuICApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgbW9kdWxlU3BlY2lmaWVyID0gZ2V0TW9kdWxlU3BlY2lmaWVyKG1vY2tTcGVjaWZpZXJOb2RlKTtcbiAgaWYgKG1vZHVsZVNwZWNpZmllciA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IG1vY2tFeHByZXNzaW9uID0gZ2V0Q2FzdGVkTW9ja0V4cHJlc3Npb24obW9ja0ZhY3RvcnlOb2RlKTtcbiAgaWYgKG1vY2tFeHByZXNzaW9uID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgYXV0b2ZpeGFibGVFeHByZXNzaW9uID0gZ2V0QXV0b2ZpeGFibGVNb2NrRXhwcmVzc2lvbihtb2NrRmFjdG9yeU5vZGUpO1xuXG4gIHJldHVybiB7XG4gICAgY2FuQXV0b2ZpeDogYXV0b2ZpeGFibGVFeHByZXNzaW9uICE9PSB2b2lkIDAsXG4gICAgbW9ja0V4cHJlc3Npb246IGF1dG9maXhhYmxlRXhwcmVzc2lvbiA/PyBtb2NrRXhwcmVzc2lvbixcbiAgICBtb2NrRmFjdG9yeU5vZGUsXG4gICAgbW9ja1NwZWNpZmllck5vZGUsXG4gICAgbW9kdWxlU3BlY2lmaWVyLFxuICAgIG5vZGUsXG4gIH07XG59XG5cbi8qKlxuICogRXh0cmFjdHMgYSBzdHJpbmcgbW9kdWxlIHNwZWNpZmllciBmcm9tIHRoZSBmaXJzdCBtb2NrIGFyZ3VtZW50LlxuICogQHBhcmFtIG5vZGUgRmlyc3QgbW9jayBhcmd1bWVudC5cbiAqIEByZXR1cm5zIE1vZHVsZSBzcGVjaWZpZXIgd2hlbiBzdGF0aWNhbGx5IGtub3duLlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBJbnRlcm5hbCBoZWxwZXIgZm9yIG5vLXVuc2FmZS12aXRlc3QtbW9jay1mYWN0b3J5LWNhc3QuXG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0TW9kdWxlU3BlY2lmaWVyKFxuICBub2RlOiBOb25TcHJlYWRDYWxsRXhwcmVzc2lvbkFyZ3VtZW50LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuTGl0ZXJhbCAmJiB0eXBlb2Ygbm9kZS52YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBub2RlLnZhbHVlO1xuICB9XG5cbiAgaWYgKFxuICAgIG5vZGUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSW1wb3J0RXhwcmVzc2lvbiAmJlxuICAgIG5vZGUuc291cmNlLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkxpdGVyYWwgJiZcbiAgICB0eXBlb2Ygbm9kZS5zb3VyY2UudmFsdWUgPT09IFwic3RyaW5nXCJcbiAgKSB7XG4gICAgcmV0dXJuIG5vZGUuc291cmNlLnZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgY2FzdGVkIHJldHVybiB2YWx1ZSBpbnNpZGUgYSBmdW5jdGlvbiBib2R5LlxuICogQHBhcmFtIHN0YXRlbWVudHMgRnVuY3Rpb24gYm9keSBzdGF0ZW1lbnRzLlxuICogQHJldHVybnMgUmV0dXJuZWQgZXhwcmVzc2lvbiB3aGVuIGl0IGlzIGNhc3RlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW50ZXJuYWwgaGVscGVyIGZvciBuby11bnNhZmUtdml0ZXN0LW1vY2stZmFjdG9yeS1jYXN0LlxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldFJldHVybmVkQ2FzdGVkRXhwcmVzc2lvbihcbiAgc3RhdGVtZW50czogVFNFU1RyZWUuU3RhdGVtZW50W10sXG4pOiBUU0VTVHJlZS5FeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2Ygc3RhdGVtZW50cykge1xuICAgIGlmIChzdGF0ZW1lbnQudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuUmV0dXJuU3RhdGVtZW50KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50LmFyZ3VtZW50ID09PSBudWxsXG4gICAgICA/IHZvaWQgMFxuICAgICAgOiBnZXRDYXN0ZWRFeHByZXNzaW9uKHN0YXRlbWVudC5hcmd1bWVudCk7XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgY2FsbCB0YXJnZXRzIGB2aS5tb2NrYCBvciBgdmkuZG9Nb2NrYC5cbiAqIEBwYXJhbSBub2RlIENhbGwgZXhwcmVzc2lvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSBzdXBwb3J0ZWQgVml0ZXN0IG1vY2sgbWV0aG9kLlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBJbnRlcm5hbCBoZWxwZXIgZm9yIG5vLXVuc2FmZS12aXRlc3QtbW9jay1mYWN0b3J5LWNhc3QuXG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNWaXRlc3RNb2NrQ2FsbChub2RlOiBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICBpZiAoXG4gICAgbm9kZS5jYWxsZWUudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuTWVtYmVyRXhwcmVzc2lvbiB8fFxuICAgIG5vZGUuY2FsbGVlLm9iamVjdC50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyIHx8XG4gICAgbm9kZS5jYWxsZWUub2JqZWN0Lm5hbWUgIT09IFwidmlcIiB8fFxuICAgIG5vZGUuY2FsbGVlLnByb3BlcnR5LnR5cGUgIT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXJcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHN1cHBvcnRlZE1vY2tOYW1lcy5oYXMobm9kZS5jYWxsZWUucHJvcGVydHkubmFtZSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBuZXN0ZWQgY2FzdCB3cmFwcGVycyBmcm9tIGFuIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBFeHByZXNzaW9uIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIEV4cHJlc3Npb24gd2l0aG91dCBhbnkgc3Vycm91bmRpbmcgY2FzdHMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIEludGVybmFsIGhlbHBlciBmb3Igbm8tdW5zYWZlLXZpdGVzdC1tb2NrLWZhY3RvcnktY2FzdC5cbiAqIGBgYFxuICovXG5mdW5jdGlvbiBzdHJpcENhc3RFeHByZXNzaW9ucyhcbiAgZXhwcmVzc2lvbjogVFNFU1RyZWUuRXhwcmVzc2lvbixcbik6IFRTRVNUcmVlLkV4cHJlc3Npb24ge1xuICBsZXQgY3VycmVudEV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuXG4gIHdoaWxlIChcbiAgICBjdXJyZW50RXhwcmVzc2lvbi50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5UU0FzRXhwcmVzc2lvbiB8fFxuICAgIGN1cnJlbnRFeHByZXNzaW9uLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLlRTVHlwZUFzc2VydGlvblxuICApIHtcbiAgICBjdXJyZW50RXhwcmVzc2lvbiA9IGN1cnJlbnRFeHByZXNzaW9uLmV4cHJlc3Npb247XG4gIH1cblxuICByZXR1cm4gY3VycmVudEV4cHJlc3Npb247XG59XG5cbmV4cG9ydCB0eXBlIHsgTW9ja0ZhY3RvcnlNYXRjaCB9O1xuZXhwb3J0IHsgZ2V0TW9ja0ZhY3RvcnlNYXRjaCB9O1xuIl19
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Collects top-level binding names to avoid collisions with inserted imports.
|
|
3
|
-
* @param statements Program statements.
|
|
4
|
-
* @returns All top-level names in the file.
|
|
5
|
-
* @example
|
|
6
|
-
* ```ts
|
|
7
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
8
|
-
* ```
|
|
9
|
-
*/
|
|
10
|
-
declare function collectTopLevelNames(statements: readonly unknown[]): Set<string>;
|
|
11
|
-
export { collectTopLevelNames };
|
|
12
|
-
//# sourceMappingURL=rule-names.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule-names.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.ts"],"names":[],"mappings":"AAoHA;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAkCzE;AAqCD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
|
-
/** Node types that introduce top-level names. */
|
|
3
|
-
const namedDeclarationTypes = new Set([
|
|
4
|
-
AST_NODE_TYPES.ClassDeclaration,
|
|
5
|
-
AST_NODE_TYPES.FunctionDeclaration,
|
|
6
|
-
AST_NODE_TYPES.TSEnumDeclaration,
|
|
7
|
-
AST_NODE_TYPES.TSInterfaceDeclaration,
|
|
8
|
-
AST_NODE_TYPES.TSModuleDeclaration,
|
|
9
|
-
AST_NODE_TYPES.TSTypeAliasDeclaration,
|
|
10
|
-
AST_NODE_TYPES.VariableDeclaration,
|
|
11
|
-
]);
|
|
12
|
-
/** Type-like declaration node types handled by the name collector. */
|
|
13
|
-
const typeLikeDeclarationTypes = new Set([
|
|
14
|
-
AST_NODE_TYPES.TSEnumDeclaration,
|
|
15
|
-
AST_NODE_TYPES.TSInterfaceDeclaration,
|
|
16
|
-
AST_NODE_TYPES.TSTypeAliasDeclaration,
|
|
17
|
-
]);
|
|
18
|
-
/**
|
|
19
|
-
* Collects declaration identifiers from top-level declarations.
|
|
20
|
-
* @param declaration Declaration node.
|
|
21
|
-
* @param names Output name set.
|
|
22
|
-
* @example
|
|
23
|
-
* ```ts
|
|
24
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
function collectDeclarationNames(declaration, names) {
|
|
28
|
-
if (declaration.type === AST_NODE_TYPES.FunctionDeclaration ||
|
|
29
|
-
declaration.type === AST_NODE_TYPES.ClassDeclaration) {
|
|
30
|
-
if (declaration.id !== null) {
|
|
31
|
-
names.add(declaration.id.name);
|
|
32
|
-
}
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
if (declaration.type === AST_NODE_TYPES.VariableDeclaration) {
|
|
36
|
-
for (const variableDeclaration of declaration.declarations) {
|
|
37
|
-
collectPatternNames(variableDeclaration.id, names);
|
|
38
|
-
}
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (isTypeLikeDeclaration(declaration)) {
|
|
42
|
-
names.add(declaration.id.name);
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
if (declaration.id.type === AST_NODE_TYPES.Identifier) {
|
|
46
|
-
names.add(declaration.id.name);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Collects identifiers from a binding pattern.
|
|
51
|
-
* @param pattern Binding pattern.
|
|
52
|
-
* @param names Output name set.
|
|
53
|
-
* @example
|
|
54
|
-
* ```ts
|
|
55
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
function collectPatternNames(pattern, names) {
|
|
59
|
-
if (pattern.type === AST_NODE_TYPES.Identifier) {
|
|
60
|
-
names.add(pattern.name);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
if (pattern.type === AST_NODE_TYPES.AssignmentPattern) {
|
|
64
|
-
collectPatternNames(pattern.left, names);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
if (pattern.type === AST_NODE_TYPES.RestElement) {
|
|
68
|
-
collectPatternNames(pattern.argument, names);
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (pattern.type === AST_NODE_TYPES.ArrayPattern) {
|
|
72
|
-
for (const element of pattern.elements) {
|
|
73
|
-
if (element !== null) {
|
|
74
|
-
collectPatternNames(element, names);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
if (pattern.type === AST_NODE_TYPES.ObjectPattern) {
|
|
79
|
-
for (const property of pattern.properties) {
|
|
80
|
-
if (property.type === AST_NODE_TYPES.Property) {
|
|
81
|
-
collectPatternNames(property.value, names);
|
|
82
|
-
}
|
|
83
|
-
if (property.type === AST_NODE_TYPES.RestElement) {
|
|
84
|
-
collectPatternNames(property.argument, names);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Collects top-level binding names to avoid collisions with inserted imports.
|
|
91
|
-
* @param statements Program statements.
|
|
92
|
-
* @returns All top-level names in the file.
|
|
93
|
-
* @example
|
|
94
|
-
* ```ts
|
|
95
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
96
|
-
* ```
|
|
97
|
-
*/
|
|
98
|
-
function collectTopLevelNames(statements) {
|
|
99
|
-
const names = new Set();
|
|
100
|
-
for (const statement of statements) {
|
|
101
|
-
if (statement.type === AST_NODE_TYPES.ImportDeclaration) {
|
|
102
|
-
for (const specifier of statement.specifiers) {
|
|
103
|
-
names.add(specifier.local.name);
|
|
104
|
-
}
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
if (statement.type === AST_NODE_TYPES.ExportNamedDeclaration) {
|
|
108
|
-
if (statement.declaration !== null &&
|
|
109
|
-
isNamedDeclaration(statement.declaration)) {
|
|
110
|
-
collectDeclarationNames(statement.declaration, names);
|
|
111
|
-
}
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
if (statement.type === AST_NODE_TYPES.ExportDefaultDeclaration) {
|
|
115
|
-
if (isNamedDeclaration(statement.declaration)) {
|
|
116
|
-
collectDeclarationNames(statement.declaration, names);
|
|
117
|
-
}
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
if (isNamedDeclaration(statement)) {
|
|
121
|
-
collectDeclarationNames(statement, names);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return names;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Checks whether a node is a declaration that introduces top-level names.
|
|
128
|
-
* @param node Node to inspect.
|
|
129
|
-
* @returns True when the node is a supported declaration.
|
|
130
|
-
* @example
|
|
131
|
-
* ```ts
|
|
132
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
133
|
-
* ```
|
|
134
|
-
*/
|
|
135
|
-
function isNamedDeclaration(node) {
|
|
136
|
-
return namedDeclarationTypes.has(node.type);
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Checks whether a declaration introduces a type-like top-level name.
|
|
140
|
-
* @param declaration Declaration to inspect.
|
|
141
|
-
* @returns True when the declaration is a type alias, interface, or enum.
|
|
142
|
-
* @example
|
|
143
|
-
* ```ts
|
|
144
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
145
|
-
* ```
|
|
146
|
-
*/
|
|
147
|
-
function isTypeLikeDeclaration(declaration) {
|
|
148
|
-
return typeLikeDeclarationTypes.has(declaration.type);
|
|
149
|
-
}
|
|
150
|
-
export { collectTopLevelNames };
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1uYW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9uby11bnNhZmUtdml0ZXN0LW1vY2stZmFjdG9yeS1jYXN0L3J1bGUtbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBaUIsTUFBTSwwQkFBMEIsQ0FBQztBQVl6RSxpREFBaUQ7QUFDakQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNwQyxjQUFjLENBQUMsZ0JBQWdCO0lBQy9CLGNBQWMsQ0FBQyxtQkFBbUI7SUFDbEMsY0FBYyxDQUFDLGlCQUFpQjtJQUNoQyxjQUFjLENBQUMsc0JBQXNCO0lBQ3JDLGNBQWMsQ0FBQyxtQkFBbUI7SUFDbEMsY0FBYyxDQUFDLHNCQUFzQjtJQUNyQyxjQUFjLENBQUMsbUJBQW1CO0NBQ25DLENBQUMsQ0FBQztBQUVILHNFQUFzRTtBQUN0RSxNQUFNLHdCQUF3QixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3ZDLGNBQWMsQ0FBQyxpQkFBaUI7SUFDaEMsY0FBYyxDQUFDLHNCQUFzQjtJQUNyQyxjQUFjLENBQUMsc0JBQXNCO0NBQ3RDLENBQUMsQ0FBQztBQUVIOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FDOUIsV0FBNkIsRUFDN0IsS0FBa0I7SUFFbEIsSUFDRSxXQUFXLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxtQkFBbUI7UUFDdkQsV0FBVyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsZ0JBQWdCLEVBQ3BELENBQUM7UUFDRCxJQUFJLFdBQVcsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPO0lBQ1QsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLElBQUksS0FB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WCxDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzdELElBQ0UsU0FBUyxDQUFDLFdBQVcsS0FBSyxJQUFJO2dCQUM5QixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQ3pDLENBQUM7Z0JBQ0QsdUJBQXVCLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDL0QsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbEMsdUJBQXVCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGtCQUFrQixDQUN6QixJQUU2QjtJQUU3QixPQUFPLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsV0FBNkI7SUFLN0IsT0FBTyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFTVF9OT0RFX1RZUEVTLCB0eXBlIFRTRVNUcmVlIH0gZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC91dGlsc1wiO1xuXG4vKiogU3VwcG9ydGVkIGRlY2xhcmF0aW9uIHNoYXBlcyB0aGF0IGNhbiBpbnRyb2R1Y2UgdG9wLWxldmVsIG5hbWVzLiAqL1xudHlwZSBOYW1lZERlY2xhcmF0aW9uID1cbiAgfCBUU0VTVHJlZS5DbGFzc0RlY2xhcmF0aW9uXG4gIHwgVFNFU1RyZWUuRnVuY3Rpb25EZWNsYXJhdGlvblxuICB8IFRTRVNUcmVlLlRTRW51bURlY2xhcmF0aW9uXG4gIHwgVFNFU1RyZWUuVFNJbnRlcmZhY2VEZWNsYXJhdGlvblxuICB8IFRTRVNUcmVlLlRTTW9kdWxlRGVjbGFyYXRpb25cbiAgfCBUU0VTVHJlZS5UU1R5cGVBbGlhc0RlY2xhcmF0aW9uXG4gIHwgVFNFU1RyZWUuVmFyaWFibGVEZWNsYXJhdGlvbjtcblxuLyoqIE5vZGUgdHlwZXMgdGhhdCBpbnRyb2R1Y2UgdG9wLWxldmVsIG5hbWVzLiAqL1xuY29uc3QgbmFtZWREZWNsYXJhdGlvblR5cGVzID0gbmV3IFNldChbXG4gIEFTVF9OT0RFX1RZUEVTLkNsYXNzRGVjbGFyYXRpb24sXG4gIEFTVF9OT0RFX1RZUEVTLkZ1bmN0aW9uRGVjbGFyYXRpb24sXG4gIEFTVF9OT0RFX1RZUEVTLlRTRW51bURlY2xhcmF0aW9uLFxuICBBU1RfTk9ERV9UWVBFUy5UU0ludGVyZmFjZURlY2xhcmF0aW9uLFxuICBBU1RfTk9ERV9UWVBFUy5UU01vZHVsZURlY2xhcmF0aW9uLFxuICBBU1RfTk9ERV9UWVBFUy5UU1R5cGVBbGlhc0RlY2xhcmF0aW9uLFxuICBBU1RfTk9ERV9UWVBFUy5WYXJpYWJsZURlY2xhcmF0aW9uLFxuXSk7XG5cbi8qKiBUeXBlLWxpa2UgZGVjbGFyYXRpb24gbm9kZSB0eXBlcyBoYW5kbGVkIGJ5IHRoZSBuYW1lIGNvbGxlY3Rvci4gKi9cbmNvbnN0IHR5cGVMaWtlRGVjbGFyYXRpb25UeXBlcyA9IG5ldyBTZXQoW1xuICBBU1RfTk9ERV9UWVBFUy5UU0VudW1EZWNsYXJhdGlvbixcbiAgQVNUX05PREVfVFlQRVMuVFNJbnRlcmZhY2VEZWNsYXJhdGlvbixcbiAgQVNUX05PREVfVFlQRVMuVFNUeXBlQWxpYXNEZWNsYXJhdGlvbixcbl0pO1xuXG4vKipcbiAqIENvbGxlY3RzIGRlY2xhcmF0aW9uIGlkZW50aWZpZXJzIGZyb20gdG9wLWxldmVsIGRlY2xhcmF0aW9ucy5cbiAqIEBwYXJhbSBkZWNsYXJhdGlvbiBEZWNsYXJhdGlvbiBub2RlLlxuICogQHBhcmFtIG5hbWVzIE91dHB1dCBuYW1lIHNldC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW50ZXJuYWwgaGVscGVyIGZvciBuby11bnNhZmUtdml0ZXN0LW1vY2stZmFjdG9yeS1jYXN0LlxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3REZWNsYXJhdGlvbk5hbWVzKFxuICBkZWNsYXJhdGlvbjogTmFtZWREZWNsYXJhdGlvbixcbiAgbmFtZXM6IFNldDxzdHJpbmc+LFxuKTogdm9pZCB7XG4gIGlmIChcbiAgICBkZWNsYXJhdGlvbi50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5GdW5jdGlvbkRlY2xhcmF0aW9uIHx8XG4gICAgZGVjbGFyYXRpb24udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuQ2xhc3NEZWNsYXJhdGlvblxuICApIHtcbiAgICBpZiAoZGVjbGFyYXRpb24uaWQgIT09IG51bGwpIHtcbiAgICAgIG5hbWVzLmFkZChkZWNsYXJhdGlvbi5pZC5uYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGRlY2xhcmF0aW9uLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLlZhcmlhYmxlRGVjbGFyYXRpb24pIHtcbiAgICBmb3IgKGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRpb24gb2YgZGVjbGFyYXRpb24uZGVjbGFyYXRpb25zKSB7XG4gICAgICBjb2xsZWN0UGF0dGVybk5hbWVzKHZhcmlhYmxlRGVjbGFyYXRpb24uaWQsIG5hbWVzKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGlzVHlwZUxpa2VEZWNsYXJhdGlvbihkZWNsYXJhdGlvbikpIHtcbiAgICBuYW1lcy5hZGQoZGVjbGFyYXRpb24uaWQubmFtZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGRlY2xhcmF0aW9uLmlkLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIpIHtcbiAgICBuYW1lcy5hZGQoZGVjbGFyYXRpb24uaWQubmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb2xsZWN0cyBpZGVudGlmaWVycyBmcm9tIGEgYmluZGluZyBwYXR0ZXJuLlxuICogQHBhcmFtIHBhdHRlcm4gQmluZGluZyBwYXR0ZXJuLlxuICogQHBhcmFtIG5hbWVzIE91dHB1dCBuYW1lIHNldC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW50ZXJuYWwgaGVscGVyIGZvciBuby11bnNhZmUtdml0ZXN0LW1vY2stZmFjdG9yeS1jYXN0LlxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RQYXR0ZXJuTmFtZXMocGF0dGVybjogVFNFU1RyZWUuTm9kZSwgbmFtZXM6IFNldDxzdHJpbmc+KTogdm9pZCB7XG4gIGlmIChwYXR0ZXJuLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIpIHtcbiAgICBuYW1lcy5hZGQocGF0dGVybi5uYW1lKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocGF0dGVybi50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5Bc3NpZ25tZW50UGF0dGVybikge1xuICAgIGNvbGxlY3RQYXR0ZXJuTmFtZXMocGF0dGVybi5sZWZ0LCBuYW1lcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHBhdHRlcm4udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuUmVzdEVsZW1lbnQpIHtcbiAgICBjb2xsZWN0UGF0dGVybk5hbWVzKHBhdHRlcm4uYXJndW1lbnQsIG5hbWVzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocGF0dGVybi50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5BcnJheVBhdHRlcm4pIHtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgcGF0dGVybi5lbGVtZW50cykge1xuICAgICAgaWYgKGVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgY29sbGVjdFBhdHRlcm5OYW1lcyhlbGVtZW50LCBuYW1lcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhdHRlcm4udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuT2JqZWN0UGF0dGVybikge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcGF0dGVybi5wcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAocHJvcGVydHkudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuUHJvcGVydHkpIHtcbiAgICAgICAgY29sbGVjdFBhdHRlcm5OYW1lcyhwcm9wZXJ0eS52YWx1ZSwgbmFtZXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydHkudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuUmVzdEVsZW1lbnQpIHtcbiAgICAgICAgY29sbGVjdFBhdHRlcm5OYW1lcyhwcm9wZXJ0eS5hcmd1bWVudCwgbmFtZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvbGxlY3RzIHRvcC1sZXZlbCBiaW5kaW5nIG5hbWVzIHRvIGF2b2lkIGNvbGxpc2lvbnMgd2l0aCBpbnNlcnRlZCBpbXBvcnRzLlxuICogQHBhcmFtIHN0YXRlbWVudHMgUHJvZ3JhbSBzdGF0ZW1lbnRzLlxuICogQHJldHVybnMgQWxsIHRvcC1sZXZlbCBuYW1lcyBpbiB0aGUgZmlsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW50ZXJuYWwgaGVscGVyIGZvciBuby11bnNhZmUtdml0ZXN0LW1vY2stZmFjdG9yeS1jYXN0LlxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RUb3BMZXZlbE5hbWVzKHN0YXRlbWVudHM6IHJlYWRvbmx5IHVua25vd25bXSk6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgbmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzIGFzIFRTRVNUcmVlLlByb2dyYW1TdGF0ZW1lbnRbXSkge1xuICAgIGlmIChzdGF0ZW1lbnQudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSW1wb3J0RGVjbGFyYXRpb24pIHtcbiAgICAgIGZvciAoY29uc3Qgc3BlY2lmaWVyIG9mIHN0YXRlbWVudC5zcGVjaWZpZXJzKSB7XG4gICAgICAgIG5hbWVzLmFkZChzcGVjaWZpZXIubG9jYWwubmFtZSk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkV4cG9ydE5hbWVkRGVjbGFyYXRpb24pIHtcbiAgICAgIGlmIChcbiAgICAgICAgc3RhdGVtZW50LmRlY2xhcmF0aW9uICE9PSBudWxsICYmXG4gICAgICAgIGlzTmFtZWREZWNsYXJhdGlvbihzdGF0ZW1lbnQuZGVjbGFyYXRpb24pXG4gICAgICApIHtcbiAgICAgICAgY29sbGVjdERlY2xhcmF0aW9uTmFtZXMoc3RhdGVtZW50LmRlY2xhcmF0aW9uLCBuYW1lcyk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbikge1xuICAgICAgaWYgKGlzTmFtZWREZWNsYXJhdGlvbihzdGF0ZW1lbnQuZGVjbGFyYXRpb24pKSB7XG4gICAgICAgIGNvbGxlY3REZWNsYXJhdGlvbk5hbWVzKHN0YXRlbWVudC5kZWNsYXJhdGlvbiwgbmFtZXMpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFtZWREZWNsYXJhdGlvbihzdGF0ZW1lbnQpKSB7XG4gICAgICBjb2xsZWN0RGVjbGFyYXRpb25OYW1lcyhzdGF0ZW1lbnQsIG5hbWVzKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmFtZXM7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBub2RlIGlzIGEgZGVjbGFyYXRpb24gdGhhdCBpbnRyb2R1Y2VzIHRvcC1sZXZlbCBuYW1lcy5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgbm9kZSBpcyBhIHN1cHBvcnRlZCBkZWNsYXJhdGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW50ZXJuYWwgaGVscGVyIGZvciBuby11bnNhZmUtdml0ZXN0LW1vY2stZmFjdG9yeS1jYXN0LlxuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGlzTmFtZWREZWNsYXJhdGlvbihcbiAgbm9kZTpcbiAgICB8IFRTRVNUcmVlLkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbltcImRlY2xhcmF0aW9uXCJdXG4gICAgfCBUU0VTVHJlZS5Qcm9ncmFtU3RhdGVtZW50LFxuKTogbm9kZSBpcyBOYW1lZERlY2xhcmF0aW9uIHtcbiAgcmV0dXJuIG5hbWVkRGVjbGFyYXRpb25UeXBlcy5oYXMobm9kZS50eXBlKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGRlY2xhcmF0aW9uIGludHJvZHVjZXMgYSB0eXBlLWxpa2UgdG9wLWxldmVsIG5hbWUuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb24gRGVjbGFyYXRpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgZGVjbGFyYXRpb24gaXMgYSB0eXBlIGFsaWFzLCBpbnRlcmZhY2UsIG9yIGVudW0uXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIEludGVybmFsIGhlbHBlciBmb3Igbm8tdW5zYWZlLXZpdGVzdC1tb2NrLWZhY3RvcnktY2FzdC5cbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc1R5cGVMaWtlRGVjbGFyYXRpb24oXG4gIGRlY2xhcmF0aW9uOiBOYW1lZERlY2xhcmF0aW9uLFxuKTogZGVjbGFyYXRpb24gaXNcbiAgfCBUU0VTVHJlZS5UU0VudW1EZWNsYXJhdGlvblxuICB8IFRTRVNUcmVlLlRTSW50ZXJmYWNlRGVjbGFyYXRpb25cbiAgfCBUU0VTVHJlZS5UU1R5cGVBbGlhc0RlY2xhcmF0aW9uIHtcbiAgcmV0dXJuIHR5cGVMaWtlRGVjbGFyYXRpb25UeXBlcy5oYXMoZGVjbGFyYXRpb24udHlwZSk7XG59XG5cbmV4cG9ydCB7IGNvbGxlY3RUb3BMZXZlbE5hbWVzIH07XG4iXX0=
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Rule } from "eslint";
|
|
2
|
-
import type { MockFactoryMatch } from "./rule-detection.js";
|
|
3
|
-
/**
|
|
4
|
-
* Builds all fixes for one unsafe mock factory.
|
|
5
|
-
* @param context Rule context.
|
|
6
|
-
* @param fixer ESLint fixer.
|
|
7
|
-
* @param match Unsafe mock factory details.
|
|
8
|
-
* @returns All fixer operations.
|
|
9
|
-
* @example
|
|
10
|
-
* ```ts
|
|
11
|
-
* // Internal helper for no-unsafe-vitest-mock-factory-cast.
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
declare function buildFixes(context: Rule.RuleContext, fixer: Rule.RuleFixer, match: MockFactoryMatch): Rule.Fix[];
|
|
15
|
-
export { buildFixes };
|
|
16
|
-
//# sourceMappingURL=rule-reporting.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rule-reporting.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAInC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAmBzD;;;;;;;;;;GAUG;AACH,iBAAS,UAAU,CACjB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,KAAK,EAAE,IAAI,CAAC,SAAS,EACrB,KAAK,EAAE,gBAAgB,GACtB,IAAI,CAAC,GAAG,EAAE,CAuBZ;AA0GD,OAAO,EAAE,UAAU,EAAE,CAAC"}
|