@azure/functions
Version:
Microsoft Azure Functions NodeJS Framework
37 lines (31 loc) • 1.42 kB
text/typescript
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the MIT License.
import { RpcDuration } from '@azure/functions-core';
import { Duration } from '../../types';
import { AzFuncSystemError } from '../errors';
import { isDefined } from '../utils/nonNull';
export function toRpcDuration(dateTime: Duration | number | undefined, propertyName: string): RpcDuration | undefined {
if (isDefined(dateTime)) {
try {
let timeInMilliseconds: number | undefined;
if (typeof dateTime === 'object') {
const minutes = (dateTime.minutes || 0) + (dateTime.hours || 0) * 60;
const seconds = (dateTime.seconds || 0) + minutes * 60;
timeInMilliseconds = (dateTime.milliseconds || 0) + seconds * 1000;
} else if (typeof dateTime === 'number') {
timeInMilliseconds = dateTime;
}
if (isDefined(timeInMilliseconds) && timeInMilliseconds >= 0) {
return {
seconds: Math.round(timeInMilliseconds / 1000),
};
}
} catch {
// fall through
}
throw new AzFuncSystemError(
`A 'number' or 'Duration' object was expected instead of a '${typeof dateTime}'. Cannot parse value of '${propertyName}'.`
);
}
return undefined;
}