@bitblit/ratchet-common 4.0.420-alpha → 4.0.425-alpha
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/lib/2d/index.d.ts +5 -0
- package/lib/2d/index.js +6 -0
- package/lib/2d/index.js.map +1 -0
- package/lib/2d/line-2d.d.ts +5 -0
- package/lib/2d/line-2d.js +2 -0
- package/lib/2d/line-2d.js.map +1 -0
- package/lib/2d/plane-2d.d.ts +6 -0
- package/lib/2d/plane-2d.js +2 -0
- package/lib/2d/plane-2d.js.map +1 -0
- package/lib/2d/point-2d.d.ts +4 -0
- package/lib/2d/point-2d.js +2 -0
- package/lib/2d/point-2d.js.map +1 -0
- package/lib/2d/poly-line-2d.d.ts +4 -0
- package/lib/2d/poly-line-2d.js +2 -0
- package/lib/2d/poly-line-2d.js.map +1 -0
- package/lib/2d/ratchet-2d.d.ts +37 -0
- package/lib/2d/ratchet-2d.js +246 -0
- package/lib/2d/ratchet-2d.js.map +1 -0
- package/lib/build/build-information.d.ts +8 -0
- package/lib/build/build-information.js +2 -0
- package/lib/build/build-information.js.map +1 -0
- package/lib/build/index.d.ts +2 -0
- package/lib/build/index.js +3 -0
- package/lib/build/index.js.map +1 -0
- package/lib/build/ratchet-common-info.d.ts +5 -0
- package/lib/build/ratchet-common-info.js +15 -0
- package/lib/build/ratchet-common-info.js.map +1 -0
- package/lib/histogram/histogram-entry.d.ts +4 -0
- package/lib/histogram/histogram-entry.js +2 -0
- package/lib/histogram/histogram-entry.js.map +1 -0
- package/lib/histogram/histogram.d.ts +12 -0
- package/lib/histogram/histogram.js +49 -0
- package/lib/histogram/histogram.js.map +1 -0
- package/lib/histogram/index.d.ts +2 -0
- package/lib/histogram/index.js +3 -0
- package/lib/histogram/index.js.map +1 -0
- package/lib/jwt/common-jwt-token.d.ts +6 -0
- package/lib/jwt/common-jwt-token.js +2 -0
- package/lib/jwt/common-jwt-token.js.map +1 -0
- package/lib/jwt/expired-jwt-handling.d.ts +5 -0
- package/lib/jwt/expired-jwt-handling.js +7 -0
- package/lib/jwt/expired-jwt-handling.js.map +1 -0
- package/lib/jwt/index.d.ts +6 -0
- package/lib/jwt/index.js +7 -0
- package/lib/jwt/index.js.map +1 -0
- package/lib/jwt/jwt-ratchet-config.d.ts +8 -0
- package/lib/jwt/jwt-ratchet-config.js +2 -0
- package/lib/jwt/jwt-ratchet-config.js.map +1 -0
- package/lib/jwt/jwt-ratchet-like.d.ts +15 -0
- package/lib/jwt/jwt-ratchet-like.js +2 -0
- package/lib/jwt/jwt-ratchet-like.js.map +1 -0
- package/lib/jwt/jwt-ratchet.d.ts +28 -0
- package/lib/jwt/jwt-ratchet.js +171 -0
- package/lib/jwt/jwt-ratchet.js.map +1 -0
- package/lib/jwt/jwt-token-base.d.ts +9 -0
- package/lib/jwt/jwt-token-base.js +2 -0
- package/lib/jwt/jwt-token-base.js.map +1 -0
- package/lib/lang/array-ratchet.d.ts +12 -0
- package/lib/lang/array-ratchet.js +84 -0
- package/lib/lang/array-ratchet.js.map +1 -0
- package/lib/lang/base64-ratchet.d.ts +20 -0
- package/lib/lang/base64-ratchet.js +209 -0
- package/lib/lang/base64-ratchet.js.map +1 -0
- package/lib/lang/boolean-ratchet.d.ts +7 -0
- package/lib/lang/boolean-ratchet.js +46 -0
- package/lib/lang/boolean-ratchet.js.map +1 -0
- package/lib/lang/composite-last-success-provider.d.ts +7 -0
- package/lib/lang/composite-last-success-provider.js +27 -0
- package/lib/lang/composite-last-success-provider.js.map +1 -0
- package/lib/lang/date-ratchet.d.ts +11 -0
- package/lib/lang/date-ratchet.js +30 -0
- package/lib/lang/date-ratchet.js.map +1 -0
- package/lib/lang/duration-ratchet.d.ts +7 -0
- package/lib/lang/duration-ratchet.js +43 -0
- package/lib/lang/duration-ratchet.js.map +1 -0
- package/lib/lang/enum-ratchet.d.ts +5 -0
- package/lib/lang/enum-ratchet.js +31 -0
- package/lib/lang/enum-ratchet.js.map +1 -0
- package/lib/lang/error-ratchet.d.ts +6 -0
- package/lib/lang/error-ratchet.js +45 -0
- package/lib/lang/error-ratchet.js.map +1 -0
- package/lib/lang/esm-ratchet.d.ts +7 -0
- package/lib/lang/esm-ratchet.js +65 -0
- package/lib/lang/esm-ratchet.js.map +1 -0
- package/lib/lang/expiring-object.d.ts +20 -0
- package/lib/lang/expiring-object.js +73 -0
- package/lib/lang/expiring-object.js.map +1 -0
- package/lib/lang/geolocation-ratchet.d.ts +40 -0
- package/lib/lang/geolocation-ratchet.js +264 -0
- package/lib/lang/geolocation-ratchet.js.map +1 -0
- package/lib/lang/global-ratchet.d.ts +6 -0
- package/lib/lang/global-ratchet.js +44 -0
- package/lib/lang/global-ratchet.js.map +1 -0
- package/lib/lang/index.d.ts +27 -0
- package/lib/lang/index.js +28 -0
- package/lib/lang/index.js.map +1 -0
- package/lib/lang/key-value.d.ts +4 -0
- package/lib/lang/key-value.js +5 -0
- package/lib/lang/key-value.js.map +1 -0
- package/lib/lang/last-success-provider.d.ts +3 -0
- package/lib/lang/last-success-provider.js +2 -0
- package/lib/lang/last-success-provider.js.map +1 -0
- package/lib/lang/map-ratchet.d.ts +15 -0
- package/lib/lang/map-ratchet.js +173 -0
- package/lib/lang/map-ratchet.js.map +1 -0
- package/lib/lang/no.d.ts +3 -0
- package/lib/lang/no.js +5 -0
- package/lib/lang/no.js.map +1 -0
- package/lib/lang/number-ratchet.d.ts +28 -0
- package/lib/lang/number-ratchet.js +186 -0
- package/lib/lang/number-ratchet.js.map +1 -0
- package/lib/lang/parsed-url.d.ts +10 -0
- package/lib/lang/parsed-url.js +2 -0
- package/lib/lang/parsed-url.js.map +1 -0
- package/lib/lang/promise-ratchet.d.ts +18 -0
- package/lib/lang/promise-ratchet.js +130 -0
- package/lib/lang/promise-ratchet.js.map +1 -0
- package/lib/lang/require-ratchet.d.ts +11 -0
- package/lib/lang/require-ratchet.js +56 -0
- package/lib/lang/require-ratchet.js.map +1 -0
- package/lib/lang/sort-ratchet.d.ts +7 -0
- package/lib/lang/sort-ratchet.js +33 -0
- package/lib/lang/sort-ratchet.js.map +1 -0
- package/lib/lang/stop-watch.d.ts +27 -0
- package/lib/lang/stop-watch.js +170 -0
- package/lib/lang/stop-watch.js.map +1 -0
- package/lib/lang/string-ratchet.d.ts +40 -0
- package/lib/lang/string-ratchet.js +280 -0
- package/lib/lang/string-ratchet.js.map +1 -0
- package/lib/lang/time-zone-ratchet.d.ts +20 -0
- package/lib/lang/time-zone-ratchet.js +81 -0
- package/lib/lang/time-zone-ratchet.js.map +1 -0
- package/lib/lang/timeout-token.d.ts +9 -0
- package/lib/lang/timeout-token.js +19 -0
- package/lib/lang/timeout-token.js.map +1 -0
- package/lib/lang/uint-8-array-ratchet.d.ts +5 -0
- package/lib/lang/uint-8-array-ratchet.js +31 -0
- package/lib/lang/uint-8-array-ratchet.js.map +1 -0
- package/lib/lang/web-stream-ratchet.d.ts +6 -0
- package/lib/lang/web-stream-ratchet.js +47 -0
- package/lib/lang/web-stream-ratchet.js.map +1 -0
- package/lib/logger/classic-single-line-log-message-formatter.d.ts +6 -0
- package/lib/logger/classic-single-line-log-message-formatter.js +14 -0
- package/lib/logger/classic-single-line-log-message-formatter.js.map +1 -0
- package/lib/logger/index.d.ts +17 -0
- package/lib/logger/index.js +18 -0
- package/lib/logger/index.js.map +1 -0
- package/lib/logger/log-message-builder.d.ts +14 -0
- package/lib/logger/log-message-builder.js +49 -0
- package/lib/logger/log-message-builder.js.map +1 -0
- package/lib/logger/log-message-format-type.d.ts +6 -0
- package/lib/logger/log-message-format-type.js +6 -0
- package/lib/logger/log-message-format-type.js.map +1 -0
- package/lib/logger/log-message-formatter.d.ts +5 -0
- package/lib/logger/log-message-formatter.js +2 -0
- package/lib/logger/log-message-formatter.js.map +1 -0
- package/lib/logger/log-message-processor.d.ts +5 -0
- package/lib/logger/log-message-processor.js +2 -0
- package/lib/logger/log-message-processor.js.map +1 -0
- package/lib/logger/log-message.d.ts +8 -0
- package/lib/logger/log-message.js +2 -0
- package/lib/logger/log-message.js.map +1 -0
- package/lib/logger/log-snapshot.d.ts +5 -0
- package/lib/logger/log-snapshot.js +2 -0
- package/lib/logger/log-snapshot.js.map +1 -0
- package/lib/logger/logger-instance.d.ts +49 -0
- package/lib/logger/logger-instance.js +216 -0
- package/lib/logger/logger-instance.js.map +1 -0
- package/lib/logger/logger-level-name.d.ts +9 -0
- package/lib/logger/logger-level-name.js +9 -0
- package/lib/logger/logger-level-name.js.map +1 -0
- package/lib/logger/logger-meta.d.ts +6 -0
- package/lib/logger/logger-meta.js +2 -0
- package/lib/logger/logger-meta.js.map +1 -0
- package/lib/logger/logger-options.d.ts +13 -0
- package/lib/logger/logger-options.js +2 -0
- package/lib/logger/logger-options.js.map +1 -0
- package/lib/logger/logger-output-function.d.ts +6 -0
- package/lib/logger/logger-output-function.js +6 -0
- package/lib/logger/logger-output-function.js.map +1 -0
- package/lib/logger/logger-ring-buffer.d.ts +18 -0
- package/lib/logger/logger-ring-buffer.js +72 -0
- package/lib/logger/logger-ring-buffer.js.map +1 -0
- package/lib/logger/logger-util.d.ts +8 -0
- package/lib/logger/logger-util.js +45 -0
- package/lib/logger/logger-util.js.map +1 -0
- package/lib/logger/logger.d.ts +46 -0
- package/lib/logger/logger.js +150 -0
- package/lib/logger/logger.js.map +1 -0
- package/lib/logger/none-log-message-formatter.d.ts +6 -0
- package/lib/logger/none-log-message-formatter.js +6 -0
- package/lib/logger/none-log-message-formatter.js.map +1 -0
- package/lib/logger/structured-json-log-message-formatter.d.ts +6 -0
- package/lib/logger/structured-json-log-message-formatter.js +20 -0
- package/lib/logger/structured-json-log-message-formatter.js.map +1 -0
- package/lib/mail/archive-email-result.d.ts +5 -0
- package/lib/mail/archive-email-result.js +2 -0
- package/lib/mail/archive-email-result.js.map +1 -0
- package/lib/mail/email-attachment.d.ts +5 -0
- package/lib/mail/email-attachment.js +2 -0
- package/lib/mail/email-attachment.js.map +1 -0
- package/lib/mail/index.d.ts +11 -0
- package/lib/mail/index.js +12 -0
- package/lib/mail/index.js.map +1 -0
- package/lib/mail/mail-sending-provider.d.ts +5 -0
- package/lib/mail/mail-sending-provider.js +2 -0
- package/lib/mail/mail-sending-provider.js.map +1 -0
- package/lib/mail/mailer-config.d.ts +11 -0
- package/lib/mail/mailer-config.js +2 -0
- package/lib/mail/mailer-config.js.map +1 -0
- package/lib/mail/mailer-like.d.ts +11 -0
- package/lib/mail/mailer-like.js +2 -0
- package/lib/mail/mailer-like.js.map +1 -0
- package/lib/mail/mailer-util.d.ts +7 -0
- package/lib/mail/mailer-util.js +49 -0
- package/lib/mail/mailer-util.js.map +1 -0
- package/lib/mail/mailer.d.ts +17 -0
- package/lib/mail/mailer.js +174 -0
- package/lib/mail/mailer.js.map +1 -0
- package/lib/mail/ready-to-send-email.d.ts +13 -0
- package/lib/mail/ready-to-send-email.js +2 -0
- package/lib/mail/ready-to-send-email.js.map +1 -0
- package/lib/mail/resolved-ready-to-send-email.d.ts +5 -0
- package/lib/mail/resolved-ready-to-send-email.js +2 -0
- package/lib/mail/resolved-ready-to-send-email.js.map +1 -0
- package/lib/mail/send-email-result.d.ts +12 -0
- package/lib/mail/send-email-result.js +2 -0
- package/lib/mail/send-email-result.js.map +1 -0
- package/lib/mail/test-mail-sending-provider.d.ts +8 -0
- package/lib/mail/test-mail-sending-provider.js +31 -0
- package/lib/mail/test-mail-sending-provider.js.map +1 -0
- package/lib/network/browser-local-ip-provider.d.ts +7 -0
- package/lib/network/browser-local-ip-provider.js +22 -0
- package/lib/network/browser-local-ip-provider.js.map +1 -0
- package/lib/network/fixed-local-ip-provider.d.ts +6 -0
- package/lib/network/fixed-local-ip-provider.js +10 -0
- package/lib/network/fixed-local-ip-provider.js.map +1 -0
- package/lib/network/index.d.ts +9 -0
- package/lib/network/index.js +10 -0
- package/lib/network/index.js.map +1 -0
- package/lib/network/local-ip-provider.d.ts +3 -0
- package/lib/network/local-ip-provider.js +2 -0
- package/lib/network/local-ip-provider.js.map +1 -0
- package/lib/network/network-ratchet.d.ts +10 -0
- package/lib/network/network-ratchet.js +102 -0
- package/lib/network/network-ratchet.js.map +1 -0
- package/lib/network/remote-file-sync/backup-result.d.ts +5 -0
- package/lib/network/remote-file-sync/backup-result.js +7 -0
- package/lib/network/remote-file-sync/backup-result.js.map +1 -0
- package/lib/network/remote-file-sync/file-transfer-result.d.ts +5 -0
- package/lib/network/remote-file-sync/file-transfer-result.js +7 -0
- package/lib/network/remote-file-sync/file-transfer-result.js.map +1 -0
- package/lib/network/remote-file-sync/remote-file-sync-like.d.ts +16 -0
- package/lib/network/remote-file-sync/remote-file-sync-like.js +2 -0
- package/lib/network/remote-file-sync/remote-file-sync-like.js.map +1 -0
- package/lib/network/remote-file-sync/remote-status-data.d.ts +6 -0
- package/lib/network/remote-file-sync/remote-status-data.js +2 -0
- package/lib/network/remote-file-sync/remote-status-data.js.map +1 -0
- package/lib/network/restful-api-http-error.d.ts +41 -0
- package/lib/network/restful-api-http-error.js +134 -0
- package/lib/network/restful-api-http-error.js.map +1 -0
- package/lib/template/index.d.ts +1 -0
- package/lib/template/index.js +2 -0
- package/lib/template/index.js.map +1 -0
- package/lib/template/ratchet-template-renderer.d.ts +4 -0
- package/lib/template/ratchet-template-renderer.js +2 -0
- package/lib/template/ratchet-template-renderer.js.map +1 -0
- package/lib/third-party/google/google-recaptcha-ratchet.d.ts +4 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js +27 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js.map +1 -0
- package/lib/third-party/index.d.ts +3 -0
- package/lib/third-party/index.js +4 -0
- package/lib/third-party/index.js.map +1 -0
- package/lib/third-party/twilio/twilio-ratchet.d.ts +11 -0
- package/lib/third-party/twilio/twilio-ratchet.js +70 -0
- package/lib/third-party/twilio/twilio-ratchet.js.map +1 -0
- package/lib/third-party/twilio/twilio-verify-ratchet.d.ts +23 -0
- package/lib/third-party/twilio/twilio-verify-ratchet.js +60 -0
- package/lib/third-party/twilio/twilio-verify-ratchet.js.map +1 -0
- package/lib/transform/built-in-transforms.d.ts +18 -0
- package/lib/transform/built-in-transforms.js +192 -0
- package/lib/transform/built-in-transforms.js.map +1 -0
- package/lib/transform/index.d.ts +3 -0
- package/lib/transform/index.js +4 -0
- package/lib/transform/index.js.map +1 -0
- package/lib/transform/transform-ratchet.d.ts +7 -0
- package/lib/transform/transform-ratchet.js +67 -0
- package/lib/transform/transform-ratchet.js.map +1 -0
- package/lib/transform/transform-rule.d.ts +3 -0
- package/lib/transform/transform-rule.js +2 -0
- package/lib/transform/transform-rule.js.map +1 -0
- package/lib/tx/index.d.ts +5 -0
- package/lib/tx/index.js +6 -0
- package/lib/tx/index.js.map +1 -0
- package/lib/tx/transaction-configuration.d.ts +7 -0
- package/lib/tx/transaction-configuration.js +2 -0
- package/lib/tx/transaction-configuration.js.map +1 -0
- package/lib/tx/transaction-final-state.d.ts +6 -0
- package/lib/tx/transaction-final-state.js +6 -0
- package/lib/tx/transaction-final-state.js.map +1 -0
- package/lib/tx/transaction-ratchet.d.ts +6 -0
- package/lib/tx/transaction-ratchet.js +77 -0
- package/lib/tx/transaction-ratchet.js.map +1 -0
- package/lib/tx/transaction-result.d.ts +9 -0
- package/lib/tx/transaction-result.js +2 -0
- package/lib/tx/transaction-result.js.map +1 -0
- package/lib/tx/transaction-step.d.ts +5 -0
- package/lib/tx/transaction-step.js +2 -0
- package/lib/tx/transaction-step.js.map +1 -0
- package/package.json +14 -12
- package/lib/index.mjs +0 -2
- package/lib/types.d.ts +0 -1024
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { DurationRatchet } from './duration-ratchet.js';
|
|
2
|
+
import { StringRatchet } from './string-ratchet.js';
|
|
3
|
+
import { RequireRatchet } from './require-ratchet.js';
|
|
4
|
+
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
5
|
+
import { Logger } from '../logger/logger.js';
|
|
6
|
+
export class StopWatch {
|
|
7
|
+
get createTime() {
|
|
8
|
+
return this._createTime;
|
|
9
|
+
}
|
|
10
|
+
starts = new Map();
|
|
11
|
+
ends = new Map();
|
|
12
|
+
_createTime = Date.now();
|
|
13
|
+
_label = StringRatchet.createRandomHexString(4);
|
|
14
|
+
_labelIncludedInOutput = false;
|
|
15
|
+
withLabel(val) {
|
|
16
|
+
this._label = StringRatchet.trimToNull(val);
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
withLabelIncludedInOutput(val) {
|
|
20
|
+
this._labelIncludedInOutput = val;
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
get label() {
|
|
24
|
+
return this._label;
|
|
25
|
+
}
|
|
26
|
+
set label(value) {
|
|
27
|
+
this._label = value;
|
|
28
|
+
}
|
|
29
|
+
get labelIncludedInOutput() {
|
|
30
|
+
return this._labelIncludedInOutput;
|
|
31
|
+
}
|
|
32
|
+
set labelIncludedInOutput(value) {
|
|
33
|
+
this._labelIncludedInOutput = value;
|
|
34
|
+
}
|
|
35
|
+
start(name) {
|
|
36
|
+
RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(name, 'name');
|
|
37
|
+
const now = Date.now();
|
|
38
|
+
this.starts.set(StringRatchet.trimToNull(name), now);
|
|
39
|
+
return now;
|
|
40
|
+
}
|
|
41
|
+
stop(name) {
|
|
42
|
+
RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(name, 'name');
|
|
43
|
+
const now = Date.now();
|
|
44
|
+
this.ends.set(StringRatchet.trimToNull(name), now);
|
|
45
|
+
return now;
|
|
46
|
+
}
|
|
47
|
+
reset(name) {
|
|
48
|
+
RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(name, 'name');
|
|
49
|
+
this.starts.delete(StringRatchet.trimToNull(name));
|
|
50
|
+
this.ends.delete(StringRatchet.trimToNull(name));
|
|
51
|
+
}
|
|
52
|
+
hasTimer(name) {
|
|
53
|
+
RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(name, 'name');
|
|
54
|
+
return this.starts.has(name);
|
|
55
|
+
}
|
|
56
|
+
log(name, shortForm, logLevel = LoggerLevelName.info) {
|
|
57
|
+
Logger.logByLevel(logLevel, this.dump(name, shortForm));
|
|
58
|
+
}
|
|
59
|
+
logExpected(pctComplete, name, shortForm, logLevel = LoggerLevelName.info) {
|
|
60
|
+
Logger.logByLevel(logLevel, this.dumpExpected(pctComplete, name, shortForm));
|
|
61
|
+
}
|
|
62
|
+
timerNames() {
|
|
63
|
+
return Array.from(this.starts.keys());
|
|
64
|
+
}
|
|
65
|
+
dumpAll(separator = ', ', shortForm) {
|
|
66
|
+
const outs = this.timerNames().map((s) => this.dump(s, shortForm));
|
|
67
|
+
let rval = 'Overall: ' + this.dump(null, shortForm);
|
|
68
|
+
if (outs.length > 0) {
|
|
69
|
+
rval += separator;
|
|
70
|
+
rval += outs.join(separator);
|
|
71
|
+
}
|
|
72
|
+
return rval;
|
|
73
|
+
}
|
|
74
|
+
dump(name, shortForm) {
|
|
75
|
+
let rval = this._labelIncludedInOutput ? this._label + ' ' : '';
|
|
76
|
+
const cleanName = StringRatchet.trimToNull(name);
|
|
77
|
+
if (cleanName && !this.hasTimer(cleanName)) {
|
|
78
|
+
rval += 'No such timer : ' + cleanName;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const start = name ? this.starts.get(cleanName) : this._createTime;
|
|
82
|
+
const end = name ? this.ends.get(cleanName) : Date.now();
|
|
83
|
+
rval += (cleanName || 'Default') + ' ';
|
|
84
|
+
if (!!start && !!end) {
|
|
85
|
+
rval += 'completed in ' + DurationRatchet.formatMsDuration(end - start, !shortForm);
|
|
86
|
+
}
|
|
87
|
+
else if (start) {
|
|
88
|
+
rval += 'running for ' + DurationRatchet.formatMsDuration(Date.now() - start, !shortForm);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return rval;
|
|
92
|
+
}
|
|
93
|
+
dumpExpected(pctComplete, name, shortForm) {
|
|
94
|
+
let rval = this._labelIncludedInOutput ? this._label + ' ' : '';
|
|
95
|
+
const cleanName = StringRatchet.trimToNull(name);
|
|
96
|
+
if (cleanName && !this.hasTimer(cleanName)) {
|
|
97
|
+
rval += 'No such timer : ' + cleanName;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
if (!pctComplete || pctComplete <= 0) {
|
|
101
|
+
rval += 'Cannot generate output for 0 percent complete';
|
|
102
|
+
}
|
|
103
|
+
else if (pctComplete > 1) {
|
|
104
|
+
rval += 'Cannot generate output for percent > 1';
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
rval += (cleanName || 'Default') + ' ';
|
|
108
|
+
const start = name ? this.starts.get(cleanName) : this._createTime;
|
|
109
|
+
const end = name ? this.ends.get(cleanName) : Date.now();
|
|
110
|
+
if (!!start && !!end) {
|
|
111
|
+
rval += 'completed in ' + DurationRatchet.formatMsDuration(end - start, !shortForm);
|
|
112
|
+
}
|
|
113
|
+
else if (start) {
|
|
114
|
+
const now = Date.now();
|
|
115
|
+
const elapsedMS = now - start;
|
|
116
|
+
const expectedTotalMS = elapsedMS / pctComplete;
|
|
117
|
+
const remainMS = expectedTotalMS - elapsedMS;
|
|
118
|
+
rval +=
|
|
119
|
+
'running for ' +
|
|
120
|
+
DurationRatchet.formatMsDuration(elapsedMS, !shortForm) +
|
|
121
|
+
' approx ' +
|
|
122
|
+
DurationRatchet.formatMsDuration(remainMS, !shortForm) +
|
|
123
|
+
' remaining';
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return rval;
|
|
128
|
+
}
|
|
129
|
+
expectedRemainingMS(pctComplete, name) {
|
|
130
|
+
let rval = null;
|
|
131
|
+
if (!pctComplete || pctComplete <= 0) {
|
|
132
|
+
}
|
|
133
|
+
else if (pctComplete > 1) {
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const cleanName = StringRatchet.trimToNull(name);
|
|
137
|
+
const start = name ? this.starts.get(cleanName) : this._createTime;
|
|
138
|
+
const end = name ? this.ends.get(cleanName) : Date.now();
|
|
139
|
+
if (!!start && !!end) {
|
|
140
|
+
rval = end - start;
|
|
141
|
+
}
|
|
142
|
+
else if (start) {
|
|
143
|
+
const now = Date.now();
|
|
144
|
+
const elapsedMS = now - start;
|
|
145
|
+
const expectedTotalMS = elapsedMS / pctComplete;
|
|
146
|
+
rval = expectedTotalMS - elapsedMS;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return rval;
|
|
150
|
+
}
|
|
151
|
+
elapsedMS(name) {
|
|
152
|
+
let rval = null;
|
|
153
|
+
const cleanName = StringRatchet.trimToNull(name);
|
|
154
|
+
if (cleanName && !this.hasTimer(cleanName)) {
|
|
155
|
+
rval = null;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
const start = name ? this.starts.get(cleanName) : this._createTime;
|
|
159
|
+
const end = name ? this.ends.get(cleanName) : Date.now();
|
|
160
|
+
if (!!start && !!end) {
|
|
161
|
+
rval = end - start;
|
|
162
|
+
}
|
|
163
|
+
else if (start) {
|
|
164
|
+
rval = Date.now() - start;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return rval;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=stop-watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop-watch.js","sourceRoot":"","sources":["../../src/lang/stop-watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare class StringRatchet {
|
|
2
|
+
static readonly RFC_3986_RESERVED: string[];
|
|
3
|
+
static readonly WHITESPACE: string;
|
|
4
|
+
static readonly DIGITS: string;
|
|
5
|
+
static readonly HEXITS: string;
|
|
6
|
+
static readonly UPPER_CASE_LATIN: string;
|
|
7
|
+
static readonly LOWER_CASE_LATIN: string;
|
|
8
|
+
static readonly CASE_INSENSITIVE_LATIN: string;
|
|
9
|
+
static stringIsInGivenAlphabet(input: string, alphabet: string): boolean;
|
|
10
|
+
static stringToUint8Array(val: string): Uint8Array;
|
|
11
|
+
static uint8ArrayToString(val: Uint8Array): string;
|
|
12
|
+
static attemptJsonParse(val: string): any;
|
|
13
|
+
static canParseAsJson(val: string): boolean;
|
|
14
|
+
static allUnique(input: string): boolean;
|
|
15
|
+
static allPermutationsOfLength(len: number, alphabet: string): string[];
|
|
16
|
+
static breakIntoBlocks(input: string, blockSize: number, separator: string): string;
|
|
17
|
+
static createShortUid(blockSize?: number, uniquesPerSecond?: number, radix?: number): string;
|
|
18
|
+
static createType4Guid(): string;
|
|
19
|
+
static createRandomHexString(len?: number): string;
|
|
20
|
+
static canonicalize(value: string): string;
|
|
21
|
+
static formatBytes(bytes: number, decimals?: number): string;
|
|
22
|
+
static safeString(input: any): string;
|
|
23
|
+
static stringContainsOnlyWhitespace(input: string): boolean;
|
|
24
|
+
static stringContainsOnlyNumbers(input: string): boolean;
|
|
25
|
+
static stringContainsOnlyAlphanumeric(input: string): boolean;
|
|
26
|
+
static stringContainsOnlyHex(input: string): boolean;
|
|
27
|
+
static stringContainsOnly(inVal: string, validCharsIn: string): boolean;
|
|
28
|
+
static obscure(input: string, prefixLength?: number, suffixLength?: number): string;
|
|
29
|
+
static leadingZeros(inVal: any, size: number): string;
|
|
30
|
+
static trimToEmpty(input: string): string;
|
|
31
|
+
static trimToNull(input: string): string;
|
|
32
|
+
static trimAllStringPropertiesToNullInPlace<T>(input: T): T;
|
|
33
|
+
static trimAllStringPropertiesToEmptyInPlace<T>(input: T): T;
|
|
34
|
+
private static trimAllStringPropertiesInPlace;
|
|
35
|
+
static stripNonNumeric(input: string): string;
|
|
36
|
+
static csvSafe(input: any): string;
|
|
37
|
+
static stripNonAscii(value: string): string;
|
|
38
|
+
static replaceAll(value: string, src: string, dst: string): string;
|
|
39
|
+
static simpleTemplateFill(template: string, fillers: Record<string, any>, errorOnMissingFiller?: boolean, opener?: string, closer?: string): string;
|
|
40
|
+
}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { RequireRatchet } from './require-ratchet.js';
|
|
2
|
+
export class StringRatchet {
|
|
3
|
+
static RFC_3986_RESERVED = [
|
|
4
|
+
'!',
|
|
5
|
+
'*',
|
|
6
|
+
"'",
|
|
7
|
+
'(',
|
|
8
|
+
')',
|
|
9
|
+
';',
|
|
10
|
+
':',
|
|
11
|
+
'@',
|
|
12
|
+
'&',
|
|
13
|
+
'=',
|
|
14
|
+
'+',
|
|
15
|
+
'$',
|
|
16
|
+
',',
|
|
17
|
+
'/',
|
|
18
|
+
'?',
|
|
19
|
+
'#',
|
|
20
|
+
'[',
|
|
21
|
+
']',
|
|
22
|
+
'%',
|
|
23
|
+
];
|
|
24
|
+
static WHITESPACE = ' \n\t';
|
|
25
|
+
static DIGITS = '0123456789';
|
|
26
|
+
static HEXITS = StringRatchet.DIGITS + 'ABCDEF';
|
|
27
|
+
static UPPER_CASE_LATIN = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
28
|
+
static LOWER_CASE_LATIN = 'abcdefghijklmnopqrstuvwxyz';
|
|
29
|
+
static CASE_INSENSITIVE_LATIN = StringRatchet.UPPER_CASE_LATIN + StringRatchet.LOWER_CASE_LATIN;
|
|
30
|
+
static stringIsInGivenAlphabet(input, alphabet) {
|
|
31
|
+
let rval = false;
|
|
32
|
+
if (input && alphabet) {
|
|
33
|
+
for (let i = 0; i < input.length && !rval; i++) {
|
|
34
|
+
rval = alphabet.includes(input.charAt(i));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return rval;
|
|
38
|
+
}
|
|
39
|
+
static stringToUint8Array(val) {
|
|
40
|
+
return val ? new TextEncoder().encode(val) : null;
|
|
41
|
+
}
|
|
42
|
+
static uint8ArrayToString(val) {
|
|
43
|
+
return val ? new TextDecoder().decode(val) : null;
|
|
44
|
+
}
|
|
45
|
+
static attemptJsonParse(val) {
|
|
46
|
+
let rval = null;
|
|
47
|
+
if (StringRatchet.trimToNull(val)) {
|
|
48
|
+
try {
|
|
49
|
+
rval = JSON.parse(val);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
rval = null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return rval;
|
|
56
|
+
}
|
|
57
|
+
static canParseAsJson(val) {
|
|
58
|
+
return !!StringRatchet.attemptJsonParse(val);
|
|
59
|
+
}
|
|
60
|
+
static allUnique(input) {
|
|
61
|
+
let rval = true;
|
|
62
|
+
if (input) {
|
|
63
|
+
const check = new Set();
|
|
64
|
+
for (let i = 0; i < input.length && rval; i++) {
|
|
65
|
+
const test = input.charAt(i);
|
|
66
|
+
rval = !check.has(test);
|
|
67
|
+
check.add(test);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return rval;
|
|
71
|
+
}
|
|
72
|
+
static allPermutationsOfLength(len, alphabet) {
|
|
73
|
+
const rval = [];
|
|
74
|
+
if (len > 0 && alphabet && alphabet.length > 0) {
|
|
75
|
+
RequireRatchet.true(StringRatchet.allUnique(alphabet), 'Alphabet must be unique');
|
|
76
|
+
const step = len === 1 ? [''] : StringRatchet.allPermutationsOfLength(len - 1, alphabet);
|
|
77
|
+
for (let i = 0; i < alphabet.length; i++) {
|
|
78
|
+
step.forEach((s) => rval.push(alphabet.charAt(i) + s));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return rval;
|
|
82
|
+
}
|
|
83
|
+
static breakIntoBlocks(input, blockSize, separator) {
|
|
84
|
+
let out = '';
|
|
85
|
+
while (input.length > blockSize) {
|
|
86
|
+
out = separator + input.substring(input.length - blockSize) + out;
|
|
87
|
+
input = input.substring(0, input.length - blockSize);
|
|
88
|
+
}
|
|
89
|
+
if (input.length > 0) {
|
|
90
|
+
out = input + out;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
out = out.substring(1);
|
|
94
|
+
}
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
static createShortUid(blockSize = 0, uniquesPerSecond = 1000, radix = 36) {
|
|
98
|
+
const currentEpoch = Math.floor(Date.now() / 1000);
|
|
99
|
+
const asDecimal = parseInt(String(Math.floor(Math.random() * uniquesPerSecond)) + String(currentEpoch));
|
|
100
|
+
const asHex = asDecimal.toString(radix);
|
|
101
|
+
const out = blockSize > 0 ? StringRatchet.breakIntoBlocks(asHex, blockSize, '-') : asHex;
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
static createType4Guid() {
|
|
105
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
106
|
+
const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
|
|
107
|
+
return v.toString(16);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
static createRandomHexString(len = 10) {
|
|
111
|
+
let r = '';
|
|
112
|
+
for (let i = 0; i < len; i++) {
|
|
113
|
+
r += Math.floor(Math.random() * 16).toString(16);
|
|
114
|
+
}
|
|
115
|
+
return r;
|
|
116
|
+
}
|
|
117
|
+
static canonicalize(value) {
|
|
118
|
+
let rval = value ? value.toLowerCase() : '';
|
|
119
|
+
rval = rval.replace(' ', '-');
|
|
120
|
+
StringRatchet.RFC_3986_RESERVED.forEach((s) => {
|
|
121
|
+
rval = rval.replace(s, '');
|
|
122
|
+
});
|
|
123
|
+
return rval;
|
|
124
|
+
}
|
|
125
|
+
static formatBytes(bytes, decimals = 2) {
|
|
126
|
+
if (bytes == 0)
|
|
127
|
+
return '0 Bytes';
|
|
128
|
+
const k = 1024, dm = decimals || 2, sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
129
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
|
|
130
|
+
}
|
|
131
|
+
static safeString(input) {
|
|
132
|
+
let rval = null;
|
|
133
|
+
if (input != null) {
|
|
134
|
+
const type = typeof input;
|
|
135
|
+
if (type == 'string') {
|
|
136
|
+
rval = input;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
rval = String(input);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return rval;
|
|
143
|
+
}
|
|
144
|
+
static stringContainsOnlyWhitespace(input) {
|
|
145
|
+
return StringRatchet.stringContainsOnly(input, StringRatchet.WHITESPACE);
|
|
146
|
+
}
|
|
147
|
+
static stringContainsOnlyNumbers(input) {
|
|
148
|
+
const rval = /^[0-9]+$/.test(input);
|
|
149
|
+
return rval;
|
|
150
|
+
}
|
|
151
|
+
static stringContainsOnlyAlphanumeric(input) {
|
|
152
|
+
const rval = /^[0-9a-zA-Z]+$/.test(input);
|
|
153
|
+
return rval;
|
|
154
|
+
}
|
|
155
|
+
static stringContainsOnlyHex(input) {
|
|
156
|
+
const rval = /^[0-9a-fA-F]+$/.test(input);
|
|
157
|
+
return rval;
|
|
158
|
+
}
|
|
159
|
+
static stringContainsOnly(inVal, validCharsIn) {
|
|
160
|
+
const input = !inVal ? '' : inVal;
|
|
161
|
+
const validChars = !validCharsIn ? '' : validCharsIn;
|
|
162
|
+
let rval = true;
|
|
163
|
+
for (let i = 0; i < input.length && rval; i++) {
|
|
164
|
+
rval = validChars.indexOf(input.charAt(i)) >= 0;
|
|
165
|
+
}
|
|
166
|
+
return rval;
|
|
167
|
+
}
|
|
168
|
+
static obscure(input, prefixLength = 2, suffixLength = 2) {
|
|
169
|
+
if (!input) {
|
|
170
|
+
return input;
|
|
171
|
+
}
|
|
172
|
+
const len = input.length;
|
|
173
|
+
let pl = prefixLength;
|
|
174
|
+
let sl = suffixLength;
|
|
175
|
+
while (len > 0 && len < pl + sl + 1) {
|
|
176
|
+
pl = Math.max(0, pl - 1);
|
|
177
|
+
sl = Math.max(0, sl - 1);
|
|
178
|
+
}
|
|
179
|
+
const rem = len - (pl + sl);
|
|
180
|
+
let rval = '';
|
|
181
|
+
rval += input.substring(0, pl);
|
|
182
|
+
for (let i = 0; i < rem; i++) {
|
|
183
|
+
rval += '*';
|
|
184
|
+
}
|
|
185
|
+
rval += input.substring(len - sl);
|
|
186
|
+
return rval;
|
|
187
|
+
}
|
|
188
|
+
static leadingZeros(inVal, size) {
|
|
189
|
+
const pad = '00000000000000000000000000000000000000000000000000';
|
|
190
|
+
let negative = false;
|
|
191
|
+
let sVal = String(inVal);
|
|
192
|
+
if (sVal.startsWith('-')) {
|
|
193
|
+
negative = true;
|
|
194
|
+
sVal = sVal.substring(1);
|
|
195
|
+
}
|
|
196
|
+
if (size > pad.length) {
|
|
197
|
+
throw new Error('Cannot format number that large');
|
|
198
|
+
}
|
|
199
|
+
let rval = (pad + sVal).slice(-1 * size);
|
|
200
|
+
if (negative) {
|
|
201
|
+
rval = '-' + rval;
|
|
202
|
+
}
|
|
203
|
+
return rval;
|
|
204
|
+
}
|
|
205
|
+
static trimToEmpty(input) {
|
|
206
|
+
const t = input ? StringRatchet.safeString(input) : '';
|
|
207
|
+
return t.trim();
|
|
208
|
+
}
|
|
209
|
+
static trimToNull(input) {
|
|
210
|
+
const x = StringRatchet.trimToEmpty(input);
|
|
211
|
+
return x.length > 0 ? x : null;
|
|
212
|
+
}
|
|
213
|
+
static trimAllStringPropertiesToNullInPlace(input) {
|
|
214
|
+
return StringRatchet.trimAllStringPropertiesInPlace(input, false);
|
|
215
|
+
}
|
|
216
|
+
static trimAllStringPropertiesToEmptyInPlace(input) {
|
|
217
|
+
return StringRatchet.trimAllStringPropertiesInPlace(input, true);
|
|
218
|
+
}
|
|
219
|
+
static trimAllStringPropertiesInPlace(input, toEmpty) {
|
|
220
|
+
const dealKeys = Object.keys(input);
|
|
221
|
+
dealKeys.forEach((key) => {
|
|
222
|
+
const val = input[key];
|
|
223
|
+
if (val != null && typeof val === 'string') {
|
|
224
|
+
input[key] = toEmpty ? StringRatchet.trimToEmpty(input[key]) : StringRatchet.trimToNull(input[key]);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
return input;
|
|
228
|
+
}
|
|
229
|
+
static stripNonNumeric(input) {
|
|
230
|
+
let rval = input;
|
|
231
|
+
if (input != null && !StringRatchet.stringContainsOnlyNumbers(input)) {
|
|
232
|
+
rval = '';
|
|
233
|
+
for (let i = 0; i < input.length; i++) {
|
|
234
|
+
const c = input.charAt(i);
|
|
235
|
+
if (StringRatchet.stringContainsOnlyNumbers(c) || (i === 0 && c === '-')) {
|
|
236
|
+
rval += c;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return rval;
|
|
241
|
+
}
|
|
242
|
+
static csvSafe(input) {
|
|
243
|
+
let rval = StringRatchet.trimToEmpty(StringRatchet.safeString(input));
|
|
244
|
+
rval.split('"').join('\\"');
|
|
245
|
+
if (rval.indexOf(',') !== -1 || rval.indexOf('"') !== -1 || rval.indexOf("'") !== -1) {
|
|
246
|
+
rval = '"' + rval + '"';
|
|
247
|
+
}
|
|
248
|
+
return rval;
|
|
249
|
+
}
|
|
250
|
+
static stripNonAscii(value) {
|
|
251
|
+
const reduced = [...value].reduce((previousValue, currentValue) => {
|
|
252
|
+
const charCode = currentValue.charCodeAt(0);
|
|
253
|
+
if (charCode > 127) {
|
|
254
|
+
return previousValue;
|
|
255
|
+
}
|
|
256
|
+
return previousValue + currentValue;
|
|
257
|
+
});
|
|
258
|
+
return reduced;
|
|
259
|
+
}
|
|
260
|
+
static replaceAll(value, src, dst) {
|
|
261
|
+
let rval = value;
|
|
262
|
+
if (rval?.length && src?.length && dst?.length) {
|
|
263
|
+
rval = rval.split(src).join(dst);
|
|
264
|
+
}
|
|
265
|
+
return rval;
|
|
266
|
+
}
|
|
267
|
+
static simpleTemplateFill(template, fillers, errorOnMissingFiller = false, opener = '${', closer = '}') {
|
|
268
|
+
let rval = template;
|
|
269
|
+
if (rval && fillers) {
|
|
270
|
+
Object.keys(fillers).forEach((key) => {
|
|
271
|
+
rval = rval.split(opener + key + closer).join(fillers[key]);
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
if (errorOnMissingFiller && rval?.indexOf(opener) >= 0) {
|
|
275
|
+
throw new Error('Template has unfilled variables:' + rval);
|
|
276
|
+
}
|
|
277
|
+
return rval;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=string-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-ratchet.js","sourceRoot":"","sources":["../../src/lang/string-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare class TimeZoneRatchet {
|
|
2
|
+
private timezoneIanaName;
|
|
3
|
+
static PACIFIC: TimeZoneRatchet;
|
|
4
|
+
constructor(timezoneIanaName: string);
|
|
5
|
+
get ianaName(): string;
|
|
6
|
+
currentHour(): number;
|
|
7
|
+
private toEpochSeconds;
|
|
8
|
+
startOfTodayEpochSeconds(): number;
|
|
9
|
+
startOfMatchingDayEpochSeconds(inputTS: number): number;
|
|
10
|
+
startOfMatchingDayEpochMS(inputTS: number): number;
|
|
11
|
+
startOfCurrentHourEpochSeconds(): number;
|
|
12
|
+
startOfCurrentMinuteEpochSeconds(): number;
|
|
13
|
+
startOfCurrentSecondEpochSeconds(): number;
|
|
14
|
+
startOfTodayEpochMS(): number;
|
|
15
|
+
dailySlotCount(slotWidthMs: number): number;
|
|
16
|
+
currentTimeSlotIdx(slotWidthMs: number): number;
|
|
17
|
+
matchingTimeSlotIdx(timestamp: number, slotWidthMs: number): number;
|
|
18
|
+
startOfCurrentSlotEpochMS(slotWidthMs: number): number;
|
|
19
|
+
startOfMatchingSlotEpochMS(timestamp: number, slotWidthMs: number): number;
|
|
20
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
export class TimeZoneRatchet {
|
|
3
|
+
timezoneIanaName;
|
|
4
|
+
static PACIFIC = new TimeZoneRatchet('America/Los_Angeles');
|
|
5
|
+
constructor(timezoneIanaName) {
|
|
6
|
+
this.timezoneIanaName = timezoneIanaName;
|
|
7
|
+
if (!timezoneIanaName || timezoneIanaName.trim().length === 0) {
|
|
8
|
+
throw 'Timezone cannot be null or empty';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
get ianaName() {
|
|
12
|
+
return this.timezoneIanaName;
|
|
13
|
+
}
|
|
14
|
+
currentHour() {
|
|
15
|
+
const rval = DateTime.local().setZone(this.timezoneIanaName).hour;
|
|
16
|
+
return rval;
|
|
17
|
+
}
|
|
18
|
+
toEpochSeconds(dt) {
|
|
19
|
+
return Math.round(dt.toMillis() / 1000);
|
|
20
|
+
}
|
|
21
|
+
startOfTodayEpochSeconds() {
|
|
22
|
+
const startOfToday = this.toEpochSeconds(DateTime.local().setZone(this.timezoneIanaName).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }));
|
|
23
|
+
return startOfToday;
|
|
24
|
+
}
|
|
25
|
+
startOfMatchingDayEpochSeconds(inputTS) {
|
|
26
|
+
const startOfToday = this.toEpochSeconds(DateTime.fromMillis(inputTS).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }));
|
|
27
|
+
return startOfToday;
|
|
28
|
+
}
|
|
29
|
+
startOfMatchingDayEpochMS(inputTS) {
|
|
30
|
+
return this.startOfMatchingDayEpochSeconds(inputTS) * 1000;
|
|
31
|
+
}
|
|
32
|
+
startOfCurrentHourEpochSeconds() {
|
|
33
|
+
const rval = this.toEpochSeconds(DateTime.local().setZone(this.timezoneIanaName).set({ minute: 0, second: 0, millisecond: 0 }));
|
|
34
|
+
return rval;
|
|
35
|
+
}
|
|
36
|
+
startOfCurrentMinuteEpochSeconds() {
|
|
37
|
+
const rval = this.toEpochSeconds(DateTime.local().setZone(this.timezoneIanaName).set({ second: 0, millisecond: 0 }));
|
|
38
|
+
return rval;
|
|
39
|
+
}
|
|
40
|
+
startOfCurrentSecondEpochSeconds() {
|
|
41
|
+
const rval = this.toEpochSeconds(DateTime.local().setZone(this.timezoneIanaName).set({ millisecond: 0 }));
|
|
42
|
+
return rval;
|
|
43
|
+
}
|
|
44
|
+
startOfTodayEpochMS() {
|
|
45
|
+
const startOfToday = DateTime.local().setZone(this.timezoneIanaName).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).toMillis();
|
|
46
|
+
return startOfToday;
|
|
47
|
+
}
|
|
48
|
+
dailySlotCount(slotWidthMs) {
|
|
49
|
+
return Math.ceil(86400000 / slotWidthMs);
|
|
50
|
+
}
|
|
51
|
+
currentTimeSlotIdx(slotWidthMs) {
|
|
52
|
+
if (slotWidthMs < 1) {
|
|
53
|
+
throw new Error('Cannot process with slot less than one ms wide');
|
|
54
|
+
}
|
|
55
|
+
const startOfToday = this.startOfTodayEpochMS();
|
|
56
|
+
const now = new Date().getTime();
|
|
57
|
+
const delta = now - startOfToday;
|
|
58
|
+
const idx = Math.floor(delta / slotWidthMs);
|
|
59
|
+
return idx;
|
|
60
|
+
}
|
|
61
|
+
matchingTimeSlotIdx(timestamp, slotWidthMs) {
|
|
62
|
+
if (slotWidthMs < 1) {
|
|
63
|
+
throw new Error('Cannot process with slot less than one ms wide');
|
|
64
|
+
}
|
|
65
|
+
const startOfDay = this.startOfMatchingDayEpochMS(timestamp);
|
|
66
|
+
const delta = timestamp - startOfDay;
|
|
67
|
+
const idx = Math.floor(delta / slotWidthMs);
|
|
68
|
+
return idx;
|
|
69
|
+
}
|
|
70
|
+
startOfCurrentSlotEpochMS(slotWidthMs) {
|
|
71
|
+
const startOfToday = this.startOfTodayEpochMS();
|
|
72
|
+
const currentIdx = this.currentTimeSlotIdx(slotWidthMs);
|
|
73
|
+
return startOfToday + currentIdx * slotWidthMs;
|
|
74
|
+
}
|
|
75
|
+
startOfMatchingSlotEpochMS(timestamp, slotWidthMs) {
|
|
76
|
+
const startOfDay = this.startOfMatchingDayEpochMS(timestamp);
|
|
77
|
+
const currentIdx = this.matchingTimeSlotIdx(timestamp, slotWidthMs);
|
|
78
|
+
return startOfDay + currentIdx * slotWidthMs;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=time-zone-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-zone-ratchet.js","sourceRoot":"","sources":["../../src/lang/time-zone-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
2
|
+
export declare class TimeoutToken {
|
|
3
|
+
private title;
|
|
4
|
+
private timeoutMS;
|
|
5
|
+
private __timeoutTokenFlagField;
|
|
6
|
+
constructor(title: string, timeoutMS: number);
|
|
7
|
+
writeToLog(logLevel?: LoggerLevelName): void;
|
|
8
|
+
static isTimeoutToken(value: any): boolean;
|
|
9
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Logger } from '../logger/logger.js';
|
|
2
|
+
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
3
|
+
export class TimeoutToken {
|
|
4
|
+
title;
|
|
5
|
+
timeoutMS;
|
|
6
|
+
__timeoutTokenFlagField = true;
|
|
7
|
+
constructor(title, timeoutMS) {
|
|
8
|
+
this.title = title;
|
|
9
|
+
this.timeoutMS = timeoutMS;
|
|
10
|
+
Object.setPrototypeOf(this, TimeoutToken.prototype);
|
|
11
|
+
}
|
|
12
|
+
writeToLog(logLevel = LoggerLevelName.warn) {
|
|
13
|
+
Logger.logByLevel(logLevel, 'Timed out after %d ms waiting for results of %s', this.timeoutMS, this.title);
|
|
14
|
+
}
|
|
15
|
+
static isTimeoutToken(value) {
|
|
16
|
+
return !!value && !!value['__timeoutTokenFlagField'];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=timeout-token.js.map
|