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);
}
}