eslint-plugin-perfectionist 5.3.1 → 5.5.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/dist/package.json.js +1 -1
- package/dist/rules/sort-array-includes/types.d.ts +12 -8
- package/dist/rules/sort-array-includes/types.js +1 -1
- package/dist/rules/sort-array-includes.js +13 -10
- package/dist/rules/sort-classes/compute-dependencies-by-sorting-node.d.ts +27 -0
- package/dist/rules/sort-classes/compute-dependencies-by-sorting-node.js +189 -0
- package/dist/rules/sort-classes/compute-dependencies.d.ts +5 -0
- package/dist/rules/sort-classes/compute-dependencies.js +10 -7
- package/dist/rules/sort-classes/compute-identifier-name-details.d.ts +1 -5
- package/dist/rules/sort-classes/compute-overload-signature-groups.d.ts +13 -0
- package/dist/rules/sort-classes/compute-overload-signature-groups.js +57 -0
- package/dist/rules/sort-classes/node-info/compute-accessor-details.d.ts +3 -2
- package/dist/rules/sort-classes/node-info/compute-accessor-details.js +6 -6
- package/dist/rules/sort-classes/node-info/compute-method-details.d.ts +3 -2
- package/dist/rules/sort-classes/node-info/compute-method-details.js +8 -10
- package/dist/rules/sort-classes/node-info/compute-method-or-property-name-details.d.ts +1 -1
- package/dist/rules/sort-classes/node-info/compute-property-details.d.ts +7 -2
- package/dist/rules/sort-classes/node-info/compute-property-details.js +14 -10
- package/dist/rules/sort-classes/node-info/compute-static-block-details.d.ts +4 -0
- package/dist/rules/sort-classes/node-info/compute-static-block-details.js +2 -0
- package/dist/rules/sort-classes/types.d.ts +29 -4
- package/dist/rules/sort-classes.d.ts +2 -2
- package/dist/rules/sort-classes.js +98 -69
- package/dist/rules/sort-decorators/types.d.ts +3 -1
- package/dist/rules/sort-decorators.js +64 -60
- package/dist/rules/sort-enums/compute-dependencies-by-sorting-node.d.ts +13 -0
- package/dist/rules/sort-enums/compute-dependencies-by-sorting-node.js +51 -0
- package/dist/rules/sort-enums/compute-dependencies.d.ts +14 -0
- package/dist/rules/sort-enums/compute-dependencies.js +73 -0
- package/dist/rules/sort-enums/types.d.ts +7 -1
- package/dist/rules/sort-enums.js +56 -60
- package/dist/rules/sort-export-attributes/types.d.ts +3 -1
- package/dist/rules/sort-export-attributes.js +4 -3
- package/dist/rules/sort-exports/types.d.ts +7 -4
- package/dist/rules/sort-exports.js +2 -3
- package/dist/rules/sort-heritage-clauses/types.d.ts +3 -1
- package/dist/rules/sort-heritage-clauses.js +3 -3
- package/dist/rules/sort-import-attributes/types.d.ts +3 -1
- package/dist/rules/sort-import-attributes.js +4 -3
- package/dist/rules/sort-imports/comparator-by-options-computer.js +0 -1
- package/dist/rules/sort-imports/compute-common-selectors.js +6 -5
- package/dist/rules/sort-imports/compute-dependencies.d.ts +4 -7
- package/dist/rules/sort-imports/compute-dependency-names.d.ts +2 -5
- package/dist/rules/sort-imports/compute-node-name.d.ts +2 -5
- package/dist/rules/sort-imports/compute-specifier-modifiers.d.ts +2 -5
- package/dist/rules/sort-imports/compute-specifier-modifiers.js +9 -9
- package/dist/rules/sort-imports/compute-specifier-name.d.ts +2 -5
- package/dist/rules/sort-imports/is-non-external-reference-ts-import-equals.d.ts +2 -4
- package/dist/rules/sort-imports/is-side-effect-import.d.ts +2 -5
- package/dist/rules/sort-imports/read-closest-ts-config-by-path.d.ts +3 -1
- package/dist/rules/sort-imports/types.d.ts +31 -14
- package/dist/rules/sort-imports.js +33 -13
- package/dist/rules/sort-interfaces.js +1 -1
- package/dist/rules/sort-jsx-props/types.d.ts +7 -4
- package/dist/rules/sort-jsx-props.js +9 -9
- package/dist/rules/sort-maps/types.d.ts +3 -1
- package/dist/rules/sort-maps.js +4 -3
- package/dist/rules/sort-modules/build-comparator-by-options-computer.d.ts +7 -2
- package/dist/rules/sort-modules/build-comparator-by-options-computer.js +5 -37
- package/dist/rules/sort-modules/build-usage-comparator.d.ts +29 -0
- package/dist/rules/sort-modules/build-usage-comparator.js +115 -0
- package/dist/rules/sort-modules/compute-dependencies-by-sorting-node.d.ts +16 -0
- package/dist/rules/sort-modules/compute-dependencies-by-sorting-node.js +127 -0
- package/dist/rules/sort-modules/compute-dependencies.d.ts +2 -0
- package/dist/rules/sort-modules/compute-dependencies.js +9 -2
- package/dist/rules/sort-modules/compute-node-details.d.ts +11 -1
- package/dist/rules/sort-modules/compute-node-details.js +25 -4
- package/dist/rules/sort-modules/compute-overload-signature-groups.d.ts +11 -0
- package/dist/rules/sort-modules/compute-overload-signature-groups.js +67 -0
- package/dist/rules/sort-modules/types.d.ts +21 -7
- package/dist/rules/sort-modules.d.ts +2 -2
- package/dist/rules/sort-modules.js +59 -16
- package/dist/rules/sort-named-exports/types.d.ts +6 -2
- package/dist/rules/sort-named-exports.js +4 -3
- package/dist/rules/sort-named-imports/types.d.ts +6 -2
- package/dist/rules/sort-named-imports.js +4 -3
- package/dist/rules/sort-object-types/is-node-function-type.d.ts +29 -20
- package/dist/rules/sort-object-types/types.d.ts +4 -4
- package/dist/rules/sort-object-types.js +5 -3
- package/dist/rules/sort-objects/comparator-by-options-computer.d.ts +6 -0
- package/dist/rules/sort-objects/comparator-by-options-computer.js +39 -0
- package/dist/rules/sort-objects/compute-dependencies.d.ts +2 -0
- package/dist/rules/sort-objects/compute-dependencies.js +75 -0
- package/dist/rules/sort-objects/compute-matched-context-options.js +2 -0
- package/dist/rules/sort-objects/is-style-component.d.ts +10 -0
- package/dist/rules/sort-objects/{is-style-node.js → is-style-component.js} +24 -1
- package/dist/rules/sort-objects/types.d.ts +29 -6
- package/dist/rules/sort-objects/types.js +8 -0
- package/dist/rules/sort-objects.js +137 -204
- package/dist/rules/sort-sets.js +3 -3
- package/dist/rules/sort-switch-case.js +15 -14
- package/dist/rules/sort-union-types/types.d.ts +3 -1
- package/dist/rules/sort-union-types.js +3 -3
- package/dist/rules/sort-variable-declarations/compute-dependencies.d.ts +12 -0
- package/dist/rules/sort-variable-declarations/compute-dependencies.js +76 -0
- package/dist/rules/sort-variable-declarations/compute-node-name.d.ts +17 -0
- package/dist/rules/sort-variable-declarations/compute-node-name.js +15 -0
- package/dist/rules/sort-variable-declarations/types.d.ts +19 -2
- package/dist/rules/sort-variable-declarations.js +51 -108
- package/dist/types/common-groups-options.d.ts +87 -50
- package/dist/types/common-options.d.ts +74 -41
- package/dist/types/common-partition-options.d.ts +23 -11
- package/dist/types/node-of-type.d.ts +3 -1
- package/dist/utils/alphabet.d.ts +38 -20
- package/dist/utils/alphabet.js +46 -31
- package/dist/utils/{build-default-options-by-group-index-computer.d.ts → build-options-by-group-index-computer.d.ts} +9 -7
- package/dist/utils/{build-default-options-by-group-index-computer.js → build-options-by-group-index-computer.js} +2 -2
- package/dist/utils/build-sorting-node-by-node-map.d.ts +10 -0
- package/dist/utils/build-sorting-node-by-node-map.js +8 -0
- package/dist/utils/complete.d.ts +9 -6
- package/dist/utils/compute-deep-scope-references.d.ts +13 -0
- package/dist/utils/compute-deep-scope-references.js +10 -0
- package/dist/utils/compute-dependencies-by-sorting-node.d.ts +42 -0
- package/dist/utils/compute-dependencies-by-sorting-node.js +88 -0
- package/dist/utils/compute-dependencies-outside-functions-by-sorting-node.d.ts +13 -0
- package/dist/utils/compute-dependencies-outside-functions-by-sorting-node.js +28 -0
- package/dist/utils/compute-group.d.ts +16 -11
- package/dist/utils/compute-nodes-in-circular-dependencies.d.ts +10 -7
- package/dist/utils/compute-overridden-options-by-group-index.d.ts +18 -15
- package/dist/utils/compute-parent-nodes-with-types.d.ts +8 -0
- package/dist/utils/compute-parent-nodes-with-types.js +11 -1
- package/dist/utils/convert-boolean-to-sign.d.ts +12 -6
- package/dist/utils/create-node-index-map.d.ts +11 -8
- package/dist/utils/does-custom-group-match.d.ts +37 -29
- package/dist/utils/does-sorting-node-have-one-of-dependency-names.d.ts +14 -0
- package/dist/utils/does-sorting-node-have-one-of-dependency-names.js +7 -0
- package/dist/utils/filter-options-by-all-names-match.d.ts +42 -34
- package/dist/utils/generate-predefined-groups.js +3 -7
- package/dist/utils/get-comment-above-that-should-exist.d.ts +29 -18
- package/dist/utils/get-decorator-name.d.ts +18 -9
- package/dist/utils/get-enum-members.d.ts +13 -10
- package/dist/utils/get-eslint-disabled-lines.d.ts +18 -15
- package/dist/utils/get-eslint-disabled-lines.js +1 -1
- package/dist/utils/get-eslint-disabled-rules.d.ts +18 -9
- package/dist/utils/get-group-index.d.ts +13 -10
- package/dist/utils/get-lines-between.d.ts +18 -12
- package/dist/utils/get-newlines-between-errors.d.ts +50 -26
- package/dist/utils/get-newlines-between-errors.js +1 -1
- package/dist/utils/get-newlines-between-option.d.ts +9 -3
- package/dist/utils/get-newlines-between-option.js +2 -3
- package/dist/utils/get-node-decorators.d.ts +6 -6
- package/dist/utils/get-node-range.d.ts +31 -19
- package/dist/utils/get-node-range.js +3 -3
- package/dist/utils/get-options-with-clean-groups.d.ts +21 -18
- package/dist/utils/get-options-with-clean-groups.js +2 -2
- package/dist/utils/get-settings.d.ts +17 -11
- package/dist/utils/is-group-with-overrides-option.d.ts +13 -10
- package/dist/utils/is-newlines-between-option.d.ts +16 -13
- package/dist/utils/is-node-dependent-on-other-node.d.ts +23 -20
- package/dist/utils/is-node-eslint-disabled.d.ts +10 -7
- package/dist/utils/is-partition-comment.d.ts +35 -22
- package/dist/utils/json-schemas/common-groups-json-schemas.d.ts +37 -26
- package/dist/utils/json-schemas/common-json-schemas.d.ts +1 -0
- package/dist/utils/json-schemas/common-json-schemas.js +6 -0
- package/dist/utils/make-comment-above-fixes.d.ts +22 -9
- package/dist/utils/make-comment-above-fixes.js +2 -3
- package/dist/utils/make-comment-after-fixes.d.ts +25 -12
- package/dist/utils/make-comment-after-fixes.js +2 -3
- package/dist/utils/make-fixes.d.ts +39 -22
- package/dist/utils/make-newlines-between-fixes.d.ts +39 -21
- package/dist/utils/make-order-fixes.d.ts +37 -19
- package/dist/utils/make-single-node-comment-after-fixes.d.ts +24 -11
- package/dist/utils/make-single-node-comment-after-fixes.js +3 -3
- package/dist/utils/matches.d.ts +21 -12
- package/dist/utils/overload-signature/build-overload-signature-newlines-between-value-getter.d.ts +13 -0
- package/dist/utils/overload-signature/build-overload-signature-newlines-between-value-getter.js +13 -0
- package/dist/utils/overload-signature/overload-signature-group.d.ts +23 -0
- package/dist/utils/overload-signature/overload-signature-group.js +12 -0
- package/dist/utils/overload-signature/populate-sorting-node-groups-with-overload-signature.d.ts +25 -0
- package/dist/utils/overload-signature/populate-sorting-node-groups-with-overload-signature.js +75 -0
- package/dist/utils/pairwise.d.ts +12 -9
- package/dist/utils/populate-sorting-node-groups-with-dependencies.d.ts +25 -0
- package/dist/utils/populate-sorting-node-groups-with-dependencies.js +37 -0
- package/dist/utils/range-contains-range.d.ts +12 -0
- package/dist/utils/range-contains-range.js +4 -0
- package/dist/utils/range-to-diff.d.ts +15 -6
- package/dist/utils/report-all-errors.d.ts +76 -49
- package/dist/utils/report-all-errors.js +15 -13
- package/dist/utils/report-errors.d.ts +31 -22
- package/dist/utils/report-errors.js +1 -1
- package/dist/utils/should-partition.d.ts +36 -25
- package/dist/utils/sort-nodes-by-dependencies.d.ts +61 -48
- package/dist/utils/sort-nodes-by-groups.d.ts +46 -37
- package/dist/utils/unreachable-case-error.d.ts +18 -15
- package/dist/utils/validate-custom-sort-configuration.d.ts +3 -1
- package/dist/utils/validate-groups-configuration.d.ts +50 -39
- package/dist/utils/validate-newlines-and-partition-configuration.d.ts +70 -53
- package/dist/utils/validate-objects-inside-groups.d.ts +43 -34
- package/package.json +2 -2
- package/readme.md +41 -14
- package/dist/rules/sort-classes/get-overload-signature-groups.d.ts +0 -10
- package/dist/rules/sort-classes/get-overload-signature-groups.js +0 -33
- package/dist/rules/sort-objects/is-style-node.d.ts +0 -8
package/dist/package.json.js
CHANGED
|
@@ -28,8 +28,8 @@ export type Options = Partial<
|
|
|
28
28
|
>
|
|
29
29
|
>[]
|
|
30
30
|
/**
|
|
31
|
-
* Represents the type of array element selector.
|
|
32
|
-
*
|
|
31
|
+
* Represents the type of array element selector. Note: Spread elements are not
|
|
32
|
+
* sorted and act as partition boundaries.
|
|
33
33
|
*/
|
|
34
34
|
export type Selector = (typeof allSelectors)[number]
|
|
35
35
|
/**
|
|
@@ -39,14 +39,18 @@ export type Selector = (typeof allSelectors)[number]
|
|
|
39
39
|
* and sorted based on their names and types.
|
|
40
40
|
*
|
|
41
41
|
* @example
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
42
|
+
*
|
|
43
|
+
* ```ts
|
|
44
|
+
* {
|
|
45
|
+
* "selector": "literal"
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
45
48
|
*/
|
|
46
49
|
interface CustomGroupMatchOptions {
|
|
47
50
|
/**
|
|
48
|
-
* Specifies the type of array elements to include in this group.
|
|
49
|
-
* 'literal'
|
|
51
|
+
* Specifies the type of array elements to include in this group. Only
|
|
52
|
+
* 'literal' is available since spread elements create partition boundaries
|
|
53
|
+
* and are not sorted.
|
|
50
54
|
*/
|
|
51
55
|
selector?: Selector
|
|
52
56
|
}
|
|
@@ -55,7 +59,7 @@ type AdditionalSortOptions = object
|
|
|
55
59
|
* Complete list of available selectors for array elements. Used for validation
|
|
56
60
|
* and JSON schema generation.
|
|
57
61
|
*/
|
|
58
|
-
export declare let allSelectors: readonly ['literal'
|
|
62
|
+
export declare let allSelectors: readonly ['literal']
|
|
59
63
|
/**
|
|
60
64
|
* Additional custom group match options JSON schema. Used by ESLint to validate
|
|
61
65
|
* rule options at configuration time.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { buildCustomGroupSelectorJsonSchema } from '../../utils/json-schemas/common-groups-json-schemas.js'
|
|
2
|
-
let allSelectors = ['literal'
|
|
2
|
+
let allSelectors = ['literal']
|
|
3
3
|
let additionalCustomGroupMatchOptionsJsonSchema = {
|
|
4
4
|
selector: buildCustomGroupSelectorJsonSchema(allSelectors),
|
|
5
5
|
}
|
|
@@ -14,12 +14,12 @@ import {
|
|
|
14
14
|
buildCommonJsonSchemas,
|
|
15
15
|
} from '../utils/json-schemas/common-json-schemas.js'
|
|
16
16
|
import { validateNewlinesAndPartitionConfiguration } from '../utils/validate-newlines-and-partition-configuration.js'
|
|
17
|
-
import { buildDefaultOptionsByGroupIndexComputer } from '../utils/build-default-options-by-group-index-computer.js'
|
|
18
17
|
import { defaultComparatorByOptionsComputer } from '../utils/compare/default-comparator-by-options-computer.js'
|
|
19
18
|
import {
|
|
20
19
|
additionalCustomGroupMatchOptionsJsonSchema,
|
|
21
20
|
allSelectors,
|
|
22
21
|
} from './sort-array-includes/types.js'
|
|
22
|
+
import { buildOptionsByGroupIndexComputer } from '../utils/build-options-by-group-index-computer.js'
|
|
23
23
|
import { buildCommonGroupsJsonSchemas } from '../utils/json-schemas/common-groups-json-schemas.js'
|
|
24
24
|
import { validateCustomSortConfiguration } from '../utils/validate-custom-sort-configuration.js'
|
|
25
25
|
import { filterOptionsByAllNamesMatch } from '../utils/filter-options-by-all-names-match.js'
|
|
@@ -86,9 +86,9 @@ const sortArrayIncludes = createEslintRule({
|
|
|
86
86
|
node.property.name === 'includes'
|
|
87
87
|
) {
|
|
88
88
|
let elements =
|
|
89
|
-
node.object.type === AST_NODE_TYPES.ArrayExpression
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
node.object.type === AST_NODE_TYPES.ArrayExpression ?
|
|
90
|
+
node.object.elements
|
|
91
|
+
: node.object.arguments
|
|
92
92
|
sortArray({
|
|
93
93
|
availableMessageIds: {
|
|
94
94
|
missedSpacingBetweenMembers: MISSED_SPACING_ERROR_ID,
|
|
@@ -145,14 +145,18 @@ function sortArray({ availableMessageIds, elements, context }) {
|
|
|
145
145
|
ruleName: id,
|
|
146
146
|
sourceCode,
|
|
147
147
|
})
|
|
148
|
+
let optionsByGroupIndexComputer = buildOptionsByGroupIndexComputer(options)
|
|
148
149
|
let formattedMembers = elements.reduce(
|
|
149
150
|
(accumulator, element) => {
|
|
150
151
|
if (element === null) {
|
|
151
152
|
return accumulator
|
|
152
153
|
}
|
|
154
|
+
if (element.type === AST_NODE_TYPES.SpreadElement) {
|
|
155
|
+
accumulator.push([])
|
|
156
|
+
return accumulator
|
|
157
|
+
}
|
|
153
158
|
let name = getNodeName({ sourceCode, element })
|
|
154
|
-
let selector =
|
|
155
|
-
element.type === AST_NODE_TYPES.SpreadElement ? 'spread' : 'literal'
|
|
159
|
+
let selector = 'literal'
|
|
156
160
|
let predefinedGroups = generatePredefinedGroups({
|
|
157
161
|
cache: cachedGroupsByModifiersAndSelectors,
|
|
158
162
|
selectors: [selector],
|
|
@@ -198,9 +202,8 @@ function sortArray({ availableMessageIds, elements, context }) {
|
|
|
198
202
|
function sortNodesExcludingEslintDisabled(ignoreEslintDisabledNodes) {
|
|
199
203
|
return formattedMembers.flatMap(nodes2 =>
|
|
200
204
|
sortNodesByGroups({
|
|
201
|
-
optionsByGroupIndexComputer:
|
|
202
|
-
buildDefaultOptionsByGroupIndexComputer(options),
|
|
203
205
|
comparatorByOptionsComputer: defaultComparatorByOptionsComputer,
|
|
206
|
+
optionsByGroupIndexComputer,
|
|
204
207
|
ignoreEslintDisabledNodes,
|
|
205
208
|
groups: options.groups,
|
|
206
209
|
nodes: nodes2,
|
|
@@ -217,8 +220,8 @@ function sortArray({ availableMessageIds, elements, context }) {
|
|
|
217
220
|
})
|
|
218
221
|
}
|
|
219
222
|
function getNodeName({ sourceCode, element }) {
|
|
220
|
-
return element.type === AST_NODE_TYPES.Literal
|
|
221
|
-
|
|
223
|
+
return element.type === AST_NODE_TYPES.Literal ?
|
|
224
|
+
`${element.value}`
|
|
222
225
|
: sourceCode.getText(element)
|
|
223
226
|
}
|
|
224
227
|
export { sortArrayIncludes as default, defaultOptions, jsonSchema, sortArray }
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TSESTree } from '@typescript-eslint/types'
|
|
2
|
+
import { TSESLint } from '@typescript-eslint/utils'
|
|
3
|
+
import { SortClassesSortingNode } from './types.js'
|
|
4
|
+
import { RegexOption } from '../../types/common-options.js'
|
|
5
|
+
type SortingNodeWithoutDependencies = Omit<
|
|
6
|
+
SortClassesSortingNode,
|
|
7
|
+
'dependencies'
|
|
8
|
+
>
|
|
9
|
+
export declare function computeDependenciesBySortingNode({
|
|
10
|
+
ignoreCallbackDependenciesPatterns,
|
|
11
|
+
sortingNodes,
|
|
12
|
+
sourceCode,
|
|
13
|
+
classBody,
|
|
14
|
+
}: {
|
|
15
|
+
ignoreCallbackDependenciesPatterns: RegexOption
|
|
16
|
+
sortingNodes: SortingNodeWithoutDependencies[]
|
|
17
|
+
sourceCode: TSESLint.SourceCode
|
|
18
|
+
classBody: TSESTree.ClassBody
|
|
19
|
+
}): Map<SortingNodeWithoutDependencies, SortingNodeWithoutDependencies[]>
|
|
20
|
+
export declare function computeThisExpressionsInsideClassElement({
|
|
21
|
+
classElement,
|
|
22
|
+
sourceCode,
|
|
23
|
+
}: {
|
|
24
|
+
classElement: TSESTree.ClassElement
|
|
25
|
+
sourceCode: TSESLint.SourceCode
|
|
26
|
+
}): TSESTree.ThisExpression[]
|
|
27
|
+
export {}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { AST_NODE_TYPES, AST_TOKEN_TYPES } from '@typescript-eslint/utils'
|
|
2
|
+
import { computeDependenciesBySortingNode as computeDependenciesBySortingNode$1 } from '../../utils/compute-dependencies-by-sorting-node.js'
|
|
3
|
+
import { computeParentNodesWithTypes } from '../../utils/compute-parent-nodes-with-types.js'
|
|
4
|
+
import { computeIdentifierNameDetails } from './compute-identifier-name-details.js'
|
|
5
|
+
import { UnreachableCaseError } from '../../utils/unreachable-case-error.js'
|
|
6
|
+
import { matches } from '../../utils/matches.js'
|
|
7
|
+
function computeDependenciesBySortingNode({
|
|
8
|
+
ignoreCallbackDependenciesPatterns,
|
|
9
|
+
sortingNodes,
|
|
10
|
+
sourceCode,
|
|
11
|
+
classBody,
|
|
12
|
+
}) {
|
|
13
|
+
let staticSortingNodes = sortingNodes.filter(node => node.isStatic)
|
|
14
|
+
let dependenciesBySortingNode = computeDependenciesBySortingNode$1({
|
|
15
|
+
additionalIdentifierDependenciesComputer:
|
|
16
|
+
buildAdditionalIdentifierDependenciesComputer({
|
|
17
|
+
ignoreCallbackDependenciesPatterns,
|
|
18
|
+
staticSortingNodes,
|
|
19
|
+
classBody,
|
|
20
|
+
}),
|
|
21
|
+
shouldIgnoreSortingNodeComputer: sortingNode =>
|
|
22
|
+
shouldIgnoreDependencyComputation(sortingNode.node),
|
|
23
|
+
sortingNodes,
|
|
24
|
+
sourceCode,
|
|
25
|
+
})
|
|
26
|
+
let thisDependenciesBySortingNode =
|
|
27
|
+
computeThisExpressionDependenciesBySortingNode({
|
|
28
|
+
ignoreCallbackDependenciesPatterns,
|
|
29
|
+
sortingNodes,
|
|
30
|
+
sourceCode,
|
|
31
|
+
})
|
|
32
|
+
for (let [sortingNode, dependencies] of thisDependenciesBySortingNode) {
|
|
33
|
+
let existingDependencies = dependenciesBySortingNode.get(sortingNode) ?? []
|
|
34
|
+
dependenciesBySortingNode.set(sortingNode, [
|
|
35
|
+
...existingDependencies,
|
|
36
|
+
...dependencies,
|
|
37
|
+
])
|
|
38
|
+
}
|
|
39
|
+
return dependenciesBySortingNode
|
|
40
|
+
}
|
|
41
|
+
function computeThisExpressionsInsideClassElement({
|
|
42
|
+
classElement,
|
|
43
|
+
sourceCode,
|
|
44
|
+
}) {
|
|
45
|
+
let thisTokens = sourceCode.getTokens(classElement).filter(isThisToken)
|
|
46
|
+
return thisTokens
|
|
47
|
+
.map(computeTokenNode)
|
|
48
|
+
.filter(node => node?.type === AST_NODE_TYPES.ThisExpression)
|
|
49
|
+
function computeTokenNode(token) {
|
|
50
|
+
return sourceCode.getNodeByRangeIndex(token.range[0])
|
|
51
|
+
}
|
|
52
|
+
function isThisToken(token) {
|
|
53
|
+
return token.type === AST_TOKEN_TYPES.Keyword && token.value === 'this'
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function computeIdentifierOrThisExpressionDependency({
|
|
57
|
+
ignoreCallbackDependenciesPatterns,
|
|
58
|
+
sortingNodes,
|
|
59
|
+
classElement,
|
|
60
|
+
node,
|
|
61
|
+
}) {
|
|
62
|
+
if (shouldIgnoreCallbackDependency()) {
|
|
63
|
+
return null
|
|
64
|
+
}
|
|
65
|
+
let { parent } = node
|
|
66
|
+
if (parent.type !== AST_NODE_TYPES.MemberExpression) {
|
|
67
|
+
return null
|
|
68
|
+
}
|
|
69
|
+
let dependencyName = computeDependencyNameFromMemberExpression(parent)
|
|
70
|
+
if (!dependencyName) {
|
|
71
|
+
return null
|
|
72
|
+
}
|
|
73
|
+
return (
|
|
74
|
+
sortingNodes.find(
|
|
75
|
+
currentSortingNode => currentSortingNode.name === dependencyName.name,
|
|
76
|
+
) ?? null
|
|
77
|
+
)
|
|
78
|
+
function computeDependencyNameFromMemberExpression(memberExpression) {
|
|
79
|
+
switch (memberExpression.property.type) {
|
|
80
|
+
case AST_NODE_TYPES.PrivateIdentifier:
|
|
81
|
+
case AST_NODE_TYPES.Identifier:
|
|
82
|
+
case AST_NODE_TYPES.Literal:
|
|
83
|
+
return computeIdentifierNameDetails(memberExpression.property)
|
|
84
|
+
/* v8 ignore next 2 -- @preserve Unhandled cases */
|
|
85
|
+
default:
|
|
86
|
+
return null
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function shouldIgnoreCallbackDependency() {
|
|
90
|
+
let [firstCallExpressionParent] = computeParentNodesWithTypes({
|
|
91
|
+
allowedTypes: [AST_NODE_TYPES.CallExpression],
|
|
92
|
+
maxParent: classElement,
|
|
93
|
+
consecutiveOnly: false,
|
|
94
|
+
node,
|
|
95
|
+
})
|
|
96
|
+
if (!firstCallExpressionParent) {
|
|
97
|
+
return false
|
|
98
|
+
}
|
|
99
|
+
if (!('name' in firstCallExpressionParent.callee)) {
|
|
100
|
+
return false
|
|
101
|
+
}
|
|
102
|
+
return matches(
|
|
103
|
+
firstCallExpressionParent.callee.name,
|
|
104
|
+
ignoreCallbackDependenciesPatterns,
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function computeThisExpressionDependenciesBySortingNode({
|
|
109
|
+
ignoreCallbackDependenciesPatterns,
|
|
110
|
+
sortingNodes,
|
|
111
|
+
sourceCode,
|
|
112
|
+
}) {
|
|
113
|
+
let dependenciesBySortingNode = /* @__PURE__ */ new Map()
|
|
114
|
+
let staticSortingNodes = sortingNodes.filter(node => node.isStatic)
|
|
115
|
+
let nonStaticSortingNodes = sortingNodes.filter(node => !node.isStatic)
|
|
116
|
+
let relevantSortingNodes = sortingNodes.filter(
|
|
117
|
+
sortingNode => !shouldIgnoreDependencyComputation(sortingNode.node),
|
|
118
|
+
)
|
|
119
|
+
for (let sortingNode of relevantSortingNodes) {
|
|
120
|
+
let thisExpressions = computeThisExpressionsInsideClassElement({
|
|
121
|
+
classElement: sortingNode.node,
|
|
122
|
+
sourceCode,
|
|
123
|
+
})
|
|
124
|
+
let dependencies = thisExpressions
|
|
125
|
+
.map(thisExpression =>
|
|
126
|
+
computeIdentifierOrThisExpressionDependency({
|
|
127
|
+
sortingNodes:
|
|
128
|
+
sortingNode.isStatic ? staticSortingNodes : nonStaticSortingNodes,
|
|
129
|
+
ignoreCallbackDependenciesPatterns,
|
|
130
|
+
classElement: sortingNode.node,
|
|
131
|
+
node: thisExpression,
|
|
132
|
+
}),
|
|
133
|
+
)
|
|
134
|
+
.filter(dependency => dependency !== null)
|
|
135
|
+
if (dependencies.length === 0) {
|
|
136
|
+
continue
|
|
137
|
+
}
|
|
138
|
+
dependenciesBySortingNode.set(sortingNode, dependencies)
|
|
139
|
+
}
|
|
140
|
+
return dependenciesBySortingNode
|
|
141
|
+
}
|
|
142
|
+
function buildAdditionalIdentifierDependenciesComputer({
|
|
143
|
+
ignoreCallbackDependenciesPatterns,
|
|
144
|
+
staticSortingNodes,
|
|
145
|
+
classBody,
|
|
146
|
+
}) {
|
|
147
|
+
return ({ referencingSortingNode, reference }) => {
|
|
148
|
+
let resolvedClassIdentifier = reference.resolved?.identifiers[0]
|
|
149
|
+
if (!resolvedClassIdentifier) {
|
|
150
|
+
return []
|
|
151
|
+
}
|
|
152
|
+
let classIdentifier = classBody.parent.id
|
|
153
|
+
if (reference.resolved?.identifiers[0] !== classIdentifier) {
|
|
154
|
+
return []
|
|
155
|
+
}
|
|
156
|
+
let dependency = computeIdentifierOrThisExpressionDependency({
|
|
157
|
+
classElement: referencingSortingNode.node,
|
|
158
|
+
ignoreCallbackDependenciesPatterns,
|
|
159
|
+
sortingNodes: staticSortingNodes,
|
|
160
|
+
node: reference.identifier,
|
|
161
|
+
})
|
|
162
|
+
return dependency ? [dependency] : []
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function shouldIgnoreDependencyComputation(node) {
|
|
166
|
+
switch (node.type) {
|
|
167
|
+
case AST_NODE_TYPES.TSAbstractPropertyDefinition:
|
|
168
|
+
case AST_NODE_TYPES.TSAbstractMethodDefinition:
|
|
169
|
+
case AST_NODE_TYPES.StaticBlock:
|
|
170
|
+
return false
|
|
171
|
+
case AST_NODE_TYPES.TSAbstractAccessorProperty:
|
|
172
|
+
case AST_NODE_TYPES.AccessorProperty:
|
|
173
|
+
case AST_NODE_TYPES.MethodDefinition:
|
|
174
|
+
case AST_NODE_TYPES.TSIndexSignature:
|
|
175
|
+
return true
|
|
176
|
+
case AST_NODE_TYPES.PropertyDefinition:
|
|
177
|
+
return (
|
|
178
|
+
node.value?.type === AST_NODE_TYPES.ArrowFunctionExpression ||
|
|
179
|
+
node.value?.type === AST_NODE_TYPES.FunctionExpression
|
|
180
|
+
)
|
|
181
|
+
/* v8 ignore next 2 -- @preserve Exhaustive guard. */
|
|
182
|
+
default:
|
|
183
|
+
throw new UnreachableCaseError(node)
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
export {
|
|
187
|
+
computeDependenciesBySortingNode,
|
|
188
|
+
computeThisExpressionsInsideClassElement,
|
|
189
|
+
}
|
|
@@ -3,9 +3,12 @@ import { RegexOption } from '../../types/common-options.js'
|
|
|
3
3
|
/**
|
|
4
4
|
* Computes the dependencies of a class member AST node.
|
|
5
5
|
*
|
|
6
|
+
* @deprecated - To remove when experimental dependency detection is the only.
|
|
6
7
|
* @param params - Parameters object.
|
|
7
8
|
* @param params.ignoreCallbackDependenciesPatterns - Patterns to ignore
|
|
8
9
|
* callback dependencies.
|
|
10
|
+
* @param params.useExperimentalDependencyDetection - Whether to use
|
|
11
|
+
* experimental dependency detection.
|
|
9
12
|
* @param params.isMemberStatic - Indicates if the member is static.
|
|
10
13
|
* @param params.expression - The AST node expression to analyze.
|
|
11
14
|
* @param params.className - The name of the class, if available.
|
|
@@ -13,12 +16,14 @@ import { RegexOption } from '../../types/common-options.js'
|
|
|
13
16
|
*/
|
|
14
17
|
export declare function computeDependencies({
|
|
15
18
|
ignoreCallbackDependenciesPatterns,
|
|
19
|
+
useExperimentalDependencyDetection,
|
|
16
20
|
isMemberStatic,
|
|
17
21
|
expression,
|
|
18
22
|
className,
|
|
19
23
|
}: {
|
|
20
24
|
expression: TSESTree.StaticBlock | TSESTree.Expression
|
|
21
25
|
ignoreCallbackDependenciesPatterns: RegexOption
|
|
26
|
+
useExperimentalDependencyDetection: boolean
|
|
22
27
|
className: undefined | string
|
|
23
28
|
isMemberStatic: boolean
|
|
24
29
|
}): string[]
|
|
@@ -4,11 +4,17 @@ import { computeDependencyName } from './compute-dependency-name.js'
|
|
|
4
4
|
import { matches } from '../../utils/matches.js'
|
|
5
5
|
function computeDependencies({
|
|
6
6
|
ignoreCallbackDependenciesPatterns,
|
|
7
|
+
useExperimentalDependencyDetection,
|
|
7
8
|
isMemberStatic,
|
|
8
9
|
expression,
|
|
9
10
|
className,
|
|
10
11
|
}) {
|
|
12
|
+
if (useExperimentalDependencyDetection) {
|
|
13
|
+
return []
|
|
14
|
+
}
|
|
11
15
|
let dependencies = []
|
|
16
|
+
traverseNode(expression)
|
|
17
|
+
return dependencies
|
|
12
18
|
function checkNode(nodeValue) {
|
|
13
19
|
switch (nodeValue.type) {
|
|
14
20
|
case AST_NODE_TYPES.ConditionalExpression:
|
|
@@ -17,14 +23,13 @@ function computeDependencies({
|
|
|
17
23
|
traverseNode(nodeValue.alternate)
|
|
18
24
|
break
|
|
19
25
|
case AST_NODE_TYPES.MemberExpression:
|
|
20
|
-
dependencies
|
|
21
|
-
...dependencies,
|
|
26
|
+
dependencies.push(
|
|
22
27
|
...computeMemberExpressionDependencies({
|
|
23
28
|
memberExpression: nodeValue,
|
|
24
29
|
isMemberStatic,
|
|
25
30
|
className,
|
|
26
31
|
}),
|
|
27
|
-
|
|
32
|
+
)
|
|
28
33
|
break
|
|
29
34
|
case AST_NODE_TYPES.CallExpression:
|
|
30
35
|
if (!('name' in nodeValue.callee)) {
|
|
@@ -98,8 +103,6 @@ function computeDependencies({
|
|
|
98
103
|
checkNode(nodeValue)
|
|
99
104
|
}
|
|
100
105
|
}
|
|
101
|
-
traverseNode(expression)
|
|
102
|
-
return dependencies
|
|
103
106
|
}
|
|
104
107
|
function computeMemberExpressionDependencies({
|
|
105
108
|
memberExpression,
|
|
@@ -110,8 +113,8 @@ function computeMemberExpressionDependencies({
|
|
|
110
113
|
case AST_NODE_TYPES.ThisExpression:
|
|
111
114
|
return computeIdentifierOrThisExpressionDependencies()
|
|
112
115
|
case AST_NODE_TYPES.Identifier:
|
|
113
|
-
return memberExpression.object.name === className
|
|
114
|
-
|
|
116
|
+
return memberExpression.object.name === className ?
|
|
117
|
+
computeIdentifierOrThisExpressionDependencies()
|
|
115
118
|
: []
|
|
116
119
|
default:
|
|
117
120
|
return []
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { TSESTree } from '@typescript-eslint/types'
|
|
2
|
-
|
|
3
|
-
nameWithoutStartingHash: string
|
|
4
|
-
hasPrivateHash: boolean
|
|
5
|
-
name: string
|
|
6
|
-
}
|
|
2
|
+
import { NodeNameDetails } from './types.js'
|
|
7
3
|
/**
|
|
8
4
|
* Computes the name details of an identifier.
|
|
9
5
|
*
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TSESTree } from '@typescript-eslint/utils'
|
|
2
|
+
import { OverloadSignatureGroup } from '../../utils/overload-signature/overload-signature-group.js'
|
|
3
|
+
type Method = TSESTree.TSAbstractMethodDefinition | TSESTree.MethodDefinition
|
|
4
|
+
/**
|
|
5
|
+
* Returns a list of groups of overload signatures.
|
|
6
|
+
*
|
|
7
|
+
* @param classElements - The class elements to process.
|
|
8
|
+
* @returns A list of overload signature groups.
|
|
9
|
+
*/
|
|
10
|
+
export declare function computeOverloadSignatureGroups(
|
|
11
|
+
classElements: TSESTree.ClassElement[],
|
|
12
|
+
): OverloadSignatureGroup<Method>[]
|
|
13
|
+
export {}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
|
|
2
|
+
import { OverloadSignatureGroup } from '../../utils/overload-signature/overload-signature-group.js'
|
|
3
|
+
import { UnreachableCaseError } from '../../utils/unreachable-case-error.js'
|
|
4
|
+
import { isSortable } from '../../utils/is-sortable.js'
|
|
5
|
+
function computeOverloadSignatureGroups(classElements) {
|
|
6
|
+
let methods = classElements
|
|
7
|
+
.filter(
|
|
8
|
+
classElement =>
|
|
9
|
+
classElement.type === AST_NODE_TYPES.MethodDefinition ||
|
|
10
|
+
classElement.type === AST_NODE_TYPES.TSAbstractMethodDefinition,
|
|
11
|
+
)
|
|
12
|
+
.filter(classElement => classElement.kind === 'method')
|
|
13
|
+
let staticOverloadSignaturesByName = /* @__PURE__ */ new Map()
|
|
14
|
+
let overloadSignaturesByName = /* @__PURE__ */ new Map()
|
|
15
|
+
for (let method of methods) {
|
|
16
|
+
if (method.key.type !== AST_NODE_TYPES.Identifier) {
|
|
17
|
+
continue
|
|
18
|
+
}
|
|
19
|
+
let { name } = method.key
|
|
20
|
+
let mapToUse =
|
|
21
|
+
method.static ? staticOverloadSignaturesByName : overloadSignaturesByName
|
|
22
|
+
let overloadSignaturesArray = mapToUse.get(name)
|
|
23
|
+
if (!overloadSignaturesArray) {
|
|
24
|
+
overloadSignaturesArray = []
|
|
25
|
+
mapToUse.set(name, overloadSignaturesArray)
|
|
26
|
+
}
|
|
27
|
+
overloadSignaturesArray.push(method)
|
|
28
|
+
}
|
|
29
|
+
return [
|
|
30
|
+
...overloadSignaturesByName.values(),
|
|
31
|
+
...staticOverloadSignaturesByName.values(),
|
|
32
|
+
]
|
|
33
|
+
.filter(isSortable)
|
|
34
|
+
.map(buildOverloadSignatureGroup)
|
|
35
|
+
}
|
|
36
|
+
function buildOverloadSignatureGroup(methods) {
|
|
37
|
+
let implementation = methods.find(isMethodImplementation) ?? methods.at(-1)
|
|
38
|
+
let overloadSignatures = methods.filter(
|
|
39
|
+
method => !isMethodImplementation(method),
|
|
40
|
+
)
|
|
41
|
+
return new OverloadSignatureGroup({
|
|
42
|
+
overloadSignatures,
|
|
43
|
+
implementation,
|
|
44
|
+
})
|
|
45
|
+
function isMethodImplementation(method) {
|
|
46
|
+
switch (method.value.type) {
|
|
47
|
+
case AST_NODE_TYPES.TSEmptyBodyFunctionExpression:
|
|
48
|
+
return false
|
|
49
|
+
case AST_NODE_TYPES.FunctionExpression:
|
|
50
|
+
return true
|
|
51
|
+
/* v8 ignore next 2 -- @preserve Exhaustive guard. */
|
|
52
|
+
default:
|
|
53
|
+
throw new UnreachableCaseError(method.value)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export { computeOverloadSignatureGroups }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TSESTree } from '@typescript-eslint/types'
|
|
2
2
|
import { TSESLint } from '@typescript-eslint/utils'
|
|
3
|
-
import { Modifier, Selector } from '../types.js'
|
|
3
|
+
import { NodeNameDetails, Modifier, Selector } from '../types.js'
|
|
4
4
|
/**
|
|
5
5
|
* Computes details related to an accessor property.
|
|
6
6
|
*
|
|
@@ -19,8 +19,9 @@ export declare function computeAccessorDetails({
|
|
|
19
19
|
sourceCode: TSESLint.SourceCode
|
|
20
20
|
isDecorated: boolean
|
|
21
21
|
}): {
|
|
22
|
+
nameDetails: NodeNameDetails
|
|
22
23
|
dependencyNames: string[]
|
|
23
24
|
modifiers: Modifier[]
|
|
24
25
|
selectors: Selector[]
|
|
25
|
-
|
|
26
|
+
isStatic: boolean
|
|
26
27
|
}
|
|
@@ -8,24 +8,24 @@ import {
|
|
|
8
8
|
import { computeMethodOrPropertyNameDetails } from './compute-method-or-property-name-details.js'
|
|
9
9
|
import { computeDependencyName } from '../compute-dependency-name.js'
|
|
10
10
|
function computeAccessorDetails({ isDecorated, sourceCode, accessor }) {
|
|
11
|
-
let
|
|
12
|
-
computeMethodOrPropertyNameDetails(accessor, sourceCode)
|
|
11
|
+
let nameDetails = computeMethodOrPropertyNameDetails(accessor, sourceCode)
|
|
13
12
|
let modifiers = computeModifiers({
|
|
14
|
-
hasPrivateHash,
|
|
13
|
+
hasPrivateHash: nameDetails.hasPrivateHash,
|
|
15
14
|
isDecorated,
|
|
16
15
|
accessor,
|
|
17
16
|
})
|
|
18
17
|
return {
|
|
19
18
|
dependencyNames: [
|
|
20
19
|
computeDependencyName({
|
|
21
|
-
nodeNameWithoutStartingHash: nameWithoutStartingHash,
|
|
20
|
+
nodeNameWithoutStartingHash: nameDetails.nameWithoutStartingHash,
|
|
21
|
+
hasPrivateHash: nameDetails.hasPrivateHash,
|
|
22
22
|
isStatic: modifiers.includes('static'),
|
|
23
|
-
hasPrivateHash,
|
|
24
23
|
}),
|
|
25
24
|
],
|
|
26
25
|
selectors: ['accessor-property'],
|
|
26
|
+
isStatic: accessor.static,
|
|
27
|
+
nameDetails,
|
|
27
28
|
modifiers,
|
|
28
|
-
name,
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
function computeModifiers({ hasPrivateHash, isDecorated, accessor }) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TSESTree } from '@typescript-eslint/types'
|
|
2
2
|
import { TSESLint } from '@typescript-eslint/utils'
|
|
3
|
-
import { Modifier, Selector } from '../types.js'
|
|
3
|
+
import { NodeNameDetails, Modifier, Selector } from '../types.js'
|
|
4
4
|
/**
|
|
5
5
|
* Computes details related to a method.
|
|
6
6
|
*
|
|
@@ -23,7 +23,8 @@ export declare function computeMethodDetails({
|
|
|
23
23
|
isDecorated: boolean
|
|
24
24
|
}): {
|
|
25
25
|
addSafetySemicolonWhenInline: boolean
|
|
26
|
+
nameDetails: NodeNameDetails
|
|
26
27
|
modifiers: Modifier[]
|
|
27
28
|
selectors: Selector[]
|
|
28
|
-
|
|
29
|
+
isStatic: boolean
|
|
29
30
|
}
|
|
@@ -16,22 +16,20 @@ function computeMethodDetails({
|
|
|
16
16
|
sourceCode,
|
|
17
17
|
method,
|
|
18
18
|
}) {
|
|
19
|
-
let
|
|
20
|
-
method,
|
|
21
|
-
sourceCode,
|
|
22
|
-
)
|
|
19
|
+
let nameDetails = computeMethodOrPropertyNameDetails(method, sourceCode)
|
|
23
20
|
return {
|
|
24
|
-
addSafetySemicolonWhenInline: shouldAddSafetySemicolonWhenInline({
|
|
25
|
-
hasParentDeclare,
|
|
26
|
-
method,
|
|
27
|
-
}),
|
|
28
21
|
modifiers: computeModifiers({
|
|
29
|
-
hasPrivateHash,
|
|
22
|
+
hasPrivateHash: nameDetails.hasPrivateHash,
|
|
30
23
|
isDecorated,
|
|
31
24
|
method,
|
|
32
25
|
}),
|
|
26
|
+
addSafetySemicolonWhenInline: shouldAddSafetySemicolonWhenInline({
|
|
27
|
+
hasParentDeclare,
|
|
28
|
+
method,
|
|
29
|
+
}),
|
|
33
30
|
selectors: computeSelectors(method),
|
|
34
|
-
|
|
31
|
+
isStatic: method.static,
|
|
32
|
+
nameDetails,
|
|
35
33
|
}
|
|
36
34
|
}
|
|
37
35
|
function computeSelectors(method) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TSESTree } from '@typescript-eslint/types'
|
|
2
2
|
import { TSESLint } from '@typescript-eslint/utils'
|
|
3
|
-
import { NodeNameDetails } from '../
|
|
3
|
+
import { NodeNameDetails } from '../types.js'
|
|
4
4
|
/**
|
|
5
5
|
* Computes the name details of a method or property node.
|
|
6
6
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TSESTree } from '@typescript-eslint/types'
|
|
2
2
|
import { TSESLint } from '@typescript-eslint/utils'
|
|
3
|
+
import { NodeNameDetails, Modifier, Selector } from '../types.js'
|
|
3
4
|
import { RegexOption } from '../../../types/common-options.js'
|
|
4
|
-
import { Modifier, Selector } from '../types.js'
|
|
5
5
|
/**
|
|
6
6
|
* Computes details related to a property.
|
|
7
7
|
*
|
|
@@ -10,12 +10,15 @@ import { Modifier, Selector } from '../types.js'
|
|
|
10
10
|
* @param params.property - The property node to compute information for.
|
|
11
11
|
* @param params.ignoreCallbackDependenciesPatterns - Patterns to ignore when
|
|
12
12
|
* computing dependencies.
|
|
13
|
+
* @param params.useExperimentalDependencyDetection - Whether to use
|
|
14
|
+
* experimental dependency detection.
|
|
13
15
|
* @param params.sourceCode - The source code object.
|
|
14
16
|
* @param params.className - The name of the class containing the property.
|
|
15
17
|
* @returns An object containing various details about the property.
|
|
16
18
|
*/
|
|
17
19
|
export declare function computePropertyDetails({
|
|
18
20
|
ignoreCallbackDependenciesPatterns,
|
|
21
|
+
useExperimentalDependencyDetection,
|
|
19
22
|
isDecorated,
|
|
20
23
|
sourceCode,
|
|
21
24
|
className,
|
|
@@ -23,14 +26,16 @@ export declare function computePropertyDetails({
|
|
|
23
26
|
}: {
|
|
24
27
|
property: TSESTree.TSAbstractPropertyDefinition | TSESTree.PropertyDefinition
|
|
25
28
|
ignoreCallbackDependenciesPatterns: RegexOption
|
|
29
|
+
useExperimentalDependencyDetection: boolean
|
|
26
30
|
sourceCode: TSESLint.SourceCode
|
|
27
31
|
className: undefined | string
|
|
28
32
|
isDecorated: boolean
|
|
29
33
|
}): {
|
|
30
34
|
memberValue: undefined | string
|
|
35
|
+
nameDetails: NodeNameDetails
|
|
31
36
|
dependencyNames: string[]
|
|
32
37
|
dependencies: string[]
|
|
33
38
|
modifiers: Modifier[]
|
|
34
39
|
selectors: Selector[]
|
|
35
|
-
|
|
40
|
+
isStatic: boolean
|
|
36
41
|
}
|