UNPKG

angular-odata

Version:

Client side OData typescript library for Angular

40 lines 5.76 kB
const DURATION_REGEX = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; export const Durations = { toDuration(v) { const matches = DURATION_REGEX.exec(v); if (!matches || v.length < 3) { throw new TypeError(`duration invalid: "${v}". Must be a ISO 8601 duration. See https://en.wikipedia.org/wiki/ISO_8601#Durations`); } let duration = {}; duration.sign = matches[1] === '-' ? -1 : 1; return [ 'years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds', ].reduce((acc, name, index) => { const v = parseFloat(matches[index + 2]); if (!Number.isNaN(v)) acc[name] = v; return acc; }, duration); }, toString(v) { return [ v.sign === -1 ? '-' : '', 'P', v.years ? v.years + 'Y' : '', v.months ? v.months + 'M' : '', v.weeks ? v.weeks + 'W' : '', v.days ? v.days + 'D' : '', 'T', v.hours ? v.hours + 'H' : '', v.minutes ? v.minutes + 'M' : '', v.seconds ? v.seconds + 'S' : '', ].join(''); }, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3V0aWxzL2R1cmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLGNBQWMsR0FDbEIscUtBQXFLLENBQUM7QUFjeEssTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHO0lBQ3ZCLFVBQVUsQ0FBQyxDQUFTO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxTQUFTLENBQ2pCLHNCQUFzQixDQUFDLHNGQUFzRixDQUM5RyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM1QixRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsT0FBTztZQUNMLE9BQU87WUFDUCxRQUFRO1lBQ1IsT0FBTztZQUNQLE1BQU07WUFDTixPQUFPO1lBQ1AsU0FBUztZQUNULFNBQVM7U0FDVixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxRQUFRLENBQWEsQ0FBQztJQUMzQixDQUFDO0lBQ0QsUUFBUSxDQUFDLENBQVc7UUFDbEIsT0FBTztZQUNMLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN4QixHQUFHO1lBQ0gsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsR0FBRztZQUNILENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ2pDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBEVVJBVElPTl9SRUdFWCA9XG4gIC9eKC18XFwrKT9QKD86KFstK10/WzAtOSwuXSopWSk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopVyk/KD86KFstK10/WzAtOSwuXSopRCk/KD86VCg/OihbLStdP1swLTksLl0qKUgpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVMpPyk/JC87XG5cbi8vaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zXG5leHBvcnQgdHlwZSBEdXJhdGlvbiA9IHtcbiAgc2lnbj86IDEgfCAtMTtcbiAgeWVhcnM/OiBudW1iZXI7XG4gIG1vbnRocz86IG51bWJlcjtcbiAgd2Vla3M/OiBudW1iZXI7XG4gIGRheXM/OiBudW1iZXI7XG4gIGhvdXJzPzogbnVtYmVyO1xuICBtaW51dGVzPzogbnVtYmVyO1xuICBzZWNvbmRzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IER1cmF0aW9ucyA9IHtcbiAgdG9EdXJhdGlvbih2OiBzdHJpbmcpOiBEdXJhdGlvbiB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IERVUkFUSU9OX1JFR0VYLmV4ZWModik7XG4gICAgaWYgKCFtYXRjaGVzIHx8IHYubGVuZ3RoIDwgMykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYGR1cmF0aW9uIGludmFsaWQ6IFwiJHt2fVwiLiBNdXN0IGJlIGEgSVNPIDg2MDEgZHVyYXRpb24uIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnNgLFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IGR1cmF0aW9uOiBEdXJhdGlvbiA9IHt9O1xuICAgIGR1cmF0aW9uLnNpZ24gPSBtYXRjaGVzWzFdID09PSAnLScgPyAtMSA6IDE7XG4gICAgcmV0dXJuIFtcbiAgICAgICd5ZWFycycsXG4gICAgICAnbW9udGhzJyxcbiAgICAgICd3ZWVrcycsXG4gICAgICAnZGF5cycsXG4gICAgICAnaG91cnMnLFxuICAgICAgJ21pbnV0ZXMnLFxuICAgICAgJ3NlY29uZHMnLFxuICAgIF0ucmVkdWNlKChhY2M6IGFueSwgbmFtZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHYgPSBwYXJzZUZsb2F0KG1hdGNoZXNbaW5kZXggKyAyXSk7XG4gICAgICBpZiAoIU51bWJlci5pc05hTih2KSkgYWNjW25hbWVdID0gdjtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgZHVyYXRpb24pIGFzIER1cmF0aW9uO1xuICB9LFxuICB0b1N0cmluZyh2OiBEdXJhdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHYuc2lnbiA9PT0gLTEgPyAnLScgOiAnJyxcbiAgICAgICdQJyxcbiAgICAgIHYueWVhcnMgPyB2LnllYXJzICsgJ1knIDogJycsXG4gICAgICB2Lm1vbnRocyA/IHYubW9udGhzICsgJ00nIDogJycsXG4gICAgICB2LndlZWtzID8gdi53ZWVrcyArICdXJyA6ICcnLFxuICAgICAgdi5kYXlzID8gdi5kYXlzICsgJ0QnIDogJycsXG4gICAgICAnVCcsXG4gICAgICB2LmhvdXJzID8gdi5ob3VycyArICdIJyA6ICcnLFxuICAgICAgdi5taW51dGVzID8gdi5taW51dGVzICsgJ00nIDogJycsXG4gICAgICB2LnNlY29uZHMgPyB2LnNlY29uZHMgKyAnUycgOiAnJyxcbiAgICBdLmpvaW4oJycpO1xuICB9LFxufTtcbiJdfQ==