checkForKey = (
  node,
  context,
  componentName,
  uniqueKey,
  conditionalFamilies
) => {
  if (
    !node.parent ||
    node.parent.type !== 'VElement' ||
    !hasConditionalRenderedSiblings(node, componentName)
  ) {
    return
  }

  const conditionalFamily = conditionalFamilies.get(node.parent)

  if (!conditionalFamily || utils.hasAttribute(node, 'key')) {
    return
  }

  const needsKey =
    conditionalFamily.if === node ||
    conditionalFamily.else === node ||
    conditionalFamily.elseIf.includes(node)

  if (needsKey) {
    context.report({
      node: node.startTag,
      loc: node.startTag.loc,
      messageId: 'requireKey',
      data: { componentName },
      fix(fixer) {
        const afterComponentNamePosition =
          node.startTag.range[0] + componentName.length + 1
        return fixer.insertTextBeforeRange(
          [afterComponentNamePosition, afterComponentNamePosition],
          ` key="${uniqueKey}"`
        )
      }
    })
  }
}
Checks for the presence of a 'key' attribute in the given node. If the 'key' attribute is missing
and the node is part of a conditional family a report is generated.
The fix proposed adds a unique key based on the component's name and count,
following the format '${kebabCase(componentName)}-${componentCount}', e.g., 'some-component-2'.

@param {VElement} node - The Vue component node to check for a 'key' attribute.
@param {RuleContext} context - The rule's context object, used for reporting.
@param {string} componentName - Name of the component.
@param {string} uniqueKey - A unique key for the repeated component, used for the fix.
@param {Map<VElement, ConditionalFamily>} conditionalFamilies - Map of conditionally rendered components and their respective conditional directives.