import type { Duration } from '../types' import requiredArgs from '../_lib/requiredArgs/index' /** * @name formatISODuration * @category Common Helpers * @summary Format a duration object according as ISO 8601 duration string * * @description * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm) * * @param {Duration} duration - the duration to format * * @returns {String} The ISO 8601 duration string * @throws {TypeError} Requires 1 argument * @throws {Error} Argument must be an object * * @example * // Format the given duration as ISO 8601 string * const result = formatISODuration({ * years: 39, * months: 2, * days: 20, * hours: 7, * minutes: 5, * seconds: 0 * }) * //=> 'P39Y2M20DT0H0M0S' */ export default function formatISODuration(duration: Duration): string { requiredArgs(1, arguments) if (typeof duration !== 'object') throw new Error('Duration must be an object') const { years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0, } = duration return `P${years}Y${months}M${days}DT${hours}H${minutes}M${seconds}S` }