1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | Object.defineProperty(exports, "__esModule", { value: true });
|
19 | exports.deadlineToString = exports.getRelativeTimeout = exports.getDeadlineTimeoutString = exports.minDeadline = void 0;
|
20 | function minDeadline(...deadlineList) {
|
21 | let minValue = Infinity;
|
22 | for (const deadline of deadlineList) {
|
23 | const deadlineMsecs = deadline instanceof Date ? deadline.getTime() : deadline;
|
24 | if (deadlineMsecs < minValue) {
|
25 | minValue = deadlineMsecs;
|
26 | }
|
27 | }
|
28 | return minValue;
|
29 | }
|
30 | exports.minDeadline = minDeadline;
|
31 | const units = [
|
32 | ['m', 1],
|
33 | ['S', 1000],
|
34 | ['M', 60 * 1000],
|
35 | ['H', 60 * 60 * 1000],
|
36 | ];
|
37 | function getDeadlineTimeoutString(deadline) {
|
38 | const now = new Date().getTime();
|
39 | if (deadline instanceof Date) {
|
40 | deadline = deadline.getTime();
|
41 | }
|
42 | const timeoutMs = Math.max(deadline - now, 0);
|
43 | for (const [unit, factor] of units) {
|
44 | const amount = timeoutMs / factor;
|
45 | if (amount < 1e8) {
|
46 | return String(Math.ceil(amount)) + unit;
|
47 | }
|
48 | }
|
49 | throw new Error('Deadline is too far in the future');
|
50 | }
|
51 | exports.getDeadlineTimeoutString = getDeadlineTimeoutString;
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 | const MAX_TIMEOUT_TIME = 2147483647;
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 | function getRelativeTimeout(deadline) {
|
69 | const deadlineMs = deadline instanceof Date ? deadline.getTime() : deadline;
|
70 | const now = new Date().getTime();
|
71 | const timeout = deadlineMs - now;
|
72 | if (timeout < 0) {
|
73 | return 0;
|
74 | }
|
75 | else if (timeout > MAX_TIMEOUT_TIME) {
|
76 | return Infinity;
|
77 | }
|
78 | else {
|
79 | return timeout;
|
80 | }
|
81 | }
|
82 | exports.getRelativeTimeout = getRelativeTimeout;
|
83 | function deadlineToString(deadline) {
|
84 | if (deadline instanceof Date) {
|
85 | return deadline.toISOString();
|
86 | }
|
87 | else {
|
88 | const dateDeadline = new Date(deadline);
|
89 | if (Number.isNaN(dateDeadline.getTime())) {
|
90 | return '' + deadline;
|
91 | }
|
92 | else {
|
93 | return dateDeadline.toISOString();
|
94 | }
|
95 | }
|
96 | }
|
97 | exports.deadlineToString = deadlineToString;
|
98 |
|
\ | No newline at end of file |