@bitblit/ratchet-common 4.0.420-alpha → 4.0.425-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/2d/index.d.ts +5 -0
- package/lib/2d/index.js +6 -0
- package/lib/2d/index.js.map +1 -0
- package/lib/2d/line-2d.d.ts +5 -0
- package/lib/2d/line-2d.js +2 -0
- package/lib/2d/line-2d.js.map +1 -0
- package/lib/2d/plane-2d.d.ts +6 -0
- package/lib/2d/plane-2d.js +2 -0
- package/lib/2d/plane-2d.js.map +1 -0
- package/lib/2d/point-2d.d.ts +4 -0
- package/lib/2d/point-2d.js +2 -0
- package/lib/2d/point-2d.js.map +1 -0
- package/lib/2d/poly-line-2d.d.ts +4 -0
- package/lib/2d/poly-line-2d.js +2 -0
- package/lib/2d/poly-line-2d.js.map +1 -0
- package/lib/2d/ratchet-2d.d.ts +37 -0
- package/lib/2d/ratchet-2d.js +246 -0
- package/lib/2d/ratchet-2d.js.map +1 -0
- package/lib/build/build-information.d.ts +8 -0
- package/lib/build/build-information.js +2 -0
- package/lib/build/build-information.js.map +1 -0
- package/lib/build/index.d.ts +2 -0
- package/lib/build/index.js +3 -0
- package/lib/build/index.js.map +1 -0
- package/lib/build/ratchet-common-info.d.ts +5 -0
- package/lib/build/ratchet-common-info.js +15 -0
- package/lib/build/ratchet-common-info.js.map +1 -0
- package/lib/histogram/histogram-entry.d.ts +4 -0
- package/lib/histogram/histogram-entry.js +2 -0
- package/lib/histogram/histogram-entry.js.map +1 -0
- package/lib/histogram/histogram.d.ts +12 -0
- package/lib/histogram/histogram.js +49 -0
- package/lib/histogram/histogram.js.map +1 -0
- package/lib/histogram/index.d.ts +2 -0
- package/lib/histogram/index.js +3 -0
- package/lib/histogram/index.js.map +1 -0
- package/lib/jwt/common-jwt-token.d.ts +6 -0
- package/lib/jwt/common-jwt-token.js +2 -0
- package/lib/jwt/common-jwt-token.js.map +1 -0
- package/lib/jwt/expired-jwt-handling.d.ts +5 -0
- package/lib/jwt/expired-jwt-handling.js +7 -0
- package/lib/jwt/expired-jwt-handling.js.map +1 -0
- package/lib/jwt/index.d.ts +6 -0
- package/lib/jwt/index.js +7 -0
- package/lib/jwt/index.js.map +1 -0
- package/lib/jwt/jwt-ratchet-config.d.ts +8 -0
- package/lib/jwt/jwt-ratchet-config.js +2 -0
- package/lib/jwt/jwt-ratchet-config.js.map +1 -0
- package/lib/jwt/jwt-ratchet-like.d.ts +15 -0
- package/lib/jwt/jwt-ratchet-like.js +2 -0
- package/lib/jwt/jwt-ratchet-like.js.map +1 -0
- package/lib/jwt/jwt-ratchet.d.ts +28 -0
- package/lib/jwt/jwt-ratchet.js +171 -0
- package/lib/jwt/jwt-ratchet.js.map +1 -0
- package/lib/jwt/jwt-token-base.d.ts +9 -0
- package/lib/jwt/jwt-token-base.js +2 -0
- package/lib/jwt/jwt-token-base.js.map +1 -0
- package/lib/lang/array-ratchet.d.ts +12 -0
- package/lib/lang/array-ratchet.js +84 -0
- package/lib/lang/array-ratchet.js.map +1 -0
- package/lib/lang/base64-ratchet.d.ts +20 -0
- package/lib/lang/base64-ratchet.js +209 -0
- package/lib/lang/base64-ratchet.js.map +1 -0
- package/lib/lang/boolean-ratchet.d.ts +7 -0
- package/lib/lang/boolean-ratchet.js +46 -0
- package/lib/lang/boolean-ratchet.js.map +1 -0
- package/lib/lang/composite-last-success-provider.d.ts +7 -0
- package/lib/lang/composite-last-success-provider.js +27 -0
- package/lib/lang/composite-last-success-provider.js.map +1 -0
- package/lib/lang/date-ratchet.d.ts +11 -0
- package/lib/lang/date-ratchet.js +30 -0
- package/lib/lang/date-ratchet.js.map +1 -0
- package/lib/lang/duration-ratchet.d.ts +7 -0
- package/lib/lang/duration-ratchet.js +43 -0
- package/lib/lang/duration-ratchet.js.map +1 -0
- package/lib/lang/enum-ratchet.d.ts +5 -0
- package/lib/lang/enum-ratchet.js +31 -0
- package/lib/lang/enum-ratchet.js.map +1 -0
- package/lib/lang/error-ratchet.d.ts +6 -0
- package/lib/lang/error-ratchet.js +45 -0
- package/lib/lang/error-ratchet.js.map +1 -0
- package/lib/lang/esm-ratchet.d.ts +7 -0
- package/lib/lang/esm-ratchet.js +65 -0
- package/lib/lang/esm-ratchet.js.map +1 -0
- package/lib/lang/expiring-object.d.ts +20 -0
- package/lib/lang/expiring-object.js +73 -0
- package/lib/lang/expiring-object.js.map +1 -0
- package/lib/lang/geolocation-ratchet.d.ts +40 -0
- package/lib/lang/geolocation-ratchet.js +264 -0
- package/lib/lang/geolocation-ratchet.js.map +1 -0
- package/lib/lang/global-ratchet.d.ts +6 -0
- package/lib/lang/global-ratchet.js +44 -0
- package/lib/lang/global-ratchet.js.map +1 -0
- package/lib/lang/index.d.ts +27 -0
- package/lib/lang/index.js +28 -0
- package/lib/lang/index.js.map +1 -0
- package/lib/lang/key-value.d.ts +4 -0
- package/lib/lang/key-value.js +5 -0
- package/lib/lang/key-value.js.map +1 -0
- package/lib/lang/last-success-provider.d.ts +3 -0
- package/lib/lang/last-success-provider.js +2 -0
- package/lib/lang/last-success-provider.js.map +1 -0
- package/lib/lang/map-ratchet.d.ts +15 -0
- package/lib/lang/map-ratchet.js +173 -0
- package/lib/lang/map-ratchet.js.map +1 -0
- package/lib/lang/no.d.ts +3 -0
- package/lib/lang/no.js +5 -0
- package/lib/lang/no.js.map +1 -0
- package/lib/lang/number-ratchet.d.ts +28 -0
- package/lib/lang/number-ratchet.js +186 -0
- package/lib/lang/number-ratchet.js.map +1 -0
- package/lib/lang/parsed-url.d.ts +10 -0
- package/lib/lang/parsed-url.js +2 -0
- package/lib/lang/parsed-url.js.map +1 -0
- package/lib/lang/promise-ratchet.d.ts +18 -0
- package/lib/lang/promise-ratchet.js +130 -0
- package/lib/lang/promise-ratchet.js.map +1 -0
- package/lib/lang/require-ratchet.d.ts +11 -0
- package/lib/lang/require-ratchet.js +56 -0
- package/lib/lang/require-ratchet.js.map +1 -0
- package/lib/lang/sort-ratchet.d.ts +7 -0
- package/lib/lang/sort-ratchet.js +33 -0
- package/lib/lang/sort-ratchet.js.map +1 -0
- package/lib/lang/stop-watch.d.ts +27 -0
- package/lib/lang/stop-watch.js +170 -0
- package/lib/lang/stop-watch.js.map +1 -0
- package/lib/lang/string-ratchet.d.ts +40 -0
- package/lib/lang/string-ratchet.js +280 -0
- package/lib/lang/string-ratchet.js.map +1 -0
- package/lib/lang/time-zone-ratchet.d.ts +20 -0
- package/lib/lang/time-zone-ratchet.js +81 -0
- package/lib/lang/time-zone-ratchet.js.map +1 -0
- package/lib/lang/timeout-token.d.ts +9 -0
- package/lib/lang/timeout-token.js +19 -0
- package/lib/lang/timeout-token.js.map +1 -0
- package/lib/lang/uint-8-array-ratchet.d.ts +5 -0
- package/lib/lang/uint-8-array-ratchet.js +31 -0
- package/lib/lang/uint-8-array-ratchet.js.map +1 -0
- package/lib/lang/web-stream-ratchet.d.ts +6 -0
- package/lib/lang/web-stream-ratchet.js +47 -0
- package/lib/lang/web-stream-ratchet.js.map +1 -0
- package/lib/logger/classic-single-line-log-message-formatter.d.ts +6 -0
- package/lib/logger/classic-single-line-log-message-formatter.js +14 -0
- package/lib/logger/classic-single-line-log-message-formatter.js.map +1 -0
- package/lib/logger/index.d.ts +17 -0
- package/lib/logger/index.js +18 -0
- package/lib/logger/index.js.map +1 -0
- package/lib/logger/log-message-builder.d.ts +14 -0
- package/lib/logger/log-message-builder.js +49 -0
- package/lib/logger/log-message-builder.js.map +1 -0
- package/lib/logger/log-message-format-type.d.ts +6 -0
- package/lib/logger/log-message-format-type.js +6 -0
- package/lib/logger/log-message-format-type.js.map +1 -0
- package/lib/logger/log-message-formatter.d.ts +5 -0
- package/lib/logger/log-message-formatter.js +2 -0
- package/lib/logger/log-message-formatter.js.map +1 -0
- package/lib/logger/log-message-processor.d.ts +5 -0
- package/lib/logger/log-message-processor.js +2 -0
- package/lib/logger/log-message-processor.js.map +1 -0
- package/lib/logger/log-message.d.ts +8 -0
- package/lib/logger/log-message.js +2 -0
- package/lib/logger/log-message.js.map +1 -0
- package/lib/logger/log-snapshot.d.ts +5 -0
- package/lib/logger/log-snapshot.js +2 -0
- package/lib/logger/log-snapshot.js.map +1 -0
- package/lib/logger/logger-instance.d.ts +49 -0
- package/lib/logger/logger-instance.js +216 -0
- package/lib/logger/logger-instance.js.map +1 -0
- package/lib/logger/logger-level-name.d.ts +9 -0
- package/lib/logger/logger-level-name.js +9 -0
- package/lib/logger/logger-level-name.js.map +1 -0
- package/lib/logger/logger-meta.d.ts +6 -0
- package/lib/logger/logger-meta.js +2 -0
- package/lib/logger/logger-meta.js.map +1 -0
- package/lib/logger/logger-options.d.ts +13 -0
- package/lib/logger/logger-options.js +2 -0
- package/lib/logger/logger-options.js.map +1 -0
- package/lib/logger/logger-output-function.d.ts +6 -0
- package/lib/logger/logger-output-function.js +6 -0
- package/lib/logger/logger-output-function.js.map +1 -0
- package/lib/logger/logger-ring-buffer.d.ts +18 -0
- package/lib/logger/logger-ring-buffer.js +72 -0
- package/lib/logger/logger-ring-buffer.js.map +1 -0
- package/lib/logger/logger-util.d.ts +8 -0
- package/lib/logger/logger-util.js +45 -0
- package/lib/logger/logger-util.js.map +1 -0
- package/lib/logger/logger.d.ts +46 -0
- package/lib/logger/logger.js +150 -0
- package/lib/logger/logger.js.map +1 -0
- package/lib/logger/none-log-message-formatter.d.ts +6 -0
- package/lib/logger/none-log-message-formatter.js +6 -0
- package/lib/logger/none-log-message-formatter.js.map +1 -0
- package/lib/logger/structured-json-log-message-formatter.d.ts +6 -0
- package/lib/logger/structured-json-log-message-formatter.js +20 -0
- package/lib/logger/structured-json-log-message-formatter.js.map +1 -0
- package/lib/mail/archive-email-result.d.ts +5 -0
- package/lib/mail/archive-email-result.js +2 -0
- package/lib/mail/archive-email-result.js.map +1 -0
- package/lib/mail/email-attachment.d.ts +5 -0
- package/lib/mail/email-attachment.js +2 -0
- package/lib/mail/email-attachment.js.map +1 -0
- package/lib/mail/index.d.ts +11 -0
- package/lib/mail/index.js +12 -0
- package/lib/mail/index.js.map +1 -0
- package/lib/mail/mail-sending-provider.d.ts +5 -0
- package/lib/mail/mail-sending-provider.js +2 -0
- package/lib/mail/mail-sending-provider.js.map +1 -0
- package/lib/mail/mailer-config.d.ts +11 -0
- package/lib/mail/mailer-config.js +2 -0
- package/lib/mail/mailer-config.js.map +1 -0
- package/lib/mail/mailer-like.d.ts +11 -0
- package/lib/mail/mailer-like.js +2 -0
- package/lib/mail/mailer-like.js.map +1 -0
- package/lib/mail/mailer-util.d.ts +7 -0
- package/lib/mail/mailer-util.js +49 -0
- package/lib/mail/mailer-util.js.map +1 -0
- package/lib/mail/mailer.d.ts +17 -0
- package/lib/mail/mailer.js +174 -0
- package/lib/mail/mailer.js.map +1 -0
- package/lib/mail/ready-to-send-email.d.ts +13 -0
- package/lib/mail/ready-to-send-email.js +2 -0
- package/lib/mail/ready-to-send-email.js.map +1 -0
- package/lib/mail/resolved-ready-to-send-email.d.ts +5 -0
- package/lib/mail/resolved-ready-to-send-email.js +2 -0
- package/lib/mail/resolved-ready-to-send-email.js.map +1 -0
- package/lib/mail/send-email-result.d.ts +12 -0
- package/lib/mail/send-email-result.js +2 -0
- package/lib/mail/send-email-result.js.map +1 -0
- package/lib/mail/test-mail-sending-provider.d.ts +8 -0
- package/lib/mail/test-mail-sending-provider.js +31 -0
- package/lib/mail/test-mail-sending-provider.js.map +1 -0
- package/lib/network/browser-local-ip-provider.d.ts +7 -0
- package/lib/network/browser-local-ip-provider.js +22 -0
- package/lib/network/browser-local-ip-provider.js.map +1 -0
- package/lib/network/fixed-local-ip-provider.d.ts +6 -0
- package/lib/network/fixed-local-ip-provider.js +10 -0
- package/lib/network/fixed-local-ip-provider.js.map +1 -0
- package/lib/network/index.d.ts +9 -0
- package/lib/network/index.js +10 -0
- package/lib/network/index.js.map +1 -0
- package/lib/network/local-ip-provider.d.ts +3 -0
- package/lib/network/local-ip-provider.js +2 -0
- package/lib/network/local-ip-provider.js.map +1 -0
- package/lib/network/network-ratchet.d.ts +10 -0
- package/lib/network/network-ratchet.js +102 -0
- package/lib/network/network-ratchet.js.map +1 -0
- package/lib/network/remote-file-sync/backup-result.d.ts +5 -0
- package/lib/network/remote-file-sync/backup-result.js +7 -0
- package/lib/network/remote-file-sync/backup-result.js.map +1 -0
- package/lib/network/remote-file-sync/file-transfer-result.d.ts +5 -0
- package/lib/network/remote-file-sync/file-transfer-result.js +7 -0
- package/lib/network/remote-file-sync/file-transfer-result.js.map +1 -0
- package/lib/network/remote-file-sync/remote-file-sync-like.d.ts +16 -0
- package/lib/network/remote-file-sync/remote-file-sync-like.js +2 -0
- package/lib/network/remote-file-sync/remote-file-sync-like.js.map +1 -0
- package/lib/network/remote-file-sync/remote-status-data.d.ts +6 -0
- package/lib/network/remote-file-sync/remote-status-data.js +2 -0
- package/lib/network/remote-file-sync/remote-status-data.js.map +1 -0
- package/lib/network/restful-api-http-error.d.ts +41 -0
- package/lib/network/restful-api-http-error.js +134 -0
- package/lib/network/restful-api-http-error.js.map +1 -0
- package/lib/template/index.d.ts +1 -0
- package/lib/template/index.js +2 -0
- package/lib/template/index.js.map +1 -0
- package/lib/template/ratchet-template-renderer.d.ts +4 -0
- package/lib/template/ratchet-template-renderer.js +2 -0
- package/lib/template/ratchet-template-renderer.js.map +1 -0
- package/lib/third-party/google/google-recaptcha-ratchet.d.ts +4 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js +27 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js.map +1 -0
- package/lib/third-party/index.d.ts +3 -0
- package/lib/third-party/index.js +4 -0
- package/lib/third-party/index.js.map +1 -0
- package/lib/third-party/twilio/twilio-ratchet.d.ts +11 -0
- package/lib/third-party/twilio/twilio-ratchet.js +70 -0
- package/lib/third-party/twilio/twilio-ratchet.js.map +1 -0
- package/lib/third-party/twilio/twilio-verify-ratchet.d.ts +23 -0
- package/lib/third-party/twilio/twilio-verify-ratchet.js +60 -0
- package/lib/third-party/twilio/twilio-verify-ratchet.js.map +1 -0
- package/lib/transform/built-in-transforms.d.ts +18 -0
- package/lib/transform/built-in-transforms.js +192 -0
- package/lib/transform/built-in-transforms.js.map +1 -0
- package/lib/transform/index.d.ts +3 -0
- package/lib/transform/index.js +4 -0
- package/lib/transform/index.js.map +1 -0
- package/lib/transform/transform-ratchet.d.ts +7 -0
- package/lib/transform/transform-ratchet.js +67 -0
- package/lib/transform/transform-ratchet.js.map +1 -0
- package/lib/transform/transform-rule.d.ts +3 -0
- package/lib/transform/transform-rule.js +2 -0
- package/lib/transform/transform-rule.js.map +1 -0
- package/lib/tx/index.d.ts +5 -0
- package/lib/tx/index.js +6 -0
- package/lib/tx/index.js.map +1 -0
- package/lib/tx/transaction-configuration.d.ts +7 -0
- package/lib/tx/transaction-configuration.js +2 -0
- package/lib/tx/transaction-configuration.js.map +1 -0
- package/lib/tx/transaction-final-state.d.ts +6 -0
- package/lib/tx/transaction-final-state.js +6 -0
- package/lib/tx/transaction-final-state.js.map +1 -0
- package/lib/tx/transaction-ratchet.d.ts +6 -0
- package/lib/tx/transaction-ratchet.js +77 -0
- package/lib/tx/transaction-ratchet.js.map +1 -0
- package/lib/tx/transaction-result.d.ts +9 -0
- package/lib/tx/transaction-result.js +2 -0
- package/lib/tx/transaction-result.js.map +1 -0
- package/lib/tx/transaction-step.d.ts +5 -0
- package/lib/tx/transaction-step.js +2 -0
- package/lib/tx/transaction-step.js.map +1 -0
- package/package.json +14 -12
- package/lib/index.mjs +0 -2
- package/lib/types.d.ts +0 -1024
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FileTransferResult } from './file-transfer-result.js';
|
|
2
|
+
import { BackupResult } from './backup-result.js';
|
|
3
|
+
import { RemoteStatusData } from './remote-status-data.js';
|
|
4
|
+
export interface RemoteFileSyncLike {
|
|
5
|
+
get lastSyncEpochMS(): number;
|
|
6
|
+
get localFileName(): string;
|
|
7
|
+
get localFileBytes(): number;
|
|
8
|
+
get localFileUpdatedEpochMS(): number;
|
|
9
|
+
get remoteStatusData(): Promise<RemoteStatusData>;
|
|
10
|
+
get wouldFetch(): Promise<boolean>;
|
|
11
|
+
get wouldPush(): Promise<boolean>;
|
|
12
|
+
backupRemote(): Promise<BackupResult>;
|
|
13
|
+
sendLocalToRemote(): Promise<FileTransferResult>;
|
|
14
|
+
fetchRemoteToLocal(): Promise<FileTransferResult>;
|
|
15
|
+
fetchRemoteToLocalIfNewerThan?(epochMS: number): Promise<FileTransferResult>;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-file-sync-like.js","sourceRoot":"","sources":["../../../src/network/remote-file-sync/remote-file-sync-like.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-status-data.js","sourceRoot":"","sources":["../../../src/network/remote-file-sync/remote-status-data.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare class RestfulApiHttpError<T = void> extends Error {
|
|
2
|
+
private static readonly RATCHET_RESTFUL_API_HTTP_ERROR_FLAG_KEY;
|
|
3
|
+
private _httpStatusCode;
|
|
4
|
+
private _errors;
|
|
5
|
+
private _detailErrorCode;
|
|
6
|
+
private _endUserErrors;
|
|
7
|
+
private _details;
|
|
8
|
+
private _requestId;
|
|
9
|
+
private _wrappedError;
|
|
10
|
+
constructor(...errors: string[]);
|
|
11
|
+
static combineErrorStringsWithDefault(errors: string[], defMessage?: string): string;
|
|
12
|
+
setFormattedErrorMessage(format: string, ...input: any[]): void;
|
|
13
|
+
withFormattedErrorMessage(format: string, ...input: any[]): RestfulApiHttpError<T>;
|
|
14
|
+
withHttpStatusCode(httpStatusCode: number): RestfulApiHttpError<T>;
|
|
15
|
+
withErrors(errors: string[]): RestfulApiHttpError<T>;
|
|
16
|
+
withDetailErrorCode(detailErrorCode: number): RestfulApiHttpError<T>;
|
|
17
|
+
withEndUserErrors(endUserErrors: string[]): RestfulApiHttpError<T>;
|
|
18
|
+
withDetails(details: T): RestfulApiHttpError<T>;
|
|
19
|
+
withRequestId(requestId: string): RestfulApiHttpError<T>;
|
|
20
|
+
withWrappedError(err: Error): RestfulApiHttpError<T>;
|
|
21
|
+
isWrappedError(): boolean;
|
|
22
|
+
static wrapError<T = void>(err: Error): RestfulApiHttpError<T>;
|
|
23
|
+
static objectIsRestfulApiHttpError(obj: any): boolean;
|
|
24
|
+
get httpStatusCode(): number;
|
|
25
|
+
set httpStatusCode(value: number);
|
|
26
|
+
get errors(): string[];
|
|
27
|
+
set errors(value: string[]);
|
|
28
|
+
get detailErrorCode(): number;
|
|
29
|
+
set detailErrorCode(value: number);
|
|
30
|
+
get endUserErrors(): string[];
|
|
31
|
+
set endUserErrors(value: string[]);
|
|
32
|
+
get details(): T;
|
|
33
|
+
set details(value: T);
|
|
34
|
+
get requestId(): string;
|
|
35
|
+
set requestId(value: string);
|
|
36
|
+
get wrappedError(): Error;
|
|
37
|
+
set wrappedError(value: Error);
|
|
38
|
+
static errorIsX0x(errIn: Error, xClass: number): boolean;
|
|
39
|
+
static errorIs40x(err: Error): boolean;
|
|
40
|
+
static errorIs50x(err: Error): boolean;
|
|
41
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import util from 'util';
|
|
2
|
+
import { NumberRatchet } from '../lang/number-ratchet.js';
|
|
3
|
+
export class RestfulApiHttpError extends Error {
|
|
4
|
+
static RATCHET_RESTFUL_API_HTTP_ERROR_FLAG_KEY = '__ratchetRestfulApiHttpErrorFlag';
|
|
5
|
+
_httpStatusCode = 500;
|
|
6
|
+
_errors;
|
|
7
|
+
_detailErrorCode;
|
|
8
|
+
_endUserErrors;
|
|
9
|
+
_details;
|
|
10
|
+
_requestId;
|
|
11
|
+
_wrappedError;
|
|
12
|
+
constructor(...errors) {
|
|
13
|
+
super(RestfulApiHttpError.combineErrorStringsWithDefault(errors));
|
|
14
|
+
Object.setPrototypeOf(this, RestfulApiHttpError.prototype);
|
|
15
|
+
this._errors = errors;
|
|
16
|
+
this[RestfulApiHttpError.RATCHET_RESTFUL_API_HTTP_ERROR_FLAG_KEY] = true;
|
|
17
|
+
}
|
|
18
|
+
static combineErrorStringsWithDefault(errors, defMessage = 'Internal Server Error') {
|
|
19
|
+
return errors && errors.length > 0 ? errors.join(',') : defMessage;
|
|
20
|
+
}
|
|
21
|
+
setFormattedErrorMessage(format, ...input) {
|
|
22
|
+
const msg = util.format(format, ...input);
|
|
23
|
+
this.errors = [msg];
|
|
24
|
+
}
|
|
25
|
+
withFormattedErrorMessage(format, ...input) {
|
|
26
|
+
this.setFormattedErrorMessage(format, ...input);
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
withHttpStatusCode(httpStatusCode) {
|
|
30
|
+
this.httpStatusCode = httpStatusCode;
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
withErrors(errors) {
|
|
34
|
+
this.errors = errors;
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
withDetailErrorCode(detailErrorCode) {
|
|
38
|
+
this._detailErrorCode = detailErrorCode;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
withEndUserErrors(endUserErrors) {
|
|
42
|
+
this._endUserErrors = endUserErrors;
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
withDetails(details) {
|
|
46
|
+
this._details = details;
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
withRequestId(requestId) {
|
|
50
|
+
this._requestId = requestId;
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
withWrappedError(err) {
|
|
54
|
+
this._wrappedError = err;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
isWrappedError() {
|
|
58
|
+
return !!this._wrappedError;
|
|
59
|
+
}
|
|
60
|
+
static wrapError(err) {
|
|
61
|
+
let rval = null;
|
|
62
|
+
if (RestfulApiHttpError.objectIsRestfulApiHttpError(err)) {
|
|
63
|
+
rval = err;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
rval = new RestfulApiHttpError(err.message).withWrappedError(err).withHttpStatusCode(500);
|
|
67
|
+
}
|
|
68
|
+
return rval;
|
|
69
|
+
}
|
|
70
|
+
static objectIsRestfulApiHttpError(obj) {
|
|
71
|
+
return obj && obj[RestfulApiHttpError.RATCHET_RESTFUL_API_HTTP_ERROR_FLAG_KEY] === true;
|
|
72
|
+
}
|
|
73
|
+
get httpStatusCode() {
|
|
74
|
+
return this._httpStatusCode;
|
|
75
|
+
}
|
|
76
|
+
set httpStatusCode(value) {
|
|
77
|
+
this._httpStatusCode = value || 500;
|
|
78
|
+
}
|
|
79
|
+
get errors() {
|
|
80
|
+
return this._errors;
|
|
81
|
+
}
|
|
82
|
+
set errors(value) {
|
|
83
|
+
this._errors = value || ['Internal Server Error'];
|
|
84
|
+
this.message = RestfulApiHttpError.combineErrorStringsWithDefault(this._errors);
|
|
85
|
+
}
|
|
86
|
+
get detailErrorCode() {
|
|
87
|
+
return this._detailErrorCode;
|
|
88
|
+
}
|
|
89
|
+
set detailErrorCode(value) {
|
|
90
|
+
this._detailErrorCode = value;
|
|
91
|
+
}
|
|
92
|
+
get endUserErrors() {
|
|
93
|
+
return this._endUserErrors;
|
|
94
|
+
}
|
|
95
|
+
set endUserErrors(value) {
|
|
96
|
+
this._endUserErrors = value;
|
|
97
|
+
}
|
|
98
|
+
get details() {
|
|
99
|
+
return this._details;
|
|
100
|
+
}
|
|
101
|
+
set details(value) {
|
|
102
|
+
this._details = value;
|
|
103
|
+
}
|
|
104
|
+
get requestId() {
|
|
105
|
+
return this._requestId;
|
|
106
|
+
}
|
|
107
|
+
set requestId(value) {
|
|
108
|
+
this._requestId = value || 'MISSING';
|
|
109
|
+
}
|
|
110
|
+
get wrappedError() {
|
|
111
|
+
return this._wrappedError;
|
|
112
|
+
}
|
|
113
|
+
set wrappedError(value) {
|
|
114
|
+
this._wrappedError = value;
|
|
115
|
+
}
|
|
116
|
+
static errorIsX0x(errIn, xClass) {
|
|
117
|
+
let rval = false;
|
|
118
|
+
if (errIn && RestfulApiHttpError.objectIsRestfulApiHttpError(errIn)) {
|
|
119
|
+
const err = errIn;
|
|
120
|
+
const val = NumberRatchet.safeNumber(err.httpStatusCode);
|
|
121
|
+
const bot = xClass * 100;
|
|
122
|
+
const top = bot + 99;
|
|
123
|
+
rval = val >= bot && val <= top;
|
|
124
|
+
}
|
|
125
|
+
return rval;
|
|
126
|
+
}
|
|
127
|
+
static errorIs40x(err) {
|
|
128
|
+
return RestfulApiHttpError.errorIsX0x(err, 4);
|
|
129
|
+
}
|
|
130
|
+
static errorIs50x(err) {
|
|
131
|
+
return RestfulApiHttpError.errorIsX0x(err, 5);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=restful-api-http-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restful-api-http-error.js","sourceRoot":"","sources":["../../src/network/restful-api-http-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ratchet-template-renderer.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/template/index.ts"],"names":[],"mappings":"AAIA,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ratchet-template-renderer.js","sourceRoot":"","sources":["../../src/template/ratchet-template-renderer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Logger } from '../../logger/logger.js';
|
|
2
|
+
import { StringRatchet } from '../../lang/string-ratchet.js';
|
|
3
|
+
import fetch from 'cross-fetch';
|
|
4
|
+
export class GoogleRecaptchaRatchet {
|
|
5
|
+
static GOOGLE_VERIFY_URL = 'https://www.google.com/recaptcha/api/siteverify?secret=${KEY}&response=${TOKEN}';
|
|
6
|
+
static async verifyRecaptchaToken(keySecret, token, fetchFn = fetch) {
|
|
7
|
+
Logger.debug('Verifying recaptcha token : %s', token);
|
|
8
|
+
let rval = null;
|
|
9
|
+
if (!StringRatchet.safeString(token)) {
|
|
10
|
+
Logger.warn('Recaptcha validation error, no token passed : %s', token);
|
|
11
|
+
return rval;
|
|
12
|
+
}
|
|
13
|
+
Logger.info('Validating Recaptcha via Google API : %s', token);
|
|
14
|
+
const url = StringRatchet.simpleTemplateFill(GoogleRecaptchaRatchet.GOOGLE_VERIFY_URL, { KEY: keySecret, TOKEN: token }, true);
|
|
15
|
+
try {
|
|
16
|
+
const resp = await fetchFn(url);
|
|
17
|
+
const body = await resp.json();
|
|
18
|
+
rval = body && body.success;
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
Logger.error('Failed to read from google : %s', err);
|
|
22
|
+
rval = false;
|
|
23
|
+
}
|
|
24
|
+
return rval;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=google-recaptcha-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-recaptcha-ratchet.js","sourceRoot":"","sources":["../../../src/third-party/google/google-recaptcha-ratchet.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,MAAM,OAAO,sBAAsB;IACzB,MAAM,CAAU,iBAAiB,GAAW,iFAAiF,CAAC;IAE/H,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACtC,SAAiB,EACjB,KAAa,EACb,UAA+E,KAAK;QAEpF,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,IAAI,GAAY,IAAI,CAAC;QAEzB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,KAAK,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAW,aAAa,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QACvI,IAAI,CAAC;YACH,MAAM,IAAI,GAAa,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAQ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YACrD,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/third-party/index.ts"],"names":[],"mappings":"AAIA,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class TwilioRatchet {
|
|
2
|
+
private accountSid;
|
|
3
|
+
private authToken;
|
|
4
|
+
private outBoundNumber;
|
|
5
|
+
static readonly TWILLIO_BASE_API_URL: string;
|
|
6
|
+
constructor(accountSid: string, authToken: string, outBoundNumber: string);
|
|
7
|
+
static sendMessageDirect(accountSid: string, authToken: string, outBoundNumber: string, recipientPhoneNumbers: string[], message: string): Promise<any[]>;
|
|
8
|
+
static generateTwilioBasicAuth(sid: string, authToken: string): string;
|
|
9
|
+
sendMessage(recipientPhoneNumbers: string[], message: string): Promise<any[]>;
|
|
10
|
+
static isValidE164Number(num: string): boolean;
|
|
11
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import fetch from 'cross-fetch';
|
|
2
|
+
import { RequireRatchet } from '../../lang/require-ratchet.js';
|
|
3
|
+
import { Base64Ratchet } from '../../lang/base64-ratchet.js';
|
|
4
|
+
import { StringRatchet } from '../../lang/string-ratchet.js';
|
|
5
|
+
import { Logger } from '../../logger/logger.js';
|
|
6
|
+
export class TwilioRatchet {
|
|
7
|
+
accountSid;
|
|
8
|
+
authToken;
|
|
9
|
+
outBoundNumber;
|
|
10
|
+
static TWILLIO_BASE_API_URL = 'https://api.twilio.com/2010-04-01';
|
|
11
|
+
constructor(accountSid, authToken, outBoundNumber) {
|
|
12
|
+
this.accountSid = accountSid;
|
|
13
|
+
this.authToken = authToken;
|
|
14
|
+
this.outBoundNumber = outBoundNumber;
|
|
15
|
+
RequireRatchet.notNullOrUndefined(accountSid, 'accountSid');
|
|
16
|
+
RequireRatchet.notNullOrUndefined(authToken, 'authToken');
|
|
17
|
+
RequireRatchet.notNullOrUndefined(outBoundNumber, 'outBoundNumber');
|
|
18
|
+
RequireRatchet.true(TwilioRatchet.isValidE164Number(outBoundNumber), 'outBoundNumber invalid format');
|
|
19
|
+
}
|
|
20
|
+
static async sendMessageDirect(accountSid, authToken, outBoundNumber, recipientPhoneNumbers, message) {
|
|
21
|
+
const ratchet = new TwilioRatchet(accountSid, authToken, outBoundNumber);
|
|
22
|
+
const rval = await ratchet.sendMessage(recipientPhoneNumbers, message);
|
|
23
|
+
return rval;
|
|
24
|
+
}
|
|
25
|
+
static generateTwilioBasicAuth(sid, authToken) {
|
|
26
|
+
const authHeader = 'Basic ' + Base64Ratchet.generateBase64VersionOfString(sid + ':' + authToken);
|
|
27
|
+
return authHeader;
|
|
28
|
+
}
|
|
29
|
+
async sendMessage(recipientPhoneNumbers, message) {
|
|
30
|
+
const rval = [];
|
|
31
|
+
RequireRatchet.notNullOrUndefined(recipientPhoneNumbers, 'recipientPhoneNumbers');
|
|
32
|
+
RequireRatchet.notNullOrUndefined(StringRatchet.trimToNull(message), 'message');
|
|
33
|
+
RequireRatchet.true(recipientPhoneNumbers.length > 0, 'recipientPhoneNumbers non-empty');
|
|
34
|
+
if (!!recipientPhoneNumbers && recipientPhoneNumbers.length > 0 && !!StringRatchet.trimToNull(message)) {
|
|
35
|
+
Logger.info('Sending %s to %j', message, recipientPhoneNumbers);
|
|
36
|
+
for (const phoneNumber of recipientPhoneNumbers) {
|
|
37
|
+
Logger.info('To: %s', phoneNumber);
|
|
38
|
+
if (!TwilioRatchet.isValidE164Number(phoneNumber)) {
|
|
39
|
+
throw new Error('number must be E164 format!');
|
|
40
|
+
}
|
|
41
|
+
const body = 'Body=' +
|
|
42
|
+
encodeURIComponent(message) +
|
|
43
|
+
'&From=' +
|
|
44
|
+
encodeURIComponent(this.outBoundNumber) +
|
|
45
|
+
'&To=' +
|
|
46
|
+
encodeURIComponent(phoneNumber);
|
|
47
|
+
const post = {
|
|
48
|
+
method: 'post',
|
|
49
|
+
headers: {
|
|
50
|
+
authorization: TwilioRatchet.generateTwilioBasicAuth(this.accountSid, this.authToken),
|
|
51
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
52
|
+
},
|
|
53
|
+
body: body,
|
|
54
|
+
};
|
|
55
|
+
const res = await fetch(TwilioRatchet.TWILLIO_BASE_API_URL + '/Accounts/' + this.accountSid + '/Messages.json', post);
|
|
56
|
+
const parsedResponse = await res.json();
|
|
57
|
+
Logger.debug('TwilioRatchet: For %s got %j', phoneNumber, parsedResponse);
|
|
58
|
+
rval.push(parsedResponse);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
Logger.warn('Not sending empty message / empty recipients');
|
|
63
|
+
}
|
|
64
|
+
return rval;
|
|
65
|
+
}
|
|
66
|
+
static isValidE164Number(num) {
|
|
67
|
+
return /^\+?[1-9]\d{1,14}$/.test(num);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=twilio-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twilio-ratchet.js","sourceRoot":"","sources":["../../../src/third-party/twilio/twilio-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare class TwilioVerifyRatchet {
|
|
2
|
+
private accountSid;
|
|
3
|
+
private authToken;
|
|
4
|
+
private serviceSid;
|
|
5
|
+
static readonly TWILLIO_BASE_VERIFY_URL: string;
|
|
6
|
+
constructor(accountSid: string, authToken: string, serviceSid: string);
|
|
7
|
+
sendVerificationTokenUsingTwilioVerify(recipientPhoneNumber: string): Promise<string>;
|
|
8
|
+
simpleCheckVerificationTokenUsingTwilioVerify(recipientPhoneNumber: string, code: string): Promise<boolean>;
|
|
9
|
+
checkVerificationTokenUsingTwilioVerify(recipientPhoneNumber: string, code: string): Promise<TwilioVerifyCheckResponse>;
|
|
10
|
+
}
|
|
11
|
+
export interface TwilioVerifyCheckResponse {
|
|
12
|
+
status: string;
|
|
13
|
+
payee: string;
|
|
14
|
+
date_updated: string;
|
|
15
|
+
account_sid: string;
|
|
16
|
+
to: string;
|
|
17
|
+
amount: string;
|
|
18
|
+
valid: boolean;
|
|
19
|
+
sid: string;
|
|
20
|
+
date_created: string;
|
|
21
|
+
service_sid: string;
|
|
22
|
+
channel: string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import fetch from 'cross-fetch';
|
|
2
|
+
import { RequireRatchet } from '../../lang/require-ratchet.js';
|
|
3
|
+
import { Logger } from '../../logger/logger.js';
|
|
4
|
+
import { TwilioRatchet } from './twilio-ratchet.js';
|
|
5
|
+
export class TwilioVerifyRatchet {
|
|
6
|
+
accountSid;
|
|
7
|
+
authToken;
|
|
8
|
+
serviceSid;
|
|
9
|
+
static TWILLIO_BASE_VERIFY_URL = 'https://verify.twilio.com/v2/Services/';
|
|
10
|
+
constructor(accountSid, authToken, serviceSid) {
|
|
11
|
+
this.accountSid = accountSid;
|
|
12
|
+
this.authToken = authToken;
|
|
13
|
+
this.serviceSid = serviceSid;
|
|
14
|
+
RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(accountSid, 'accountSid');
|
|
15
|
+
RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(authToken, 'authToken');
|
|
16
|
+
RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(serviceSid, 'serviceSid');
|
|
17
|
+
}
|
|
18
|
+
async sendVerificationTokenUsingTwilioVerify(recipientPhoneNumber) {
|
|
19
|
+
RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(recipientPhoneNumber, 'recipientPhoneNumber');
|
|
20
|
+
RequireRatchet.true(TwilioRatchet.isValidE164Number(recipientPhoneNumber), 'recipientPhoneNumber must be E164');
|
|
21
|
+
const phone = recipientPhoneNumber.startsWith('+1') ? recipientPhoneNumber : '+1' + recipientPhoneNumber;
|
|
22
|
+
const body = 'Channel=sms&To=' + encodeURIComponent(phone);
|
|
23
|
+
const post = {
|
|
24
|
+
method: 'post',
|
|
25
|
+
headers: {
|
|
26
|
+
authorization: TwilioRatchet.generateTwilioBasicAuth(this.accountSid, this.authToken),
|
|
27
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
28
|
+
},
|
|
29
|
+
body: body,
|
|
30
|
+
};
|
|
31
|
+
const url = TwilioVerifyRatchet.TWILLIO_BASE_VERIFY_URL + this.serviceSid + '/Verifications';
|
|
32
|
+
const res = await fetch(url, post);
|
|
33
|
+
const respBody = await res.text();
|
|
34
|
+
return respBody;
|
|
35
|
+
}
|
|
36
|
+
async simpleCheckVerificationTokenUsingTwilioVerify(recipientPhoneNumber, code) {
|
|
37
|
+
const val = await this.checkVerificationTokenUsingTwilioVerify(recipientPhoneNumber, code);
|
|
38
|
+
return val && val.status === 'approved';
|
|
39
|
+
}
|
|
40
|
+
async checkVerificationTokenUsingTwilioVerify(recipientPhoneNumber, code) {
|
|
41
|
+
RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(recipientPhoneNumber, 'recipientPhoneNumber');
|
|
42
|
+
RequireRatchet.true(TwilioRatchet.isValidE164Number(recipientPhoneNumber), 'recipientPhoneNumber must be E164');
|
|
43
|
+
const phone = recipientPhoneNumber.startsWith('+1') ? recipientPhoneNumber : '+1' + recipientPhoneNumber;
|
|
44
|
+
const body = 'To=' + encodeURIComponent(phone) + '&Code=' + encodeURIComponent(code);
|
|
45
|
+
const post = {
|
|
46
|
+
method: 'post',
|
|
47
|
+
headers: {
|
|
48
|
+
authorization: TwilioRatchet.generateTwilioBasicAuth(this.accountSid, this.authToken),
|
|
49
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
50
|
+
},
|
|
51
|
+
body: body,
|
|
52
|
+
};
|
|
53
|
+
const url = TwilioVerifyRatchet.TWILLIO_BASE_VERIFY_URL + this.serviceSid + '/VerificationCheck';
|
|
54
|
+
Logger.info('Using %s / %j', url, post);
|
|
55
|
+
const res = await fetch(url, post);
|
|
56
|
+
const parsedResponse = await res.json();
|
|
57
|
+
return parsedResponse;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=twilio-verify-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twilio-verify-ratchet.js","sourceRoot":"","sources":["../../../src/third-party/twilio/twilio-verify-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TransformRule } from './transform-rule.js';
|
|
2
|
+
export declare class BuiltInTransforms {
|
|
3
|
+
static keysOnly(rule: TransformRule): TransformRule;
|
|
4
|
+
static valuesOnly(rule: TransformRule): TransformRule;
|
|
5
|
+
static stringReplaceTransform(input: string, output: string): TransformRule;
|
|
6
|
+
static stripStringTransform(input: string): TransformRule;
|
|
7
|
+
static retainAll(input: string[]): TransformRule;
|
|
8
|
+
static removeAll(input: string[]): TransformRule;
|
|
9
|
+
static snakeToCamelCase(): TransformRule;
|
|
10
|
+
static stringToNumber(): TransformRule;
|
|
11
|
+
static camelToSnakeCase(): TransformRule;
|
|
12
|
+
static concatenateToNewField(newFieldName: string, oldFieldNamesInOrder: string[], abortIfFieldMissing?: boolean): TransformRule;
|
|
13
|
+
static numberToBool(fieldNames: string[]): TransformRule;
|
|
14
|
+
static boolToNumber(fieldNames: string[]): TransformRule;
|
|
15
|
+
static makeDuplicateField(oldName: string, newName: string): TransformRule;
|
|
16
|
+
static addField(name: string, valueToAdd: string): TransformRule;
|
|
17
|
+
static reformatDateFields(fieldNames: string[], oldFormat: string, newFormat: string): TransformRule;
|
|
18
|
+
}
|