@bitblit/ratchet-common 4.0.128-alpha → 4.0.130-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/line-2d.js +2 -0
- package/lib/2d/line-2d.js.map +1 -0
- package/lib/2d/plane-2d.js +2 -0
- package/lib/2d/plane-2d.js.map +1 -0
- package/lib/2d/point-2d.js +2 -0
- package/lib/2d/point-2d.js.map +1 -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.js +246 -0
- package/lib/2d/ratchet-2d.js.map +1 -0
- package/lib/2d/ratchet-2d.spec.js +118 -0
- package/lib/2d/ratchet-2d.spec.js.map +1 -0
- package/lib/build/build-information.js +2 -0
- package/lib/build/build-information.js.map +1 -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.js +2 -0
- package/lib/histogram/histogram-entry.js.map +1 -0
- package/lib/histogram/histogram.js +49 -0
- package/lib/histogram/histogram.js.map +1 -0
- package/lib/histogram/histogram.spec.js +20 -0
- package/lib/histogram/histogram.spec.js.map +1 -0
- package/lib/index.js +74 -0
- package/lib/index.js.map +1 -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.js +7 -0
- package/lib/jwt/expired-jwt-handling.js.map +1 -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.js +166 -0
- package/lib/jwt/jwt-ratchet.js.map +1 -0
- package/lib/jwt/jwt-ratchet.spec.js +50 -0
- package/lib/jwt/jwt-ratchet.spec.js.map +1 -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.js +84 -0
- package/lib/lang/array-ratchet.js.map +1 -0
- package/lib/lang/array-ratchet.spec.js +69 -0
- package/lib/lang/array-ratchet.spec.js.map +1 -0
- package/lib/lang/base64-ratchet.d.ts +1 -1
- package/lib/lang/base64-ratchet.js +46 -0
- package/lib/lang/base64-ratchet.js.map +1 -0
- package/lib/lang/base64-ratchet.spec.js +29 -0
- package/lib/lang/base64-ratchet.spec.js.map +1 -0
- package/lib/lang/boolean-ratchet.js +46 -0
- package/lib/lang/boolean-ratchet.js.map +1 -0
- package/lib/lang/boolean-ratchet.spec.js +82 -0
- package/lib/lang/boolean-ratchet.spec.js.map +1 -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/composite-last-success-provider.spec.js +27 -0
- package/lib/lang/composite-last-success-provider.spec.js.map +1 -0
- package/lib/lang/date-ratchet.js +31 -0
- package/lib/lang/date-ratchet.js.map +1 -0
- package/lib/lang/date-ratchet.spec.js +22 -0
- package/lib/lang/date-ratchet.spec.js.map +1 -0
- package/lib/lang/duration-ratchet.js +43 -0
- package/lib/lang/duration-ratchet.js.map +1 -0
- package/lib/lang/duration-ratchet.spec.js +40 -0
- package/lib/lang/duration-ratchet.spec.js.map +1 -0
- package/lib/lang/enum-ratchet.js +31 -0
- package/lib/lang/enum-ratchet.js.map +1 -0
- package/lib/lang/enum-ratchet.spec.js +32 -0
- package/lib/lang/enum-ratchet.spec.js.map +1 -0
- package/lib/lang/error-ratchet.js +45 -0
- package/lib/lang/error-ratchet.js.map +1 -0
- package/lib/lang/error-ratchet.spec.js +21 -0
- package/lib/lang/error-ratchet.spec.js.map +1 -0
- package/lib/lang/esm-ratchet.js +18 -0
- package/lib/lang/esm-ratchet.js.map +1 -0
- package/lib/lang/expiring-object.js +73 -0
- package/lib/lang/expiring-object.js.map +1 -0
- package/lib/lang/expiring-object.spec.js +52 -0
- package/lib/lang/expiring-object.spec.js.map +1 -0
- package/lib/lang/geolocation-ratchet.js +264 -0
- package/lib/lang/geolocation-ratchet.js.map +1 -0
- package/lib/lang/geolocation-ratchet.spec.js +75 -0
- package/lib/lang/geolocation-ratchet.spec.js.map +1 -0
- package/lib/lang/global-ratchet.js +44 -0
- package/lib/lang/global-ratchet.js.map +1 -0
- package/lib/lang/global-ratchet.spec.js +15 -0
- package/lib/lang/global-ratchet.spec.js.map +1 -0
- package/lib/lang/key-value.js +5 -0
- package/lib/lang/key-value.js.map +1 -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.js +165 -0
- package/lib/lang/map-ratchet.js.map +1 -0
- package/lib/lang/map-ratchet.spec.js +91 -0
- package/lib/lang/map-ratchet.spec.js.map +1 -0
- package/lib/lang/no.js +5 -0
- package/lib/lang/no.js.map +1 -0
- package/lib/lang/no.spec.js +8 -0
- package/lib/lang/no.spec.js.map +1 -0
- package/lib/lang/number-ratchet.js +157 -0
- package/lib/lang/number-ratchet.js.map +1 -0
- package/lib/lang/number-ratchet.spec.js +119 -0
- package/lib/lang/number-ratchet.spec.js.map +1 -0
- package/lib/lang/parsed-url.js +2 -0
- package/lib/lang/parsed-url.js.map +1 -0
- package/lib/lang/promise-ratchet.js +139 -0
- package/lib/lang/promise-ratchet.js.map +1 -0
- package/lib/lang/promise-ratchet.spec.js +75 -0
- package/lib/lang/promise-ratchet.spec.js.map +1 -0
- package/lib/lang/require-ratchet.js +56 -0
- package/lib/lang/require-ratchet.js.map +1 -0
- package/lib/lang/require-ratchet.spec.js +81 -0
- package/lib/lang/require-ratchet.spec.js.map +1 -0
- package/lib/lang/stop-watch.js +115 -0
- package/lib/lang/stop-watch.js.map +1 -0
- package/lib/lang/string-ratchet.js +203 -0
- package/lib/lang/string-ratchet.js.map +1 -0
- package/lib/lang/string-ratchet.spec.js +159 -0
- package/lib/lang/string-ratchet.spec.js.map +1 -0
- package/lib/lang/time-zone-ratchet.js +79 -0
- package/lib/lang/time-zone-ratchet.js.map +1 -0
- package/lib/lang/time-zone-ratchet.spec.js +41 -0
- package/lib/lang/time-zone-ratchet.spec.js.map +1 -0
- package/lib/lang/timeout-token.js +18 -0
- package/lib/lang/timeout-token.js.map +1 -0
- package/lib/lang/timeout-token.spec.js +10 -0
- package/lib/lang/timeout-token.spec.js.map +1 -0
- package/lib/lang/transform-ratchet.js +67 -0
- package/lib/lang/transform-ratchet.js.map +1 -0
- package/lib/lang/transform-ratchet.spec.js +119 -0
- package/lib/lang/transform-ratchet.spec.js.map +1 -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/log-message-builder.js +49 -0
- package/lib/logger/log-message-builder.js.map +1 -0
- package/lib/logger/log-message-format-type.js +7 -0
- package/lib/logger/log-message-format-type.js.map +1 -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.js +2 -0
- package/lib/logger/log-message-processor.js.map +1 -0
- package/lib/logger/log-message.js +2 -0
- package/lib/logger/log-message.js.map +1 -0
- package/lib/logger/log-snapshot.js +2 -0
- package/lib/logger/log-snapshot.js.map +1 -0
- package/lib/logger/logger-instance.js +209 -0
- package/lib/logger/logger-instance.js.map +1 -0
- package/lib/logger/logger-level-name.js +10 -0
- package/lib/logger/logger-level-name.js.map +1 -0
- package/lib/logger/logger-meta.js +2 -0
- package/lib/logger/logger-meta.js.map +1 -0
- package/lib/logger/logger-options.js +2 -0
- package/lib/logger/logger-options.js.map +1 -0
- package/lib/logger/logger-output-function.js +7 -0
- package/lib/logger/logger-output-function.js.map +1 -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.js +46 -0
- package/lib/logger/logger-util.js.map +1 -0
- package/lib/logger/logger-util.spec.js +10 -0
- package/lib/logger/logger-util.spec.js.map +1 -0
- package/lib/logger/logger.js +136 -0
- package/lib/logger/logger.js.map +1 -0
- package/lib/logger/logger.spec.js +135 -0
- package/lib/logger/logger.spec.js.map +1 -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.js +20 -0
- package/lib/logger/structured-json-log-message-formatter.js.map +1 -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/browser-local-ip-provider.spec.js +17 -0
- package/lib/network/browser-local-ip-provider.spec.js.map +1 -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/local-ip-provider.js +2 -0
- package/lib/network/local-ip-provider.js.map +1 -0
- package/lib/network/network-ratchet.js +104 -0
- package/lib/network/network-ratchet.js.map +1 -0
- package/lib/network/network-ratchet.spec.js +14 -0
- package/lib/network/network-ratchet.spec.js.map +1 -0
- package/lib/stream/buffer-writable.d.ts +2 -2
- package/lib/stream/buffer-writable.js +17 -0
- package/lib/stream/buffer-writable.js.map +1 -0
- package/lib/stream/multi-stream.d.ts +1 -1
- package/lib/stream/multi-stream.js +13 -0
- package/lib/stream/multi-stream.js.map +1 -0
- package/lib/stream/stream-ratchet.d.ts +2 -2
- package/lib/stream/stream-ratchet.js +69 -0
- package/lib/stream/stream-ratchet.js.map +1 -0
- package/lib/stream/stream-ratchet.spec.js +14 -0
- package/lib/stream/stream-ratchet.spec.js.map +1 -0
- package/lib/stream/string-writable.d.ts +1 -1
- package/lib/stream/string-writable.js +15 -0
- package/lib/stream/string-writable.js.map +1 -0
- package/lib/stream/string-writable.spec.js +13 -0
- package/lib/stream/string-writable.spec.js.map +1 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js +30 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js.map +1 -0
- package/lib/third-party/google/google-recaptcha-ratchet.spec.js +21 -0
- package/lib/third-party/google/google-recaptcha-ratchet.spec.js.map +1 -0
- package/lib/third-party/twilio/twilio-ratchet.js +75 -0
- package/lib/third-party/twilio/twilio-ratchet.js.map +1 -0
- package/lib/transform/built-in-transforms.js +192 -0
- package/lib/transform/built-in-transforms.js.map +1 -0
- package/lib/transform/transform-rule.js +2 -0
- package/lib/transform/transform-rule.js.map +1 -0
- package/lib/tx/transaction-configuration.js +2 -0
- package/lib/tx/transaction-configuration.js.map +1 -0
- package/lib/tx/transaction-final-state.js +7 -0
- package/lib/tx/transaction-final-state.js.map +1 -0
- package/lib/tx/transaction-ratchet.js +77 -0
- package/lib/tx/transaction-ratchet.js.map +1 -0
- package/lib/tx/transaction-ratchet.spec.js +131 -0
- package/lib/tx/transaction-ratchet.spec.js.map +1 -0
- package/lib/tx/transaction-result.js +2 -0
- package/lib/tx/transaction-result.js.map +1 -0
- package/lib/tx/transaction-step.js +2 -0
- package/lib/tx/transaction-step.js.map +1 -0
- package/package.json +3 -2
- package/lib/index.mjs +0 -4
- package/lib/index.mjs.map +0 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { MapRatchet } from './map-ratchet.js';
|
|
2
|
+
describe('#toKeyValueList', function () {
|
|
3
|
+
it('should expand a maps nested keys', function () {
|
|
4
|
+
const test = { 'a.b': 'c', 'c.d[0].e': 2 };
|
|
5
|
+
const out = MapRatchet.expandNestedKeys(test);
|
|
6
|
+
expect(out).toBeTruthy();
|
|
7
|
+
expect(out.a).toBeTruthy();
|
|
8
|
+
expect(out.a.b).toBeTruthy();
|
|
9
|
+
expect(out.a.b).toEqual('c');
|
|
10
|
+
expect(out.c).toBeTruthy();
|
|
11
|
+
expect(out.c.d).toBeTruthy();
|
|
12
|
+
expect(out.c.d.length).toEqual(1);
|
|
13
|
+
expect(out.c.d[0].e).toBeTruthy();
|
|
14
|
+
expect(out.c.d[0].e).toEqual(2);
|
|
15
|
+
});
|
|
16
|
+
it('should convert a map to a key-value list and back', function () {
|
|
17
|
+
const test = { key1: 'value1', key2: 'value2' };
|
|
18
|
+
const kvl = MapRatchet.toKeyValueList(test);
|
|
19
|
+
expect(kvl.length).toEqual(2);
|
|
20
|
+
const back = MapRatchet.fromKeyValueList(kvl);
|
|
21
|
+
expect(back['key1']).toEqual('value1');
|
|
22
|
+
expect(back['key2']).toEqual('value2');
|
|
23
|
+
});
|
|
24
|
+
it('should remove null and empty strings but not 0', function () {
|
|
25
|
+
const test = {
|
|
26
|
+
key1: '',
|
|
27
|
+
key2: null,
|
|
28
|
+
key3: 0,
|
|
29
|
+
key4: 'fine',
|
|
30
|
+
key5: {
|
|
31
|
+
key6: null,
|
|
32
|
+
key7: 'also_fine',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
const clean = MapRatchet.cleanup(test);
|
|
36
|
+
expect(Object.keys(clean).length).toEqual(3);
|
|
37
|
+
expect(Object.keys(clean).indexOf('key1')).toEqual(-1);
|
|
38
|
+
expect(Object.keys(clean).indexOf('key2')).toEqual(-1);
|
|
39
|
+
expect(Object.keys(clean).indexOf('key3')).toBeGreaterThan(-1);
|
|
40
|
+
expect(Object.keys(clean).indexOf('key4')).toBeGreaterThan(-1);
|
|
41
|
+
expect(Object.keys(clean).indexOf('key5')).toBeGreaterThan(-1);
|
|
42
|
+
expect(clean['key5']['key7']).toEqual('also_fine');
|
|
43
|
+
});
|
|
44
|
+
it('should extract values ignoring case', function () {
|
|
45
|
+
const test = {
|
|
46
|
+
'this-Test': 'a',
|
|
47
|
+
test22: 'b',
|
|
48
|
+
};
|
|
49
|
+
expect(MapRatchet.extractValueFromMapIgnoreCase(test, 'THIS-TEST')).toEqual('a');
|
|
50
|
+
expect(MapRatchet.extractValueFromMapIgnoreCase(test, 'tEst22')).toEqual('b');
|
|
51
|
+
});
|
|
52
|
+
it('should group values', function () {
|
|
53
|
+
const test = [
|
|
54
|
+
{
|
|
55
|
+
id: 1,
|
|
56
|
+
type: 'a',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 2,
|
|
60
|
+
type: 'a',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: 3,
|
|
64
|
+
type: 'b',
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
const grouped = MapRatchet.groupByProperty(test, 'type');
|
|
68
|
+
expect(grouped).toBeTruthy();
|
|
69
|
+
const aGroup = grouped.get('a');
|
|
70
|
+
expect(aGroup).toBeTruthy();
|
|
71
|
+
expect(aGroup.length).toEqual(2);
|
|
72
|
+
expect(grouped.has('b')).toBeTruthy();
|
|
73
|
+
expect(grouped.has('c')).toBeFalsy();
|
|
74
|
+
});
|
|
75
|
+
it('should fetch a value with a case-insensitive key', function () {
|
|
76
|
+
const testOb = {
|
|
77
|
+
test1: 'a',
|
|
78
|
+
Test2: 'b',
|
|
79
|
+
test3: 'c',
|
|
80
|
+
Test3: 'd',
|
|
81
|
+
};
|
|
82
|
+
expect(MapRatchet.caseInsensitiveAccess(null, null)).toBeNull();
|
|
83
|
+
expect(MapRatchet.caseInsensitiveAccess({}, null)).toBeNull();
|
|
84
|
+
expect(MapRatchet.caseInsensitiveAccess(null, 'a')).toBeNull();
|
|
85
|
+
expect(MapRatchet.caseInsensitiveAccess(testOb, 'test1')).toEqual('a');
|
|
86
|
+
expect(MapRatchet.caseInsensitiveAccess(testOb, 'test2')).toEqual('b');
|
|
87
|
+
expect(MapRatchet.caseInsensitiveAccess(testOb, 'TEST2')).toEqual('b');
|
|
88
|
+
expect(MapRatchet.caseInsensitiveAccess(testOb, 'test3')).toEqual('c');
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=map-ratchet.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-ratchet.spec.js","sourceRoot":"","sources":["../../src/lang/map-ratchet.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/lang/no.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no.js","sourceRoot":"","sources":["../../src/lang/no.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,EAAE;IAEN,MAAM,CAAC,EAAE,CAAC,GAAG,IAAW;IAE/B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no.spec.js","sourceRoot":"","sources":["../../src/lang/no.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,QAAQ,CAAC,KAAK,EAAE;IACd,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { Logger } from '../logger/logger.js';
|
|
2
|
+
import { RequireRatchet } from './require-ratchet.js';
|
|
3
|
+
class NumberRatchet {
|
|
4
|
+
static MAX_LEADING_ZEROS_FORMAT_LENGTH = 1000;
|
|
5
|
+
static toFixedDecimalNumber(input, placesAfterPoint) {
|
|
6
|
+
const v = NumberRatchet.safeNumber(input);
|
|
7
|
+
return v === null || v === undefined ? v : NumberRatchet.safeNumber(v.toFixed(placesAfterPoint));
|
|
8
|
+
}
|
|
9
|
+
static leadingZeros(val, size) {
|
|
10
|
+
const sVal = String(val);
|
|
11
|
+
if (sVal.length < size) {
|
|
12
|
+
let pad = '0000';
|
|
13
|
+
if (size > NumberRatchet.MAX_LEADING_ZEROS_FORMAT_LENGTH) {
|
|
14
|
+
throw 'Cannot format number that large (max length is ' + NumberRatchet.MAX_LEADING_ZEROS_FORMAT_LENGTH + ')';
|
|
15
|
+
}
|
|
16
|
+
while (pad.length < size) {
|
|
17
|
+
pad = pad + pad;
|
|
18
|
+
}
|
|
19
|
+
return (pad + sVal).slice(-1 * size);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return sVal;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
static between(inTest, inP1, inP2) {
|
|
26
|
+
const test = NumberRatchet.safeNumber(inTest);
|
|
27
|
+
const p1 = NumberRatchet.safeNumber(inP1);
|
|
28
|
+
const p2 = NumberRatchet.safeNumber(inP2);
|
|
29
|
+
return (test >= p1 && test <= p2) || (test >= p2 && test <= p1);
|
|
30
|
+
}
|
|
31
|
+
static safeNumber(input, ifNotNumber = null, useDefaultForNullAndUndefined) {
|
|
32
|
+
let rval = undefined;
|
|
33
|
+
if (input !== null && input !== undefined) {
|
|
34
|
+
const type = typeof input;
|
|
35
|
+
if (type == 'number') {
|
|
36
|
+
rval = input;
|
|
37
|
+
}
|
|
38
|
+
else if (type == 'string') {
|
|
39
|
+
if (input.trim().length === 0) {
|
|
40
|
+
rval = ifNotNumber;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
rval = Number.parseFloat(input);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
Logger.warn('Value is of type %s, returning default', type);
|
|
48
|
+
rval = ifNotNumber;
|
|
49
|
+
}
|
|
50
|
+
if (isNaN(rval)) {
|
|
51
|
+
Logger.debug('Parsed string to NaN - using NaN value from param');
|
|
52
|
+
rval = ifNotNumber;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
rval = useDefaultForNullAndUndefined ? ifNotNumber : input;
|
|
57
|
+
}
|
|
58
|
+
return rval;
|
|
59
|
+
}
|
|
60
|
+
static numberCSVToList(inputCSV) {
|
|
61
|
+
let rval = null;
|
|
62
|
+
if (inputCSV) {
|
|
63
|
+
rval = inputCSV.split(',').map((s) => {
|
|
64
|
+
return NumberRatchet.safeNumber(s.trim());
|
|
65
|
+
});
|
|
66
|
+
rval = rval.filter((r) => typeof r === 'number' && !isNaN(r));
|
|
67
|
+
}
|
|
68
|
+
return rval;
|
|
69
|
+
}
|
|
70
|
+
static fitToWindow(val, b1, b2) {
|
|
71
|
+
let rval = val;
|
|
72
|
+
if (val === null || b1 === null || b2 === null || b1 < 0 || b2 < 0 || val < 0) {
|
|
73
|
+
throw new Error('All values must be non-null and larger than 0');
|
|
74
|
+
}
|
|
75
|
+
const low = Math.min(b1, b2);
|
|
76
|
+
const high = Math.max(b1, b2);
|
|
77
|
+
const windowSize = high - low;
|
|
78
|
+
if (high === low) {
|
|
79
|
+
rval = high;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
while (rval < low) {
|
|
83
|
+
rval += windowSize;
|
|
84
|
+
}
|
|
85
|
+
while (rval > high) {
|
|
86
|
+
rval -= windowSize;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return rval;
|
|
90
|
+
}
|
|
91
|
+
static groupNumbersIntoContiguousRanges(inputData, minRangeSize = 3) {
|
|
92
|
+
RequireRatchet.notNullOrUndefined(inputData);
|
|
93
|
+
const input = Object.assign([], inputData);
|
|
94
|
+
input.sort((a, b) => a - b);
|
|
95
|
+
const singles = [];
|
|
96
|
+
const ranges = [];
|
|
97
|
+
let start = 0;
|
|
98
|
+
for (let i = 1; i < input.length; i++) {
|
|
99
|
+
if (input[i] === input[i - 1] + 1) {
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
if (start === i - 1) {
|
|
103
|
+
singles.push(input[i - 1]);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
const rangeSize = i - start;
|
|
107
|
+
if (rangeSize < minRangeSize) {
|
|
108
|
+
for (let j = start; j < i; j++) {
|
|
109
|
+
singles.push(input[j]);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
ranges.push({
|
|
114
|
+
min: input[start],
|
|
115
|
+
max: input[i - 1],
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
start = i;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
singles: singles,
|
|
124
|
+
ranges: ranges,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
static distributeItemsEvenly(items, buckets) {
|
|
128
|
+
RequireRatchet.notNullOrUndefined(items, 'items');
|
|
129
|
+
RequireRatchet.notNullOrUndefined(buckets, 'buckets');
|
|
130
|
+
RequireRatchet.true(items > 0 && items === Math.floor(items), 'Items integer larger than 0');
|
|
131
|
+
RequireRatchet.true(buckets > 0 && buckets === Math.floor(buckets), 'Buckets integer larger than 0');
|
|
132
|
+
const offset = buckets / items;
|
|
133
|
+
const rval = [];
|
|
134
|
+
for (let i = 0; i < buckets; i++) {
|
|
135
|
+
rval.push(0);
|
|
136
|
+
}
|
|
137
|
+
let loc = 0;
|
|
138
|
+
let rem = items;
|
|
139
|
+
while (rem > 0) {
|
|
140
|
+
rval[Math.floor(loc) % buckets]++;
|
|
141
|
+
rem--;
|
|
142
|
+
loc += offset;
|
|
143
|
+
}
|
|
144
|
+
return rval;
|
|
145
|
+
}
|
|
146
|
+
static createRange(minInclusive, maxExclusive, step = 1) {
|
|
147
|
+
const rval = [];
|
|
148
|
+
let val = minInclusive;
|
|
149
|
+
while (val < maxExclusive) {
|
|
150
|
+
rval.push(val);
|
|
151
|
+
val += step;
|
|
152
|
+
}
|
|
153
|
+
return rval;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
export { NumberRatchet };
|
|
157
|
+
//# sourceMappingURL=number-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-ratchet.js","sourceRoot":"","sources":["../../src/lang/number-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { NumberRatchet } from './number-ratchet.js';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { EsmRatchet } from './esm-ratchet.js';
|
|
5
|
+
describe('#toFixedDecimalNumber', function () {
|
|
6
|
+
it('should convert "5.1234 to 5.12', function () {
|
|
7
|
+
expect(NumberRatchet.toFixedDecimalNumber(5.1234, 2)).toEqual(5.12);
|
|
8
|
+
expect(NumberRatchet.toFixedDecimalNumber('5.1234', 2)).toEqual(5.12);
|
|
9
|
+
});
|
|
10
|
+
it('should convert "5.5678 to 5.57', function () {
|
|
11
|
+
expect(NumberRatchet.toFixedDecimalNumber(5.5678, 2)).toEqual(5.57);
|
|
12
|
+
expect(NumberRatchet.toFixedDecimalNumber('5.5678', 2)).toEqual(5.57);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe('#leadingZeros', function () {
|
|
16
|
+
it('should convert "5" to 05', function () {
|
|
17
|
+
const result = NumberRatchet.leadingZeros('5', 2);
|
|
18
|
+
expect(result).toEqual('05');
|
|
19
|
+
});
|
|
20
|
+
it('should leave 166 alone', function () {
|
|
21
|
+
const result = NumberRatchet.leadingZeros('166', 2);
|
|
22
|
+
expect(result).toEqual('166');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('#safeToNumber', function () {
|
|
26
|
+
it('should convert "55" to 55', function () {
|
|
27
|
+
const result = NumberRatchet.safeNumber('55');
|
|
28
|
+
expect(result).toEqual(55);
|
|
29
|
+
});
|
|
30
|
+
it('should leave 66 alone', function () {
|
|
31
|
+
const result = NumberRatchet.safeNumber(66);
|
|
32
|
+
expect(result).toEqual(66);
|
|
33
|
+
});
|
|
34
|
+
it('should return the default when it cannot parse', function () {
|
|
35
|
+
const result = NumberRatchet.safeNumber({ test: 'test' }, 42);
|
|
36
|
+
expect(result).toEqual(42);
|
|
37
|
+
});
|
|
38
|
+
it('should return the default for the empty string', function () {
|
|
39
|
+
const result = NumberRatchet.safeNumber({ test: '' }, 42);
|
|
40
|
+
expect(result).toEqual(42);
|
|
41
|
+
});
|
|
42
|
+
it('should return the default for null/undefined if set true', function () {
|
|
43
|
+
const result = NumberRatchet.safeNumber(null, 42, true);
|
|
44
|
+
expect(result).toEqual(42);
|
|
45
|
+
const result2 = NumberRatchet.safeNumber(undefined, 46, true);
|
|
46
|
+
expect(result2).toEqual(46);
|
|
47
|
+
});
|
|
48
|
+
it('should return the passed value for null/undefined if set false', function () {
|
|
49
|
+
const result = NumberRatchet.safeNumber(null, 42, false);
|
|
50
|
+
expect(result).toEqual(null);
|
|
51
|
+
const result2 = NumberRatchet.safeNumber(undefined, 46, false);
|
|
52
|
+
expect(result2).toEqual(undefined);
|
|
53
|
+
});
|
|
54
|
+
it('should return the passed value for null/undefined if not set', function () {
|
|
55
|
+
const result = NumberRatchet.safeNumber(null, 42);
|
|
56
|
+
expect(result).toEqual(null);
|
|
57
|
+
const result2 = NumberRatchet.safeNumber(undefined, 46);
|
|
58
|
+
expect(result2).toEqual(undefined);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('#parseCSV', function () {
|
|
62
|
+
it('should convert "1,2,3" to [1,2,3]', function () {
|
|
63
|
+
const result = NumberRatchet.numberCSVToList('1,2,3');
|
|
64
|
+
expect(result.length).toEqual(3);
|
|
65
|
+
});
|
|
66
|
+
it('should convert " 1, 2,3 " to [1,2,3]', function () {
|
|
67
|
+
const result = NumberRatchet.numberCSVToList(' 1, 2,3 ');
|
|
68
|
+
expect(result.length).toEqual(3);
|
|
69
|
+
});
|
|
70
|
+
it('should convert " a1, 2,b " to [2]', function () {
|
|
71
|
+
const result = NumberRatchet.numberCSVToList(' a1, 2,b ');
|
|
72
|
+
expect(result.length).toEqual(1);
|
|
73
|
+
expect(result[0]).toEqual(2);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe('#fitToWindow', function () {
|
|
77
|
+
it('should fit input to the window', function () {
|
|
78
|
+
expect(NumberRatchet.fitToWindow(5, 8, 10)).toEqual(9);
|
|
79
|
+
expect(NumberRatchet.fitToWindow(8, 2, 10)).toEqual(8);
|
|
80
|
+
expect(NumberRatchet.fitToWindow(8, 9, 9)).toEqual(9);
|
|
81
|
+
expect(NumberRatchet.fitToWindow(12, 2, 10)).toEqual(4);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe('#groupNumbersIntoContiguousRanges', function () {
|
|
85
|
+
it('should group numbers', function () {
|
|
86
|
+
let input = JSON.parse(fs.readFileSync(path.join(EsmRatchet.fetchDirName(import.meta.url), '../../../../test-data/number_set.json')).toString());
|
|
87
|
+
input = input.map((i) => NumberRatchet.safeNumber(i));
|
|
88
|
+
const grouped = NumberRatchet.groupNumbersIntoContiguousRanges(input, 5);
|
|
89
|
+
expect(grouped).toBeTruthy();
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('#distributeItemsEvenly', function () {
|
|
93
|
+
it('should distribute evenly', function () {
|
|
94
|
+
const test1 = NumberRatchet.distributeItemsEvenly(4, 6);
|
|
95
|
+
expect(test1).toBeTruthy();
|
|
96
|
+
const test2 = NumberRatchet.distributeItemsEvenly(12, 6);
|
|
97
|
+
expect(test2).toBeTruthy();
|
|
98
|
+
const test3 = NumberRatchet.distributeItemsEvenly(5, 6);
|
|
99
|
+
expect(test3).toBeTruthy();
|
|
100
|
+
const test4 = NumberRatchet.distributeItemsEvenly(192, 11);
|
|
101
|
+
expect(test4).toBeTruthy();
|
|
102
|
+
const test5 = NumberRatchet.distributeItemsEvenly(11, 192);
|
|
103
|
+
expect(test5).toBeTruthy();
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe('#createRange', function () {
|
|
107
|
+
it('should create ranges', function () {
|
|
108
|
+
const test1 = NumberRatchet.createRange(0, 5, 1);
|
|
109
|
+
expect(test1).toBeTruthy();
|
|
110
|
+
expect(test1.length).toEqual(5);
|
|
111
|
+
const test2 = NumberRatchet.createRange(1, 5, 1);
|
|
112
|
+
expect(test2).toBeTruthy();
|
|
113
|
+
expect(test2.length).toEqual(4);
|
|
114
|
+
const test3 = NumberRatchet.createRange(0, 10, 2);
|
|
115
|
+
expect(test3).toBeTruthy();
|
|
116
|
+
expect(test3.length).toEqual(5);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=number-ratchet.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-ratchet.spec.js","sourceRoot":"","sources":["../../src/lang/number-ratchet.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsed-url.js","sourceRoot":"","sources":["../../src/lang/parsed-url.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Logger } from '../logger/logger.js';
|
|
2
|
+
import { ArrayRatchet } from './array-ratchet.js';
|
|
3
|
+
import { TimeoutToken } from './timeout-token.js';
|
|
4
|
+
import { StopWatch } from './stop-watch.js';
|
|
5
|
+
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
6
|
+
export class PromiseRatchet {
|
|
7
|
+
static resolveOnEvent(evtSrc, okEvtNames, errEvtNames = [], rval = null) {
|
|
8
|
+
if (!evtSrc || !okEvtNames || okEvtNames.length === 0 || !evtSrc['on']) {
|
|
9
|
+
Promise.reject('Cannot continue - missing source object or name, or the object is not an event source');
|
|
10
|
+
}
|
|
11
|
+
return new Promise((res, rej) => {
|
|
12
|
+
okEvtNames.forEach((e) => {
|
|
13
|
+
evtSrc.on(e, () => {
|
|
14
|
+
res(rval);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
if (!!errEvtNames) {
|
|
18
|
+
errEvtNames.forEach((e) => {
|
|
19
|
+
evtSrc.on(e, (err) => {
|
|
20
|
+
rej(err);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
static timeout(srcPromise, title, timeoutMS) {
|
|
27
|
+
return Promise.race([srcPromise, PromiseRatchet.createTimeoutPromise(title, timeoutMS)]);
|
|
28
|
+
}
|
|
29
|
+
static createTimeoutPromise(title, timeoutMS) {
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
const id = setTimeout(() => {
|
|
32
|
+
clearTimeout(id);
|
|
33
|
+
const rval = new TimeoutToken(title, timeoutMS);
|
|
34
|
+
resolve(rval);
|
|
35
|
+
}, timeoutMS);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
static async wait(time) {
|
|
39
|
+
await PromiseRatchet.createTimeoutPromise('Wait ' + time, time);
|
|
40
|
+
Logger.silly('Finished wait of %d ms', time);
|
|
41
|
+
}
|
|
42
|
+
static dumpResult(result, autoDebug = false) {
|
|
43
|
+
Logger.info('Success, result was : \n\n%s\n\n', JSON.stringify(result));
|
|
44
|
+
if (autoDebug) {
|
|
45
|
+
debugger;
|
|
46
|
+
}
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
static dumpError(err, autoDebug = false) {
|
|
50
|
+
Logger.warn('Failure, err was : \n\n%s\n\n -- \n\n%s\n\n', JSON.stringify(err), String(err));
|
|
51
|
+
console.trace();
|
|
52
|
+
if (autoDebug) {
|
|
53
|
+
debugger;
|
|
54
|
+
}
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
static logErrorAndReturnNull(err, autoDebug = false) {
|
|
58
|
+
Logger.warn('Failure, err was : \n\n%s\n\n -- \n\n%s\n\n', JSON.stringify(err), String(err));
|
|
59
|
+
if (autoDebug) {
|
|
60
|
+
debugger;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
static runPromiseAndDump(promise) {
|
|
65
|
+
promise.then(PromiseRatchet.dumpResult).catch(PromiseRatchet.dumpError);
|
|
66
|
+
}
|
|
67
|
+
static async waitFor(testFunction, expectedValue, intervalMS, maxCycles, label = 'waitFor', count = 0) {
|
|
68
|
+
if (expectedValue == null || intervalMS < 50 || maxCycles < 1 || count < 0 || typeof testFunction != 'function') {
|
|
69
|
+
Logger.warn('%s: Invalid configuration for waitFor - exiting immediately', label);
|
|
70
|
+
Logger.warn('ExpectedValue : %s ; interval: %d ; maxCycles: %d ; test : %s', expectedValue, intervalMS, maxCycles, typeof testFunction);
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
let curVal = null;
|
|
74
|
+
try {
|
|
75
|
+
curVal = testFunction(count);
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
Logger.warn('%s: Caught error while waiting, giving up', label);
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
if (curVal === null) {
|
|
82
|
+
Logger.debug('%s:CurVal was null - aborting', label);
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
else if (curVal == expectedValue) {
|
|
86
|
+
Logger.debug('%s:Found expected value', label);
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
else if (count > maxCycles) {
|
|
90
|
+
Logger.debug('%s:Exceeded max cycles, giving up', label);
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
Logger.debug('%s : value not reached yet, waiting (count = %d of %d)', label, count, maxCycles);
|
|
95
|
+
await PromiseRatchet.wait(intervalMS);
|
|
96
|
+
return PromiseRatchet.waitFor(testFunction, expectedValue, intervalMS, maxCycles, label, count + 1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
static async runBoundedParallel(promiseFn, params, context, maxConcurrent = 1, logLevel = LoggerLevelName.debug) {
|
|
100
|
+
const sw = new StopWatch();
|
|
101
|
+
let rval = [];
|
|
102
|
+
let remain = params;
|
|
103
|
+
Logger.logByLevel(logLevel, 'Processing %d total elements %d at a time', params.length, maxConcurrent);
|
|
104
|
+
const ctx = context || this;
|
|
105
|
+
let processed = 0;
|
|
106
|
+
const totalCount = remain.length;
|
|
107
|
+
while (remain.length > 0) {
|
|
108
|
+
const curBatch = remain.slice(0, Math.min(remain.length, maxConcurrent));
|
|
109
|
+
remain = remain.slice(curBatch.length);
|
|
110
|
+
const proms = curBatch.map((c) => promiseFn.apply(ctx, c));
|
|
111
|
+
const output = await Promise.all(proms);
|
|
112
|
+
processed += proms.length;
|
|
113
|
+
rval = rval.concat(output);
|
|
114
|
+
const pct = processed / totalCount;
|
|
115
|
+
Logger.logByLevel(logLevel, '%d elements remain : %s', remain.length, sw.dumpExpected(pct));
|
|
116
|
+
}
|
|
117
|
+
sw.log();
|
|
118
|
+
return rval;
|
|
119
|
+
}
|
|
120
|
+
static async runBoundedParallelSingleParam(promiseFn, params, context, maxConcurrent = 1, logLevel = LoggerLevelName.debug) {
|
|
121
|
+
const wrappedParams = ArrayRatchet.wrapElementsInArray(params);
|
|
122
|
+
return PromiseRatchet.runBoundedParallel(promiseFn, wrappedParams, context, maxConcurrent, logLevel);
|
|
123
|
+
}
|
|
124
|
+
static async asyncForEachSerial(array, callback) {
|
|
125
|
+
for (let index = 0; index < array.length; index++) {
|
|
126
|
+
await callback(array[index], index, array);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
static async asyncForEachParallel(array, callback) {
|
|
130
|
+
const proms = [];
|
|
131
|
+
for (let index = 0; index < array.length; index++) {
|
|
132
|
+
proms.push(callback(array[index], index, array));
|
|
133
|
+
}
|
|
134
|
+
await Promise.all(proms);
|
|
135
|
+
}
|
|
136
|
+
constructor() {
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=promise-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise-ratchet.js","sourceRoot":"","sources":["../../src/lang/promise-ratchet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,OAAO,cAAc;IAWlB,MAAM,CAAC,cAAc,CAAI,MAAW,EAAE,UAAoB,EAAE,cAAwB,EAAE,EAAE,OAAU,IAAI;QAC3G,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACtE,OAAO,CAAC,MAAM,CAAC,uFAAuF,CAAC,CAAC;SACzG;QAED,OAAO,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACjC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE;oBAChB,GAAG,CAAC,IAAI,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,CAAC,WAAW,EAAE;gBACjB,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACxB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;wBACnB,GAAG,CAAC,GAAG,CAAC,CAAC;oBACX,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,OAAO,CAAI,UAAsB,EAAE,KAAa,EAAE,SAAiB;QAC/E,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAA8B,CAAC,CAAC,CAAC;IACxH,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,KAAa,EAAE,SAAiB;QAGjE,OAAO,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzB,YAAY,CAAC,EAAE,CAAC,CAAC;gBACjB,MAAM,IAAI,GAAiB,IAAI,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,EAAE,SAAS,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY;QAEnC,MAAM,cAAc,CAAC,oBAAoB,CAAC,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAGM,MAAM,CAAC,UAAU,CAAC,MAAW,EAAE,SAAS,GAAG,KAAK;QACrD,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,IAAI,SAAS,EAAE;YACb,QAAQ,CAAC;SACV;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAGM,MAAM,CAAC,SAAS,CAAC,GAAQ,EAAE,SAAS,GAAG,KAAK;QACjD,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/F,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,SAAS,EAAE;YACb,QAAQ,CAAC;SACV;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAGM,MAAM,CAAC,qBAAqB,CAAC,GAAQ,EAAE,SAAS,GAAG,KAAK;QAC7D,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/F,IAAI,SAAS,EAAE;YACb,QAAQ,CAAC;SACV;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAI,OAAmB;QACpD,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1E,CAAC;IAMM,MAAM,CAAC,KAAK,CAAC,OAAO,CACzB,YAAgC,EAChC,aAAkB,EAClB,UAAkB,EAClB,SAAiB,EACjB,KAAK,GAAG,SAAS,EACjB,KAAK,GAAG,CAAC;QAET,IAAI,aAAa,IAAI,IAAI,IAAI,UAAU,GAAG,EAAE,IAAI,SAAS,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,YAAY,IAAI,UAAU,EAAE;YAC/G,MAAM,CAAC,IAAI,CAAC,6DAA6D,EAAE,KAAK,CAAC,CAAC;YAElF,MAAM,CAAC,IAAI,CACT,+DAA+D,EAC/D,aAAa,EACb,UAAU,EACV,SAAS,EACT,OAAO,YAAY,CACpB,CAAC;YAEF,OAAO,KAAK,CAAC;SACd;QAED,IAAI,MAAM,GAAQ,IAAI,CAAC;QACvB,IAAI;YACF,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;SAC9B;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO,KAAK,CAAC;SACd;QAED,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;SACd;aAAM,IAAI,MAAM,IAAI,aAAa,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,KAAK,GAAG,SAAS,EAAE;YAE5B,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;SACd;aAAM;YACL,MAAM,CAAC,KAAK,CAAC,wDAAwD,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAChG,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,OAAO,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;SACrG;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACpC,SAAmB,EACnB,MAAe,EACf,OAAY,EACZ,aAAa,GAAG,CAAC,EACjB,QAAQ,GAAG,eAAe,CAAC,KAAK;QAEhC,MAAM,EAAE,GAAc,IAAI,SAAS,EAAE,CAAC;QACtC,IAAI,IAAI,GAAQ,EAAE,CAAC;QACnB,IAAI,MAAM,GAAY,MAAM,CAAC;QAC7B,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,2CAA2C,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEvG,MAAM,GAAG,GAAQ,OAAO,IAAI,IAAI,CAAC;QACjC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAW,MAAM,CAAC,MAAM,CAAC;QAEzC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,MAAM,QAAQ,GAAU,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;YAChF,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEvC,MAAM,KAAK,GAAiB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAe,CAAC,CAAC;YACvF,MAAM,MAAM,GAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7C,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;YAC1B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE3B,MAAM,GAAG,GAAW,SAAS,GAAG,UAAU,CAAC;YAC3C,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;SAC7F;QACD,EAAE,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAC/C,SAAmB,EACnB,MAAa,EACb,OAAY,EACZ,aAAa,GAAG,CAAC,EACjB,QAAQ,GAAG,eAAe,CAAC,KAAK;QAEhC,MAAM,aAAa,GAAY,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACxE,OAAO,cAAc,CAAC,kBAAkB,CAAI,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC1G,CAAC;IAGM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAY,EAAE,QAAkB;QACrE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACjD,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC5C;IACH,CAAC;IAGM,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAY,EAAE,QAAkB;QACvE,MAAM,KAAK,GAAmB,EAAE,CAAC;QAEjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACjD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SAClD;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED;IAEA,CAAC;CACF"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { PromiseRatchet } from './promise-ratchet.js';
|
|
2
|
+
import { Logger } from '../logger/logger.js';
|
|
3
|
+
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
4
|
+
const fnFalse = (ignored) => {
|
|
5
|
+
return false;
|
|
6
|
+
};
|
|
7
|
+
const fnOn3 = (t) => {
|
|
8
|
+
Logger.info('t=%d', t);
|
|
9
|
+
return t == 3;
|
|
10
|
+
};
|
|
11
|
+
const waitAndPrint = async (t1, t2) => {
|
|
12
|
+
Logger.info('Running: %s', t2);
|
|
13
|
+
await PromiseRatchet.wait(t1 * 2);
|
|
14
|
+
return t1 * 2;
|
|
15
|
+
};
|
|
16
|
+
describe('#promiseRatchet', function () {
|
|
17
|
+
it('should timeout eventually', async () => {
|
|
18
|
+
try {
|
|
19
|
+
Logger.setLevel(LoggerLevelName.silly);
|
|
20
|
+
const result = await PromiseRatchet.waitFor(fnFalse, true, 100, 2);
|
|
21
|
+
Logger.info('Got : %s', result);
|
|
22
|
+
expect(result).toEqual(false);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
Logger.warn('Error: %s', err, err);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
it('should succeed on 3rd try', async () => {
|
|
29
|
+
const promise = PromiseRatchet.waitFor(fnOn3, true, 100, 4);
|
|
30
|
+
const result = await promise;
|
|
31
|
+
expect(result).toEqual(true);
|
|
32
|
+
});
|
|
33
|
+
it('should run 10 elements, 2 at a time', async () => {
|
|
34
|
+
Logger.setLevel(LoggerLevelName.debug);
|
|
35
|
+
const elements = [
|
|
36
|
+
[100, 'Test1'],
|
|
37
|
+
[200, 'Test2'],
|
|
38
|
+
[300, 'Test3'],
|
|
39
|
+
[400, 'Test4'],
|
|
40
|
+
[500, 'Test5'],
|
|
41
|
+
[600, 'Test6'],
|
|
42
|
+
[700, 'Test7'],
|
|
43
|
+
[800, 'Test8'],
|
|
44
|
+
[900, 'Test9'],
|
|
45
|
+
[1000, 'Test10'],
|
|
46
|
+
];
|
|
47
|
+
const results = await PromiseRatchet.runBoundedParallel(waitAndPrint, elements, this, 2);
|
|
48
|
+
Logger.info('Final results %j', results);
|
|
49
|
+
expect(results).toBeTruthy();
|
|
50
|
+
expect(results.length).toEqual(10);
|
|
51
|
+
}, 30000);
|
|
52
|
+
it('should run 10 waits, 2 at a time', async () => {
|
|
53
|
+
Logger.setLevel(LoggerLevelName.debug);
|
|
54
|
+
const elements = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000];
|
|
55
|
+
const results = await PromiseRatchet.runBoundedParallelSingleParam(PromiseRatchet.wait, elements, this, 2);
|
|
56
|
+
Logger.info('Final results %j', results);
|
|
57
|
+
expect(results).toBeTruthy();
|
|
58
|
+
expect(results.length).toEqual(10);
|
|
59
|
+
});
|
|
60
|
+
xit('should run an async function as a for/each', async () => {
|
|
61
|
+
Logger.setLevel(LoggerLevelName.debug);
|
|
62
|
+
const elements = [1001, 1002, 2000];
|
|
63
|
+
const pfn = async (v) => {
|
|
64
|
+
Logger.info('Waiting %s', v);
|
|
65
|
+
await PromiseRatchet.wait(v);
|
|
66
|
+
Logger.info('Finished %s', v);
|
|
67
|
+
};
|
|
68
|
+
Logger.info('Serial test');
|
|
69
|
+
await PromiseRatchet.asyncForEachSerial(elements, pfn);
|
|
70
|
+
Logger.info('Parallel test');
|
|
71
|
+
await PromiseRatchet.asyncForEachParallel(elements, pfn);
|
|
72
|
+
Logger.info('Done');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=promise-ratchet.spec.js.map
|