@bitblit/ratchet-common 4.0.419-alpha → 4.0.421-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 +6 -12
- package/lib/index.mjs +0 -2
- package/lib/types.d.ts +0 -1024
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare class NumberRatchet {
|
|
2
|
+
private static MAX_LEADING_ZEROS_FORMAT_LENGTH;
|
|
3
|
+
static readonly DEFAULT_SAFE_NUMBER_OPTIONS: SafeNumberOptions;
|
|
4
|
+
static toFixedDecimalNumber(input: number | string, placesAfterPoint: number): number;
|
|
5
|
+
static leadingZeros(val: any, size: number): string;
|
|
6
|
+
static between(inTest: number, inP1: number, inP2: number): boolean;
|
|
7
|
+
static safeNumber(input: any, ifNotNumber?: number, useDefaultForNullAndUndefined?: boolean): number;
|
|
8
|
+
static safeNumberOpt(input: any, optionPart?: Partial<SafeNumberOptions>): number;
|
|
9
|
+
static numberCSVToList(inputCSV: string): number[];
|
|
10
|
+
static fitToWindow(val: number, b1: number, b2: number): number;
|
|
11
|
+
static groupNumbersIntoContiguousRanges(inputData: number[], minRangeSize?: number): SinglesAndRanges;
|
|
12
|
+
static distributeItemsEvenly(items: number, buckets: number): number[];
|
|
13
|
+
static createRange(minInclusive: number, maxExclusive: number, step?: number): number[];
|
|
14
|
+
}
|
|
15
|
+
export interface SinglesAndRanges {
|
|
16
|
+
singles: number[];
|
|
17
|
+
ranges: NumberRange[];
|
|
18
|
+
}
|
|
19
|
+
export interface NumberRange {
|
|
20
|
+
min: number;
|
|
21
|
+
max: number;
|
|
22
|
+
}
|
|
23
|
+
export interface SafeNumberOptions {
|
|
24
|
+
ifNotNumber: number;
|
|
25
|
+
returnValueForNull: number;
|
|
26
|
+
returnValueForUndefined: number;
|
|
27
|
+
preParseCharacterMapping: Record<string, string>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { Logger } from '../logger/logger.js';
|
|
2
|
+
import { RequireRatchet } from './require-ratchet.js';
|
|
3
|
+
export class NumberRatchet {
|
|
4
|
+
static MAX_LEADING_ZEROS_FORMAT_LENGTH = 1000;
|
|
5
|
+
static DEFAULT_SAFE_NUMBER_OPTIONS = {
|
|
6
|
+
ifNotNumber: null,
|
|
7
|
+
returnValueForNull: null,
|
|
8
|
+
returnValueForUndefined: null,
|
|
9
|
+
preParseCharacterMapping: { ',': '' },
|
|
10
|
+
};
|
|
11
|
+
static toFixedDecimalNumber(input, placesAfterPoint) {
|
|
12
|
+
const v = NumberRatchet.safeNumber(input);
|
|
13
|
+
return v === null || v === undefined ? v : NumberRatchet.safeNumber(v.toFixed(placesAfterPoint));
|
|
14
|
+
}
|
|
15
|
+
static leadingZeros(val, size) {
|
|
16
|
+
const sVal = String(val);
|
|
17
|
+
if (sVal.length < size) {
|
|
18
|
+
let pad = '0000';
|
|
19
|
+
if (size > NumberRatchet.MAX_LEADING_ZEROS_FORMAT_LENGTH) {
|
|
20
|
+
throw 'Cannot format number that large (max length is ' + NumberRatchet.MAX_LEADING_ZEROS_FORMAT_LENGTH + ')';
|
|
21
|
+
}
|
|
22
|
+
while (pad.length < size) {
|
|
23
|
+
pad = pad + pad;
|
|
24
|
+
}
|
|
25
|
+
return (pad + sVal).slice(-1 * size);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return sVal;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
static between(inTest, inP1, inP2) {
|
|
32
|
+
const test = NumberRatchet.safeNumber(inTest);
|
|
33
|
+
const p1 = NumberRatchet.safeNumber(inP1);
|
|
34
|
+
const p2 = NumberRatchet.safeNumber(inP2);
|
|
35
|
+
return (test >= p1 && test <= p2) || (test >= p2 && test <= p1);
|
|
36
|
+
}
|
|
37
|
+
static safeNumber(input, ifNotNumber = null, useDefaultForNullAndUndefined) {
|
|
38
|
+
const opts = {
|
|
39
|
+
ifNotNumber: ifNotNumber,
|
|
40
|
+
returnValueForNull: useDefaultForNullAndUndefined ? ifNotNumber : null,
|
|
41
|
+
returnValueForUndefined: useDefaultForNullAndUndefined ? ifNotNumber : undefined,
|
|
42
|
+
};
|
|
43
|
+
if (useDefaultForNullAndUndefined === undefined) {
|
|
44
|
+
opts.returnValueForUndefined = null;
|
|
45
|
+
}
|
|
46
|
+
return NumberRatchet.safeNumberOpt(input, opts);
|
|
47
|
+
}
|
|
48
|
+
static safeNumberOpt(input, optionPart) {
|
|
49
|
+
let rval = undefined;
|
|
50
|
+
const opts = Object.assign({}, NumberRatchet.DEFAULT_SAFE_NUMBER_OPTIONS, optionPart || {});
|
|
51
|
+
if (input === null) {
|
|
52
|
+
rval = opts.returnValueForNull;
|
|
53
|
+
}
|
|
54
|
+
else if (input === undefined) {
|
|
55
|
+
rval = opts.returnValueForUndefined;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const type = typeof input;
|
|
59
|
+
if (type == 'number') {
|
|
60
|
+
rval = input;
|
|
61
|
+
}
|
|
62
|
+
else if (type == 'string') {
|
|
63
|
+
let test = input.trim();
|
|
64
|
+
if (test.length === 0) {
|
|
65
|
+
rval = opts.ifNotNumber;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
if (opts.preParseCharacterMapping && Object.keys(opts.preParseCharacterMapping).length > 0) {
|
|
69
|
+
let t2 = '';
|
|
70
|
+
for (let i = 0; i < test.length; i++) {
|
|
71
|
+
const cr = test.charAt(i);
|
|
72
|
+
t2 += opts.preParseCharacterMapping[cr] === undefined ? cr : opts.preParseCharacterMapping[cr];
|
|
73
|
+
}
|
|
74
|
+
test = t2;
|
|
75
|
+
}
|
|
76
|
+
rval = Number.parseFloat(test);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
Logger.warn('Value is of type %s, returning default', type);
|
|
81
|
+
rval = opts.ifNotNumber;
|
|
82
|
+
}
|
|
83
|
+
if (isNaN(rval)) {
|
|
84
|
+
Logger.debug('Parsed string to NaN - using NaN value from param');
|
|
85
|
+
rval = opts.ifNotNumber;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return rval;
|
|
89
|
+
}
|
|
90
|
+
static numberCSVToList(inputCSV) {
|
|
91
|
+
let rval = null;
|
|
92
|
+
if (inputCSV) {
|
|
93
|
+
rval = inputCSV.split(',').map((s) => {
|
|
94
|
+
return NumberRatchet.safeNumber(s.trim());
|
|
95
|
+
});
|
|
96
|
+
rval = rval.filter((r) => typeof r === 'number' && !isNaN(r));
|
|
97
|
+
}
|
|
98
|
+
return rval;
|
|
99
|
+
}
|
|
100
|
+
static fitToWindow(val, b1, b2) {
|
|
101
|
+
let rval = val;
|
|
102
|
+
if (val === null || b1 === null || b2 === null || b1 < 0 || b2 < 0 || val < 0) {
|
|
103
|
+
throw new Error('All values must be non-null and larger than 0');
|
|
104
|
+
}
|
|
105
|
+
const low = Math.min(b1, b2);
|
|
106
|
+
const high = Math.max(b1, b2);
|
|
107
|
+
const windowSize = high - low;
|
|
108
|
+
if (high === low) {
|
|
109
|
+
rval = high;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
while (rval < low) {
|
|
113
|
+
rval += windowSize;
|
|
114
|
+
}
|
|
115
|
+
while (rval > high) {
|
|
116
|
+
rval -= windowSize;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return rval;
|
|
120
|
+
}
|
|
121
|
+
static groupNumbersIntoContiguousRanges(inputData, minRangeSize = 3) {
|
|
122
|
+
RequireRatchet.notNullOrUndefined(inputData);
|
|
123
|
+
const input = Object.assign([], inputData);
|
|
124
|
+
input.sort((a, b) => a - b);
|
|
125
|
+
const singles = [];
|
|
126
|
+
const ranges = [];
|
|
127
|
+
let start = 0;
|
|
128
|
+
for (let i = 1; i < input.length; i++) {
|
|
129
|
+
if (input[i] === input[i - 1] + 1) {
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
if (start === i - 1) {
|
|
133
|
+
singles.push(input[i - 1]);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const rangeSize = i - start;
|
|
137
|
+
if (rangeSize < minRangeSize) {
|
|
138
|
+
for (let j = start; j < i; j++) {
|
|
139
|
+
singles.push(input[j]);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
ranges.push({
|
|
144
|
+
min: input[start],
|
|
145
|
+
max: input[i - 1],
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
start = i;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
singles: singles,
|
|
154
|
+
ranges: ranges,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
static distributeItemsEvenly(items, buckets) {
|
|
158
|
+
RequireRatchet.notNullOrUndefined(items, 'items');
|
|
159
|
+
RequireRatchet.notNullOrUndefined(buckets, 'buckets');
|
|
160
|
+
RequireRatchet.true(items > 0 && items === Math.floor(items), 'Items integer larger than 0');
|
|
161
|
+
RequireRatchet.true(buckets > 0 && buckets === Math.floor(buckets), 'Buckets integer larger than 0');
|
|
162
|
+
const offset = buckets / items;
|
|
163
|
+
const rval = [];
|
|
164
|
+
for (let i = 0; i < buckets; i++) {
|
|
165
|
+
rval.push(0);
|
|
166
|
+
}
|
|
167
|
+
let loc = 0;
|
|
168
|
+
let rem = items;
|
|
169
|
+
while (rem > 0) {
|
|
170
|
+
rval[Math.floor(loc) % buckets]++;
|
|
171
|
+
rem--;
|
|
172
|
+
loc += offset;
|
|
173
|
+
}
|
|
174
|
+
return rval;
|
|
175
|
+
}
|
|
176
|
+
static createRange(minInclusive, maxExclusive, step = 1) {
|
|
177
|
+
const rval = [];
|
|
178
|
+
let val = minInclusive;
|
|
179
|
+
while (val < maxExclusive) {
|
|
180
|
+
rval.push(val);
|
|
181
|
+
val += step;
|
|
182
|
+
}
|
|
183
|
+
return rval;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# 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 @@
|
|
|
1
|
+
{"version":3,"file":"parsed-url.js","sourceRoot":"","sources":["../../src/lang/parsed-url.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TimeoutToken } from './timeout-token.js';
|
|
2
|
+
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
3
|
+
export declare class PromiseRatchet {
|
|
4
|
+
static resolveOnEvent<T>(evtSrc: any, okEvtNames: string[], errEvtNames?: string[], rval?: T): Promise<T>;
|
|
5
|
+
static timeout<T>(srcPromise: Promise<T>, title: string, timeoutMS: number): Promise<T | TimeoutToken>;
|
|
6
|
+
static createTimeoutPromise(title: string, timeoutMS: number): Promise<TimeoutToken>;
|
|
7
|
+
static wait(time: number): Promise<void>;
|
|
8
|
+
static dumpResult(result: any): void;
|
|
9
|
+
static dumpError(err: any): void;
|
|
10
|
+
static logErrorAndReturnNull(err: any): void;
|
|
11
|
+
static runPromiseAndDump<T>(promise: Promise<T>): void;
|
|
12
|
+
static waitFor(testFunction: (n: number) => any, expectedValue: any, intervalMS: number, maxCycles: number, label?: string, count?: number): Promise<boolean>;
|
|
13
|
+
static runBoundedParallel<T>(promiseFn: (...args: any[]) => Promise<T>, params: any[][], context: any, maxConcurrent?: number, logLevel?: LoggerLevelName): Promise<T[]>;
|
|
14
|
+
static runBoundedParallelSingleParam<T>(promiseFn: (...args: any[]) => Promise<T>, params: any[], context: any, maxConcurrent?: number, logLevel?: LoggerLevelName): Promise<T[]>;
|
|
15
|
+
static asyncForEachSerial<T, R>(array: any[], callback: (val: T, idx: number, arr: T[]) => Promise<R>): Promise<void>;
|
|
16
|
+
static asyncForEachParallel<T>(array: T[], callback: (val: T, idx: number, arr: T[]) => Promise<any>): Promise<void>;
|
|
17
|
+
private constructor();
|
|
18
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
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
|
+
return 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) {
|
|
43
|
+
Logger.info('Success, result was : \n\n%s\n\n', JSON.stringify(result));
|
|
44
|
+
process.exit(0);
|
|
45
|
+
}
|
|
46
|
+
static dumpError(err) {
|
|
47
|
+
Logger.warn('Failure, err was : \n\n%s\n\n -- \n\n%s\n\n', JSON.stringify(err), String(err));
|
|
48
|
+
console.trace();
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
static logErrorAndReturnNull(err) {
|
|
52
|
+
Logger.warn('Failure, err was : \n\n%s\n\n -- \n\n%s\n\n', JSON.stringify(err), String(err));
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
static runPromiseAndDump(promise) {
|
|
56
|
+
promise.then(PromiseRatchet.dumpResult).catch(PromiseRatchet.dumpError);
|
|
57
|
+
}
|
|
58
|
+
static async waitFor(testFunction, expectedValue, intervalMS, maxCycles, label = 'waitFor', count = 0) {
|
|
59
|
+
if (expectedValue == null || intervalMS < 50 || maxCycles < 1 || count < 0 || typeof testFunction != 'function') {
|
|
60
|
+
Logger.warn('%s: Invalid configuration for waitFor - exiting immediately', label);
|
|
61
|
+
Logger.warn('ExpectedValue : %s ; interval: %d ; maxCycles: %d ; test : %s', expectedValue, intervalMS, maxCycles, typeof testFunction);
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
let curVal = null;
|
|
65
|
+
try {
|
|
66
|
+
curVal = testFunction(count);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
Logger.warn('%s: Caught error while waiting, giving up : %s', label, err);
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
if (curVal === null) {
|
|
73
|
+
Logger.debug('%s:CurVal was null - aborting', label);
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
else if (curVal == expectedValue) {
|
|
77
|
+
Logger.debug('%s:Found expected value', label);
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
else if (count > maxCycles) {
|
|
81
|
+
Logger.debug('%s:Exceeded max cycles, giving up', label);
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
Logger.debug('%s : value not reached yet, waiting (count = %d of %d)', label, count, maxCycles);
|
|
86
|
+
await PromiseRatchet.wait(intervalMS);
|
|
87
|
+
return PromiseRatchet.waitFor(testFunction, expectedValue, intervalMS, maxCycles, label, count + 1);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
static async runBoundedParallel(promiseFn, params, context, maxConcurrent = 1, logLevel = LoggerLevelName.debug) {
|
|
91
|
+
const sw = new StopWatch();
|
|
92
|
+
let rval = [];
|
|
93
|
+
let remain = params;
|
|
94
|
+
Logger.logByLevel(logLevel, 'Processing %d total elements %d at a time', params.length, maxConcurrent);
|
|
95
|
+
const ctx = context || this;
|
|
96
|
+
let processed = 0;
|
|
97
|
+
const totalCount = remain.length;
|
|
98
|
+
while (remain.length > 0) {
|
|
99
|
+
const curBatch = remain.slice(0, Math.min(remain.length, maxConcurrent));
|
|
100
|
+
remain = remain.slice(curBatch.length);
|
|
101
|
+
const proms = curBatch.map((c) => promiseFn.apply(ctx, c));
|
|
102
|
+
const output = await Promise.all(proms);
|
|
103
|
+
processed += proms.length;
|
|
104
|
+
rval = rval.concat(output);
|
|
105
|
+
const pct = processed / totalCount;
|
|
106
|
+
Logger.logByLevel(logLevel, '%d elements remain : %s', remain.length, sw.dumpExpected(pct));
|
|
107
|
+
}
|
|
108
|
+
sw.log();
|
|
109
|
+
return rval;
|
|
110
|
+
}
|
|
111
|
+
static async runBoundedParallelSingleParam(promiseFn, params, context, maxConcurrent = 1, logLevel = LoggerLevelName.debug) {
|
|
112
|
+
const wrappedParams = ArrayRatchet.wrapElementsInArray(params);
|
|
113
|
+
return PromiseRatchet.runBoundedParallel(promiseFn, wrappedParams, context, maxConcurrent, logLevel);
|
|
114
|
+
}
|
|
115
|
+
static async asyncForEachSerial(array, callback) {
|
|
116
|
+
for (let index = 0; index < array.length; index++) {
|
|
117
|
+
await callback(array[index], index, array);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
static async asyncForEachParallel(array, callback) {
|
|
121
|
+
const proms = [];
|
|
122
|
+
for (let index = 0; index < array.length; index++) {
|
|
123
|
+
proms.push(callback(array[index], index, array));
|
|
124
|
+
}
|
|
125
|
+
await Promise.all(proms);
|
|
126
|
+
}
|
|
127
|
+
constructor() {
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=promise-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise-ratchet.js","sourceRoot":"","sources":["../../src/lang/promise-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class RequireRatchet {
|
|
2
|
+
static isNullOrUndefined(ob: any): boolean;
|
|
3
|
+
static notNullOrUndefined(ob: any, name?: string): void;
|
|
4
|
+
static notNullUndefinedOrOnlyWhitespaceString(ob: string, name?: string): void;
|
|
5
|
+
static notNullUndefinedOrEmptyArray(ob: any[], name?: string): void;
|
|
6
|
+
static equal(ob1: any, ob2: any, message?: string): void;
|
|
7
|
+
static true(ob: boolean, message?: string): void;
|
|
8
|
+
static noNullOrUndefinedValuesInArray(arr: any[], expectedLength?: number, customMsg?: string): void;
|
|
9
|
+
static noNullOrUndefinedValuesInRestArgs(expectedLength: number, ...restArgs: any[]): void;
|
|
10
|
+
static constructorArgumentsMatchLengthAndAreNonNull(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export class RequireRatchet {
|
|
2
|
+
static isNullOrUndefined(ob) {
|
|
3
|
+
return Object.is(ob, null) || Object.is(ob, undefined);
|
|
4
|
+
}
|
|
5
|
+
static notNullOrUndefined(ob, name = 'object') {
|
|
6
|
+
if (RequireRatchet.isNullOrUndefined(ob)) {
|
|
7
|
+
throw new Error(name + ' may not be null or undefined');
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
static notNullUndefinedOrOnlyWhitespaceString(ob, name = 'string') {
|
|
11
|
+
if (RequireRatchet.isNullOrUndefined(ob) || ob.trim() === '') {
|
|
12
|
+
throw new Error(name + ' may not be null or undefined or only whitespace string');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
static notNullUndefinedOrEmptyArray(ob, name = 'string') {
|
|
16
|
+
if (RequireRatchet.isNullOrUndefined(ob) || ob.length === 0) {
|
|
17
|
+
throw new Error(name + ' may not be null or undefined or an empty array');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static equal(ob1, ob2, message = 'Values must be equal') {
|
|
21
|
+
if (ob1 !== ob2) {
|
|
22
|
+
throw new Error(message);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
static true(ob, message = 'Value must be true') {
|
|
26
|
+
RequireRatchet.equal(ob, true, message);
|
|
27
|
+
}
|
|
28
|
+
static noNullOrUndefinedValuesInArray(arr, expectedLength = null, customMsg = null) {
|
|
29
|
+
RequireRatchet.notNullOrUndefined(arr, 'Source array may not be null');
|
|
30
|
+
if (expectedLength !== null && arr.length !== expectedLength) {
|
|
31
|
+
throw new Error(`Expected array of length ${expectedLength} but was ${arr.length} ${customMsg}`);
|
|
32
|
+
}
|
|
33
|
+
for (let i = 0; i < arr.length; i++) {
|
|
34
|
+
if (RequireRatchet.isNullOrUndefined(arr[i])) {
|
|
35
|
+
throw new Error(`Array index ${i} was null or undefined ${customMsg}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
static noNullOrUndefinedValuesInRestArgs(expectedLength, ...restArgs) {
|
|
40
|
+
RequireRatchet.notNullOrUndefined(restArgs, 'Source array may not be null');
|
|
41
|
+
if (expectedLength !== null && restArgs.length !== expectedLength) {
|
|
42
|
+
throw new Error(`Expected array of length ${expectedLength} but was ${restArgs.length}`);
|
|
43
|
+
}
|
|
44
|
+
for (let i = 0; i < restArgs.length; i++) {
|
|
45
|
+
if (RequireRatchet.isNullOrUndefined(restArgs[i])) {
|
|
46
|
+
throw new Error(`Array index ${i} was null or undefined`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
static constructorArgumentsMatchLengthAndAreNonNull() {
|
|
51
|
+
const args = Array.from(arguments);
|
|
52
|
+
const len = this.constructor.length;
|
|
53
|
+
return RequireRatchet.noNullOrUndefinedValuesInArray(args, len);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=require-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-ratchet.js","sourceRoot":"","sources":["../../src/lang/require-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class SortRatchet {
|
|
2
|
+
private constructor();
|
|
3
|
+
static sortNullToTop<T>(a: T, b: T, bothNonNullSort: (c: T, d: T) => number): number;
|
|
4
|
+
static sortNullToBottom<T>(a: T, b: T, bothNonNullSort: (c: T, d: T) => number): number;
|
|
5
|
+
static nullSafeSort<T>(a: T, b: T, nullsOnTop: boolean, bothNonNullSort: (c: T, d: T) => number): number;
|
|
6
|
+
static sortNumericStringsAsNumbers(a: string | number, b: string | number, sortNonNumbersToTop?: boolean): number;
|
|
7
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { RequireRatchet } from './require-ratchet.js';
|
|
2
|
+
import { NumberRatchet } from './number-ratchet.js';
|
|
3
|
+
export class SortRatchet {
|
|
4
|
+
constructor() { }
|
|
5
|
+
static sortNullToTop(a, b, bothNonNullSort) {
|
|
6
|
+
return SortRatchet.nullSafeSort(a, b, true, bothNonNullSort);
|
|
7
|
+
}
|
|
8
|
+
static sortNullToBottom(a, b, bothNonNullSort) {
|
|
9
|
+
return SortRatchet.nullSafeSort(a, b, false, bothNonNullSort);
|
|
10
|
+
}
|
|
11
|
+
static nullSafeSort(a, b, nullsOnTop, bothNonNullSort) {
|
|
12
|
+
let rval;
|
|
13
|
+
if (RequireRatchet.isNullOrUndefined(a) && RequireRatchet.isNullOrUndefined(b)) {
|
|
14
|
+
rval = 0;
|
|
15
|
+
}
|
|
16
|
+
else if (RequireRatchet.isNullOrUndefined(a)) {
|
|
17
|
+
rval = nullsOnTop ? -Infinity : Infinity;
|
|
18
|
+
}
|
|
19
|
+
else if (RequireRatchet.isNullOrUndefined(b)) {
|
|
20
|
+
rval = nullsOnTop ? Infinity : -Infinity;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
rval = bothNonNullSort(a, b);
|
|
24
|
+
}
|
|
25
|
+
return rval;
|
|
26
|
+
}
|
|
27
|
+
static sortNumericStringsAsNumbers(a, b, sortNonNumbersToTop) {
|
|
28
|
+
const an = NumberRatchet.safeNumber(a);
|
|
29
|
+
const bn = NumberRatchet.safeNumber(b);
|
|
30
|
+
return SortRatchet.nullSafeSort(an, bn, sortNonNumbersToTop, (ax, bx) => ax - bx);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=sort-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-ratchet.js","sourceRoot":"","sources":["../../src/lang/sort-ratchet.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,OAAO,WAAW;IAGtB,gBAAuB,CAAC;IAEjB,MAAM,CAAC,aAAa,CAAI,CAAI,EAAE,CAAI,EAAE,eAAuC;QAChF,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAI,CAAI,EAAE,CAAI,EAAE,eAAuC;QACnF,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAChE,CAAC;IAEM,MAAM,CAAC,YAAY,CAAI,CAAI,EAAE,CAAI,EAAE,UAAmB,EAAE,eAAuC;QACpG,IAAI,IAAY,CAAC;QAEjB,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3C,CAAC;aAAM,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,CAAkB,EAAE,CAAkB,EAAE,mBAA6B;QAC7G,MAAM,EAAE,GAAW,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,EAAE,GAAW,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,WAAW,CAAC,YAAY,CAAS,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC,EAAU,EAAE,EAAU,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5G,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
2
|
+
export declare class StopWatch {
|
|
3
|
+
get createTime(): number;
|
|
4
|
+
private starts;
|
|
5
|
+
private ends;
|
|
6
|
+
private _createTime;
|
|
7
|
+
private _label;
|
|
8
|
+
private _labelIncludedInOutput;
|
|
9
|
+
withLabel(val: string): StopWatch;
|
|
10
|
+
withLabelIncludedInOutput(val: boolean): StopWatch;
|
|
11
|
+
get label(): string;
|
|
12
|
+
set label(value: string);
|
|
13
|
+
get labelIncludedInOutput(): boolean;
|
|
14
|
+
set labelIncludedInOutput(value: boolean);
|
|
15
|
+
start(name: string): number;
|
|
16
|
+
stop(name: string): number;
|
|
17
|
+
reset(name: string): void;
|
|
18
|
+
hasTimer(name: string): boolean;
|
|
19
|
+
log(name?: string, shortForm?: boolean, logLevel?: LoggerLevelName): void;
|
|
20
|
+
logExpected(pctComplete: number, name?: string, shortForm?: boolean, logLevel?: LoggerLevelName): void;
|
|
21
|
+
timerNames(): string[];
|
|
22
|
+
dumpAll(separator?: string, shortForm?: boolean): string;
|
|
23
|
+
dump(name?: string, shortForm?: boolean): string;
|
|
24
|
+
dumpExpected(pctComplete: number, name?: string, shortForm?: boolean): string;
|
|
25
|
+
expectedRemainingMS(pctComplete: number, name?: string): number;
|
|
26
|
+
elapsedMS(name?: string): number;
|
|
27
|
+
}
|