function normalizeAngularControlFlowBlock(node) {
  if (node.type !== "block") {
    return;
  }

  node.name = node.name.toLowerCase().replaceAll(/\s+/gu, " ").trim();
  node.type = "angularControlFlowBlock";

  if (!isNonEmptyArray(node.parameters)) {
    delete node.parameters;
    return;
  }

  for (const parameter of node.parameters) {
    parameter.type = "angularControlFlowBlockParameter";
  }

  node.parameters = {
    type: "angularControlFlowBlockParameters",
    children: node.parameters,
    sourceSpan: new ParseSourceSpan(
      node.parameters[0].sourceSpan.start,
      node.parameters.at(-1).sourceSpan.end,
    ),
  };
}
@typedef {AngularHtmlParserParseOptions & {
  name: 'html' | 'angular' | 'vue' | 'lwc' | 'mjml';
  normalizeTagName?: boolean;
  normalizeAttributeName?: boolean;
  shouldParseAsRawText?: (tagName: string, prefix: string, hasParent: boolean, attrs: Array<{
     prefix: string;
     name: string;
     value?: string;
  }>) => boolean;
}} ParseOptions
@typedef {{filepath?: string}} Options