UNPKG

pomeranian-durations

Version:

An immutable duration library based on the ISO-8601 format for durations.

116 lines (100 loc) 3.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeDateUnits = exports.removeTimeUnits = exports.removeYears = exports.removeMonths = exports.removeWeeks = exports.removeDays = exports.removeHours = exports.removeMinutes = exports.removeSeconds = void 0; var _utils = require("./_utils"); var _transformations = require("./transformations"); var _constants = require("./constants"); var _validate = require("./validate"); /** * Helpers to remove certain units from an ISO8601 string. * @name default */ var removeUnits = (0, _utils.curry)(function (units, isoDuration) { if ((0, _validate.isInvalid)(isoDuration)) { return _constants.INVALID_DURATION; } return (0, _utils.pipe)(isoDuration, _transformations.toFragments, (0, _utils.except)(units), _transformations.toIso); }); /** * Removes seconds part from given ISO8601 duration * @param isoDuration {string} - ISO8601 duration * @returns isoDuration {string} * @example * removeSeconds('PT1M1S') // => 'PT1M' */ var removeSeconds = removeUnits([_constants.UNIT_NAMES.seconds]); /** * Removes minutes part from given ISO8601 duration * @param isoDuration {string} - ISO8601 duration * @returns isoDuration {string} * @example * removeMinutes('PT1M1S') // => 'PT1S' */ exports.removeSeconds = removeSeconds; var removeMinutes = removeUnits([_constants.UNIT_NAMES.minutes]); /** * Removes hours part from given ISO8601 duration * @param isoDuration {string} - ISO8601 duration * @returns isoDuration {string} * @example * removeHours('PT1H1M') // => 'PT1M' */ exports.removeMinutes = removeMinutes; var removeHours = removeUnits([_constants.UNIT_NAMES.hours]); /** * Removes days part from given ISO8601 duration * @param isoDuration {string} - ISO8601 duration * @returns isoDuration {string} * @example * removeDays('P1DT1M') // => 'PT1M' */ exports.removeHours = removeHours; var removeDays = removeUnits([_constants.UNIT_NAMES.days]); /** * Removes weeks part from given ISO8601 duration * @param isoDuration {string} - ISO8601 duration * @returns isoDuration {string} * @example * removeWeeks('P1WT1M') // => 'PT1M' */ exports.removeDays = removeDays; var removeWeeks = removeUnits([_constants.UNIT_NAMES.weeks]); /** * Removes months part from given ISO8601 duration * @param isoDuration {string} - ISO8601 duration * @returns isoDuration {string} * @example * removeMonths('P1MT1M') // => 'PT1M' */ exports.removeWeeks = removeWeeks; var removeMonths = removeUnits([_constants.UNIT_NAMES.months]); /** * Removes years part from given ISO8601 duration * @param isoDuration {string} - ISO8601 duration * @returns isoDuration {string} * @example * removeYears('P1YT1M') // => 'PT1M' */ exports.removeMonths = removeMonths; var removeYears = removeUnits([_constants.UNIT_NAMES.years]); /** * Removes all time components (seconds, minutes, hours) from given ISO8601 duration * @param isoDuration {string} - ISO8601 duration * @returns isoDuration {string} * @example * removeTimeUnits('P1DT1M') // => 'P1D' */ exports.removeYears = removeYears; var removeTimeUnits = removeUnits([_constants.UNIT_NAMES.seconds, _constants.UNIT_NAMES.minutes, _constants.UNIT_NAMES.hours]); /** * Removes all date components (days, weeks, months, years) from given ISO8601 duration * @param isoDuration {string} - ISO8601 duration * @returns isoDuration {string} * @example * removeDateUnits('P1DT1M') // => 'PT1M' */ exports.removeTimeUnits = removeTimeUnits; var removeDateUnits = removeUnits([_constants.UNIT_NAMES.days, _constants.UNIT_NAMES.weeks, _constants.UNIT_NAMES.months, _constants.UNIT_NAMES.years]); exports.removeDateUnits = removeDateUnits;