@spinajs/util 2.0.409 → 2.0.411

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,4 +5,5 @@ export * from "./args.js";
5
5
  export * from "./fp.js";
6
6
  export * from "./string.js";
7
7
  export * from "./func.js";
8
+ export * from "./timespan.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
package/lib/cjs/index.js CHANGED
@@ -21,4 +21,5 @@ __exportStar(require("./args.js"), exports);
21
21
  __exportStar(require("./fp.js"), exports);
22
22
  __exportStar(require("./string.js"), exports);
23
23
  __exportStar(require("./func.js"), exports);
24
+ __exportStar(require("./timespan.js"), exports);
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B;AAC1B,gDAA8B"}
@@ -0,0 +1,154 @@
1
+ import { DateTime } from 'luxon';
2
+ export interface TimeLike {
3
+ days?: number;
4
+ hours?: number;
5
+ minutes?: number;
6
+ seconds?: number;
7
+ milliseconds?: number;
8
+ }
9
+ export type TimeSpanLike = number | string | TimeLike | TimeSpan;
10
+ export declare class TimeSpan {
11
+ static readonly MILLIS_PER_SECOND = 1000;
12
+ static readonly MILLIS_PER_MINUTE: number;
13
+ static readonly MILLIS_PER_HOUR: number;
14
+ static readonly MILLIS_PER_DAY: number;
15
+ static readonly ZERO: TimeSpan;
16
+ static readonly MAX_VALUE: TimeSpan;
17
+ static readonly MIN_VALUE: TimeSpan;
18
+ private static _TIMEZONE_OFFSET;
19
+ static get TIMEZONE_OFFSET(): TimeSpan;
20
+ private readonly _millis;
21
+ constructor(millis: number);
22
+ get milliseconds(): number;
23
+ get seconds(): number;
24
+ get minutes(): number;
25
+ get hours(): number;
26
+ get days(): number;
27
+ get totalDays(): number;
28
+ get totalHours(): number;
29
+ get totalMinutes(): number;
30
+ get totalSeconds(): number;
31
+ get totalMilliseconds(): number;
32
+ add(ts: TimeSpan): TimeSpan;
33
+ subtract(ts: TimeSpan): TimeSpan;
34
+ addDays(value: number): TimeSpan;
35
+ subtractDays(value: number): TimeSpan;
36
+ addHours(value: number): TimeSpan;
37
+ subtractHours(value: number): TimeSpan;
38
+ addMinutes(value: number): TimeSpan;
39
+ subtractMinutes(value: number): TimeSpan;
40
+ addSeconds(value: number): TimeSpan;
41
+ addMilliseconds(value: number): TimeSpan;
42
+ subtractSeconds(value: number): TimeSpan;
43
+ subtractMilliseconds(value: number): TimeSpan;
44
+ negate(): TimeSpan;
45
+ equals(value?: any): boolean;
46
+ /**
47
+ * Compares this TimeSpan with another TimeSpan
48
+ * @returns -1 if this < other, 0 if equal, 1 if this > other
49
+ */
50
+ compareTo(other: TimeSpan): number;
51
+ /**
52
+ * Checks if this TimeSpan is greater than another
53
+ */
54
+ greaterThan(other: TimeSpan): boolean;
55
+ /**
56
+ * Checks if this TimeSpan is greater than or equal to another
57
+ */
58
+ greaterThanOrEqual(other: TimeSpan): boolean;
59
+ /**
60
+ * Checks if this TimeSpan is less than another
61
+ */
62
+ lessThan(other: TimeSpan): boolean;
63
+ /**
64
+ * Checks if this TimeSpan is less than or equal to another
65
+ */
66
+ lessThanOrEqual(other: TimeSpan): boolean;
67
+ /**
68
+ * Checks if the time-of-day represented by this TimeSpan falls within a date range
69
+ * This treats the TimeSpan as hours:minutes:seconds from midnight
70
+ * @param startDate - The start of the date range
71
+ * @param endDate - The end of the date range
72
+ * @returns true if the time-of-day is within the range on any day in the range
73
+ */
74
+ isTimeInRange(startDate: Date, endDate: Date): boolean;
75
+ isTimeInRange(startDateTime: DateTime, endDateTime: DateTime): boolean;
76
+ /**
77
+ * Checks if this TimeSpan (as a time-of-day) falls between two times
78
+ * @param startTime - Start time as TimeSpan
79
+ * @param endTime - End time as TimeSpan
80
+ * @returns true if this time is within the range
81
+ */
82
+ isBetween(startTime: TimeSpan, endTime: TimeSpan): boolean;
83
+ /**
84
+ * Returns the absolute value of this TimeSpan
85
+ */
86
+ abs(): TimeSpan;
87
+ /**
88
+ * Multiplies the TimeSpan by a factor
89
+ */
90
+ multiply(factor: number): TimeSpan;
91
+ /**
92
+ * Divides the TimeSpan by a divisor
93
+ */
94
+ divide(divisor: number): TimeSpan;
95
+ /**
96
+ * Returns the duration (absolute value) of this TimeSpan
97
+ */
98
+ duration(): TimeSpan;
99
+ /**
100
+ * Converts TimeSpan to a plain object
101
+ */
102
+ toObject(): TimeLike;
103
+ /**
104
+ * Converts this TimeSpan to a JavaScript Date
105
+ * @param baseDate - Optional base date to add the TimeSpan to. Defaults to current time.
106
+ * @returns A Date representing baseDate + this TimeSpan
107
+ */
108
+ toDate(baseDate?: Date): Date;
109
+ /**
110
+ * Converts this TimeSpan to a Luxon DateTime
111
+ * @param baseDateTime - Optional base DateTime to add the TimeSpan to. Defaults to current time.
112
+ * @returns A DateTime representing baseDateTime + this TimeSpan
113
+ */
114
+ toDateTime(baseDateTime?: DateTime): DateTime;
115
+ valueOf(): number;
116
+ toJSON(): string;
117
+ toString(): string;
118
+ static fromDays(value: number): TimeSpan;
119
+ static fromHours(value: number): TimeSpan;
120
+ static fromMilliseconds(value: number): TimeSpan;
121
+ static fromMinutes(value: number): TimeSpan;
122
+ static fromSeconds(value: number): TimeSpan;
123
+ /**
124
+ * Creates a TimeSpan from a JavaScript Date object
125
+ * Represents the time elapsed from the given date until now
126
+ * @param date - The date to calculate elapsed time from
127
+ * @returns A TimeSpan representing the elapsed time
128
+ */
129
+ static fromDate(date: Date): TimeSpan;
130
+ /**
131
+ * Creates a TimeSpan from a Luxon DateTime object
132
+ * Represents the time elapsed from the given DateTime until now
133
+ * @param dateTime - The DateTime to calculate elapsed time from
134
+ * @returns A TimeSpan representing the elapsed time
135
+ */
136
+ static fromDateTime(dateTime: DateTime): TimeSpan;
137
+ /**
138
+ * Creates a TimeSpan representing the difference between two dates
139
+ * @param date1 - The first date
140
+ * @param date2 - The second date
141
+ * @returns A TimeSpan representing date1 - date2
142
+ */
143
+ static between(date1: Date, date2: Date): TimeSpan;
144
+ static between(date1: DateTime, date2: DateTime): TimeSpan;
145
+ static fromTime(hours: number, minutes: number, seconds: number): TimeSpan;
146
+ static fromTime(days: number, hours: number, minutes: number, seconds: number, milliseconds: number): TimeSpan;
147
+ private static fromTimeStartingFromHours;
148
+ private static fromTimeStartingFromDays;
149
+ static parse(span: TimeSpanLike | Date): TimeSpan | null;
150
+ private static interval;
151
+ private static round;
152
+ private static timeToMilliseconds;
153
+ }
154
+ //# sourceMappingURL=timespan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timespan.d.ts","sourceRoot":"","sources":["../../src/timespan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAGjE,qBAAa,QAAQ;IACnB,gBAAuB,iBAAiB,QAAQ;IAChD,gBAAuB,iBAAiB,SAAmC;IAC3E,gBAAuB,eAAe,SAAmC;IACzE,gBAAuB,cAAc,SAAiC;IAEtE,gBAAuB,IAAI,WAAmB;IAC9C,gBAAuB,SAAS,WAAyC;IACzE,gBAAuB,SAAS,WAAyC;IAEzE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAW;IAC1C,WAAkB,eAAe,aAQhC;IAED,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,MAAM;IAI1B,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,iBAAiB,IAAI,MAAM,CAErC;IAEM,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,QAAQ;IAK3B,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG,QAAQ;IAKhC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKhC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKjC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKtC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKnC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKxC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKnC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKxC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKxC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAK7C,MAAM,IAAI,QAAQ;IAIlB,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,OAAO;IAQnC;;;OAGG;IACI,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAMzC;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAI5C;;OAEG;IACI,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAInD;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIzC;;OAEG;IACI,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIhD;;;;;;OAMG;IACI,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO;IACtD,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO;IAqD7E;;;;;OAKG;IACI,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO;IAoBjE;;OAEG;IACI,GAAG,IAAI,QAAQ;IAItB;;OAEG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAKzC;;OAEG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAQxC;;OAEG;IACI,QAAQ,IAAI,QAAQ;IAI3B;;OAEG;IACI,QAAQ,IAAI,QAAQ;IAU3B;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI;IAKpC;;;;OAIG;IACI,UAAU,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAK7C,OAAO;IAIP,MAAM;IAIN,QAAQ,IAAI,MAAM;WA+BX,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;WAIjC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;WAIlC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;WAIzC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;WAIpC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIlD;;;;;OAKG;WACW,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ;IAK5C;;;;;OAKG;WACW,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAKxD;;;;;OAKG;WACW,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,QAAQ;WAC3C,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ;WAoBnD,QAAQ,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,QAAQ;WACG,QAAQ,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,QAAQ;IA0BX,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAgBxC,OAAO,CAAC,MAAM,CAAC,wBAAwB;WA6BzB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI;IAmE/D,OAAO,CAAC,MAAM,CAAC,QAAQ;IAevB,OAAO,CAAC,MAAM,CAAC,KAAK;IAUpB,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAelC"}
@@ -0,0 +1,464 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeSpan = void 0;
4
+ const luxon_1 = require("luxon");
5
+ const args_js_1 = require("./args.js");
6
+ class TimeSpan {
7
+ static get TIMEZONE_OFFSET() {
8
+ if (!this._TIMEZONE_OFFSET) {
9
+ this._TIMEZONE_OFFSET = TimeSpan.fromMinutes(new Date().getTimezoneOffset() * -1);
10
+ }
11
+ return TimeSpan._TIMEZONE_OFFSET;
12
+ }
13
+ constructor(millis) {
14
+ this._millis = millis;
15
+ }
16
+ get milliseconds() {
17
+ return TimeSpan.round(this._millis % 1000);
18
+ }
19
+ get seconds() {
20
+ return TimeSpan.round((this._millis / TimeSpan.MILLIS_PER_SECOND) % 60);
21
+ }
22
+ get minutes() {
23
+ return TimeSpan.round((this._millis / TimeSpan.MILLIS_PER_MINUTE) % 60);
24
+ }
25
+ get hours() {
26
+ return TimeSpan.round((this._millis / TimeSpan.MILLIS_PER_HOUR) % 24);
27
+ }
28
+ get days() {
29
+ return TimeSpan.round(this._millis / TimeSpan.MILLIS_PER_DAY);
30
+ }
31
+ get totalDays() {
32
+ return this._millis / TimeSpan.MILLIS_PER_DAY;
33
+ }
34
+ get totalHours() {
35
+ return this._millis / TimeSpan.MILLIS_PER_HOUR;
36
+ }
37
+ get totalMinutes() {
38
+ return this._millis / TimeSpan.MILLIS_PER_MINUTE;
39
+ }
40
+ get totalSeconds() {
41
+ return this._millis / TimeSpan.MILLIS_PER_SECOND;
42
+ }
43
+ get totalMilliseconds() {
44
+ return this._millis;
45
+ }
46
+ add(ts) {
47
+ const result = this._millis + ts.totalMilliseconds;
48
+ return new TimeSpan(result);
49
+ }
50
+ subtract(ts) {
51
+ const result = this._millis - ts.totalMilliseconds;
52
+ return new TimeSpan(result);
53
+ }
54
+ addDays(value) {
55
+ const result = this._millis + value * TimeSpan.MILLIS_PER_DAY;
56
+ return new TimeSpan(result);
57
+ }
58
+ subtractDays(value) {
59
+ const result = this._millis - value * TimeSpan.MILLIS_PER_DAY;
60
+ return new TimeSpan(result);
61
+ }
62
+ addHours(value) {
63
+ const result = this._millis + value * TimeSpan.MILLIS_PER_HOUR;
64
+ return new TimeSpan(result);
65
+ }
66
+ subtractHours(value) {
67
+ const result = this._millis - value * TimeSpan.MILLIS_PER_HOUR;
68
+ return new TimeSpan(result);
69
+ }
70
+ addMinutes(value) {
71
+ const result = this._millis + value * TimeSpan.MILLIS_PER_MINUTE;
72
+ return new TimeSpan(result);
73
+ }
74
+ subtractMinutes(value) {
75
+ const result = this._millis - value * TimeSpan.MILLIS_PER_MINUTE;
76
+ return new TimeSpan(result);
77
+ }
78
+ addSeconds(value) {
79
+ const result = this._millis + value * TimeSpan.MILLIS_PER_SECOND;
80
+ return new TimeSpan(result);
81
+ }
82
+ addMilliseconds(value) {
83
+ const result = this._millis + value;
84
+ return new TimeSpan(result);
85
+ }
86
+ subtractSeconds(value) {
87
+ const result = this._millis - value * TimeSpan.MILLIS_PER_SECOND;
88
+ return new TimeSpan(result);
89
+ }
90
+ subtractMilliseconds(value) {
91
+ const result = this._millis - value;
92
+ return new TimeSpan(result);
93
+ }
94
+ negate() {
95
+ return new TimeSpan(-this._millis);
96
+ }
97
+ equals(value) {
98
+ if (value instanceof TimeSpan) {
99
+ return this._millis === value._millis;
100
+ }
101
+ return false;
102
+ }
103
+ /**
104
+ * Compares this TimeSpan with another TimeSpan
105
+ * @returns -1 if this < other, 0 if equal, 1 if this > other
106
+ */
107
+ compareTo(other) {
108
+ if (this._millis < other._millis)
109
+ return -1;
110
+ if (this._millis > other._millis)
111
+ return 1;
112
+ return 0;
113
+ }
114
+ /**
115
+ * Checks if this TimeSpan is greater than another
116
+ */
117
+ greaterThan(other) {
118
+ return this._millis > other._millis;
119
+ }
120
+ /**
121
+ * Checks if this TimeSpan is greater than or equal to another
122
+ */
123
+ greaterThanOrEqual(other) {
124
+ return this._millis >= other._millis;
125
+ }
126
+ /**
127
+ * Checks if this TimeSpan is less than another
128
+ */
129
+ lessThan(other) {
130
+ return this._millis < other._millis;
131
+ }
132
+ /**
133
+ * Checks if this TimeSpan is less than or equal to another
134
+ */
135
+ lessThanOrEqual(other) {
136
+ return this._millis <= other._millis;
137
+ }
138
+ isTimeInRange(start, end) {
139
+ let startTime;
140
+ let endTime;
141
+ if (start instanceof Date) {
142
+ // Extract time-of-day in milliseconds since midnight
143
+ const startHours = start.getHours();
144
+ const startMinutes = start.getMinutes();
145
+ const startSeconds = start.getSeconds();
146
+ const startMs = start.getMilliseconds();
147
+ startTime = startHours * TimeSpan.MILLIS_PER_HOUR +
148
+ startMinutes * TimeSpan.MILLIS_PER_MINUTE +
149
+ startSeconds * TimeSpan.MILLIS_PER_SECOND +
150
+ startMs;
151
+ }
152
+ else {
153
+ // Luxon DateTime
154
+ startTime = start.hour * TimeSpan.MILLIS_PER_HOUR +
155
+ start.minute * TimeSpan.MILLIS_PER_MINUTE +
156
+ start.second * TimeSpan.MILLIS_PER_SECOND +
157
+ start.millisecond;
158
+ }
159
+ if (end instanceof Date) {
160
+ const endHours = end.getHours();
161
+ const endMinutes = end.getMinutes();
162
+ const endSeconds = end.getSeconds();
163
+ const endMs = end.getMilliseconds();
164
+ endTime = endHours * TimeSpan.MILLIS_PER_HOUR +
165
+ endMinutes * TimeSpan.MILLIS_PER_MINUTE +
166
+ endSeconds * TimeSpan.MILLIS_PER_SECOND +
167
+ endMs;
168
+ }
169
+ else {
170
+ endTime = end.hour * TimeSpan.MILLIS_PER_HOUR +
171
+ end.minute * TimeSpan.MILLIS_PER_MINUTE +
172
+ end.second * TimeSpan.MILLIS_PER_SECOND +
173
+ end.millisecond;
174
+ }
175
+ // Normalize this TimeSpan to a time-of-day (remove days component)
176
+ const thisTimeOfDay = this._millis % TimeSpan.MILLIS_PER_DAY;
177
+ const normalizedTime = thisTimeOfDay >= 0 ? thisTimeOfDay : thisTimeOfDay + TimeSpan.MILLIS_PER_DAY;
178
+ // Check if the time falls within the range
179
+ if (startTime <= endTime) {
180
+ // Normal case: range doesn't cross midnight
181
+ return normalizedTime >= startTime && normalizedTime <= endTime;
182
+ }
183
+ else {
184
+ // Range crosses midnight (e.g., 22:00 to 02:00)
185
+ return normalizedTime >= startTime || normalizedTime <= endTime;
186
+ }
187
+ }
188
+ /**
189
+ * Checks if this TimeSpan (as a time-of-day) falls between two times
190
+ * @param startTime - Start time as TimeSpan
191
+ * @param endTime - End time as TimeSpan
192
+ * @returns true if this time is within the range
193
+ */
194
+ isBetween(startTime, endTime) {
195
+ // Normalize all timespans to time-of-day (0-24 hours)
196
+ const thisTimeOfDay = this._millis % TimeSpan.MILLIS_PER_DAY;
197
+ const normalizedThis = thisTimeOfDay >= 0 ? thisTimeOfDay : thisTimeOfDay + TimeSpan.MILLIS_PER_DAY;
198
+ const startTimeOfDay = startTime._millis % TimeSpan.MILLIS_PER_DAY;
199
+ const normalizedStart = startTimeOfDay >= 0 ? startTimeOfDay : startTimeOfDay + TimeSpan.MILLIS_PER_DAY;
200
+ const endTimeOfDay = endTime._millis % TimeSpan.MILLIS_PER_DAY;
201
+ const normalizedEnd = endTimeOfDay >= 0 ? endTimeOfDay : endTimeOfDay + TimeSpan.MILLIS_PER_DAY;
202
+ if (normalizedStart <= normalizedEnd) {
203
+ // Normal case: range doesn't cross midnight
204
+ return normalizedThis >= normalizedStart && normalizedThis <= normalizedEnd;
205
+ }
206
+ else {
207
+ // Range crosses midnight (e.g., 22:00 to 02:00)
208
+ return normalizedThis >= normalizedStart || normalizedThis <= normalizedEnd;
209
+ }
210
+ }
211
+ /**
212
+ * Returns the absolute value of this TimeSpan
213
+ */
214
+ abs() {
215
+ return this._millis < 0 ? new TimeSpan(-this._millis) : this;
216
+ }
217
+ /**
218
+ * Multiplies the TimeSpan by a factor
219
+ */
220
+ multiply(factor) {
221
+ factor = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(factor, 'factor');
222
+ return new TimeSpan(this._millis * factor);
223
+ }
224
+ /**
225
+ * Divides the TimeSpan by a divisor
226
+ */
227
+ divide(divisor) {
228
+ divisor = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(divisor, 'divisor');
229
+ if (divisor === 0) {
230
+ throw new Error('Cannot divide TimeSpan by zero');
231
+ }
232
+ return new TimeSpan(this._millis / divisor);
233
+ }
234
+ /**
235
+ * Returns the duration (absolute value) of this TimeSpan
236
+ */
237
+ duration() {
238
+ return this.abs();
239
+ }
240
+ /**
241
+ * Converts TimeSpan to a plain object
242
+ */
243
+ toObject() {
244
+ return {
245
+ days: this.days,
246
+ hours: this.hours,
247
+ minutes: this.minutes,
248
+ seconds: this.seconds,
249
+ milliseconds: this.milliseconds,
250
+ };
251
+ }
252
+ /**
253
+ * Converts this TimeSpan to a JavaScript Date
254
+ * @param baseDate - Optional base date to add the TimeSpan to. Defaults to current time.
255
+ * @returns A Date representing baseDate + this TimeSpan
256
+ */
257
+ toDate(baseDate) {
258
+ const base = baseDate ? baseDate.getTime() : Date.now();
259
+ return new Date(base + this._millis);
260
+ }
261
+ /**
262
+ * Converts this TimeSpan to a Luxon DateTime
263
+ * @param baseDateTime - Optional base DateTime to add the TimeSpan to. Defaults to current time.
264
+ * @returns A DateTime representing baseDateTime + this TimeSpan
265
+ */
266
+ toDateTime(baseDateTime) {
267
+ const base = baseDateTime || luxon_1.DateTime.now();
268
+ return base.plus({ milliseconds: this._millis });
269
+ }
270
+ valueOf() {
271
+ return this._millis;
272
+ }
273
+ toJSON() {
274
+ return this.toString();
275
+ }
276
+ toString() {
277
+ const absMillis = Math.abs(this._millis);
278
+ const negative = this._millis < 0;
279
+ const d = Math.floor(absMillis / TimeSpan.MILLIS_PER_DAY);
280
+ const h = Math.floor((absMillis % TimeSpan.MILLIS_PER_DAY) / TimeSpan.MILLIS_PER_HOUR);
281
+ const m = Math.floor((absMillis % TimeSpan.MILLIS_PER_HOUR) / TimeSpan.MILLIS_PER_MINUTE);
282
+ const s = Math.floor((absMillis % TimeSpan.MILLIS_PER_MINUTE) / TimeSpan.MILLIS_PER_SECOND);
283
+ const ms = Math.floor(absMillis % TimeSpan.MILLIS_PER_SECOND);
284
+ let text = '';
285
+ // Include days if present
286
+ if (d > 0) {
287
+ text = `${d}.${to2Digits(h)}:${to2Digits(m)}:${to2Digits(s)}`;
288
+ }
289
+ else {
290
+ text = `${to2Digits(h)}:${to2Digits(m)}:${to2Digits(s)}`;
291
+ }
292
+ // Include milliseconds if present
293
+ if (ms > 0) {
294
+ text += `.${String(ms).padStart(3, '0')}`;
295
+ }
296
+ if (negative) {
297
+ text = '-' + text;
298
+ }
299
+ return text;
300
+ }
301
+ static fromDays(value) {
302
+ return TimeSpan.interval(value, TimeSpan.MILLIS_PER_DAY);
303
+ }
304
+ static fromHours(value) {
305
+ return TimeSpan.interval(value, TimeSpan.MILLIS_PER_HOUR);
306
+ }
307
+ static fromMilliseconds(value) {
308
+ return TimeSpan.interval(value, 1);
309
+ }
310
+ static fromMinutes(value) {
311
+ return TimeSpan.interval(value, TimeSpan.MILLIS_PER_MINUTE);
312
+ }
313
+ static fromSeconds(value) {
314
+ return TimeSpan.interval(value, TimeSpan.MILLIS_PER_SECOND);
315
+ }
316
+ /**
317
+ * Creates a TimeSpan from a JavaScript Date object
318
+ * Represents the time elapsed from the given date until now
319
+ * @param date - The date to calculate elapsed time from
320
+ * @returns A TimeSpan representing the elapsed time
321
+ */
322
+ static fromDate(date) {
323
+ const elapsed = Date.now() - date.getTime();
324
+ return new TimeSpan(elapsed);
325
+ }
326
+ /**
327
+ * Creates a TimeSpan from a Luxon DateTime object
328
+ * Represents the time elapsed from the given DateTime until now
329
+ * @param dateTime - The DateTime to calculate elapsed time from
330
+ * @returns A TimeSpan representing the elapsed time
331
+ */
332
+ static fromDateTime(dateTime) {
333
+ const elapsed = luxon_1.DateTime.now().toMillis() - dateTime.toMillis();
334
+ return new TimeSpan(elapsed);
335
+ }
336
+ static between(date1, date2) {
337
+ let millis1;
338
+ let millis2;
339
+ if (date1 instanceof Date) {
340
+ millis1 = date1.getTime();
341
+ }
342
+ else {
343
+ millis1 = date1.toMillis();
344
+ }
345
+ if (date2 instanceof Date) {
346
+ millis2 = date2.getTime();
347
+ }
348
+ else {
349
+ millis2 = date2.toMillis();
350
+ }
351
+ return new TimeSpan(millis1 - millis2);
352
+ }
353
+ static fromTime(daysOrHours, hoursOrMinutes, minutesOrSeconds, seconds, milliseconds) {
354
+ if (milliseconds != undefined) {
355
+ return this.fromTimeStartingFromDays(daysOrHours, hoursOrMinutes, minutesOrSeconds, seconds, milliseconds);
356
+ }
357
+ else {
358
+ return this.fromTimeStartingFromHours(daysOrHours, hoursOrMinutes, minutesOrSeconds, 0);
359
+ }
360
+ }
361
+ static fromTimeStartingFromHours(hours, minutes, seconds, milliseconds) {
362
+ hours = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(hours, 'hours');
363
+ minutes = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(minutes, 'minutes');
364
+ seconds = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(seconds, 'seconds');
365
+ milliseconds = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(milliseconds, 'milliseconds');
366
+ const millis = TimeSpan.timeToMilliseconds(hours, minutes, seconds) + milliseconds;
367
+ return new TimeSpan(millis);
368
+ }
369
+ static fromTimeStartingFromDays(days, hours, minutes, seconds, milliseconds) {
370
+ days = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(days, 'days');
371
+ hours = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(hours, 'hours');
372
+ minutes = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(minutes, 'minutes');
373
+ seconds = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(seconds, 'seconds');
374
+ milliseconds = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(milliseconds, 'milliseconds');
375
+ const totalMilliSeconds = days * TimeSpan.MILLIS_PER_DAY +
376
+ hours * TimeSpan.MILLIS_PER_HOUR +
377
+ minutes * TimeSpan.MILLIS_PER_MINUTE +
378
+ seconds * TimeSpan.MILLIS_PER_SECOND +
379
+ milliseconds;
380
+ if (totalMilliSeconds > TimeSpan.MAX_VALUE.totalMilliseconds ||
381
+ totalMilliSeconds < TimeSpan.MIN_VALUE.totalMilliseconds) {
382
+ throw new Error('TimeSpanTooLong');
383
+ }
384
+ return new TimeSpan(totalMilliSeconds);
385
+ }
386
+ static parse(span) {
387
+ if (span instanceof TimeSpan) {
388
+ return span;
389
+ }
390
+ if (span instanceof Date) {
391
+ // Calculate time elapsed since the date
392
+ span = Date.now() - span.getTime();
393
+ }
394
+ if (typeof span === 'number') {
395
+ return new TimeSpan(span);
396
+ }
397
+ if (!span) {
398
+ return null;
399
+ }
400
+ if (typeof span === 'object') {
401
+ const { days, hours, minutes, seconds, milliseconds } = span;
402
+ return TimeSpan.fromTime(days || 0, hours || 0, minutes || 0, seconds || 0, milliseconds || 0);
403
+ }
404
+ // Parse string format: "[d.]hh:mm:ss[.fff]"
405
+ // Examples: "12:30:45", "1.12:30:45", "12:30:45.123"
406
+ const tokens = span.split(':');
407
+ if (tokens.length < 3) {
408
+ throw new Error('Invalid TimeSpan format. Expected format: "[d.]hh:mm:ss[.fff]"');
409
+ }
410
+ const secondsParts = tokens[2].split('.');
411
+ let milliseconds = 0;
412
+ if (secondsParts.length === 2) {
413
+ // Pad or truncate to 3 digits
414
+ const msString = secondsParts[1].padEnd(3, '0').slice(0, 3);
415
+ milliseconds = +msString;
416
+ }
417
+ const daysParts = tokens[0].split('.');
418
+ if (daysParts.length === 2) {
419
+ // Format: "d.hh:mm:ss[.fff]"
420
+ return TimeSpan.fromTimeStartingFromDays(+daysParts[0], +daysParts[1], +tokens[1], +secondsParts[0], milliseconds);
421
+ }
422
+ // Format: "hh:mm:ss[.fff]"
423
+ return TimeSpan.fromTimeStartingFromHours(+tokens[0], +tokens[1], +secondsParts[0], milliseconds);
424
+ }
425
+ static interval(value, scale) {
426
+ value = (0, args_js_1._is_number)((0, args_js_1._non_NaN)())(value, 'value');
427
+ const tmp = value * scale;
428
+ const millis = TimeSpan.round(tmp + (value >= 0 ? 0.5 : -0.5));
429
+ if (millis > TimeSpan.MAX_VALUE.totalMilliseconds ||
430
+ millis < TimeSpan.MIN_VALUE.totalMilliseconds) {
431
+ throw new Error('TimeSpanTooLong');
432
+ }
433
+ return new TimeSpan(millis);
434
+ }
435
+ static round(n) {
436
+ if (n < 0) {
437
+ return Math.ceil(n);
438
+ }
439
+ else if (n > 0) {
440
+ return Math.floor(n);
441
+ }
442
+ return 0;
443
+ }
444
+ static timeToMilliseconds(hour, minute, second) {
445
+ const totalSeconds = hour * 3600 + minute * 60 + second;
446
+ if (totalSeconds > TimeSpan.MAX_VALUE.totalSeconds ||
447
+ totalSeconds < TimeSpan.MIN_VALUE.totalSeconds) {
448
+ throw new Error('TimeSpanTooLong');
449
+ }
450
+ return totalSeconds * TimeSpan.MILLIS_PER_SECOND;
451
+ }
452
+ }
453
+ exports.TimeSpan = TimeSpan;
454
+ TimeSpan.MILLIS_PER_SECOND = 1000;
455
+ TimeSpan.MILLIS_PER_MINUTE = TimeSpan.MILLIS_PER_SECOND * 60;
456
+ TimeSpan.MILLIS_PER_HOUR = TimeSpan.MILLIS_PER_MINUTE * 60;
457
+ TimeSpan.MILLIS_PER_DAY = TimeSpan.MILLIS_PER_HOUR * 24;
458
+ TimeSpan.ZERO = new TimeSpan(0);
459
+ TimeSpan.MAX_VALUE = new TimeSpan(Number.MAX_SAFE_INTEGER);
460
+ TimeSpan.MIN_VALUE = new TimeSpan(Number.MIN_SAFE_INTEGER);
461
+ function to2Digits(n) {
462
+ return String(n).padStart(2, '0');
463
+ }
464
+ //# sourceMappingURL=timespan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timespan.js","sourceRoot":"","sources":["../../src/timespan.ts"],"names":[],"mappings":"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"}