asn1-ts
Version:
ASN.1 encoding and decoding, including BER, CER, and DER.
43 lines (42 loc) • 2 kB
JavaScript
import * as errors from "../../errors.mjs";
import datetimeComponentValidator from "../../validators/datetimeComponentValidator.mjs";
export default class DURATION_INTERVAL_ENCODING {
constructor(years, months, weeks, days, hours, minutes, seconds, fractional_part) {
this.years = years;
this.months = months;
this.weeks = weeks;
this.days = days;
this.hours = hours;
this.minutes = minutes;
this.seconds = seconds;
this.fractional_part = fractional_part;
if (typeof weeks !== "undefined"
&& (years || months || days || hours || minutes || seconds)) {
throw new errors.ASN1Error("DURATION-INTERVAL-ENCODING may not combine week components and date-time components.");
}
if (years) {
datetimeComponentValidator("year", 0, Number.MAX_SAFE_INTEGER)("DURATION-INTERVAL-ENCODING", years);
}
if (months) {
datetimeComponentValidator("month", 0, Number.MAX_SAFE_INTEGER)("DURATION-INTERVAL-ENCODING", months);
}
if (weeks) {
datetimeComponentValidator("week", 0, Number.MAX_SAFE_INTEGER)("DURATION-INTERVAL-ENCODING", weeks);
}
if (days) {
datetimeComponentValidator("day", 0, Number.MAX_SAFE_INTEGER)("DURATION-INTERVAL-ENCODING", days);
}
if (hours) {
datetimeComponentValidator("hour", 0, Number.MAX_SAFE_INTEGER)("DURATION-INTERVAL-ENCODING", hours);
}
if (minutes) {
datetimeComponentValidator("minute", 0, Number.MAX_SAFE_INTEGER)("DURATION-INTERVAL-ENCODING", minutes);
}
if (seconds) {
datetimeComponentValidator("second", 0, Number.MAX_SAFE_INTEGER)("DURATION-INTERVAL-ENCODING", seconds);
}
if (fractional_part && !Number.isSafeInteger(fractional_part.fractional_value)) {
throw new errors.ASN1Error("Malformed DURATION-INTERVAL-ENCODING fractional part.");
}
}
}