diff --git a/sdk/eventhub/event-hubs/src/eventPosition.ts b/sdk/eventhub/event-hubs/src/eventPosition.ts index e257a3695609..36a2254cb74f 100644 --- a/sdk/eventhub/event-hubs/src/eventPosition.ts +++ b/sdk/eventhub/event-hubs/src/eventPosition.ts @@ -118,9 +118,6 @@ export function validateEventPositions( return; } - const offsetPresent = position.offset != undefined; - const sequenceNumberPresent = position.sequenceNumber != undefined; - const enqueuedOnPresent = position.enqueuedOn != undefined; const keys = Object.keys(position); if (!keys.length) { @@ -129,7 +126,7 @@ export function validateEventPositions( ); } - if (offsetPresent || sequenceNumberPresent || enqueuedOnPresent || !keys.length) { + if (isEventPosition(position)) { validateEventPosition(position); return; } @@ -142,6 +139,33 @@ export function validateEventPositions( } } +/** + * Determines whether a position is an EventPosition. + * Does not validate that the position is allowed. + * @param position + * @ignore + * @internal + */ +export function isEventPosition(position: any): position is EventPosition { + if (!position) { + return false; + } + + if (position.offset != undefined) { + return true; + } + + if (position.sequenceNumber != undefined) { + return true; + } + + if (position.enqueuedOn != undefined) { + return true; + } + + return false; +} + function validateEventPosition(position: EventPosition) { if (position == undefined) { return; diff --git a/sdk/eventhub/event-hubs/src/eventProcessor.ts b/sdk/eventhub/event-hubs/src/eventProcessor.ts index e4e8a0211365..5b3b073eb520 100644 --- a/sdk/eventhub/event-hubs/src/eventProcessor.ts +++ b/sdk/eventhub/event-hubs/src/eventProcessor.ts @@ -9,7 +9,7 @@ import { logger, logErrorStackTrace } from "./log"; import { FairPartitionLoadBalancer, PartitionLoadBalancer } from "./partitionLoadBalancer"; import { PartitionProcessor, Checkpoint } from "./partitionProcessor"; import { SubscriptionEventHandlers } from "./eventHubConsumerClientModels"; -import { EventPosition, latestEventPosition } from "./eventPosition"; +import { EventPosition, latestEventPosition, isEventPosition } from "./eventPosition"; import { delayWithoutThrow } from "./util/delayWithoutThrow"; import { CommonEventProcessorOptions } from "./models/private"; import { CloseReason } from "./models/public"; @@ -587,11 +587,7 @@ function getStartPosition( return latestEventPosition; } - if ( - startPositions.offset != undefined || - startPositions.sequenceNumber != undefined || - startPositions.enqueuedOn != undefined - ) { + if (isEventPosition(startPositions)) { return startPositions; }