function fbtParam()

in runtime/shared/fbt.js [282:315]


function fbtParam(
  label: string,
  value: mixed,
  variations?:
    | [$PropertyType<ParamVariationType, 'number'>, ?number]
    | [$PropertyType<ParamVariationType, 'gender'>, GenderConstEnum],
): FbtTableArg {
  const substitution = {[label]: value};
  if (variations) {
    if (variations[0] === ParamVariation.number) {
      const number = variations.length > 1 ? variations[1] : value;
      invariant(typeof number === 'number', 'fbt.param expected number');

      const variation = getNumberVariations(number); // this will throw if `number` is invalid
      if (typeof value === 'number') {
        substitution[label] =
          intlNumUtils.formatNumberWithThousandDelimiters(value);
      }
      return FbtTableAccessor.getNumberResult(variation, substitution, number);
    } else if (variations[0] === ParamVariation.gender) {
      const gender = variations[1];
      invariant(gender != null, 'expected gender value');
      return FbtTableAccessor.getGenderResult(
        getGenderVariations(gender),
        substitution,
        gender,
      );
    } else {
      invariant(false, 'Unknown invariant mask');
    }
  } else {
    return FbtTableAccessor.getSubstitution(substitution);
  }
}