diff --git a/lib/main/ChronoTariff.d.ts b/lib/main/ChronoTariff.d.ts new file mode 100644 index 0000000..824fe8c --- /dev/null +++ b/lib/main/ChronoTariff.d.ts @@ -0,0 +1,54 @@ +/** + * An enumeration of supported chronological tariff units of the Gregorian calendar. + * @public + */ +export declare enum ChronoTariffUnit { + /** Days */ + DAYS = 0, + /** Weeks */ + WEEKS = 1, + /** Months */ + MONTHS = 2 +} +/** + * A chronologically-based tariff, such as a "daily" charge. + * @public + */ +export default class ChronoTariff { + #private; + /** + * Constructor. + * + * @param chronoUnit - the chrono unit + * @param rate - the rate per chrono unit + * @param name - an optional description + */ + constructor(chronoUnit: ChronoTariffUnit, rate: number, name?: string); + /** Get the unit. */ + get unit(): ChronoTariffUnit; + /** Get the rate. */ + get rate(): number; + /** Get the optional name. */ + get name(): string | undefined; + /** + * Calcualte the count of units between two dates. + * + * The cost of this tariff can be calculated by multiplying the `rate` by the result + * of this method, for example: + * + * ```ts + * const tariff = new ChronoTariff(ChronoTariffUnit.DAYS, 10); + * tariff.rate * tariff.quantity( + * new Date('2024-01-01T00:00:00Z'), + * new Date('2024-01-08T00:00:00Z'), + * true) === 70; // 7 days @ 10/day + * ``` + * + * @param from - the starting date + * @param to - the ending date (exclusive) + * @param utc - if `true` then use UTC date components, otherwise assume the local time zone + * @returns the count of units between `from` and `to`, including any fractional component + */ + quantity(from: Date, to: Date, utc?: boolean): number; +} +//# sourceMappingURL=ChronoTariff.d.ts.map \ No newline at end of file diff --git a/lib/main/ChronoTariff.d.ts.map b/lib/main/ChronoTariff.d.ts.map new file mode 100644 index 0000000..88a7e02 --- /dev/null +++ b/lib/main/ChronoTariff.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ChronoTariff.d.ts","sourceRoot":"","sources":["../../src/main/ChronoTariff.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,gBAAgB;IAC3B,WAAW;IACX,IAAI,IAAA;IAEJ,YAAY;IACZ,KAAK,IAAA;IAEL,aAAa;IACb,MAAM,IAAA;CACN;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;;IAUhC;;;;;;OAMG;gBACS,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAMrE,oBAAoB;IACpB,IAAI,IAAI,IAAI,gBAAgB,CAE3B;IAED,oBAAoB;IACpB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,6BAA6B;IAC7B,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM;CAyOrD"} \ No newline at end of file diff --git a/lib/main/ChronoTariff.js b/lib/main/ChronoTariff.js new file mode 100644 index 0000000..40b74a2 --- /dev/null +++ b/lib/main/ChronoTariff.js @@ -0,0 +1,286 @@ +/** + * An enumeration of supported chronological tariff units of the Gregorian calendar. + * @public + */ +export var ChronoTariffUnit; +(function (ChronoTariffUnit) { + /** Days */ + ChronoTariffUnit[ChronoTariffUnit["DAYS"] = 0] = "DAYS"; + /** Weeks */ + ChronoTariffUnit[ChronoTariffUnit["WEEKS"] = 1] = "WEEKS"; + /** Months */ + ChronoTariffUnit[ChronoTariffUnit["MONTHS"] = 2] = "MONTHS"; +})(ChronoTariffUnit || (ChronoTariffUnit = {})); +/** + * A chronologically-based tariff, such as a "daily" charge. + * @public + */ +export default class ChronoTariff { + /** The tariff time unit. */ + #unit; + /** The rate applied per time unit. */ + #rate; + /** An optional name to associate with the tariff. */ + #name; + /** + * Constructor. + * + * @param chronoUnit - the chrono unit + * @param rate - the rate per chrono unit + * @param name - an optional description + */ + constructor(chronoUnit, rate, name) { + this.#unit = chronoUnit; + this.#rate = rate; + this.#name = name; + } + /** Get the unit. */ + get unit() { + return this.#unit; + } + /** Get the rate. */ + get rate() { + return this.#rate; + } + /** Get the optional name. */ + get name() { + return this.#name; + } + /** + * Calcualte the count of units between two dates. + * + * The cost of this tariff can be calculated by multiplying the `rate` by the result + * of this method, for example: + * + * ```ts + * const tariff = new ChronoTariff(ChronoTariffUnit.DAYS, 10); + * tariff.rate * tariff.quantity( + * new Date('2024-01-01T00:00:00Z'), + * new Date('2024-01-08T00:00:00Z'), + * true) === 70; // 7 days @ 10/day + * ``` + * + * @param from - the starting date + * @param to - the ending date (exclusive) + * @param utc - if `true` then use UTC date components, otherwise assume the local time zone + * @returns the count of units between `from` and `to`, including any fractional component + */ + quantity(from, to, utc) { + if (isNaN(+from) || isNaN(+to)) { + return 0; + } + let q = 0; + switch (this.#unit) { + case ChronoTariffUnit.DAYS: + q = this.#dayQuantity(from, to, utc); + break; + case ChronoTariffUnit.WEEKS: + q = this.#weekQuantity(from, to, utc); + break; + case ChronoTariffUnit.MONTHS: + q = this.#monthQuantity(from, to, utc); + break; + } + return q; + } + #timeFraction(from, to, refFrom, refTo) { + if (!(refFrom && refTo)) { + return 0; + } + const den = refTo.getTime() - refFrom.getTime(); + if (den === 0) { + return 0; + } + return (to.getTime() - from.getTime()) / den; + } + #dayQuantity(from, to, utc) { + let q = 0; + let ref; + // get the starting day-aligned date + const s = new Date(from); + if (utc) { + s.setUTCHours(0, 0, 0, 0); + ref = new Date(s); + if (s < from) { + s.setUTCDate(s.getUTCDate() + 1); + } + } + else { + s.setHours(0, 0, 0, 0); + ref = new Date(s); + if (s < from) { + s.setDate(s.getDate() + 1); + } + } + if (s > to) { + // less than one day + return this.#timeFraction(from, to, ref, s); + } + // add start fraction + q += this.#timeFraction(from, s, ref, s); + // get the ending day-aligned date + const e = new Date(to); + if (utc) { + e.setUTCHours(0, 0, 0, 0); + ref = new Date(e); + ref.setUTCDate(ref.getUTCDate() + 1); + } + else { + e.setHours(0, 0, 0, 0); + ref = new Date(e); + ref.setDate(ref.getDate() + 1); + } + // add end fraction + q += this.#timeFraction(e, to, e, ref); + // count days + while (s < e) { + q += 1; + if (utc) { + s.setUTCDate(s.getUTCDate() + 1); + } + else { + s.setDate(s.getDate() + 1); + } + } + return q; + } + #weekQuantity(from, to, utc) { + let q = 0; + let ref; + // get the starting Monday-aligned date + const s = new Date(from); + if (utc) { + s.setUTCHours(0, 0, 0, 0); + while (s.getUTCDay() !== 1) { + s.setUTCDate(s.getUTCDate() - 1); + } + if (s < from) { + ref = new Date(s); + s.setUTCDate(s.getUTCDate() + 7); + } + } + else { + s.setHours(0, 0, 0, 0); + while (s.getDay() !== 1) { + s.setDate(s.getDate() - 1); + } + if (s < from) { + ref = new Date(s); + s.setDate(s.getDate() + 7); + } + } + if (s > to) { + // less than one week + return this.#timeFraction(from, to, ref, s); + } + // add start fraction (of days) + q += this.#timeFraction(from, s, ref, s); + // get the ending Monday-aligned date + const e = new Date(to); + if (utc) { + e.setUTCHours(0, 0, 0, 0); + while (e.getUTCDay() !== 1) { + e.setUTCDate(e.getUTCDate() - 1); + } + if (e < to) { + ref = new Date(e); + ref.setUTCDate(ref.getUTCDate() + 7); + } + else { + ref = to; + } + } + else { + e.setHours(0, 0, 0, 0); + while (e.getDay() !== 1) { + e.setDate(e.getDate() - 1); + } + if (e < to) { + ref = new Date(e); + ref.setDate(ref.getDate() + 7); + } + else { + ref = to; + } + } + // add end fraction + q += this.#timeFraction(e, to, e, ref); + // count weeks + while (s < e) { + q += 1; + if (utc) { + s.setUTCDate(s.getUTCDate() + 7); + } + else { + s.setDate(s.getDate() + 7); + } + } + return q; + } + #monthQuantity(from, to, utc) { + let q = 0; + let ref; + // get the starting day-aligned date + const s = new Date(from); + if (utc) { + s.setUTCHours(0, 0, 0, 0); + s.setUTCDate(1); + if (s < from) { + ref = new Date(s); + s.setUTCMonth(s.getUTCMonth() + 1); + } + } + else { + s.setHours(0, 0, 0, 0); + s.setDate(1); + if (s < from) { + ref = new Date(s); + s.setMonth(s.getMonth() + 1); + } + } + if (s > to) { + // less than one month + return this.#timeFraction(from, to, ref, s); + } + // add start fraction (of days) + q += this.#timeFraction(from, s, ref, s); + // get the ending month-aligned date + const e = new Date(to); + if (utc) { + e.setUTCHours(0, 0, 0, 0); + e.setUTCDate(1); + if (e < to) { + ref = new Date(e); + ref.setUTCMonth(ref.getUTCMonth() + 1); + } + else { + ref = to; + } + } + else { + e.setHours(0, 0, 0, 0); + e.setDate(1); + if (e < to) { + ref = new Date(e); + ref.setMonth(ref.getMonth() + 1); + } + else { + ref = to; + } + } + // add end fraction + q += this.#timeFraction(e, to, e, ref); + // count months + while (s < e) { + q += 1; + if (utc) { + s.setUTCMonth(s.getUTCMonth() + 1); + } + else { + s.setMonth(s.getMonth() + 1); + } + } + return q; + } +} +//# sourceMappingURL=ChronoTariff.js.map \ No newline at end of file diff --git a/lib/main/ChronoTariff.js.map b/lib/main/ChronoTariff.js.map new file mode 100644 index 0000000..63469f6 --- /dev/null +++ b/lib/main/ChronoTariff.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ChronoTariff.js","sourceRoot":"","sources":["../../src/main/ChronoTariff.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/main/index.d.ts b/lib/main/index.d.ts index 01b7003..7b28d38 100644 --- a/lib/main/index.d.ts +++ b/lib/main/index.d.ts @@ -4,6 +4,7 @@ * @packageDocumentation */ export { ChronoField, ChronoFieldValue, ChronoFieldFormatter, } from "./ChronoFieldFormatter.js"; +export { default as ChronoTariff, ChronoTariffUnit } from "./ChronoTariff.js"; export { default as Comparable } from "./Comparable.js"; export { default as IntRange, IntRangeFormatOptions, UNBOUNDED_RANGE, UNBOUNDED_VALUE, } from "./IntRange.js"; export { default as NumberFormatter, DEFAULT_FORMAT_OPTIONS, } from "./NumberFormatter.js"; diff --git a/lib/main/index.d.ts.map b/lib/main/index.d.ts.map index 37f1ea8..9181a48 100644 --- a/lib/main/index.d.ts.map +++ b/lib/main/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACN,WAAW,EACX,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACN,OAAO,IAAI,QAAQ,EACnB,qBAAqB,EACrB,eAAe,EACf,eAAe,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,OAAO,IAAI,eAAe,EAC1B,sBAAsB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACN,OAAO,IAAI,oBAAoB,EAC/B,iCAAiC,EACjC,UAAU,GACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,OAAO,IAAI,4BAA4B,EACvC,mCAAmC,GACnC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EACN,OAAO,IAAI,gCAAgC,EAC3C,uCAAuC,GACvC,MAAM,uCAAuC,CAAC;AAI/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACN,WAAW,EACX,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACN,OAAO,IAAI,QAAQ,EACnB,qBAAqB,EACrB,eAAe,EACf,eAAe,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,OAAO,IAAI,eAAe,EAC1B,sBAAsB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACN,OAAO,IAAI,oBAAoB,EAC/B,iCAAiC,EACjC,UAAU,GACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,OAAO,IAAI,4BAA4B,EACvC,mCAAmC,GACnC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EACN,OAAO,IAAI,gCAAgC,EAC3C,uCAAuC,GACvC,MAAM,uCAAuC,CAAC;AAI/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC"} \ No newline at end of file diff --git a/lib/main/index.js b/lib/main/index.js index a815eef..326801c 100644 --- a/lib/main/index.js +++ b/lib/main/index.js @@ -4,6 +4,7 @@ * @packageDocumentation */ export { ChronoField, ChronoFieldValue, ChronoFieldFormatter, } from "./ChronoFieldFormatter.js"; +export { default as ChronoTariff, ChronoTariffUnit } from "./ChronoTariff.js"; export { default as IntRange, UNBOUNDED_RANGE, UNBOUNDED_VALUE, } from "./IntRange.js"; export { default as NumberFormatter, DEFAULT_FORMAT_OPTIONS, } from "./NumberFormatter.js"; export { default as TariffRate } from "./TariffRate.js"; diff --git a/lib/main/index.js.map b/lib/main/index.js.map index a7aa785..c2cc0b7 100644 --- a/lib/main/index.js.map +++ b/lib/main/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACN,WAAW,EACX,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACN,OAAO,IAAI,QAAQ,EAEnB,eAAe,EACf,eAAe,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,OAAO,IAAI,eAAe,EAC1B,sBAAsB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACN,OAAO,IAAI,oBAAoB,EAE/B,UAAU,GACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,OAAO,IAAI,4BAA4B,GAEvC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EACN,OAAO,IAAI,gCAAgC,GAE3C,MAAM,uCAAuC,CAAC;AAE/C,2EAA2E;AAC3E,4BAA4B;AAC5B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACN,WAAW,EACX,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EACN,OAAO,IAAI,QAAQ,EAEnB,eAAe,EACf,eAAe,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,OAAO,IAAI,eAAe,EAC1B,sBAAsB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACN,OAAO,IAAI,oBAAoB,EAE/B,UAAU,GACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,OAAO,IAAI,4BAA4B,GAEvC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EACN,OAAO,IAAI,gCAAgC,GAE3C,MAAM,uCAAuC,CAAC;AAE/C,2EAA2E;AAC3E,4BAA4B;AAC5B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC"} \ No newline at end of file