eslint-plugin-perfectionist
Version:
ESLint plugin for sorting various data such as objects, imports, types, enums, JSX props, etc.
35 lines (34 loc) • 1.18 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' })
const isSortable = require('../../utils/is-sortable.js')
let getOverloadSignatureGroups = members => {
let methods = members
.filter(
member =>
member.type === 'MethodDefinition' ||
member.type === 'TSAbstractMethodDefinition',
)
.filter(member => member.kind === 'method')
let staticOverloadSignaturesByName = /* @__PURE__ */ new Map()
let overloadSignaturesByName = /* @__PURE__ */ new Map()
for (let method of methods) {
if (method.key.type !== 'Identifier') {
continue
}
let { name } = method.key
let mapToUse = method.static
? staticOverloadSignaturesByName
: overloadSignaturesByName
let signatureOverloadsGroup = mapToUse.get(name)
if (!signatureOverloadsGroup) {
signatureOverloadsGroup = []
mapToUse.set(name, signatureOverloadsGroup)
}
signatureOverloadsGroup.push(method)
}
return [
...overloadSignaturesByName.values(),
...staticOverloadSignaturesByName.values(),
].filter(isSortable.isSortable)
}
exports.getOverloadSignatureGroups = getOverloadSignatureGroups