@bitblit/ratchet-common 4.0.80-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/dist/cjs/2d/line-2d.js +2 -0
- package/dist/cjs/2d/plane-2d.js +2 -0
- package/dist/cjs/2d/point-2d.js +2 -0
- package/dist/cjs/2d/poly-line-2d.js +2 -0
- package/dist/cjs/2d/ratchet-2d.js +250 -0
- package/dist/cjs/build/build-information.js +2 -0
- package/dist/cjs/build/ratchet-common-info.js +18 -0
- package/dist/cjs/histogram/histogram-entry.js +2 -0
- package/dist/cjs/histogram/histogram.js +54 -0
- package/dist/cjs/index.js +74 -0
- package/dist/cjs/jwt/common-jwt-token.js +2 -0
- package/dist/cjs/jwt/expired-jwt-handling.js +9 -0
- package/dist/cjs/jwt/jwt-ratchet-like.js +2 -0
- package/dist/cjs/jwt/jwt-ratchet.js +164 -0
- package/dist/cjs/jwt/jwt-token-base.js +2 -0
- package/dist/cjs/lang/array-ratchet.js +87 -0
- package/dist/cjs/lang/base64-ratchet.js +49 -0
- package/dist/cjs/lang/boolean-ratchet.js +49 -0
- package/dist/cjs/lang/composite-last-success-provider.js +28 -0
- package/dist/cjs/lang/date-ratchet.js +33 -0
- package/dist/cjs/lang/duration-ratchet.js +46 -0
- package/dist/cjs/lang/enum-ratchet.js +34 -0
- package/dist/cjs/lang/error-ratchet.js +49 -0
- package/dist/cjs/lang/expiring-object.js +68 -0
- package/dist/cjs/lang/geolocation-ratchet.js +267 -0
- package/dist/cjs/lang/global-ratchet.js +48 -0
- package/dist/cjs/lang/key-value.js +6 -0
- package/dist/cjs/lang/last-success-provider.js +2 -0
- package/dist/cjs/lang/map-ratchet.js +168 -0
- package/dist/cjs/lang/no.js +8 -0
- package/dist/cjs/lang/number-ratchet.js +156 -0
- package/dist/cjs/lang/parsed-url.js +2 -0
- package/dist/cjs/lang/promise-ratchet.js +142 -0
- package/dist/cjs/lang/require-ratchet.js +60 -0
- package/dist/cjs/lang/stop-watch.js +117 -0
- package/dist/cjs/lang/string-ratchet.js +195 -0
- package/dist/cjs/lang/time-zone-ratchet.js +80 -0
- package/dist/cjs/lang/timeout-token.js +19 -0
- package/dist/cjs/lang/transform-ratchet.js +70 -0
- package/dist/cjs/logger/classic-single-line-log-message-formatter.js +18 -0
- package/dist/cjs/logger/log-message-builder.js +51 -0
- package/dist/cjs/logger/log-message-format-type.js +9 -0
- package/dist/cjs/logger/log-message-formatter.js +2 -0
- package/dist/cjs/logger/log-message-processor.js +2 -0
- package/dist/cjs/logger/log-message.js +2 -0
- package/dist/cjs/logger/log-snapshot.js +2 -0
- package/dist/cjs/logger/logger-instance.js +207 -0
- package/dist/cjs/logger/logger-level-name.js +12 -0
- package/dist/cjs/logger/logger-meta.js +2 -0
- package/dist/cjs/logger/logger-options.js +2 -0
- package/dist/cjs/logger/logger-output-function.js +9 -0
- package/dist/cjs/logger/logger-ring-buffer.js +76 -0
- package/dist/cjs/logger/logger-util.js +49 -0
- package/dist/cjs/logger/logger.js +139 -0
- package/dist/cjs/logger/none-log-message-formatter.js +9 -0
- package/dist/cjs/logger/structured-json-log-message-formatter.js +24 -0
- package/dist/cjs/network/browser-local-ip-provider.js +25 -0
- package/dist/cjs/network/fixed-local-ip-provider.js +12 -0
- package/dist/cjs/network/local-ip-provider.js +2 -0
- package/dist/cjs/network/network-ratchet.js +106 -0
- package/dist/cjs/stream/buffer-writable.js +20 -0
- package/dist/cjs/stream/stream-ratchet.js +72 -0
- package/dist/cjs/stream/string-writable.js +18 -0
- package/dist/cjs/third-party/google/google-recaptcha-ratchet.js +33 -0
- package/dist/cjs/third-party/twilio/twilio-ratchet.js +75 -0
- package/dist/cjs/transform/built-in-transforms.js +195 -0
- package/dist/cjs/transform/transform-rule.js +2 -0
- package/dist/cjs/tx/transaction-configuration.js +2 -0
- package/dist/cjs/tx/transaction-final-state.js +9 -0
- package/dist/cjs/tx/transaction-ratchet.js +80 -0
- package/dist/cjs/tx/transaction-result.js +2 -0
- package/dist/cjs/tx/transaction-step.js +2 -0
- package/dist/es/2d/line-2d.js +1 -0
- package/dist/es/2d/plane-2d.js +1 -0
- package/dist/es/2d/point-2d.js +1 -0
- package/dist/es/2d/poly-line-2d.js +1 -0
- package/dist/es/2d/ratchet-2d.js +245 -0
- package/dist/es/build/build-information.js +1 -0
- package/dist/es/build/ratchet-common-info.js +14 -0
- package/dist/es/histogram/histogram-entry.js +1 -0
- package/dist/es/histogram/histogram.js +50 -0
- package/dist/es/index.js +71 -0
- package/dist/es/jwt/common-jwt-token.js +1 -0
- package/dist/es/jwt/expired-jwt-handling.js +6 -0
- package/dist/es/jwt/jwt-ratchet-like.js +1 -0
- package/dist/es/jwt/jwt-ratchet.js +159 -0
- package/dist/es/jwt/jwt-token-base.js +1 -0
- package/dist/es/lang/array-ratchet.js +83 -0
- package/dist/es/lang/base64-ratchet.js +45 -0
- package/dist/es/lang/boolean-ratchet.js +45 -0
- package/dist/es/lang/composite-last-success-provider.js +24 -0
- package/dist/es/lang/date-ratchet.js +29 -0
- package/dist/es/lang/duration-ratchet.js +42 -0
- package/dist/es/lang/enum-ratchet.js +30 -0
- package/dist/es/lang/error-ratchet.js +44 -0
- package/dist/es/lang/expiring-object.js +63 -0
- package/dist/es/lang/geolocation-ratchet.js +263 -0
- package/dist/es/lang/global-ratchet.js +43 -0
- package/dist/es/lang/key-value.js +2 -0
- package/dist/es/lang/last-success-provider.js +1 -0
- package/dist/es/lang/map-ratchet.js +164 -0
- package/dist/es/lang/no.js +4 -0
- package/dist/es/lang/number-ratchet.js +152 -0
- package/dist/es/lang/parsed-url.js +1 -0
- package/dist/es/lang/promise-ratchet.js +138 -0
- package/dist/es/lang/require-ratchet.js +56 -0
- package/dist/es/lang/stop-watch.js +113 -0
- package/dist/es/lang/string-ratchet.js +191 -0
- package/dist/es/lang/time-zone-ratchet.js +76 -0
- package/dist/es/lang/timeout-token.js +15 -0
- package/dist/es/lang/transform-ratchet.js +66 -0
- package/dist/es/logger/classic-single-line-log-message-formatter.js +13 -0
- package/dist/es/logger/log-message-builder.js +47 -0
- package/dist/es/logger/log-message-format-type.js +6 -0
- package/dist/es/logger/log-message-formatter.js +1 -0
- package/dist/es/logger/log-message-processor.js +1 -0
- package/dist/es/logger/log-message.js +1 -0
- package/dist/es/logger/log-snapshot.js +1 -0
- package/dist/es/logger/logger-instance.js +201 -0
- package/dist/es/logger/logger-level-name.js +9 -0
- package/dist/es/logger/logger-meta.js +1 -0
- package/dist/es/logger/logger-options.js +1 -0
- package/dist/es/logger/logger-output-function.js +6 -0
- package/dist/es/logger/logger-ring-buffer.js +72 -0
- package/dist/es/logger/logger-util.js +44 -0
- package/dist/es/logger/logger.js +134 -0
- package/dist/es/logger/none-log-message-formatter.js +5 -0
- package/dist/es/logger/structured-json-log-message-formatter.js +19 -0
- package/dist/es/network/browser-local-ip-provider.js +21 -0
- package/dist/es/network/fixed-local-ip-provider.js +8 -0
- package/dist/es/network/local-ip-provider.js +1 -0
- package/dist/es/network/network-ratchet.js +102 -0
- package/dist/es/stream/buffer-writable.js +16 -0
- package/dist/es/stream/stream-ratchet.js +68 -0
- package/dist/es/stream/string-writable.js +14 -0
- package/dist/es/third-party/google/google-recaptcha-ratchet.js +28 -0
- package/dist/es/third-party/twilio/twilio-ratchet.js +70 -0
- package/dist/es/transform/built-in-transforms.js +191 -0
- package/dist/es/transform/transform-rule.js +1 -0
- package/dist/es/tx/transaction-configuration.js +1 -0
- package/dist/es/tx/transaction-final-state.js +6 -0
- package/dist/es/tx/transaction-ratchet.js +76 -0
- package/dist/es/tx/transaction-result.js +1 -0
- package/dist/es/tx/transaction-step.js +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.es.tsbuildinfo +1 -0
- package/dist/tsconfig.types.tsbuildinfo +1 -0
- package/dist/types/2d/line-2d.d.ts +5 -0
- package/dist/types/2d/plane-2d.d.ts +6 -0
- package/dist/types/2d/point-2d.d.ts +4 -0
- package/dist/types/2d/poly-line-2d.d.ts +4 -0
- package/dist/types/2d/ratchet-2d.d.ts +37 -0
- package/dist/types/build/build-information.d.ts +8 -0
- package/dist/types/build/ratchet-common-info.d.ts +5 -0
- package/dist/types/histogram/histogram-entry.d.ts +4 -0
- package/dist/types/histogram/histogram.d.ts +15 -0
- package/dist/types/index.d.ts +74 -0
- package/dist/types/jwt/common-jwt-token.d.ts +17 -0
- package/dist/types/jwt/expired-jwt-handling.d.ts +5 -0
- package/dist/types/jwt/jwt-ratchet-like.d.ts +18 -0
- package/dist/types/jwt/jwt-ratchet.d.ts +39 -0
- package/dist/types/jwt/jwt-token-base.d.ts +13 -0
- package/dist/types/lang/array-ratchet.d.ts +30 -0
- package/dist/types/lang/base64-ratchet.d.ts +10 -0
- package/dist/types/lang/boolean-ratchet.d.ts +7 -0
- package/dist/types/lang/composite-last-success-provider.d.ts +8 -0
- package/dist/types/lang/date-ratchet.d.ts +11 -0
- package/dist/types/lang/duration-ratchet.d.ts +7 -0
- package/dist/types/lang/enum-ratchet.d.ts +12 -0
- package/dist/types/lang/error-ratchet.d.ts +6 -0
- package/dist/types/lang/expiring-object.d.ts +20 -0
- package/dist/types/lang/geolocation-ratchet.d.ts +40 -0
- package/dist/types/lang/global-ratchet.d.ts +6 -0
- package/dist/types/lang/key-value.d.ts +4 -0
- package/dist/types/lang/last-success-provider.d.ts +4 -0
- package/dist/types/lang/map-ratchet.d.ts +15 -0
- package/dist/types/lang/no.d.ts +3 -0
- package/dist/types/lang/number-ratchet.d.ts +20 -0
- package/dist/types/lang/parsed-url.d.ts +10 -0
- package/dist/types/lang/promise-ratchet.d.ts +32 -0
- package/dist/types/lang/require-ratchet.d.ts +11 -0
- package/dist/types/lang/stop-watch.d.ts +17 -0
- package/dist/types/lang/string-ratchet.d.ts +27 -0
- package/dist/types/lang/time-zone-ratchet.d.ts +50 -0
- package/dist/types/lang/timeout-token.d.ts +9 -0
- package/dist/types/lang/transform-ratchet.d.ts +7 -0
- package/dist/types/logger/classic-single-line-log-message-formatter.d.ts +6 -0
- package/dist/types/logger/log-message-builder.d.ts +14 -0
- package/dist/types/logger/log-message-format-type.d.ts +5 -0
- package/dist/types/logger/log-message-formatter.d.ts +5 -0
- package/dist/types/logger/log-message-processor.d.ts +5 -0
- package/dist/types/logger/log-message.d.ts +8 -0
- package/dist/types/logger/log-snapshot.d.ts +5 -0
- package/dist/types/logger/logger-instance.d.ts +46 -0
- package/dist/types/logger/logger-level-name.d.ts +8 -0
- package/dist/types/logger/logger-meta.d.ts +6 -0
- package/dist/types/logger/logger-options.d.ts +13 -0
- package/dist/types/logger/logger-output-function.d.ts +5 -0
- package/dist/types/logger/logger-ring-buffer.d.ts +18 -0
- package/dist/types/logger/logger-util.d.ts +8 -0
- package/dist/types/logger/logger.d.ts +52 -0
- package/dist/types/logger/none-log-message-formatter.d.ts +6 -0
- package/dist/types/logger/structured-json-log-message-formatter.d.ts +6 -0
- package/dist/types/network/browser-local-ip-provider.d.ts +7 -0
- package/dist/types/network/fixed-local-ip-provider.d.ts +6 -0
- package/dist/types/network/local-ip-provider.d.ts +4 -0
- package/dist/types/network/network-ratchet.d.ts +9 -0
- package/dist/types/stream/buffer-writable.d.ts +9 -0
- package/dist/types/stream/stream-ratchet.d.ts +12 -0
- package/dist/types/stream/string-writable.d.ts +8 -0
- package/dist/types/third-party/google/google-recaptcha-ratchet.d.ts +4 -0
- package/dist/types/third-party/twilio/twilio-ratchet.d.ts +15 -0
- package/dist/types/transform/built-in-transforms.d.ts +18 -0
- package/dist/types/transform/transform-rule.d.ts +3 -0
- package/dist/types/tx/transaction-configuration.d.ts +7 -0
- package/dist/types/tx/transaction-final-state.d.ts +5 -0
- package/dist/types/tx/transaction-ratchet.d.ts +6 -0
- package/dist/types/tx/transaction-result.d.ts +9 -0
- package/dist/types/tx/transaction-step.d.ts +5 -0
- package/package.json +65 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArrayRatchet = void 0;
|
|
4
|
+
const require_ratchet_1 = require("./require-ratchet");
|
|
5
|
+
const map_ratchet_1 = require("./map-ratchet");
|
|
6
|
+
class ArrayRatchet {
|
|
7
|
+
static wrapElementsInArray(input) {
|
|
8
|
+
return input.map((i) => [i]);
|
|
9
|
+
}
|
|
10
|
+
static compareTwoArrays(ar1, ar2, fn) {
|
|
11
|
+
ar1.sort(fn);
|
|
12
|
+
ar2.sort(fn);
|
|
13
|
+
let id1 = 0;
|
|
14
|
+
let id2 = 0;
|
|
15
|
+
const rval = {
|
|
16
|
+
matching: [],
|
|
17
|
+
setOneOnly: [],
|
|
18
|
+
setTwoOnly: [],
|
|
19
|
+
};
|
|
20
|
+
while (id1 < ar1.length && id2 < ar2.length) {
|
|
21
|
+
const aVal = ar1[id1];
|
|
22
|
+
const pVal = ar2[id2];
|
|
23
|
+
const comp = fn(aVal, pVal);
|
|
24
|
+
if (comp === 0) {
|
|
25
|
+
rval.matching.push(aVal);
|
|
26
|
+
id1++;
|
|
27
|
+
id2++;
|
|
28
|
+
}
|
|
29
|
+
else if (comp < 0) {
|
|
30
|
+
rval.setOneOnly.push(aVal);
|
|
31
|
+
id1++;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
rval.setTwoOnly.push(pVal);
|
|
35
|
+
id2++;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (id1 < ar1.length - 1) {
|
|
39
|
+
rval.setOneOnly = rval.setOneOnly.concat(ar1.slice(id1));
|
|
40
|
+
}
|
|
41
|
+
if (id2 < ar2.length - 1) {
|
|
42
|
+
rval.setTwoOnly = rval.setTwoOnly.concat(ar2.slice(id2));
|
|
43
|
+
}
|
|
44
|
+
return rval;
|
|
45
|
+
}
|
|
46
|
+
static extractSubarrayFromSortedByNumberField(input, fieldDotPath, minInclusive, maxExclusive) {
|
|
47
|
+
if (!input || input.length === 0) {
|
|
48
|
+
return input;
|
|
49
|
+
}
|
|
50
|
+
let bottomIdx = minInclusive === null ? 0 : ArrayRatchet.findSplit(input, fieldDotPath, minInclusive) || 0;
|
|
51
|
+
const topIdx = maxExclusive === null ? input.length : ArrayRatchet.findSplit(input, fieldDotPath, maxExclusive);
|
|
52
|
+
const bottomValue = map_ratchet_1.MapRatchet.findValueDotPath(input[bottomIdx], fieldDotPath);
|
|
53
|
+
if (bottomIdx === input.length - 1 && bottomValue < minInclusive) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
if (bottomIdx < input.length && bottomIdx < topIdx && bottomValue < minInclusive) {
|
|
57
|
+
bottomIdx++;
|
|
58
|
+
}
|
|
59
|
+
return input.slice(bottomIdx, topIdx + 1);
|
|
60
|
+
}
|
|
61
|
+
static findSplit(input, fieldDotPath, target) {
|
|
62
|
+
require_ratchet_1.RequireRatchet.notNullOrUndefined(input);
|
|
63
|
+
require_ratchet_1.RequireRatchet.notNullOrUndefined(fieldDotPath);
|
|
64
|
+
require_ratchet_1.RequireRatchet.notNullOrUndefined(target);
|
|
65
|
+
if (input.length === 0 || map_ratchet_1.MapRatchet.findValueDotPath(input[0], fieldDotPath) > target) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
let min = 0;
|
|
69
|
+
let max = input.length;
|
|
70
|
+
let rval = null;
|
|
71
|
+
while (rval === null) {
|
|
72
|
+
const curIdx = Math.floor((min + max) / 2);
|
|
73
|
+
const curVal = map_ratchet_1.MapRatchet.findValueDotPath(input[curIdx], fieldDotPath);
|
|
74
|
+
if (min === max || min === max - 1) {
|
|
75
|
+
rval = min;
|
|
76
|
+
}
|
|
77
|
+
else if (curVal <= target) {
|
|
78
|
+
min = curIdx;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
max = curIdx;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return rval;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.ArrayRatchet = ArrayRatchet;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Base64Ratchet = void 0;
|
|
4
|
+
const logger_1 = require("../logger/logger");
|
|
5
|
+
class Base64Ratchet {
|
|
6
|
+
static safeObjectToBase64JSON(input) {
|
|
7
|
+
return !!input ? Base64Ratchet.generateBase64VersionOfString(JSON.stringify(input)) : null;
|
|
8
|
+
}
|
|
9
|
+
static safeBase64JSONParse(input) {
|
|
10
|
+
let rval = {};
|
|
11
|
+
try {
|
|
12
|
+
if (input) {
|
|
13
|
+
rval = JSON.parse(Base64Ratchet.base64StringToString(input));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
logger_1.Logger.warn('Error parsing b64/json : %s as json, got %s', input, err, err);
|
|
18
|
+
rval = {};
|
|
19
|
+
}
|
|
20
|
+
return rval;
|
|
21
|
+
}
|
|
22
|
+
static generateBase64VersionOfBlob(blob) {
|
|
23
|
+
return new Promise(function (resolve, reject) {
|
|
24
|
+
if (!blob || blob.size == 0) {
|
|
25
|
+
reject('Wont convert null or non-blob or empty blob');
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const reader = new FileReader();
|
|
29
|
+
reader.onloadend = function () {
|
|
30
|
+
resolve(reader.result.toString());
|
|
31
|
+
};
|
|
32
|
+
reader.readAsDataURL(blob);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
static generateBase64VersionOfString(input) {
|
|
37
|
+
return Base64Ratchet.generateBase64VersionOfBuffer(Buffer.from(input));
|
|
38
|
+
}
|
|
39
|
+
static generateBase64VersionOfBuffer(input) {
|
|
40
|
+
return input.toString('base64');
|
|
41
|
+
}
|
|
42
|
+
static base64StringToBuffer(input) {
|
|
43
|
+
return Buffer.from(input, 'base64');
|
|
44
|
+
}
|
|
45
|
+
static base64StringToString(input, encoding = 'utf8') {
|
|
46
|
+
return Buffer.from(input, 'base64').toString(encoding);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.Base64Ratchet = Base64Ratchet;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BooleanRatchet = void 0;
|
|
4
|
+
const number_ratchet_1 = require("./number-ratchet");
|
|
5
|
+
class BooleanRatchet {
|
|
6
|
+
static allTrue(vals, emptyArraysReturn = false) {
|
|
7
|
+
let rval = null;
|
|
8
|
+
if (!!vals) {
|
|
9
|
+
if (vals.length > 0) {
|
|
10
|
+
rval = vals.reduce((a, i) => a && i, true);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
rval = emptyArraysReturn;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
rval = false;
|
|
18
|
+
}
|
|
19
|
+
return rval;
|
|
20
|
+
}
|
|
21
|
+
static anyTrue(vals, emptyArraysReturn = false) {
|
|
22
|
+
let rval = null;
|
|
23
|
+
if (!!vals) {
|
|
24
|
+
if (vals.length > 0) {
|
|
25
|
+
rval = vals.reduce((a, i) => a || i, false);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
rval = emptyArraysReturn;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
rval = false;
|
|
33
|
+
}
|
|
34
|
+
return rval;
|
|
35
|
+
}
|
|
36
|
+
static parseBool(val) {
|
|
37
|
+
return val === true || (val !== null && val !== undefined && typeof val === 'string' && val.toLowerCase() === 'true');
|
|
38
|
+
}
|
|
39
|
+
static intToBool(val) {
|
|
40
|
+
if (val === null || val === undefined) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return number_ratchet_1.NumberRatchet.safeNumber(val) !== 0;
|
|
44
|
+
}
|
|
45
|
+
static boolToInt(val) {
|
|
46
|
+
return BooleanRatchet.parseBool(val) ? 1 : 0;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.BooleanRatchet = BooleanRatchet;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CompositeLastSuccessProvider = void 0;
|
|
4
|
+
class CompositeLastSuccessProvider {
|
|
5
|
+
constructor(src, mostRecentSrc = true) {
|
|
6
|
+
if (!src || src.length == 0) {
|
|
7
|
+
throw Error('Cannot create composite provider with null/empty sources');
|
|
8
|
+
}
|
|
9
|
+
this.sources = src;
|
|
10
|
+
this.mostRecent = mostRecentSrc;
|
|
11
|
+
}
|
|
12
|
+
lastSuccess() {
|
|
13
|
+
let rval = null;
|
|
14
|
+
this.sources.forEach((s) => {
|
|
15
|
+
const val = s.lastSuccess();
|
|
16
|
+
if (val != null) {
|
|
17
|
+
if (rval == null) {
|
|
18
|
+
rval = val;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
rval = (val > rval && this.mostRecent) || (val < rval && !this.mostRecent) ? val : rval;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return rval;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.CompositeLastSuccessProvider = CompositeLastSuccessProvider;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DateRatchet = void 0;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
5
|
+
class DateRatchet {
|
|
6
|
+
static formatFullDate(input) {
|
|
7
|
+
return luxon_1.DateTime.fromJSDate(input).toFormat(DateRatchet.FULL_DATE_FORMAT);
|
|
8
|
+
}
|
|
9
|
+
static formatDefaultDateOnly(input) {
|
|
10
|
+
return luxon_1.DateTime.fromJSDate(input).toFormat(DateRatchet.DEFAULT_DATE_FORMAT);
|
|
11
|
+
}
|
|
12
|
+
static parseDefaultDate(input) {
|
|
13
|
+
const rval = luxon_1.DateTime.fromFormat(input, DateRatchet.DEFAULT_DATE_FORMAT).toJSDate();
|
|
14
|
+
return rval;
|
|
15
|
+
}
|
|
16
|
+
static parseCommonUsDate(input) {
|
|
17
|
+
let rval = null;
|
|
18
|
+
if (!!input) {
|
|
19
|
+
let templ = DateRatchet.COMMON_US_DATE_FORMAT;
|
|
20
|
+
if (input.indexOf('-') === 2) {
|
|
21
|
+
templ = templ.split('/').join('-');
|
|
22
|
+
}
|
|
23
|
+
rval = luxon_1.DateTime.fromFormat(input, templ).toJSDate();
|
|
24
|
+
}
|
|
25
|
+
return rval;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.DateRatchet = DateRatchet;
|
|
29
|
+
DateRatchet.COMMON_US_DATE_FORMAT = 'MM/dd/yyyy';
|
|
30
|
+
DateRatchet.DEFAULT_DATE_FORMAT = 'yyyy-MM-dd';
|
|
31
|
+
DateRatchet.FULL_DATE_FORMAT = 'yyyy-MM-dd_HH_mm_ss';
|
|
32
|
+
DateRatchet.PACIFIC_TIME_ZONE = 'America/Los_Angeles';
|
|
33
|
+
DateRatchet.UTC_TIME_ZONE = 'etc/UTC';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DurationRatchet = void 0;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
5
|
+
const number_ratchet_1 = require("./number-ratchet");
|
|
6
|
+
class DurationRatchet {
|
|
7
|
+
static formatMsDuration(ms, includeMS = false) {
|
|
8
|
+
const rem_ms = Math.floor(ms % 1000);
|
|
9
|
+
const seconds = Math.floor(ms / 1000) % 60;
|
|
10
|
+
const minutes = Math.floor(ms / (1000 * 60)) % 60;
|
|
11
|
+
const hours = Math.floor(ms / (1000 * 60 * 60)) % 24;
|
|
12
|
+
const days = Math.floor(ms / (1000 * 60 * 60 * 24));
|
|
13
|
+
const f = number_ratchet_1.NumberRatchet.leadingZeros;
|
|
14
|
+
let rval = f(hours, 2) + 'h' + f(minutes, 2) + 'm';
|
|
15
|
+
rval += includeMS ? f(seconds, 2) + '.' + f(rem_ms, 3) + 's' : f(seconds, 2) + 's';
|
|
16
|
+
if (days > 0) {
|
|
17
|
+
rval = days + 'd' + rval;
|
|
18
|
+
}
|
|
19
|
+
return rval;
|
|
20
|
+
}
|
|
21
|
+
static colonFormatMsDuration(ms, includeMS = false) {
|
|
22
|
+
const rem_ms = ms % 1000;
|
|
23
|
+
const seconds = Math.floor(ms / 1000) % 60;
|
|
24
|
+
const minutes = Math.floor(ms / (1000 * 60)) % 60;
|
|
25
|
+
const hours = Math.floor(ms / (1000 * 60 * 60));
|
|
26
|
+
const f = number_ratchet_1.NumberRatchet.leadingZeros;
|
|
27
|
+
let rval = f(hours, 2) + ':' + f(minutes, 2) + ':';
|
|
28
|
+
rval += includeMS ? f(seconds, 2) + '.' + f(rem_ms, 3) : f(seconds, 2);
|
|
29
|
+
return rval;
|
|
30
|
+
}
|
|
31
|
+
static daysBetween(d1, d2) {
|
|
32
|
+
const dur = luxon_1.DateTime.fromJSDate(d1).diff(luxon_1.DateTime.fromJSDate(d2));
|
|
33
|
+
return dur.days;
|
|
34
|
+
}
|
|
35
|
+
static createSteps(startEpochMS, endEpochMS, timezone, outputFormat, stepUnit) {
|
|
36
|
+
let curDate = luxon_1.DateTime.fromMillis(startEpochMS).setZone(timezone);
|
|
37
|
+
const endDate = luxon_1.DateTime.fromMillis(endEpochMS);
|
|
38
|
+
const rval = [];
|
|
39
|
+
while (curDate < endDate) {
|
|
40
|
+
rval.push(curDate.toFormat(outputFormat));
|
|
41
|
+
curDate = curDate.plus(stepUnit);
|
|
42
|
+
}
|
|
43
|
+
return rval;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.DurationRatchet = DurationRatchet;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnumRatchet = void 0;
|
|
4
|
+
const ts_enum_util_1 = require("ts-enum-util");
|
|
5
|
+
const string_ratchet_1 = require("./string-ratchet");
|
|
6
|
+
class EnumRatchet {
|
|
7
|
+
static listEnumKeys(enumeration) {
|
|
8
|
+
const rval = (0, ts_enum_util_1.$enum)(enumeration).getValues();
|
|
9
|
+
return rval;
|
|
10
|
+
}
|
|
11
|
+
static keyToEnum(enumeration, val, caseSensitive = false) {
|
|
12
|
+
const e = (0, ts_enum_util_1.$enum)(enumeration);
|
|
13
|
+
let rval = null;
|
|
14
|
+
if (!!val) {
|
|
15
|
+
rval = e.asValueOrDefault(val, null);
|
|
16
|
+
if (!rval && !caseSensitive) {
|
|
17
|
+
const keys = EnumRatchet.listEnumKeys(enumeration);
|
|
18
|
+
const mKey = keys.find((k) => k.toUpperCase() === val.toUpperCase());
|
|
19
|
+
if (!!mKey) {
|
|
20
|
+
rval = e.asValueOrDefault(mKey, null);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return rval;
|
|
25
|
+
}
|
|
26
|
+
static parseCsvToEnumArray(enumeration, input) {
|
|
27
|
+
const split = string_ratchet_1.StringRatchet.trimToEmpty(input)
|
|
28
|
+
.split(',')
|
|
29
|
+
.map((s) => s.trim());
|
|
30
|
+
const rval = split.map((s) => EnumRatchet.keyToEnum(enumeration, s)).filter((s) => !!s);
|
|
31
|
+
return rval;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.EnumRatchet = EnumRatchet;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrorRatchet = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const logger_1 = require("../logger/logger");
|
|
6
|
+
const util_1 = tslib_1.__importDefault(require("util"));
|
|
7
|
+
class ErrorRatchet {
|
|
8
|
+
static safeStringifyErr(err, log = true) {
|
|
9
|
+
let rval = 'ERR WAS NULL';
|
|
10
|
+
if (err) {
|
|
11
|
+
if (err['message']) {
|
|
12
|
+
rval = err['message'];
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
try {
|
|
16
|
+
rval = JSON.stringify(err);
|
|
17
|
+
}
|
|
18
|
+
catch (err2) {
|
|
19
|
+
logger_1.Logger.error('Failed to json stringify');
|
|
20
|
+
rval = String(err);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (log) {
|
|
25
|
+
logger_1.Logger.error('%s', rval, err);
|
|
26
|
+
}
|
|
27
|
+
return rval;
|
|
28
|
+
}
|
|
29
|
+
static asErr(input) {
|
|
30
|
+
let rval = null;
|
|
31
|
+
if (input) {
|
|
32
|
+
if (input instanceof Error) {
|
|
33
|
+
rval = input;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
rval = new Error('Force-Cast to error : ' + String(input));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return rval;
|
|
40
|
+
}
|
|
41
|
+
static fErr(format, ...input) {
|
|
42
|
+
const msg = util_1.default.format(format, ...input);
|
|
43
|
+
return new Error(msg);
|
|
44
|
+
}
|
|
45
|
+
static throwFormattedErr(format, ...input) {
|
|
46
|
+
throw ErrorRatchet.fErr(format, ...input);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ErrorRatchet = ErrorRatchet;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExpiringObjectConfig = exports.ExpiringObject = void 0;
|
|
4
|
+
const logger_1 = require("../logger/logger");
|
|
5
|
+
const error_ratchet_1 = require("./error-ratchet");
|
|
6
|
+
const logger_level_name_1 = require("../logger/logger-level-name");
|
|
7
|
+
class ExpiringObject {
|
|
8
|
+
constructor(inputConfig) {
|
|
9
|
+
this._config = Object.assign({}, this.defaultConfig(), inputConfig || {});
|
|
10
|
+
if (this._config.overrideTimeRemainingMS && this._config.timeToLiveMS) {
|
|
11
|
+
error_ratchet_1.ErrorRatchet.throwFormattedErr('Cannot define both time to live and overrideTimeRemainingMS');
|
|
12
|
+
}
|
|
13
|
+
if (!this._config.overrideTimeRemainingMS && !this._config.timeToLiveMS) {
|
|
14
|
+
error_ratchet_1.ErrorRatchet.throwFormattedErr('Must define exactly one of timeToLiveMS or overrideTimeRemainingMS');
|
|
15
|
+
}
|
|
16
|
+
if (this._config.initialValue) {
|
|
17
|
+
this.update(this._config.initialValue);
|
|
18
|
+
}
|
|
19
|
+
this._timeRemainingMS = this._config.overrideTimeRemainingMS || this.defaultTimeRemainingMS;
|
|
20
|
+
}
|
|
21
|
+
defaultConfig() {
|
|
22
|
+
const rval = {
|
|
23
|
+
generator: null,
|
|
24
|
+
initialValue: null,
|
|
25
|
+
logLevel: logger_level_name_1.LoggerLevelName.debug,
|
|
26
|
+
overrideTimeRemainingMS: null,
|
|
27
|
+
timeToLiveMS: 1000 * 60,
|
|
28
|
+
};
|
|
29
|
+
return rval;
|
|
30
|
+
}
|
|
31
|
+
async defaultTimeRemainingMS(lastUpdatedEpochMS) {
|
|
32
|
+
let rval = 0;
|
|
33
|
+
if (lastUpdatedEpochMS) {
|
|
34
|
+
const ageMS = new Date().getTime() - lastUpdatedEpochMS;
|
|
35
|
+
rval = Math.max(0, this._config.timeToLiveMS - ageMS);
|
|
36
|
+
}
|
|
37
|
+
return rval;
|
|
38
|
+
}
|
|
39
|
+
update(newValue, doNotUpdateClock = false) {
|
|
40
|
+
this._cacheObject = newValue;
|
|
41
|
+
if (!doNotUpdateClock) {
|
|
42
|
+
this._lastUpdatedEpochMS = new Date().getTime();
|
|
43
|
+
}
|
|
44
|
+
logger_1.Logger.logByLevel(this._config.logLevel, 'Updated cache value to %j', newValue);
|
|
45
|
+
}
|
|
46
|
+
async fetchCacheObjectTimeRemainingMS() {
|
|
47
|
+
return this._timeRemainingMS(this._lastUpdatedEpochMS);
|
|
48
|
+
}
|
|
49
|
+
async fetch() {
|
|
50
|
+
const remainMS = await this._timeRemainingMS(this._lastUpdatedEpochMS);
|
|
51
|
+
if (!remainMS) {
|
|
52
|
+
this._cacheObject = null;
|
|
53
|
+
this._lastUpdatedEpochMS = null;
|
|
54
|
+
}
|
|
55
|
+
if (!this._cacheObject) {
|
|
56
|
+
if (this._config.generator) {
|
|
57
|
+
const newValue = await this._config.generator();
|
|
58
|
+
logger_1.Logger.logByLevel(this._config.logLevel, 'Auto call to generator returned %j', newValue);
|
|
59
|
+
this.update(newValue);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return this._cacheObject;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.ExpiringObject = ExpiringObject;
|
|
66
|
+
class ExpiringObjectConfig {
|
|
67
|
+
}
|
|
68
|
+
exports.ExpiringObjectConfig = ExpiringObjectConfig;
|