/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

import * as t from '@babel/types';

export type ComponentDeclaration = t.FunctionDeclaration & {
  __componentDeclaration: boolean;
};

export function isComponentDeclaration(
  node: t.FunctionDeclaration,
): node is ComponentDeclaration {
  return Object.prototype.hasOwnProperty.call(node, '__componentDeclaration');
}

export function parseComponentDeclaration(
  node: t.FunctionDeclaration,
): ComponentDeclaration | null {
  return isComponentDeclaration(node) ? node : null;
}