Files
routie/frontend/node_modules/eslint-plugin-perfectionist/dist/utils/compute-groups-names.js
T

34 lines
1.1 KiB
JavaScript

import { isGroupWithOverridesOption } from './is-group-with-overrides-option.js'
import { isNewlinesBetweenOption } from './is-newlines-between-option.js'
import { UnreachableCaseError } from './unreachable-case-error.js'
/**
* Computes the names of all groups based on the provided `GroupsOptions`.
*
* @param groups - An array of group options.
* @returns An array of computed group names as strings.
*/
function computeGroupsNames(groups) {
return groups.flatMap(group => computeGroupNames(group))
}
function computeGroupNames(group) {
if (typeof group === 'string' || Array.isArray(group)) {
return computeStringGroupNames(group)
}
if (isGroupWithOverridesOption(group)) {
return computeStringGroupNames(group.group)
}
/* v8 ignore else -- @preserve Exhaustive guard for unsupported group option. */
if (isNewlinesBetweenOption(group)) {
return []
}
/* v8 ignore next -- @preserve Exhaustive guard for unsupported group option. */
throw new UnreachableCaseError(group)
}
function computeStringGroupNames(group) {
if (typeof group === 'string') {
return [group]
}
return group
}
export { computeGroupsNames }