@matter/general 0.16.0-alpha.0-20250816-d22ad240d → 0.16.0-alpha.0-20250819-0a388db8b
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/codec/DnsCodec.d.ts +8 -6
- package/dist/cjs/codec/DnsCodec.d.ts.map +1 -1
- package/dist/cjs/codec/DnsCodec.js +10 -7
- package/dist/cjs/codec/DnsCodec.js.map +1 -1
- package/dist/cjs/crypto/Crypto.d.ts +32 -36
- package/dist/cjs/crypto/Crypto.d.ts.map +1 -1
- package/dist/cjs/environment/Environment.d.ts.map +1 -1
- package/dist/cjs/environment/Environment.js +2 -1
- package/dist/cjs/environment/Environment.js.map +1 -1
- package/dist/cjs/log/Diagnostic.d.ts +4 -6
- package/dist/cjs/log/Diagnostic.d.ts.map +1 -1
- package/dist/cjs/log/Diagnostic.js +6 -26
- package/dist/cjs/log/Diagnostic.js.map +1 -1
- package/dist/cjs/log/Logger.js +1 -1
- package/dist/cjs/log/Logger.js.map +1 -1
- package/dist/cjs/net/RetrySchedule.d.ts +10 -11
- package/dist/cjs/net/RetrySchedule.d.ts.map +1 -1
- package/dist/cjs/net/RetrySchedule.js +8 -7
- package/dist/cjs/net/RetrySchedule.js.map +1 -1
- package/dist/cjs/net/ServerAddress.d.ts +15 -4
- package/dist/cjs/net/ServerAddress.d.ts.map +1 -1
- package/dist/cjs/net/ServerAddress.js +33 -3
- package/dist/cjs/net/ServerAddress.js.map +2 -2
- package/dist/cjs/net/UdpMulticastServer.d.ts.map +1 -1
- package/dist/cjs/net/UdpMulticastServer.js +2 -1
- package/dist/cjs/net/UdpMulticastServer.js.map +1 -1
- package/dist/cjs/net/mock/MockRouter.d.ts +2 -1
- package/dist/cjs/net/mock/MockRouter.d.ts.map +1 -1
- package/dist/cjs/net/mock/MockRouter.js.map +1 -1
- package/dist/cjs/net/mock/MockUdpChannel.d.ts +2 -1
- package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -1
- package/dist/cjs/net/mock/MockUdpChannel.js.map +1 -1
- package/dist/cjs/net/mock/NetworkSimulator.d.ts +2 -1
- package/dist/cjs/net/mock/NetworkSimulator.d.ts.map +1 -1
- package/dist/cjs/net/mock/NetworkSimulator.js.map +1 -1
- package/dist/cjs/storage/Storage.d.ts +2 -1
- package/dist/cjs/storage/Storage.d.ts.map +1 -1
- package/dist/cjs/storage/Storage.js.map +1 -1
- package/dist/cjs/storage/StorageBackendMemory.d.ts +2 -1
- package/dist/cjs/storage/StorageBackendMemory.d.ts.map +1 -1
- package/dist/cjs/storage/StorageBackendMemory.js +1 -1
- package/dist/cjs/storage/StorageBackendMemory.js.map +1 -1
- package/dist/cjs/storage/StorageContext.d.ts +2 -1
- package/dist/cjs/storage/StorageContext.d.ts.map +1 -1
- package/dist/cjs/storage/StorageContext.js.map +1 -1
- package/dist/cjs/storage/StringifyTools.d.ts +2 -1
- package/dist/cjs/storage/StringifyTools.d.ts.map +1 -1
- package/dist/cjs/storage/StringifyTools.js +3 -0
- package/dist/cjs/storage/StringifyTools.js.map +1 -1
- package/dist/cjs/time/Duration.d.ts +47 -0
- package/dist/cjs/time/Duration.d.ts.map +1 -0
- package/dist/cjs/time/Duration.js +145 -0
- package/dist/cjs/time/Duration.js.map +6 -0
- package/dist/cjs/time/Time.d.ts +21 -19
- package/dist/cjs/time/Time.d.ts.map +1 -1
- package/dist/cjs/time/Time.js +44 -33
- package/dist/cjs/time/Time.js.map +1 -1
- package/dist/cjs/time/TimeUnit.d.ts +87 -0
- package/dist/cjs/time/TimeUnit.d.ts.map +1 -0
- package/dist/cjs/time/TimeUnit.js +88 -0
- package/dist/cjs/time/TimeUnit.js.map +6 -0
- package/dist/cjs/time/Timespan.d.ts +26 -0
- package/dist/cjs/time/Timespan.d.ts.map +1 -0
- package/dist/cjs/time/Timespan.js +52 -0
- package/dist/cjs/time/Timespan.js.map +6 -0
- package/dist/cjs/time/Timestamp.d.ts +47 -0
- package/dist/cjs/time/Timestamp.d.ts.map +1 -0
- package/dist/cjs/time/Timestamp.js +78 -0
- package/dist/cjs/time/Timestamp.js.map +6 -0
- package/dist/cjs/time/index.d.ts +4 -0
- package/dist/cjs/time/index.d.ts.map +1 -1
- package/dist/cjs/time/index.js +4 -0
- package/dist/cjs/time/index.js.map +1 -1
- package/dist/cjs/transaction/Status.d.ts +1 -1
- package/dist/cjs/transaction/Status.d.ts.map +1 -1
- package/dist/cjs/transaction/Status.js +2 -1
- package/dist/cjs/transaction/Status.js.map +1 -1
- package/dist/cjs/transaction/Tx.d.ts.map +1 -1
- package/dist/cjs/transaction/Tx.js +10 -8
- package/dist/cjs/transaction/Tx.js.map +1 -1
- package/dist/cjs/util/Cache.d.ts +5 -4
- package/dist/cjs/util/Cache.d.ts.map +1 -1
- package/dist/cjs/util/Cache.js +11 -11
- package/dist/cjs/util/Cache.js.map +1 -1
- package/dist/cjs/util/DataReadQueue.d.ts +2 -1
- package/dist/cjs/util/DataReadQueue.d.ts.map +1 -1
- package/dist/cjs/util/DataReadQueue.js +9 -3
- package/dist/cjs/util/DataReadQueue.js.map +1 -1
- package/dist/cjs/util/DeepEqual.d.ts +13 -1
- package/dist/cjs/util/DeepEqual.d.ts.map +1 -1
- package/dist/cjs/util/DeepEqual.js +24 -5
- package/dist/cjs/util/DeepEqual.js.map +2 -2
- package/dist/cjs/util/Observable.d.ts +4 -3
- package/dist/cjs/util/Observable.d.ts.map +1 -1
- package/dist/cjs/util/Observable.js +16 -15
- package/dist/cjs/util/Observable.js.map +1 -1
- package/dist/cjs/util/PromiseQueue.d.ts +2 -1
- package/dist/cjs/util/PromiseQueue.d.ts.map +1 -1
- package/dist/cjs/util/PromiseQueue.js +2 -1
- package/dist/cjs/util/PromiseQueue.js.map +1 -1
- package/dist/cjs/util/Promises.d.ts +3 -2
- package/dist/cjs/util/Promises.d.ts.map +1 -1
- package/dist/cjs/util/Promises.js +4 -4
- package/dist/cjs/util/Promises.js.map +1 -1
- package/dist/esm/codec/DnsCodec.d.ts +8 -6
- package/dist/esm/codec/DnsCodec.d.ts.map +1 -1
- package/dist/esm/codec/DnsCodec.js +10 -7
- package/dist/esm/codec/DnsCodec.js.map +1 -1
- package/dist/esm/crypto/Crypto.d.ts +32 -36
- package/dist/esm/crypto/Crypto.d.ts.map +1 -1
- package/dist/esm/environment/Environment.d.ts.map +1 -1
- package/dist/esm/environment/Environment.js +2 -1
- package/dist/esm/environment/Environment.js.map +1 -1
- package/dist/esm/log/Diagnostic.d.ts +4 -6
- package/dist/esm/log/Diagnostic.d.ts.map +1 -1
- package/dist/esm/log/Diagnostic.js +6 -26
- package/dist/esm/log/Diagnostic.js.map +1 -1
- package/dist/esm/log/Logger.js +1 -1
- package/dist/esm/log/Logger.js.map +1 -1
- package/dist/esm/net/RetrySchedule.d.ts +10 -11
- package/dist/esm/net/RetrySchedule.d.ts.map +1 -1
- package/dist/esm/net/RetrySchedule.js +8 -7
- package/dist/esm/net/RetrySchedule.js.map +1 -1
- package/dist/esm/net/ServerAddress.d.ts +15 -4
- package/dist/esm/net/ServerAddress.d.ts.map +1 -1
- package/dist/esm/net/ServerAddress.js +33 -3
- package/dist/esm/net/ServerAddress.js.map +2 -2
- package/dist/esm/net/UdpMulticastServer.d.ts.map +1 -1
- package/dist/esm/net/UdpMulticastServer.js +2 -1
- package/dist/esm/net/UdpMulticastServer.js.map +1 -1
- package/dist/esm/net/mock/MockRouter.d.ts +2 -1
- package/dist/esm/net/mock/MockRouter.d.ts.map +1 -1
- package/dist/esm/net/mock/MockRouter.js.map +1 -1
- package/dist/esm/net/mock/MockUdpChannel.d.ts +2 -1
- package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -1
- package/dist/esm/net/mock/MockUdpChannel.js.map +1 -1
- package/dist/esm/net/mock/NetworkSimulator.d.ts +2 -1
- package/dist/esm/net/mock/NetworkSimulator.d.ts.map +1 -1
- package/dist/esm/net/mock/NetworkSimulator.js.map +1 -1
- package/dist/esm/storage/Storage.d.ts +2 -1
- package/dist/esm/storage/Storage.d.ts.map +1 -1
- package/dist/esm/storage/Storage.js.map +1 -1
- package/dist/esm/storage/StorageBackendMemory.d.ts +2 -1
- package/dist/esm/storage/StorageBackendMemory.d.ts.map +1 -1
- package/dist/esm/storage/StorageBackendMemory.js +1 -1
- package/dist/esm/storage/StorageBackendMemory.js.map +1 -1
- package/dist/esm/storage/StorageContext.d.ts +2 -1
- package/dist/esm/storage/StorageContext.d.ts.map +1 -1
- package/dist/esm/storage/StorageContext.js.map +1 -1
- package/dist/esm/storage/StringifyTools.d.ts +2 -1
- package/dist/esm/storage/StringifyTools.d.ts.map +1 -1
- package/dist/esm/storage/StringifyTools.js +3 -0
- package/dist/esm/storage/StringifyTools.js.map +1 -1
- package/dist/esm/time/Duration.d.ts +47 -0
- package/dist/esm/time/Duration.d.ts.map +1 -0
- package/dist/esm/time/Duration.js +125 -0
- package/dist/esm/time/Duration.js.map +6 -0
- package/dist/esm/time/Time.d.ts +21 -19
- package/dist/esm/time/Time.d.ts.map +1 -1
- package/dist/esm/time/Time.js +44 -33
- package/dist/esm/time/Time.js.map +1 -1
- package/dist/esm/time/TimeUnit.d.ts +87 -0
- package/dist/esm/time/TimeUnit.d.ts.map +1 -0
- package/dist/esm/time/TimeUnit.js +68 -0
- package/dist/esm/time/TimeUnit.js.map +6 -0
- package/dist/esm/time/Timespan.d.ts +26 -0
- package/dist/esm/time/Timespan.d.ts.map +1 -0
- package/dist/esm/time/Timespan.js +32 -0
- package/dist/esm/time/Timespan.js.map +6 -0
- package/dist/esm/time/Timestamp.d.ts +47 -0
- package/dist/esm/time/Timestamp.d.ts.map +1 -0
- package/dist/esm/time/Timestamp.js +58 -0
- package/dist/esm/time/Timestamp.js.map +6 -0
- package/dist/esm/time/index.d.ts +4 -0
- package/dist/esm/time/index.d.ts.map +1 -1
- package/dist/esm/time/index.js +4 -0
- package/dist/esm/time/index.js.map +1 -1
- package/dist/esm/transaction/Status.d.ts +1 -1
- package/dist/esm/transaction/Status.d.ts.map +1 -1
- package/dist/esm/transaction/Status.js +2 -1
- package/dist/esm/transaction/Status.js.map +1 -1
- package/dist/esm/transaction/Tx.d.ts.map +1 -1
- package/dist/esm/transaction/Tx.js +10 -8
- package/dist/esm/transaction/Tx.js.map +1 -1
- package/dist/esm/util/Cache.d.ts +5 -4
- package/dist/esm/util/Cache.d.ts.map +1 -1
- package/dist/esm/util/Cache.js +11 -11
- package/dist/esm/util/Cache.js.map +1 -1
- package/dist/esm/util/DataReadQueue.d.ts +2 -1
- package/dist/esm/util/DataReadQueue.d.ts.map +1 -1
- package/dist/esm/util/DataReadQueue.js +9 -3
- package/dist/esm/util/DataReadQueue.js.map +1 -1
- package/dist/esm/util/DeepEqual.d.ts +13 -1
- package/dist/esm/util/DeepEqual.d.ts.map +1 -1
- package/dist/esm/util/DeepEqual.js +24 -5
- package/dist/esm/util/DeepEqual.js.map +2 -2
- package/dist/esm/util/Observable.d.ts +4 -3
- package/dist/esm/util/Observable.d.ts.map +1 -1
- package/dist/esm/util/Observable.js +16 -15
- package/dist/esm/util/Observable.js.map +1 -1
- package/dist/esm/util/PromiseQueue.d.ts +2 -1
- package/dist/esm/util/PromiseQueue.d.ts.map +1 -1
- package/dist/esm/util/PromiseQueue.js +2 -1
- package/dist/esm/util/PromiseQueue.js.map +1 -1
- package/dist/esm/util/Promises.d.ts +3 -2
- package/dist/esm/util/Promises.d.ts.map +1 -1
- package/dist/esm/util/Promises.js +4 -4
- package/dist/esm/util/Promises.js.map +1 -1
- package/package.json +3 -3
- package/src/codec/DnsCodec.ts +27 -8
- package/src/environment/Environment.ts +2 -1
- package/src/log/Diagnostic.ts +9 -37
- package/src/log/Logger.ts +1 -1
- package/src/net/RetrySchedule.ts +14 -14
- package/src/net/ServerAddress.ts +44 -5
- package/src/net/UdpMulticastServer.ts +2 -1
- package/src/net/mock/MockRouter.ts +2 -1
- package/src/net/mock/MockUdpChannel.ts +2 -1
- package/src/net/mock/NetworkSimulator.ts +2 -1
- package/src/storage/Storage.ts +2 -5
- package/src/storage/StorageBackendMemory.ts +2 -2
- package/src/storage/StorageContext.ts +2 -1
- package/src/storage/StringifyTools.ts +5 -0
- package/src/time/Duration.ts +181 -0
- package/src/time/Time.ts +50 -39
- package/src/time/TimeUnit.ts +159 -0
- package/src/time/Timespan.ts +52 -0
- package/src/time/Timestamp.ts +94 -0
- package/src/time/index.ts +4 -0
- package/src/transaction/Status.ts +2 -1
- package/src/transaction/Tx.ts +9 -7
- package/src/util/Cache.ts +11 -10
- package/src/util/DataReadQueue.ts +9 -3
- package/src/util/DeepEqual.ts +38 -13
- package/src/util/Observable.ts +19 -17
- package/src/util/PromiseQueue.ts +4 -2
- package/src/util/Promises.ts +6 -5
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var Duration_exports = {};
|
|
20
|
+
__export(Duration_exports, {
|
|
21
|
+
Duration: () => Duration,
|
|
22
|
+
DurationFormatError: () => DurationFormatError
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(Duration_exports);
|
|
25
|
+
var import_MatterError = require("#MatterError.js");
|
|
26
|
+
/**
|
|
27
|
+
* @license
|
|
28
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
29
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
30
|
+
*/
|
|
31
|
+
function Duration(source) {
|
|
32
|
+
if (typeof source === "string") {
|
|
33
|
+
return Duration.parse(source);
|
|
34
|
+
}
|
|
35
|
+
if (typeof source === "number") {
|
|
36
|
+
if (Number.isNaN(source)) {
|
|
37
|
+
throw new DurationFormatError(`A duration may not be NaN`);
|
|
38
|
+
}
|
|
39
|
+
return source;
|
|
40
|
+
}
|
|
41
|
+
throw new DurationFormatError(`Interval value is not a number (received ${typeof source})`);
|
|
42
|
+
}
|
|
43
|
+
class DurationFormatError extends import_MatterError.UnexpectedDataError {
|
|
44
|
+
}
|
|
45
|
+
((Duration2) => {
|
|
46
|
+
function max(a, b) {
|
|
47
|
+
if (b > a) {
|
|
48
|
+
return b;
|
|
49
|
+
}
|
|
50
|
+
return a;
|
|
51
|
+
}
|
|
52
|
+
Duration2.max = max;
|
|
53
|
+
function min(a, b) {
|
|
54
|
+
if (b < a) {
|
|
55
|
+
return b;
|
|
56
|
+
}
|
|
57
|
+
return a;
|
|
58
|
+
}
|
|
59
|
+
Duration2.min = min;
|
|
60
|
+
function format(duration) {
|
|
61
|
+
let ms = duration;
|
|
62
|
+
if (typeof ms !== "number" || Number.isNaN(ms)) {
|
|
63
|
+
return "invalid";
|
|
64
|
+
}
|
|
65
|
+
switch (ms) {
|
|
66
|
+
case 0:
|
|
67
|
+
return "0";
|
|
68
|
+
case Infinity:
|
|
69
|
+
return "forever";
|
|
70
|
+
case -Infinity:
|
|
71
|
+
return "until now";
|
|
72
|
+
}
|
|
73
|
+
if (ms < 0) {
|
|
74
|
+
return `${toPrecision(ms * 1e3, 3)}\u03BCs`;
|
|
75
|
+
} else if (ms < 1e3) {
|
|
76
|
+
return `${toPrecision(ms, 3)}ms`;
|
|
77
|
+
} else if (ms < 6e4) {
|
|
78
|
+
return `${toPrecision(ms / 1e3, 3)}s`;
|
|
79
|
+
}
|
|
80
|
+
const parts = Array();
|
|
81
|
+
if (ms > 864e5) {
|
|
82
|
+
parts.push(`${Math.floor(ms / 864e5)}d`);
|
|
83
|
+
ms %= 864e5;
|
|
84
|
+
}
|
|
85
|
+
const hours = Math.floor(ms / 36e5);
|
|
86
|
+
if (hours) {
|
|
87
|
+
parts.push(`${hours}h`);
|
|
88
|
+
}
|
|
89
|
+
ms %= 36e5;
|
|
90
|
+
const minutes = Math.floor(ms / 6e4);
|
|
91
|
+
if (minutes) {
|
|
92
|
+
parts.push(`${minutes}m`);
|
|
93
|
+
}
|
|
94
|
+
ms %= 6e4;
|
|
95
|
+
const seconds = Math.floor(ms / 1e3);
|
|
96
|
+
if (seconds) {
|
|
97
|
+
parts.push(`${seconds}s`);
|
|
98
|
+
}
|
|
99
|
+
return parts.join(" ");
|
|
100
|
+
}
|
|
101
|
+
Duration2.format = format;
|
|
102
|
+
function parse(text) {
|
|
103
|
+
const parts = text.split(/\s+/).filter((part) => part !== "");
|
|
104
|
+
let interval = 0;
|
|
105
|
+
for (const part of parts) {
|
|
106
|
+
const suffix = text.match(/[a-zμ]+/i)?.[1];
|
|
107
|
+
if (suffix === void 0) {
|
|
108
|
+
throw new DurationFormatError(`Interval component "${part}" is missing an time suffix`);
|
|
109
|
+
}
|
|
110
|
+
const value = Number(text.slice(text.length - suffix.length));
|
|
111
|
+
if (Number.isNaN(value)) {
|
|
112
|
+
throw new DurationFormatError(`Interval component "${part}" contains no numeric component`);
|
|
113
|
+
}
|
|
114
|
+
switch (suffix.toLowerCase()) {
|
|
115
|
+
case "\u03BCs":
|
|
116
|
+
case "us":
|
|
117
|
+
interval += value / 1e3;
|
|
118
|
+
break;
|
|
119
|
+
case "ms":
|
|
120
|
+
interval += value;
|
|
121
|
+
break;
|
|
122
|
+
case "s":
|
|
123
|
+
interval += value * 1e3;
|
|
124
|
+
break;
|
|
125
|
+
case "m":
|
|
126
|
+
interval += value * 6e4;
|
|
127
|
+
break;
|
|
128
|
+
case "h":
|
|
129
|
+
interval += value * 36e5;
|
|
130
|
+
break;
|
|
131
|
+
case "d":
|
|
132
|
+
interval += value * 864e5;
|
|
133
|
+
break;
|
|
134
|
+
default:
|
|
135
|
+
throw new DurationFormatError(`Interval component ${part} contains an unsupported unit suffix`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return interval;
|
|
139
|
+
}
|
|
140
|
+
Duration2.parse = parse;
|
|
141
|
+
})(Duration || (Duration = {}));
|
|
142
|
+
function toPrecision(number, precision) {
|
|
143
|
+
return number.toPrecision(precision).replace(/\.?0+/, "");
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=Duration.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/time/Duration.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["Duration"]
|
|
6
|
+
}
|
package/dist/cjs/time/Time.d.ts
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { CancelablePromise } from "#util/Cancelable.js";
|
|
7
7
|
import { Diagnostic } from "../log/Diagnostic.js";
|
|
8
|
+
import { Duration } from "./Duration.js";
|
|
9
|
+
import type { Timestamp } from "./Timestamp.js";
|
|
8
10
|
/**
|
|
9
11
|
* Timer and date/time management interface.
|
|
10
12
|
*
|
|
@@ -12,32 +14,32 @@ import { Diagnostic } from "../log/Diagnostic.js";
|
|
|
12
14
|
* environment.
|
|
13
15
|
*/
|
|
14
16
|
export declare class Time {
|
|
15
|
-
static
|
|
17
|
+
static default: Time;
|
|
16
18
|
static startup: {
|
|
17
|
-
systemMs:
|
|
18
|
-
processMs:
|
|
19
|
+
systemMs: Timestamp;
|
|
20
|
+
processMs: Timestamp;
|
|
19
21
|
};
|
|
20
|
-
now(): Date;
|
|
21
|
-
static
|
|
22
|
-
nowMs(): number;
|
|
23
|
-
static
|
|
24
|
-
nowUs():
|
|
25
|
-
static
|
|
22
|
+
get now(): Date;
|
|
23
|
+
static get now(): Date;
|
|
24
|
+
get nowMs(): number;
|
|
25
|
+
static get nowMs(): Timestamp;
|
|
26
|
+
get nowUs(): Timestamp;
|
|
27
|
+
static get nowUs(): Timestamp;
|
|
26
28
|
/**
|
|
27
29
|
* Create a timer that will call callback after durationMs has passed.
|
|
28
30
|
*/
|
|
29
|
-
getTimer(name: string,
|
|
30
|
-
static readonly getTimer: (name: string,
|
|
31
|
+
getTimer(name: string, duration: Duration, callback: Timer.Callback): Timer;
|
|
32
|
+
static readonly getTimer: (name: string, duration: Duration, callback: Timer.Callback) => Timer;
|
|
31
33
|
/**
|
|
32
34
|
* Create a timer that will periodically call callback at intervalMs intervals.
|
|
33
35
|
*/
|
|
34
|
-
getPeriodicTimer(name: string,
|
|
35
|
-
static readonly getPeriodicTimer: (name: string,
|
|
36
|
+
getPeriodicTimer(name: string, duration: Duration, callback: Timer.Callback): Timer;
|
|
37
|
+
static readonly getPeriodicTimer: (name: string, duration: Duration, callback: Timer.Callback) => Timer;
|
|
36
38
|
/**
|
|
37
39
|
* Create a promise that resolves after a specific interval or when canceled, whichever comes first.
|
|
38
40
|
*/
|
|
39
|
-
sleep(name: string,
|
|
40
|
-
static sleep(name: string,
|
|
41
|
+
sleep(name: string, duration: Duration): CancelablePromise;
|
|
42
|
+
static sleep(name: string, duration: Duration): CancelablePromise<void>;
|
|
41
43
|
static register(timer: Timer): void;
|
|
42
44
|
static unregister(timer: Timer): void;
|
|
43
45
|
static get timers(): Set<Timer>;
|
|
@@ -50,7 +52,7 @@ export interface Timer {
|
|
|
50
52
|
/** System ID (diagnostics) */
|
|
51
53
|
systemId: unknown;
|
|
52
54
|
/** Interval (diagnostics) */
|
|
53
|
-
|
|
55
|
+
interval: Duration;
|
|
54
56
|
/** Is the timer periodic? (diagnostics) */
|
|
55
57
|
isPeriodic: boolean;
|
|
56
58
|
/** Amount of time interval has been active (diagnostics) */
|
|
@@ -72,14 +74,14 @@ export declare class StandardTimer implements Timer {
|
|
|
72
74
|
readonly isPeriodic: boolean;
|
|
73
75
|
isRunning: boolean;
|
|
74
76
|
get systemId(): number;
|
|
75
|
-
constructor(name: string,
|
|
77
|
+
constructor(name: string, duration: Duration, callback: Timer.Callback, isPeriodic: boolean);
|
|
76
78
|
/**
|
|
77
79
|
* The timer's interval.
|
|
78
80
|
*
|
|
79
81
|
* You can change this value but changes have no effect until the timer restarts.
|
|
80
82
|
*/
|
|
81
|
-
set
|
|
82
|
-
get
|
|
83
|
+
set interval(interval: Duration);
|
|
84
|
+
get interval(): Duration;
|
|
83
85
|
get utility(): boolean;
|
|
84
86
|
set utility(utility: boolean);
|
|
85
87
|
start(): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Time.d.ts","sourceRoot":"","sources":["../../../src/time/Time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Time.d.ts","sourceRoot":"","sources":["../../../src/time/Time.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/time/Time.js
CHANGED
|
@@ -27,6 +27,7 @@ var import_Cancelable = require("#util/Cancelable.js");
|
|
|
27
27
|
var import_MatterError = require("../MatterError.js");
|
|
28
28
|
var import_Diagnostic = require("../log/Diagnostic.js");
|
|
29
29
|
var import_DiagnosticSource = require("../log/DiagnosticSource.js");
|
|
30
|
+
var import_TimeUnit = require("./TimeUnit.js");
|
|
30
31
|
/**
|
|
31
32
|
* @license
|
|
32
33
|
* Copyright 2022-2025 Matter.js Authors
|
|
@@ -34,47 +35,53 @@ var import_DiagnosticSource = require("../log/DiagnosticSource.js");
|
|
|
34
35
|
*/
|
|
35
36
|
const registry = /* @__PURE__ */ new Set();
|
|
36
37
|
class Time {
|
|
37
|
-
static
|
|
38
|
+
static default;
|
|
38
39
|
static startup = {
|
|
39
40
|
systemMs: 0,
|
|
40
41
|
processMs: 0
|
|
41
42
|
};
|
|
42
|
-
now() {
|
|
43
|
+
get now() {
|
|
43
44
|
return /* @__PURE__ */ new Date();
|
|
44
45
|
}
|
|
45
|
-
static now
|
|
46
|
-
|
|
46
|
+
static get now() {
|
|
47
|
+
return Time.default.now;
|
|
48
|
+
}
|
|
49
|
+
get nowMs() {
|
|
47
50
|
return Date.now();
|
|
48
51
|
}
|
|
49
|
-
static nowMs
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
static get nowMs() {
|
|
53
|
+
return Time.default.nowMs;
|
|
54
|
+
}
|
|
55
|
+
get nowUs() {
|
|
56
|
+
return Math.floor(performance.now() + performance.timeOrigin);
|
|
57
|
+
}
|
|
58
|
+
static get nowUs() {
|
|
59
|
+
return Time.default.nowUs;
|
|
52
60
|
}
|
|
53
|
-
static nowUs = () => Time.get().nowUs();
|
|
54
61
|
/**
|
|
55
62
|
* Create a timer that will call callback after durationMs has passed.
|
|
56
63
|
*/
|
|
57
|
-
getTimer(name,
|
|
58
|
-
return new StandardTimer(name,
|
|
64
|
+
getTimer(name, duration, callback) {
|
|
65
|
+
return new StandardTimer(name, duration, callback, false);
|
|
59
66
|
}
|
|
60
|
-
static getTimer = (name,
|
|
67
|
+
static getTimer = (name, duration, callback) => Time.default.getTimer(name, duration, callback);
|
|
61
68
|
/**
|
|
62
69
|
* Create a timer that will periodically call callback at intervalMs intervals.
|
|
63
70
|
*/
|
|
64
|
-
getPeriodicTimer(name,
|
|
65
|
-
return new StandardTimer(name,
|
|
71
|
+
getPeriodicTimer(name, duration, callback) {
|
|
72
|
+
return new StandardTimer(name, duration, callback, true);
|
|
66
73
|
}
|
|
67
|
-
static getPeriodicTimer = (name,
|
|
74
|
+
static getPeriodicTimer = (name, duration, callback) => Time.default.getPeriodicTimer(name, duration, callback);
|
|
68
75
|
/**
|
|
69
76
|
* Create a promise that resolves after a specific interval or when canceled, whichever comes first.
|
|
70
77
|
*/
|
|
71
|
-
sleep(name,
|
|
78
|
+
sleep(name, duration) {
|
|
72
79
|
let timer;
|
|
73
80
|
let resolver;
|
|
74
81
|
return new import_Cancelable.CancelablePromise(
|
|
75
82
|
(resolve) => {
|
|
76
83
|
resolver = resolve;
|
|
77
|
-
timer = Time.getTimer(name,
|
|
84
|
+
timer = Time.getTimer(name, duration, resolve);
|
|
78
85
|
timer.start();
|
|
79
86
|
},
|
|
80
87
|
() => {
|
|
@@ -83,8 +90,8 @@ class Time {
|
|
|
83
90
|
}
|
|
84
91
|
);
|
|
85
92
|
}
|
|
86
|
-
static sleep(name,
|
|
87
|
-
return Time.
|
|
93
|
+
static sleep(name, duration) {
|
|
94
|
+
return Time.default.sleep(name, duration);
|
|
88
95
|
}
|
|
89
96
|
static register(timer) {
|
|
90
97
|
registry.add(timer);
|
|
@@ -98,18 +105,23 @@ class Time {
|
|
|
98
105
|
}
|
|
99
106
|
}
|
|
100
107
|
if (!performance || typeof performance.now !== "function" || typeof performance.timeOrigin !== "number") {
|
|
101
|
-
Time.prototype.nowUs
|
|
108
|
+
Object.defineProperty(Time.prototype.nowUs, "nowUs", {
|
|
109
|
+
get() {
|
|
110
|
+
return Time.nowMs;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
102
113
|
}
|
|
103
114
|
class StandardTimer {
|
|
104
|
-
constructor(name,
|
|
115
|
+
constructor(name, duration, callback, isPeriodic) {
|
|
105
116
|
this.name = name;
|
|
106
117
|
this.callback = callback;
|
|
107
118
|
this.isPeriodic = isPeriodic;
|
|
108
|
-
this.
|
|
119
|
+
this.interval = duration;
|
|
109
120
|
}
|
|
110
121
|
#timerId;
|
|
111
122
|
#utility = false;
|
|
112
|
-
#
|
|
123
|
+
#interval = import_TimeUnit.Instant;
|
|
124
|
+
// Real value installed in constructor
|
|
113
125
|
isRunning = false;
|
|
114
126
|
get systemId() {
|
|
115
127
|
return Number(this.#timerId);
|
|
@@ -119,16 +131,16 @@ class StandardTimer {
|
|
|
119
131
|
*
|
|
120
132
|
* You can change this value but changes have no effect until the timer restarts.
|
|
121
133
|
*/
|
|
122
|
-
set
|
|
123
|
-
if (
|
|
134
|
+
set interval(interval) {
|
|
135
|
+
if (interval < 0 || interval > 2147483647) {
|
|
124
136
|
throw new import_MatterError.ImplementationError(
|
|
125
|
-
`Invalid intervalMs: ${
|
|
137
|
+
`Invalid intervalMs: ${interval}. The value must be between 0 and 32-bit maximum value (2147483647)`
|
|
126
138
|
);
|
|
127
139
|
}
|
|
128
|
-
this.#
|
|
140
|
+
this.#interval = interval;
|
|
129
141
|
}
|
|
130
|
-
get
|
|
131
|
-
return this.#
|
|
142
|
+
get interval() {
|
|
143
|
+
return this.#interval;
|
|
132
144
|
}
|
|
133
145
|
get utility() {
|
|
134
146
|
return this.#utility;
|
|
@@ -157,7 +169,7 @@ class StandardTimer {
|
|
|
157
169
|
this.isRunning = false;
|
|
158
170
|
}
|
|
159
171
|
this.callback();
|
|
160
|
-
}, this.
|
|
172
|
+
}, this.interval);
|
|
161
173
|
return this;
|
|
162
174
|
}
|
|
163
175
|
stop() {
|
|
@@ -174,7 +186,7 @@ import_DiagnosticSource.DiagnosticSource.add({
|
|
|
174
186
|
timer.name,
|
|
175
187
|
import_Diagnostic.Diagnostic.dict({
|
|
176
188
|
periodic: timer.isPeriodic,
|
|
177
|
-
interval:
|
|
189
|
+
interval: timer.interval,
|
|
178
190
|
system: timer.systemId,
|
|
179
191
|
elapsed: timer.elapsed
|
|
180
192
|
})
|
|
@@ -183,9 +195,8 @@ import_DiagnosticSource.DiagnosticSource.add({
|
|
|
183
195
|
}
|
|
184
196
|
});
|
|
185
197
|
import_Boot.Boot.init(() => {
|
|
186
|
-
|
|
187
|
-
Time.startup.systemMs = Time.startup.processMs =
|
|
188
|
-
Time.get = () => time;
|
|
198
|
+
Time.default = new Time();
|
|
199
|
+
Time.startup.systemMs = Time.startup.processMs = Time.nowMs;
|
|
189
200
|
if (typeof MatterHooks !== "undefined") {
|
|
190
201
|
MatterHooks?.timeSetup?.(Time);
|
|
191
202
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/time/Time.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,kBAAqB;AACrB,wBAAkC;AAClC,yBAAoC;AACpC,wBAA2B;AAC3B,8BAAiC;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Duration } from "./Duration.js";
|
|
7
|
+
/**
|
|
8
|
+
* Details of a specific unit of time.
|
|
9
|
+
*/
|
|
10
|
+
export interface TimeUnit {
|
|
11
|
+
(scale: number | bigint): Duration;
|
|
12
|
+
(scale: undefined | number | bigint): undefined | Duration;
|
|
13
|
+
/**
|
|
14
|
+
* Long name of the unit.
|
|
15
|
+
*/
|
|
16
|
+
readonly kind: TimeUnit.Kind;
|
|
17
|
+
/**
|
|
18
|
+
* Abbreviated name of the unit.
|
|
19
|
+
*/
|
|
20
|
+
readonly abbrev: string;
|
|
21
|
+
/**
|
|
22
|
+
* An interval representing a single unit.
|
|
23
|
+
*/
|
|
24
|
+
readonly one: Duration;
|
|
25
|
+
/**
|
|
26
|
+
* Convert an interval to an integer of this unit.
|
|
27
|
+
*
|
|
28
|
+
* Produces an even integer result. Use {@link fractionalOf} to retain any fractional component.
|
|
29
|
+
*/
|
|
30
|
+
of<T extends Duration | undefined>(interval: T): T extends undefined ? number | undefined : number;
|
|
31
|
+
/**
|
|
32
|
+
* Convert an interval to this unit, retaining fractional component.
|
|
33
|
+
*/
|
|
34
|
+
fractionalOf<T extends Duration | undefined>(interval: T): T extends undefined ? number | undefined : number;
|
|
35
|
+
/**
|
|
36
|
+
* Compute the ceiling of an interval in this unit.
|
|
37
|
+
*/
|
|
38
|
+
ceil(duration: Duration): Duration;
|
|
39
|
+
/**
|
|
40
|
+
* Compute the floor of an interval in this unit.
|
|
41
|
+
*/
|
|
42
|
+
floor(duration: Duration): Duration;
|
|
43
|
+
/**
|
|
44
|
+
* Round an interval to this unit.
|
|
45
|
+
*/
|
|
46
|
+
round(duration: Duration): Duration;
|
|
47
|
+
length: never;
|
|
48
|
+
}
|
|
49
|
+
export declare namespace TimeUnit {
|
|
50
|
+
/**
|
|
51
|
+
* Standard time units.
|
|
52
|
+
*/
|
|
53
|
+
type Kind = "microsecond" | "millisecond" | "second" | "minute" | "hour" | "day";
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Implement a {@link TimeUnit}.
|
|
57
|
+
*/
|
|
58
|
+
export declare function TimeUnit<T = {}>(kind: TimeUnit.Kind, abbrev: string, one: number, props?: T): TimeUnit & T;
|
|
59
|
+
/**
|
|
60
|
+
* Create an interval in microseconds.
|
|
61
|
+
*/
|
|
62
|
+
export declare const Microseconds: TimeUnit;
|
|
63
|
+
/**
|
|
64
|
+
* Create an interval in milliseconds.
|
|
65
|
+
*/
|
|
66
|
+
export declare const Millis: TimeUnit;
|
|
67
|
+
/**
|
|
68
|
+
* Create an interval in seconds.
|
|
69
|
+
*/
|
|
70
|
+
export declare const Seconds: TimeUnit;
|
|
71
|
+
/**
|
|
72
|
+
* Create an interval in minutes.
|
|
73
|
+
*/
|
|
74
|
+
export declare const Minutes: TimeUnit;
|
|
75
|
+
/**
|
|
76
|
+
* Create an interval in hours.
|
|
77
|
+
*/
|
|
78
|
+
export declare const Hours: TimeUnit;
|
|
79
|
+
/**
|
|
80
|
+
* Create an interval in days.
|
|
81
|
+
*/
|
|
82
|
+
export declare const Days: TimeUnit;
|
|
83
|
+
/**
|
|
84
|
+
* A zero-length interval.
|
|
85
|
+
*/
|
|
86
|
+
export declare const Instant: Duration;
|
|
87
|
+
//# sourceMappingURL=TimeUnit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeUnit.d.ts","sourceRoot":"","sources":["../../../src/time/TimeUnit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACnC,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IAEvB;;;;OAIG;IACH,EAAE,CAAC,CAAC,SAAS,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,SAAS,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAEnG;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,SAAS,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAE7G;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAEnC;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAEpC;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAEpC,MAAM,EAAE,KAAK,CAAC;CACjB;AAED,yBAAiB,QAAQ,CAAC;IACtB;;OAEG;IACH,KAAY,IAAI,GAAG,aAAa,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;CAC3F;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,GAAS,CAAC,GAAG,QAAQ,GAAG,CAAC,CA6BhH;AA0BD;;GAEG;AACH,eAAO,MAAM,YAAY,UAAuC,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,MAAM,UAAmC,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,OAAO,UAAiC,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,OAAO,UAAkC,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,KAAK,UAAmC,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,IAAI,UAAmC,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,OAAO,UAAY,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var TimeUnit_exports = {};
|
|
20
|
+
__export(TimeUnit_exports, {
|
|
21
|
+
Days: () => Days,
|
|
22
|
+
Hours: () => Hours,
|
|
23
|
+
Instant: () => Instant,
|
|
24
|
+
Microseconds: () => Microseconds,
|
|
25
|
+
Millis: () => Millis,
|
|
26
|
+
Minutes: () => Minutes,
|
|
27
|
+
Seconds: () => Seconds,
|
|
28
|
+
TimeUnit: () => TimeUnit
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(TimeUnit_exports);
|
|
31
|
+
/**
|
|
32
|
+
* @license
|
|
33
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
34
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
35
|
+
*/
|
|
36
|
+
function TimeUnit(kind, abbrev, one, props = {}) {
|
|
37
|
+
const unit = {
|
|
38
|
+
[kind]: (scale) => {
|
|
39
|
+
if (scale === void 0) {
|
|
40
|
+
return void 0;
|
|
41
|
+
}
|
|
42
|
+
if (typeof scale === "bigint") {
|
|
43
|
+
scale = Number(scale);
|
|
44
|
+
}
|
|
45
|
+
return scale * one;
|
|
46
|
+
}
|
|
47
|
+
}[kind];
|
|
48
|
+
Object.assign(unit, {
|
|
49
|
+
...props,
|
|
50
|
+
kind,
|
|
51
|
+
abbrev,
|
|
52
|
+
one,
|
|
53
|
+
of,
|
|
54
|
+
fractionalOf,
|
|
55
|
+
ceil,
|
|
56
|
+
floor,
|
|
57
|
+
round,
|
|
58
|
+
toString: kindOf,
|
|
59
|
+
[Symbol.for("nodejs.util.inspect.custom")]: kindOf
|
|
60
|
+
});
|
|
61
|
+
return unit;
|
|
62
|
+
}
|
|
63
|
+
function of(duration) {
|
|
64
|
+
return Math.floor(duration / this.one);
|
|
65
|
+
}
|
|
66
|
+
function fractionalOf(duration) {
|
|
67
|
+
return duration / this.one;
|
|
68
|
+
}
|
|
69
|
+
function ceil(duration) {
|
|
70
|
+
return Math.ceil(duration / this.one) * this.one;
|
|
71
|
+
}
|
|
72
|
+
function floor(duration) {
|
|
73
|
+
return Math.floor(duration / this.one) * this.one;
|
|
74
|
+
}
|
|
75
|
+
function round(duration) {
|
|
76
|
+
return Math.round(duration / this.one) * this.one;
|
|
77
|
+
}
|
|
78
|
+
function kindOf() {
|
|
79
|
+
return this.kind;
|
|
80
|
+
}
|
|
81
|
+
const Microseconds = TimeUnit("microsecond", "\u03BCs", 1e-3);
|
|
82
|
+
const Millis = TimeUnit("millisecond", "ms", 1);
|
|
83
|
+
const Seconds = TimeUnit("second", "s", 1e3);
|
|
84
|
+
const Minutes = TimeUnit("minute", "m", 6e4);
|
|
85
|
+
const Hours = TimeUnit("hour", "h", 36e5);
|
|
86
|
+
const Days = TimeUnit("day", "d", 864e5);
|
|
87
|
+
const Instant = Millis(0);
|
|
88
|
+
//# sourceMappingURL=TimeUnit.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/time/TimeUnit.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsEO,SAAS,SAAiB,MAAqB,QAAgB,KAAa,QAAQ,CAAC,GAAsB;AAC9G,QAAM,OAAO;AAAA,IACT,CAAC,IAAI,GAAG,CAAC,UAAuC;AAC5C,UAAI,UAAU,QAAW;AACrB,eAAO;AAAA,MACX;AACA,UAAI,OAAO,UAAU,UAAU;AAC3B,gBAAQ,OAAO,KAAK;AAAA,MACxB;AACA,aAAQ,QAAQ;AAAA,IACpB;AAAA,EACJ,EAAE,IAAI;AAGN,SAAO,OAAO,MAAM;AAAA,IAChB,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,CAAC,OAAO,IAAI,4BAA4B,CAAC,GAAG;AAAA,EAChD,CAAC;AAED,SAAO;AACX;AAEA,SAAS,GAAmB,UAAoB;AAC5C,SAAO,KAAK,MAAM,WAAW,KAAK,GAAG;AACzC;AAEA,SAAS,aAA6B,UAAoB;AACtD,SAAO,WAAW,KAAK;AAC3B;AAEA,SAAS,KAAqB,UAAoB;AAC9C,SAAO,KAAK,KAAK,WAAW,KAAK,GAAG,IAAI,KAAK;AACjD;AAEA,SAAS,MAAsB,UAAoB;AAC/C,SAAO,KAAK,MAAM,WAAW,KAAK,GAAG,IAAI,KAAK;AAClD;AAEA,SAAS,MAAsB,UAAoB;AAC/C,SAAO,KAAK,MAAM,WAAW,KAAK,GAAG,IAAI,KAAK;AAClD;AAEA,SAAS,SAAuB;AAC5B,SAAO,KAAK;AAChB;AAKO,MAAM,eAAe,SAAS,eAAe,WAAM,IAAK;AAKxD,MAAM,SAAS,SAAS,eAAe,MAAM,CAAC;AAK9C,MAAM,UAAU,SAAS,UAAU,KAAK,GAAK;AAK7C,MAAM,UAAU,SAAS,UAAU,KAAK,GAAM;AAK9C,MAAM,QAAQ,SAAS,QAAQ,KAAK,IAAS;AAK7C,MAAM,OAAO,SAAS,OAAO,KAAK,KAAU;AAK5C,MAAM,UAAU,OAAO,CAAC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Duration } from "./Duration.js";
|
|
7
|
+
import { Timestamp } from "./Timestamp.js";
|
|
8
|
+
/**
|
|
9
|
+
* A period between two {@link Timestamp}s.
|
|
10
|
+
*/
|
|
11
|
+
export interface Timespan {
|
|
12
|
+
start: Timestamp;
|
|
13
|
+
stop: Timestamp;
|
|
14
|
+
duration: Duration;
|
|
15
|
+
from(newStart: Timestamp.Definition): Timespan;
|
|
16
|
+
to(newStart: Timestamp.Definition): Timespan;
|
|
17
|
+
valueOf(): {
|
|
18
|
+
start: Timestamp;
|
|
19
|
+
stop: Timestamp;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a new timespan representing time between {@link start} and {@link stop}.
|
|
24
|
+
*/
|
|
25
|
+
export declare function Timespan(start: Timestamp.Definition, stop: Timestamp.Definition): Timespan;
|
|
26
|
+
//# sourceMappingURL=Timespan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Timespan.d.ts","sourceRoot":"","sources":["../../../src/time/Timespan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IAEnB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC;IAC/C,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC;IAC7C,OAAO,IAAI;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CACpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,GAItE,QAAQ,CACjB"}
|