@develia/commons 0.4.14 → 0.4.16
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.
- package/dist/cjs/array.js +43 -1
- package/dist/cjs/array.js.map +1 -1
- package/dist/cjs/async-pool-executor.js +15 -0
- package/dist/cjs/async-pool-executor.js.map +1 -1
- package/dist/cjs/browser/form-utilities.js +26 -0
- package/dist/cjs/browser/form-utilities.js.map +1 -1
- package/dist/cjs/browser/geo-location.js +5 -0
- package/dist/cjs/browser/geo-location.js.map +1 -1
- package/dist/cjs/browser/index.js.map +1 -1
- package/dist/cjs/browser/native-bridge.js +9 -0
- package/dist/cjs/browser/native-bridge.js.map +1 -1
- package/dist/cjs/cancellable-promise.js.map +1 -1
- package/dist/cjs/clean-url-search-params.js +1 -0
- package/dist/cjs/clean-url-search-params.js.map +1 -1
- package/dist/cjs/collections/cache-dictionary.js +39 -0
- package/dist/cjs/collections/cache-dictionary.js.map +1 -1
- package/dist/cjs/collections/default-map.js +25 -1
- package/dist/cjs/collections/default-map.js.map +1 -1
- package/dist/cjs/collections/default-weak-map.js +23 -3
- package/dist/cjs/collections/default-weak-map.js.map +1 -1
- package/dist/cjs/{from.js → collections/from.js} +278 -4
- package/dist/cjs/collections/from.js.map +1 -0
- package/dist/cjs/collections/index.js +3 -1
- package/dist/cjs/collections/index.js.map +1 -1
- package/dist/cjs/draft.js +37 -0
- package/dist/cjs/draft.js.map +1 -1
- package/dist/cjs/event-bus.js +1 -0
- package/dist/cjs/event-bus.js.map +1 -1
- package/dist/cjs/index.js +16 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/key-value-pair.js +6 -0
- package/dist/cjs/key-value-pair.js.map +1 -1
- package/dist/cjs/lazy.js +4 -0
- package/dist/cjs/lazy.js.map +1 -1
- package/dist/cjs/math.js +19 -0
- package/dist/cjs/math.js.map +1 -1
- package/dist/cjs/order.js.map +1 -1
- package/dist/cjs/parse.js +96 -0
- package/dist/cjs/parse.js.map +1 -1
- package/dist/cjs/patch.js +10 -2
- package/dist/cjs/patch.js.map +1 -1
- package/dist/cjs/range.js +154 -0
- package/dist/cjs/range.js.map +1 -0
- package/dist/cjs/stopwatch.js +10 -0
- package/dist/cjs/stopwatch.js.map +1 -1
- package/dist/cjs/string.js +62 -0
- package/dist/cjs/string.js.map +1 -1
- package/dist/cjs/timer.js +7 -0
- package/dist/cjs/timer.js.map +1 -1
- package/dist/cjs/timespan.js +202 -0
- package/dist/cjs/timespan.js.map +1 -1
- package/dist/cjs/type-code.js.map +1 -1
- package/dist/cjs/type.js +80 -1
- package/dist/cjs/type.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utilities.js +183 -0
- package/dist/cjs/utilities.js.map +1 -1
- package/dist/esm/array.js +42 -1
- package/dist/esm/array.js.map +1 -1
- package/dist/esm/async-pool-executor.js +15 -0
- package/dist/esm/async-pool-executor.js.map +1 -1
- package/dist/esm/browser/form-utilities.js +26 -0
- package/dist/esm/browser/form-utilities.js.map +1 -1
- package/dist/esm/browser/geo-location.js +5 -0
- package/dist/esm/browser/geo-location.js.map +1 -1
- package/dist/esm/browser/index.js.map +1 -1
- package/dist/esm/browser/native-bridge.js +9 -0
- package/dist/esm/browser/native-bridge.js.map +1 -1
- package/dist/esm/cancellable-promise.js.map +1 -1
- package/dist/esm/clean-url-search-params.js +1 -0
- package/dist/esm/clean-url-search-params.js.map +1 -1
- package/dist/esm/collections/cache-dictionary.js +39 -0
- package/dist/esm/collections/cache-dictionary.js.map +1 -1
- package/dist/esm/collections/default-map.js +25 -1
- package/dist/esm/collections/default-map.js.map +1 -1
- package/dist/esm/collections/default-weak-map.js +22 -2
- package/dist/esm/collections/default-weak-map.js.map +1 -1
- package/dist/esm/{from.js → collections/from.js} +278 -4
- package/dist/esm/collections/from.js.map +1 -0
- package/dist/esm/collections/index.js +1 -0
- package/dist/esm/collections/index.js.map +1 -1
- package/dist/esm/draft.js +37 -0
- package/dist/esm/draft.js.map +1 -1
- package/dist/esm/event-bus.js +1 -0
- package/dist/esm/event-bus.js.map +1 -1
- package/dist/esm/index.js +14 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/key-value-pair.js +6 -0
- package/dist/esm/key-value-pair.js.map +1 -1
- package/dist/esm/lazy.js +4 -0
- package/dist/esm/lazy.js.map +1 -1
- package/dist/esm/math.js +19 -0
- package/dist/esm/math.js.map +1 -1
- package/dist/esm/order.js.map +1 -1
- package/dist/esm/parse.js +96 -0
- package/dist/esm/parse.js.map +1 -1
- package/dist/esm/patch.js +10 -2
- package/dist/esm/patch.js.map +1 -1
- package/dist/esm/range.js +151 -0
- package/dist/esm/range.js.map +1 -0
- package/dist/esm/stopwatch.js +10 -0
- package/dist/esm/stopwatch.js.map +1 -1
- package/dist/esm/string.js +62 -0
- package/dist/esm/string.js.map +1 -1
- package/dist/esm/timer.js +7 -0
- package/dist/esm/timer.js.map +1 -1
- package/dist/esm/timespan.js +202 -0
- package/dist/esm/timespan.js.map +1 -1
- package/dist/esm/type-code.js.map +1 -1
- package/dist/esm/type.js +80 -1
- package/dist/esm/type.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utilities.js +183 -0
- package/dist/esm/utilities.js.map +1 -1
- package/dist/types/array.d.ts +35 -0
- package/dist/types/array.d.ts.map +1 -1
- package/dist/types/async-pool-executor.d.ts +15 -0
- package/dist/types/async-pool-executor.d.ts.map +1 -1
- package/dist/types/browser/form-utilities.d.ts +13 -0
- package/dist/types/browser/form-utilities.d.ts.map +1 -1
- package/dist/types/browser/index.d.ts.map +1 -1
- package/dist/types/browser/native-bridge.d.ts +6 -0
- package/dist/types/browser/native-bridge.d.ts.map +1 -1
- package/dist/types/collections/cache-dictionary.d.ts +39 -0
- package/dist/types/collections/cache-dictionary.d.ts.map +1 -1
- package/dist/types/collections/default-map.d.ts +23 -0
- package/dist/types/collections/default-map.d.ts.map +1 -1
- package/dist/types/collections/default-weak-map.d.ts +20 -1
- package/dist/types/collections/default-weak-map.d.ts.map +1 -1
- package/dist/types/collections/from.d.ts +333 -0
- package/dist/types/collections/from.d.ts.map +1 -0
- package/dist/types/collections/index.d.ts +1 -0
- package/dist/types/collections/index.d.ts.map +1 -1
- package/dist/types/draft.d.ts +68 -0
- package/dist/types/draft.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/key-value-pair.d.ts +6 -0
- package/dist/types/key-value-pair.d.ts.map +1 -1
- package/dist/types/lazy.d.ts +4 -0
- package/dist/types/lazy.d.ts.map +1 -1
- package/dist/types/math.d.ts +19 -0
- package/dist/types/math.d.ts.map +1 -1
- package/dist/types/parse.d.ts +121 -0
- package/dist/types/parse.d.ts.map +1 -1
- package/dist/types/range.d.ts +72 -0
- package/dist/types/range.d.ts.map +1 -0
- package/dist/types/string.d.ts +51 -0
- package/dist/types/string.d.ts.map +1 -1
- package/dist/types/timer.d.ts +7 -0
- package/dist/types/timer.d.ts.map +1 -1
- package/dist/types/timespan.d.ts +202 -0
- package/dist/types/timespan.d.ts.map +1 -1
- package/dist/types/type.d.ts +40 -0
- package/dist/types/type.d.ts.map +1 -1
- package/dist/types/utilities.d.ts +171 -0
- package/dist/types/utilities.d.ts.map +1 -1
- package/dist/web/array.js +42 -1
- package/dist/web/array.js.map +1 -1
- package/dist/web/async-pool-executor.js +15 -0
- package/dist/web/async-pool-executor.js.map +1 -1
- package/dist/web/browser/form-utilities.js +26 -0
- package/dist/web/browser/form-utilities.js.map +1 -1
- package/dist/web/browser/geo-location.js +5 -0
- package/dist/web/browser/geo-location.js.map +1 -1
- package/dist/web/browser/index.js.map +1 -1
- package/dist/web/browser/native-bridge.js +9 -0
- package/dist/web/browser/native-bridge.js.map +1 -1
- package/dist/web/cancellable-promise.js.map +1 -1
- package/dist/web/clean-url-search-params.js +1 -0
- package/dist/web/clean-url-search-params.js.map +1 -1
- package/dist/web/collections/cache-dictionary.js +39 -0
- package/dist/web/collections/cache-dictionary.js.map +1 -1
- package/dist/web/collections/default-map.js +25 -1
- package/dist/web/collections/default-map.js.map +1 -1
- package/dist/web/collections/default-weak-map.js +22 -2
- package/dist/web/collections/default-weak-map.js.map +1 -1
- package/dist/web/{from.js → collections/from.js} +279 -5
- package/dist/web/collections/from.js.map +1 -0
- package/dist/web/collections/index.js +1 -0
- package/dist/web/collections/index.js.map +1 -1
- package/dist/web/draft.js +37 -0
- package/dist/web/draft.js.map +1 -1
- package/dist/web/event-bus.js +1 -0
- package/dist/web/event-bus.js.map +1 -1
- package/dist/web/index.js +14 -1
- package/dist/web/index.js.map +1 -1
- package/dist/web/key-value-pair.js +6 -0
- package/dist/web/key-value-pair.js.map +1 -1
- package/dist/web/lazy.js +4 -0
- package/dist/web/lazy.js.map +1 -1
- package/dist/web/math.js +19 -0
- package/dist/web/math.js.map +1 -1
- package/dist/web/order.js.map +1 -1
- package/dist/web/parse.js +96 -0
- package/dist/web/parse.js.map +1 -1
- package/dist/web/patch.js +10 -2
- package/dist/web/patch.js.map +1 -1
- package/dist/web/range.js +151 -0
- package/dist/web/range.js.map +1 -0
- package/dist/web/stopwatch.js +10 -0
- package/dist/web/stopwatch.js.map +1 -1
- package/dist/web/string.js +62 -0
- package/dist/web/string.js.map +1 -1
- package/dist/web/timer.js +7 -0
- package/dist/web/timer.js.map +1 -1
- package/dist/web/timespan.js +202 -0
- package/dist/web/timespan.js.map +1 -1
- package/dist/web/type-code.js.map +1 -1
- package/dist/web/type.js +80 -1
- package/dist/web/type.js.map +1 -1
- package/dist/web/types.js.map +1 -1
- package/dist/web/utilities.js +183 -0
- package/dist/web/utilities.js.map +1 -1
- package/package.json +1 -1
- package/src/array.ts +16 -0
- package/src/browser/index.ts +2 -2
- package/src/collections/cache-dictionary.ts +39 -1
- package/src/collections/default-map.ts +15 -9
- package/src/collections/default-weak-map.ts +14 -12
- package/src/{from.ts → collections/from.ts} +285 -15
- package/src/collections/index.ts +4 -3
- package/src/index.ts +43 -42
- package/src/range.ts +165 -0
- package/src/timespan.ts +199 -20
- package/dist/cjs/from.js.map +0 -1
- package/dist/esm/from.js.map +0 -1
- package/dist/types/from.d.ts +0 -59
- package/dist/types/from.d.ts.map +0 -1
- package/dist/web/from.js.map +0 -1
package/src/index.ts
CHANGED
|
@@ -1,43 +1,44 @@
|
|
|
1
|
-
// src/index.ts
|
|
2
|
-
|
|
3
|
-
// ─── Types ───────────────────────────────────────────
|
|
4
|
-
export * from './types.js';
|
|
5
|
-
export {default as Type} from './type.js';
|
|
6
|
-
export {default as TypeCode} from './type-code.js';
|
|
7
|
-
|
|
8
|
-
// ─── Utilities ───────────────────────────────────────
|
|
9
|
-
export * from './utilities.js';
|
|
10
|
-
export * from './string.js';
|
|
11
|
-
export * from './math.js';
|
|
12
|
-
export {default as CancellablePromise} from "./cancellable-promise.js";
|
|
13
|
-
|
|
14
|
-
// ─── Data Structures ────────────────────────────────
|
|
15
|
-
export {default as KeyValuePair} from './key-value-pair.js';
|
|
16
|
-
export {default as Order} from './order.js';
|
|
17
|
-
|
|
18
|
-
// ─── Async & Timing ─────────────────────────────────
|
|
19
|
-
export {default as Timer} from './timer.js';
|
|
20
|
-
export {default as TimeSpan} from './timespan.js';
|
|
21
|
-
export {default as Stopwatch} from './stopwatch.js';
|
|
22
|
-
export {default as AsyncPoolExecutor} from './async-pool-executor.js';
|
|
23
|
-
|
|
24
|
-
// ─── Patterns ────────────────────────────────────────
|
|
25
|
-
export {default as Lazy} from './lazy.js';
|
|
26
|
-
export {default as from
|
|
27
|
-
export {EventBus, Event} from './event-bus.js';
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
1
|
+
// src/index.ts
|
|
2
|
+
|
|
3
|
+
// ─── Types ───────────────────────────────────────────
|
|
4
|
+
export * from './types.js';
|
|
5
|
+
export {default as Type} from './type.js';
|
|
6
|
+
export {default as TypeCode} from './type-code.js';
|
|
7
|
+
|
|
8
|
+
// ─── Utilities ───────────────────────────────────────
|
|
9
|
+
export * from './utilities.js';
|
|
10
|
+
export * from './string.js';
|
|
11
|
+
export * from './math.js';
|
|
12
|
+
export {default as CancellablePromise} from "./cancellable-promise.js";
|
|
13
|
+
|
|
14
|
+
// ─── Data Structures ────────────────────────────────
|
|
15
|
+
export {default as KeyValuePair} from './key-value-pair.js';
|
|
16
|
+
export {default as Order} from './order.js';
|
|
17
|
+
|
|
18
|
+
// ─── Async & Timing ─────────────────────────────────
|
|
19
|
+
export {default as Timer} from './timer.js';
|
|
20
|
+
export {default as TimeSpan} from './timespan.js';
|
|
21
|
+
export {default as Stopwatch} from './stopwatch.js';
|
|
22
|
+
export {default as AsyncPoolExecutor} from './async-pool-executor.js';
|
|
23
|
+
|
|
24
|
+
// ─── Patterns ────────────────────────────────────────
|
|
25
|
+
export {default as Lazy} from './lazy.js';
|
|
26
|
+
export {default as from} from './collections/from.js';
|
|
27
|
+
export {EventBus, Event} from './event-bus.js';
|
|
28
|
+
export {default as Range} from './range.js';
|
|
29
|
+
|
|
30
|
+
// ─── Draft ────────────────────────────────────────
|
|
31
|
+
export {default as draft} from './draft.js';
|
|
32
|
+
|
|
33
|
+
// ─── Web ─────────────────────────────────────────────
|
|
34
|
+
export {default as CleanURLSearchParams} from './clean-url-search-params.js';
|
|
35
|
+
/** @deprecated */
|
|
36
|
+
export {ajaxSubmit, ajaxSubmission, submitForm, formToObject} from './browser/index.js';
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
// ─── Deprecated ──────────────────────────────────────
|
|
41
|
+
/** @deprecated */
|
|
42
|
+
export * from './array.js';
|
|
43
|
+
/** @deprecated */
|
|
43
44
|
export * from './collections/index.js';
|
package/src/range.ts
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
export default class Range<T> {
|
|
2
|
+
|
|
3
|
+
private readonly start: T;
|
|
4
|
+
private readonly end: T;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Range constructor.
|
|
8
|
+
* @param start
|
|
9
|
+
* @param end
|
|
10
|
+
*/
|
|
11
|
+
constructor(start: T, end: T) {
|
|
12
|
+
this.start = start;
|
|
13
|
+
this.end = end;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Finds the intersection between two ranges.
|
|
18
|
+
*
|
|
19
|
+
* @param other The Range object to intersect with.
|
|
20
|
+
* @returns The intersected Range object, or null if there is no intersection.
|
|
21
|
+
*/
|
|
22
|
+
public intersect(other: Range<T>): Range<T> | null {
|
|
23
|
+
const start = (this.start > other.start) ? this.start : other.start;
|
|
24
|
+
const end = (this.end < other.end) ? this.end : other.end;
|
|
25
|
+
|
|
26
|
+
if (start < end) {
|
|
27
|
+
return new Range(start, end);
|
|
28
|
+
} else {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Subtract the given range from this range.
|
|
35
|
+
*
|
|
36
|
+
* @param other The range to subtract from this range.
|
|
37
|
+
* @returns An array of Range objects representing the result of the subtraction.
|
|
38
|
+
*/
|
|
39
|
+
public subtract(other: Range<T>): Range<T>[] {
|
|
40
|
+
const result: Range<T>[] = [];
|
|
41
|
+
|
|
42
|
+
if (this.start >= other.end || this.end <= other.start) {
|
|
43
|
+
result.push(new Range(this.start, this.end));
|
|
44
|
+
} else if (other.start <= this.start && other.end >= this.end) {
|
|
45
|
+
return result;
|
|
46
|
+
} else {
|
|
47
|
+
if (this.start < other.start) {
|
|
48
|
+
result.push(new Range(this.start, other.start));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (this.end > other.end) {
|
|
52
|
+
result.push(new Range(other.end, this.end));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Determines if the given range overlaps with the current range.
|
|
61
|
+
*
|
|
62
|
+
* @param other The range to be checked for overlap.
|
|
63
|
+
* @returns Returns true if there is an overlap between the ranges, false otherwise.
|
|
64
|
+
*/
|
|
65
|
+
public overlaps(other: Range<T>): boolean {
|
|
66
|
+
const s1 = this.start;
|
|
67
|
+
const e1 = this.end;
|
|
68
|
+
const s2 = other.start;
|
|
69
|
+
const e2 = other.end;
|
|
70
|
+
|
|
71
|
+
return (s2 > s1 && s2 < e1 || e2 > s1 && e2 < e1) ||
|
|
72
|
+
(s1 > s2 && s1 < e2 || e1 > s2 && e1 < e2) ||
|
|
73
|
+
(s1 === s2 && e1 === e2);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Determines whether the specified value is within the range defined by the start and end values.
|
|
78
|
+
*
|
|
79
|
+
* @param obj The value to check if it is within the range.
|
|
80
|
+
* @param inclusive Optional. If set to true, the range boundaries are considered inclusive.
|
|
81
|
+
* @returns Returns true if the specified value is within the range, false otherwise.
|
|
82
|
+
*/
|
|
83
|
+
public contains(obj: T, inclusive: boolean = true): boolean {
|
|
84
|
+
return inclusive ?
|
|
85
|
+
(this.start <= obj && this.end >= obj) :
|
|
86
|
+
(this.start < obj && this.end > obj);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @returns T
|
|
91
|
+
*/
|
|
92
|
+
public getStart(): T {
|
|
93
|
+
return this.start;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @returns T
|
|
98
|
+
*/
|
|
99
|
+
public getEnd(): T {
|
|
100
|
+
return this.end;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Finds the intersection between two sets of ranges.
|
|
105
|
+
*
|
|
106
|
+
* @param ranges1
|
|
107
|
+
* @param ranges2
|
|
108
|
+
* @returns
|
|
109
|
+
*/
|
|
110
|
+
public static intersectRanges<T>(ranges1: Range<T>[], ranges2: Range<T>[]): Range<T>[] {
|
|
111
|
+
const result: Range<T>[] = [];
|
|
112
|
+
for (const r1 of ranges1) {
|
|
113
|
+
for (const r2 of ranges2) {
|
|
114
|
+
const intersection = r1.intersect(r2);
|
|
115
|
+
if (intersection !== null) {
|
|
116
|
+
result.push(intersection);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Determines if any range in the first set overlaps with any range in the second set.
|
|
125
|
+
*
|
|
126
|
+
* @param ranges1
|
|
127
|
+
* @param ranges2
|
|
128
|
+
* @returns
|
|
129
|
+
*/
|
|
130
|
+
public static overlapsAny<T>(ranges1: Range<T>[], ranges2: Range<T>[]): boolean {
|
|
131
|
+
for (const r1 of ranges1) {
|
|
132
|
+
for (const r2 of ranges2) {
|
|
133
|
+
if (r1.overlaps(r2)) {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Subtracts the second set of ranges from the first set of ranges.
|
|
143
|
+
*
|
|
144
|
+
* @param ranges1
|
|
145
|
+
* @param ranges2
|
|
146
|
+
* @returns
|
|
147
|
+
*/
|
|
148
|
+
public static subtractRanges<T>(ranges1: Range<T>[], ranges2: Range<T>[]): Range<T>[] {
|
|
149
|
+
let currentRanges = ranges1;
|
|
150
|
+
for (const r2 of ranges2) {
|
|
151
|
+
const nextRanges: Range<T>[] = [];
|
|
152
|
+
for (const r1 of currentRanges) {
|
|
153
|
+
const subtracted = r1.subtract(r2);
|
|
154
|
+
for (const s of subtracted) {
|
|
155
|
+
nextRanges.push(s);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
currentRanges = nextRanges;
|
|
159
|
+
if (currentRanges.length === 0) {
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return currentRanges;
|
|
164
|
+
}
|
|
165
|
+
}
|
package/src/timespan.ts
CHANGED
|
@@ -9,136 +9,260 @@ export default class TimeSpan {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Gets the time interval in seconds.
|
|
14
|
+
* @returns {number} The duration in seconds.
|
|
15
|
+
*/
|
|
13
16
|
seconds(): number {
|
|
14
17
|
return this.milliseconds / 1000;
|
|
15
18
|
}
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Gets the time interval in minutes.
|
|
22
|
+
* @returns {number} The duration in minutes.
|
|
23
|
+
*/
|
|
18
24
|
minutes(): number {
|
|
19
25
|
return this.milliseconds / (1000 * 60);
|
|
20
26
|
}
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Gets the time interval in hours.
|
|
30
|
+
* @returns {number} The duration in hours.
|
|
31
|
+
*/
|
|
23
32
|
hours(): number {
|
|
24
33
|
return this.milliseconds / (1000 * 60 * 60);
|
|
25
34
|
}
|
|
26
35
|
|
|
27
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Gets the time interval in days.
|
|
38
|
+
* @returns {number} The duration in days.
|
|
39
|
+
*/
|
|
28
40
|
days(): number {
|
|
29
41
|
return this.milliseconds / (1000 * 60 * 60 * 24);
|
|
30
42
|
}
|
|
31
43
|
|
|
32
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Gets the time interval in weeks.
|
|
46
|
+
* @returns {number} The duration in weeks.
|
|
47
|
+
*/
|
|
33
48
|
weeks(): number {
|
|
34
49
|
return this.milliseconds / (1000 * 60 * 60 * 24 * 7);
|
|
35
50
|
}
|
|
36
51
|
|
|
37
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Creates a TimeSpan from a specified number of milliseconds.
|
|
54
|
+
* @param {number} milliseconds - The number of milliseconds.
|
|
55
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
56
|
+
*/
|
|
38
57
|
static fromMilliseconds(milliseconds: number): TimeSpan {
|
|
39
58
|
return new TimeSpan(milliseconds);
|
|
40
59
|
}
|
|
41
60
|
|
|
42
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Creates a TimeSpan from a specified number of seconds.
|
|
63
|
+
* @param {number} seconds - The number of seconds.
|
|
64
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
65
|
+
*/
|
|
43
66
|
static fromSeconds(seconds: number): TimeSpan {
|
|
44
67
|
return new TimeSpan(seconds * 1000);
|
|
45
68
|
}
|
|
46
69
|
|
|
47
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Creates a TimeSpan from a specified number of minutes.
|
|
72
|
+
* @param {number} minutes - The number of minutes.
|
|
73
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
74
|
+
*/
|
|
48
75
|
static fromMinutes(minutes: number): TimeSpan {
|
|
49
76
|
return new TimeSpan(minutes * 1000 * 60);
|
|
50
77
|
}
|
|
51
78
|
|
|
52
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Creates a TimeSpan from a specified number of hours.
|
|
81
|
+
* @param {number} hours - The number of hours.
|
|
82
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
83
|
+
*/
|
|
53
84
|
static fromHours(hours: number): TimeSpan {
|
|
54
85
|
return new TimeSpan(hours * 1000 * 60 * 60);
|
|
55
86
|
}
|
|
56
87
|
|
|
57
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Creates a TimeSpan from a specified number of days.
|
|
90
|
+
* @param {number} days - The number of days.
|
|
91
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
92
|
+
*/
|
|
58
93
|
static fromDays(days: number): TimeSpan {
|
|
59
94
|
return new TimeSpan(days * 1000 * 60 * 60 * 24);
|
|
60
95
|
}
|
|
61
96
|
|
|
62
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Creates a TimeSpan from a specified number of weeks.
|
|
99
|
+
* @param {number} weeks - The number of weeks.
|
|
100
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
101
|
+
*/
|
|
63
102
|
static fromWeeks(weeks: number): TimeSpan {
|
|
64
103
|
return new TimeSpan(weeks * 1000 * 60 * 60 * 24 * 7);
|
|
65
104
|
}
|
|
66
105
|
|
|
67
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Returns a new TimeSpan that adds the specified number of milliseconds to this instance.
|
|
108
|
+
* @param {number} milliseconds - The milliseconds to add.
|
|
109
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
110
|
+
*/
|
|
68
111
|
addMilliseconds(milliseconds: number): TimeSpan {
|
|
69
112
|
return new TimeSpan(this.milliseconds + milliseconds);
|
|
70
113
|
}
|
|
71
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Returns a new TimeSpan that adds the specified number of seconds to this instance.
|
|
117
|
+
* @param {number} seconds - The seconds to add.
|
|
118
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
119
|
+
*/
|
|
72
120
|
addSeconds(seconds: number): TimeSpan {
|
|
73
121
|
return this.addMilliseconds(seconds * 1000);
|
|
74
122
|
}
|
|
75
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Returns a new TimeSpan that adds the specified number of minutes to this instance.
|
|
126
|
+
* @param {number} minutes - The minutes to add.
|
|
127
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
128
|
+
*/
|
|
76
129
|
addMinutes(minutes: number): TimeSpan {
|
|
77
130
|
return this.addMilliseconds(minutes * 1000 * 60);
|
|
78
131
|
}
|
|
79
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Returns a new TimeSpan that adds the specified number of hours to this instance.
|
|
135
|
+
* @param {number} hours - The hours to add.
|
|
136
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
137
|
+
*/
|
|
80
138
|
addHours(hours: number): TimeSpan {
|
|
81
139
|
return this.addMilliseconds(hours * 1000 * 60 * 60);
|
|
82
140
|
}
|
|
83
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Returns a new TimeSpan that adds the specified number of days to this instance.
|
|
144
|
+
* @param {number} days - The days to add.
|
|
145
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
146
|
+
*/
|
|
84
147
|
addDays(days: number): TimeSpan {
|
|
85
148
|
return this.addMilliseconds(days * 1000 * 60 * 60 * 24);
|
|
86
149
|
}
|
|
87
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Returns a new TimeSpan that adds the specified number of weeks to this instance.
|
|
153
|
+
* @param {number} weeks - The weeks to add.
|
|
154
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
155
|
+
*/
|
|
88
156
|
addWeeks(weeks: number): TimeSpan {
|
|
89
157
|
return this.addMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);
|
|
90
158
|
}
|
|
91
159
|
|
|
92
|
-
|
|
160
|
+
/**
|
|
161
|
+
* Returns a new TimeSpan that subtracts the specified number of milliseconds from this instance.
|
|
162
|
+
* @param {number} milliseconds - The milliseconds to subtract.
|
|
163
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
164
|
+
*/
|
|
93
165
|
subtractMilliseconds(milliseconds: number): TimeSpan {
|
|
94
166
|
return new TimeSpan(this.milliseconds - milliseconds);
|
|
95
167
|
}
|
|
96
168
|
|
|
169
|
+
/**
|
|
170
|
+
* Returns a new TimeSpan that subtracts the specified number of seconds from this instance.
|
|
171
|
+
* @param {number} seconds - The seconds to subtract.
|
|
172
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
173
|
+
*/
|
|
97
174
|
subtractSeconds(seconds: number): TimeSpan {
|
|
98
175
|
return this.subtractMilliseconds(seconds * 1000);
|
|
99
176
|
}
|
|
100
177
|
|
|
178
|
+
/**
|
|
179
|
+
* Returns a new TimeSpan that subtracts the specified number of minutes from this instance.
|
|
180
|
+
* @param {number} minutes - The minutes to subtract.
|
|
181
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
182
|
+
*/
|
|
101
183
|
subtractMinutes(minutes: number): TimeSpan {
|
|
102
184
|
return this.subtractMilliseconds(minutes * 1000 * 60);
|
|
103
185
|
}
|
|
104
186
|
|
|
187
|
+
/**
|
|
188
|
+
* Returns a new TimeSpan that subtracts the specified number of hours from this instance.
|
|
189
|
+
* @param {number} hours - The hours to subtract.
|
|
190
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
191
|
+
*/
|
|
105
192
|
subtractHours(hours: number): TimeSpan {
|
|
106
193
|
return this.subtractMilliseconds(hours * 1000 * 60 * 60);
|
|
107
194
|
}
|
|
108
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Returns a new TimeSpan that subtracts the specified number of days from this instance.
|
|
198
|
+
* @param {number} days - The days to subtract.
|
|
199
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
200
|
+
*/
|
|
109
201
|
subtractDays(days: number): TimeSpan {
|
|
110
202
|
return this.subtractMilliseconds(days * 1000 * 60 * 60 * 24);
|
|
111
203
|
}
|
|
112
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Returns a new TimeSpan that subtracts the specified number of weeks from this instance.
|
|
207
|
+
* @param {number} weeks - The weeks to subtract.
|
|
208
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
209
|
+
*/
|
|
113
210
|
subtractWeeks(weeks: number): TimeSpan {
|
|
114
211
|
return this.subtractMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);
|
|
115
212
|
}
|
|
116
213
|
|
|
117
|
-
|
|
214
|
+
/**
|
|
215
|
+
* Returns a new TimeSpan that adds the specified TimeSpan to this instance.
|
|
216
|
+
* @param {TimeSpan} other - The TimeSpan to add.
|
|
217
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
218
|
+
*/
|
|
118
219
|
add(other: TimeSpan): TimeSpan {
|
|
119
220
|
return new TimeSpan(this.milliseconds + other.milliseconds);
|
|
120
221
|
}
|
|
121
222
|
|
|
122
|
-
|
|
223
|
+
/**
|
|
224
|
+
* Returns a new TimeSpan that subtracts the specified TimeSpan from this instance.
|
|
225
|
+
* @param {TimeSpan} other - The TimeSpan to subtract.
|
|
226
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
227
|
+
*/
|
|
123
228
|
subtract(other: TimeSpan): TimeSpan {
|
|
124
229
|
return new TimeSpan(this.milliseconds - other.milliseconds);
|
|
125
230
|
}
|
|
126
231
|
|
|
127
|
-
|
|
232
|
+
/**
|
|
233
|
+
* Adds this TimeSpan to a specified Date.
|
|
234
|
+
* @param {Date} date - The date to add to.
|
|
235
|
+
* @returns {Date} A new Date instance.
|
|
236
|
+
*/
|
|
128
237
|
addTo(date: Date): Date {
|
|
129
238
|
return new Date(date.getTime() + this.milliseconds);
|
|
130
239
|
}
|
|
131
240
|
|
|
132
|
-
|
|
241
|
+
/**
|
|
242
|
+
* Subtracts this TimeSpan from a specified Date.
|
|
243
|
+
* @param {Date} date - The date to subtract from.
|
|
244
|
+
* @returns {Date} A new Date instance.
|
|
245
|
+
*/
|
|
133
246
|
subtractFrom(date: Date): Date {
|
|
134
247
|
return new Date(date.getTime() - this.milliseconds);
|
|
135
248
|
}
|
|
136
249
|
|
|
137
|
-
|
|
250
|
+
/**
|
|
251
|
+
* Creates a TimeSpan from the difference between two dates.
|
|
252
|
+
* @param {Date} earlierDate - The earlier date.
|
|
253
|
+
* @param {Date} laterDate - The later date.
|
|
254
|
+
* @returns {TimeSpan} A new TimeSpan instance representing the difference.
|
|
255
|
+
*/
|
|
138
256
|
static fromDifference(earlierDate: Date, laterDate: Date): TimeSpan {
|
|
139
257
|
return new TimeSpan(laterDate.getTime() - earlierDate.getTime());
|
|
140
258
|
}
|
|
141
259
|
|
|
260
|
+
/**
|
|
261
|
+
* Formats the TimeSpan as a string.
|
|
262
|
+
* Supported tokens: hh, h, mm, m, ss, s.
|
|
263
|
+
* @param {string} format - The format string (default: 'hh:mm:ss').
|
|
264
|
+
* @returns {string} The formatted string.
|
|
265
|
+
*/
|
|
142
266
|
format(format: string = 'hh:mm:ss'): string {
|
|
143
267
|
const formatLower = format.toLowerCase();
|
|
144
268
|
const hasHours = formatLower.includes("h");
|
|
@@ -168,52 +292,107 @@ export default class TimeSpan {
|
|
|
168
292
|
.replace('s', seconds.toString());
|
|
169
293
|
}
|
|
170
294
|
|
|
295
|
+
/**
|
|
296
|
+
* Checks if this TimeSpan is equal to another.
|
|
297
|
+
* @param {TimeSpan} other - The other TimeSpan.
|
|
298
|
+
* @returns {boolean} True if equal.
|
|
299
|
+
*/
|
|
171
300
|
eq(other: TimeSpan): boolean {
|
|
172
301
|
return this.milliseconds === other.milliseconds;
|
|
173
302
|
}
|
|
174
303
|
|
|
304
|
+
/**
|
|
305
|
+
* Checks if this TimeSpan is less than or equal to another.
|
|
306
|
+
* @param {TimeSpan} other - The other TimeSpan.
|
|
307
|
+
* @returns {boolean} True if less than or equal.
|
|
308
|
+
*/
|
|
175
309
|
le(other: TimeSpan): boolean {
|
|
176
310
|
return this.milliseconds <= other.milliseconds;
|
|
177
311
|
}
|
|
178
312
|
|
|
313
|
+
/**
|
|
314
|
+
* Checks if this TimeSpan is less than another.
|
|
315
|
+
* @param {TimeSpan} other - The other TimeSpan.
|
|
316
|
+
* @returns {boolean} True if less than.
|
|
317
|
+
*/
|
|
179
318
|
lt(other: TimeSpan): boolean {
|
|
180
319
|
return this.milliseconds < other.milliseconds;
|
|
181
320
|
}
|
|
182
321
|
|
|
322
|
+
/**
|
|
323
|
+
* Checks if this TimeSpan is greater than or equal to another.
|
|
324
|
+
* @param {TimeSpan} other - The other TimeSpan.
|
|
325
|
+
* @returns {boolean} True if greater than or equal.
|
|
326
|
+
*/
|
|
183
327
|
ge(other: TimeSpan): boolean {
|
|
184
328
|
return this.milliseconds >= other.milliseconds;
|
|
185
329
|
}
|
|
186
330
|
|
|
331
|
+
/**
|
|
332
|
+
* Checks if this TimeSpan is greater than another.
|
|
333
|
+
* @param {TimeSpan} other - The other TimeSpan.
|
|
334
|
+
* @returns {boolean} True if greater than.
|
|
335
|
+
*/
|
|
187
336
|
gt(other: TimeSpan): boolean {
|
|
188
337
|
return this.milliseconds > other.milliseconds;
|
|
189
338
|
}
|
|
190
339
|
|
|
340
|
+
/**
|
|
341
|
+
* Multiplies the TimeSpan by a number.
|
|
342
|
+
* @param {number} number - The multiplier.
|
|
343
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
344
|
+
*/
|
|
191
345
|
multiply(number: number): TimeSpan {
|
|
192
346
|
return new TimeSpan(this.milliseconds * number);
|
|
193
347
|
}
|
|
194
348
|
|
|
349
|
+
/**
|
|
350
|
+
* Divides the TimeSpan by a number.
|
|
351
|
+
* @param {number} number - The divisor.
|
|
352
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
353
|
+
*/
|
|
195
354
|
divide(number: number): TimeSpan {
|
|
196
355
|
return new TimeSpan(this.milliseconds / number);
|
|
197
356
|
}
|
|
198
357
|
|
|
358
|
+
/**
|
|
359
|
+
* Returns the absolute value of the TimeSpan.
|
|
360
|
+
* @returns {TimeSpan} A new TimeSpan instance.
|
|
361
|
+
*/
|
|
199
362
|
abs(): TimeSpan {
|
|
200
363
|
return new TimeSpan(Math.abs(this.milliseconds));
|
|
201
364
|
}
|
|
202
365
|
|
|
366
|
+
/**
|
|
367
|
+
* Infinite duration.
|
|
368
|
+
*/
|
|
203
369
|
static readonly INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
|
|
204
370
|
|
|
371
|
+
/**
|
|
372
|
+
* Negative infinite duration.
|
|
373
|
+
*/
|
|
205
374
|
static readonly NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
|
|
206
375
|
|
|
376
|
+
/**
|
|
377
|
+
* Checks if the TimeSpan is infinite.
|
|
378
|
+
* @returns {boolean} True if infinite.
|
|
379
|
+
*/
|
|
207
380
|
isInfinite() {
|
|
208
381
|
return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY
|
|
209
382
|
}
|
|
210
383
|
|
|
211
|
-
|
|
384
|
+
/**
|
|
385
|
+
* Checks if the TimeSpan is positive infinite.
|
|
386
|
+
* @returns {boolean} True if positive infinite.
|
|
387
|
+
*/
|
|
212
388
|
isPositiveInfinite(): boolean {
|
|
213
389
|
return this.milliseconds === Number.POSITIVE_INFINITY;
|
|
214
390
|
}
|
|
215
391
|
|
|
216
|
-
|
|
392
|
+
/**
|
|
393
|
+
* Checks if the TimeSpan is negative infinite.
|
|
394
|
+
* @returns {boolean} True if negative infinite.
|
|
395
|
+
*/
|
|
217
396
|
isNegativeInfinite(): boolean {
|
|
218
397
|
return this.milliseconds === Number.NEGATIVE_INFINITY;
|
|
219
398
|
}
|
package/dist/cjs/from.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"from.js","sourceRoot":"","sources":["../../src/from.ts"],"names":[],"mappings":"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"}
|