Skip to content

Commit 99618a1

Browse files
Add small Proto helpers (#2753)
1 parent 80b2aa6 commit 99618a1

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

packages/firestore/src/model/values.ts

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,3 +531,57 @@ export function normalizeByteString(blob: string | Uint8Array): ByteString {
531531
return ByteString.fromUint8Array(blob);
532532
}
533533
}
534+
535+
/** Returns true if `value` is an IntegerValue. */
536+
export function isInteger(
537+
value?: api.Value | null
538+
): value is { integerValue: string | number } {
539+
return !!value && 'integerValue' in value;
540+
}
541+
542+
/** Returns true if `value` is a DoubleValue. */
543+
export function isDouble(
544+
value?: api.Value | null
545+
): value is { doubleValue: string | number } {
546+
return !!value && 'doubleValue' in value;
547+
}
548+
549+
/** Returns true if `value` is either an IntegerValue or a DoubleValue. */
550+
export function isNumber(value?: api.Value | null): boolean {
551+
return isInteger(value) || isDouble(value);
552+
}
553+
554+
/** Returns true if `value` is an ArrayValue. */
555+
export function isArray(
556+
value?: api.Value | null
557+
): value is { arrayValue: api.ArrayValue } {
558+
return !!value && 'arrayValue' in value;
559+
}
560+
561+
/** Returns true if `value` is a ReferenceValue. */
562+
export function isReferenceValue(
563+
value?: api.Value | null
564+
): value is { referenceValue: string } {
565+
return !!value && 'referenceValue' in value;
566+
}
567+
568+
/** Returns true if `value` is a NullValue. */
569+
export function isNullValue(
570+
value?: api.Value | null
571+
): value is { nullValue: 'NULL_VALUE' } {
572+
return !!value && 'nullValue' in value;
573+
}
574+
575+
/** Returns true if `value` is NaN. */
576+
export function isNanValue(
577+
value?: api.Value | null
578+
): value is { doubleValue: 'NaN' | number } {
579+
return isDouble(value) && isNaN(Number(value.doubleValue));
580+
}
581+
582+
/** Returns true if `value` is a MapValue. */
583+
export function isMapValue(
584+
value?: api.Value | null
585+
): value is { mapValue: api.MapValue } {
586+
return !!value && 'mapValue' in value;
587+
}

0 commit comments

Comments
 (0)