@bitblit/ratchet-common 4.0.420-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
|
+
import { JwtTokenBase } from './jwt-token-base.js';
|
|
2
|
+
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
3
|
+
import { ExpiredJwtHandling } from './expired-jwt-handling.js';
|
|
4
|
+
import { JwtRatchetLike } from './jwt-ratchet-like.js';
|
|
5
|
+
import { JwtRatchetConfig } from './jwt-ratchet-config.js';
|
|
6
|
+
export declare class JwtRatchet implements JwtRatchetLike {
|
|
7
|
+
private cfg;
|
|
8
|
+
private static readonly EXPIRED_FLAG_NAME;
|
|
9
|
+
constructor(cfg: JwtRatchetConfig);
|
|
10
|
+
get copyConfig(): JwtRatchetConfig;
|
|
11
|
+
get encryptionKeyPromise(): Promise<string | string[]>;
|
|
12
|
+
get decryptKeysPromise(): Promise<string[]>;
|
|
13
|
+
get jtiGenerator(): () => string;
|
|
14
|
+
get decryptOnlyKeyUseLogLevel(): LoggerLevelName;
|
|
15
|
+
get parseFailureLogLevel(): LoggerLevelName;
|
|
16
|
+
static hasExpiredFlag(ob: any): boolean;
|
|
17
|
+
static invalidSafeDecode<T>(payloadString: string, decryptKey: string, logLevel?: LoggerLevelName): Promise<T>;
|
|
18
|
+
static secondsRemainingUntilExpiration(payloadString: string): Promise<number>;
|
|
19
|
+
static msRemainingUntilExpiration(payloadString: string): Promise<number>;
|
|
20
|
+
decodeToken<T extends JwtTokenBase>(payloadString: string, expiredHandling?: ExpiredJwtHandling): Promise<T>;
|
|
21
|
+
encryptionKeyArray(): Promise<string[]>;
|
|
22
|
+
selectRandomEncryptionKey(): Promise<string>;
|
|
23
|
+
createTokenString(payload: any, expirationSeconds?: number, overrideEncryptionKey?: string): Promise<string>;
|
|
24
|
+
refreshJWTString(tokenString: string, allowExpired?: boolean, expirationSeconds?: number): Promise<string>;
|
|
25
|
+
static decodeTokenNoVerify<T extends JwtTokenBase>(token: string): Promise<T>;
|
|
26
|
+
static removeJwtFields(ob: any): void;
|
|
27
|
+
static removeExpiredFlag(ob: any): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { RequireRatchet } from '../lang/require-ratchet.js';
|
|
2
|
+
import { Logger } from '../logger/logger.js';
|
|
3
|
+
import { StringRatchet } from '../lang/string-ratchet.js';
|
|
4
|
+
import { DurationRatchet } from '../lang/duration-ratchet.js';
|
|
5
|
+
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
6
|
+
import jsonwebtoken from 'jsonwebtoken';
|
|
7
|
+
export class JwtRatchet {
|
|
8
|
+
cfg;
|
|
9
|
+
static EXPIRED_FLAG_NAME = '__jwtServiceExpiredFlag';
|
|
10
|
+
constructor(cfg) {
|
|
11
|
+
this.cfg = cfg;
|
|
12
|
+
RequireRatchet.notNullOrUndefined(cfg, 'config');
|
|
13
|
+
RequireRatchet.notNullOrUndefined(cfg.encryptionKeyPromise, 'encryptionKeyPromise');
|
|
14
|
+
cfg.jtiGenerator = cfg.jtiGenerator ?? StringRatchet.createType4Guid;
|
|
15
|
+
cfg.decryptOnlyKeyUseLogLevel = cfg.decryptOnlyKeyUseLogLevel ?? LoggerLevelName.info;
|
|
16
|
+
cfg.parseFailureLogLevel = cfg.parseFailureLogLevel ?? LoggerLevelName.debug;
|
|
17
|
+
}
|
|
18
|
+
get copyConfig() {
|
|
19
|
+
const rval = {
|
|
20
|
+
encryptionKeyPromise: this.cfg.encryptionKeyPromise,
|
|
21
|
+
decryptKeysPromise: this.cfg.decryptKeysPromise,
|
|
22
|
+
jtiGenerator: this.cfg.jtiGenerator,
|
|
23
|
+
decryptOnlyKeyUseLogLevel: this.cfg.decryptOnlyKeyUseLogLevel,
|
|
24
|
+
parseFailureLogLevel: this.cfg.parseFailureLogLevel,
|
|
25
|
+
};
|
|
26
|
+
return rval;
|
|
27
|
+
}
|
|
28
|
+
get encryptionKeyPromise() {
|
|
29
|
+
return this.cfg.encryptionKeyPromise;
|
|
30
|
+
}
|
|
31
|
+
get decryptKeysPromise() {
|
|
32
|
+
return this.cfg.decryptKeysPromise;
|
|
33
|
+
}
|
|
34
|
+
get jtiGenerator() {
|
|
35
|
+
return this.cfg.jtiGenerator;
|
|
36
|
+
}
|
|
37
|
+
get decryptOnlyKeyUseLogLevel() {
|
|
38
|
+
return this.cfg.decryptOnlyKeyUseLogLevel;
|
|
39
|
+
}
|
|
40
|
+
get parseFailureLogLevel() {
|
|
41
|
+
return this.cfg.parseFailureLogLevel;
|
|
42
|
+
}
|
|
43
|
+
static hasExpiredFlag(ob) {
|
|
44
|
+
return ob && ob[JwtRatchet.EXPIRED_FLAG_NAME] === true;
|
|
45
|
+
}
|
|
46
|
+
static async invalidSafeDecode(payloadString, decryptKey, logLevel = LoggerLevelName.silly) {
|
|
47
|
+
let rval = null;
|
|
48
|
+
try {
|
|
49
|
+
rval = jsonwebtoken.verify(payloadString, decryptKey, { ignoreExpiration: true });
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
Logger.logByLevel(logLevel, 'Caught %s - ignoring', err);
|
|
53
|
+
}
|
|
54
|
+
return rval;
|
|
55
|
+
}
|
|
56
|
+
static async secondsRemainingUntilExpiration(payloadString) {
|
|
57
|
+
let rval = null;
|
|
58
|
+
if (StringRatchet.trimToNull(payloadString)) {
|
|
59
|
+
const output = await JwtRatchet.decodeTokenNoVerify(payloadString);
|
|
60
|
+
const nowSecond = Math.floor(Date.now() / 1000);
|
|
61
|
+
if (output.exp) {
|
|
62
|
+
const expSeconds = output.exp > nowSecond * 100 ? Math.floor(output.exp / 1000) : output.exp;
|
|
63
|
+
rval = Math.max(0, expSeconds - nowSecond);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return rval;
|
|
67
|
+
}
|
|
68
|
+
static async msRemainingUntilExpiration(payloadString) {
|
|
69
|
+
const secs = await JwtRatchet.secondsRemainingUntilExpiration(payloadString);
|
|
70
|
+
let rval = null;
|
|
71
|
+
if (secs !== null && secs !== undefined) {
|
|
72
|
+
rval = secs * 1000;
|
|
73
|
+
}
|
|
74
|
+
return rval;
|
|
75
|
+
}
|
|
76
|
+
async decodeToken(payloadString, expiredHandling = 0) {
|
|
77
|
+
const encKeys = await this.encryptionKeyArray();
|
|
78
|
+
let decKeys = Object.assign([], encKeys);
|
|
79
|
+
if (this.decryptKeysPromise) {
|
|
80
|
+
decKeys = decKeys.concat(await this.decryptKeysPromise);
|
|
81
|
+
}
|
|
82
|
+
const keysTried = [];
|
|
83
|
+
let payload = null;
|
|
84
|
+
for (let i = 0; i < decKeys.length && !payload; i++) {
|
|
85
|
+
keysTried.push(StringRatchet.obscure(decKeys[i], 1, 1));
|
|
86
|
+
const logLevel = i === decKeys.length - 1 && this.parseFailureLogLevel ? this.parseFailureLogLevel : LoggerLevelName.silly;
|
|
87
|
+
payload = await JwtRatchet.invalidSafeDecode(payloadString, decKeys[i], logLevel);
|
|
88
|
+
if (payload && i >= encKeys.length) {
|
|
89
|
+
Logger.logByLevel(this.decryptOnlyKeyUseLogLevel, 'Used old key to decode token : %s', StringRatchet.obscure(decKeys[i], 2));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (payload) {
|
|
93
|
+
const nowSeconds = Math.floor(Date.now() / 1000);
|
|
94
|
+
const expSeconds = payload?.exp && payload.exp > nowSeconds * 100 ? Math.floor(payload.exp / 1000) : payload?.exp;
|
|
95
|
+
const nbfSeconds = payload?.nbf && payload.nbf > nowSeconds * 100 ? Math.floor(payload.nbf / 1000) : payload?.nbf;
|
|
96
|
+
if ((expSeconds && nowSeconds >= expSeconds) || (nbfSeconds && nowSeconds <= nbfSeconds)) {
|
|
97
|
+
const age = nowSeconds - expSeconds;
|
|
98
|
+
Logger.debug('JWT token expired or before NBF : on %d, %s ago', payload.exp, DurationRatchet.formatMsDuration(age * 1000));
|
|
99
|
+
switch (expiredHandling) {
|
|
100
|
+
case 1:
|
|
101
|
+
throw new Error('JWT Token was expired');
|
|
102
|
+
case 2:
|
|
103
|
+
payload[JwtRatchet.EXPIRED_FLAG_NAME] = true;
|
|
104
|
+
break;
|
|
105
|
+
default:
|
|
106
|
+
payload = null;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
Logger.warn('Unable to parse a payload (Tried %j) from : %s', keysTried, payloadString);
|
|
113
|
+
}
|
|
114
|
+
return payload;
|
|
115
|
+
}
|
|
116
|
+
async encryptionKeyArray() {
|
|
117
|
+
const encKey = await this.encryptionKeyPromise;
|
|
118
|
+
const rval = Array.isArray(encKey) ? encKey : [encKey];
|
|
119
|
+
if (rval.length < 1) {
|
|
120
|
+
throw new Error('Cannot create JwtRatchet with empty encryption key set');
|
|
121
|
+
}
|
|
122
|
+
return rval;
|
|
123
|
+
}
|
|
124
|
+
async selectRandomEncryptionKey() {
|
|
125
|
+
const encKey = await this.encryptionKeyArray();
|
|
126
|
+
const rval = encKey[Math.floor(Math.random() * encKey.length)];
|
|
127
|
+
return rval;
|
|
128
|
+
}
|
|
129
|
+
async createTokenString(payload, expirationSeconds, overrideEncryptionKey) {
|
|
130
|
+
const encKey = StringRatchet.trimToNull(overrideEncryptionKey)
|
|
131
|
+
? StringRatchet.trimToNull(overrideEncryptionKey)
|
|
132
|
+
: await this.selectRandomEncryptionKey();
|
|
133
|
+
RequireRatchet.notNullOrUndefined(payload, 'payload');
|
|
134
|
+
payload.jti = this.jtiGenerator ? this.jtiGenerator() : null;
|
|
135
|
+
if (expirationSeconds) {
|
|
136
|
+
const nowSeconds = Math.floor(Date.now() / 1000);
|
|
137
|
+
const expires = nowSeconds + expirationSeconds;
|
|
138
|
+
Logger.debug('Forcing expiration to %d', expires);
|
|
139
|
+
payload.exp = expires;
|
|
140
|
+
}
|
|
141
|
+
const token = jsonwebtoken.sign(payload, encKey);
|
|
142
|
+
return token;
|
|
143
|
+
}
|
|
144
|
+
async refreshJWTString(tokenString, allowExpired, expirationSeconds) {
|
|
145
|
+
const handling = allowExpired ? 2 : 1;
|
|
146
|
+
const payload = await this.decodeToken(tokenString, handling);
|
|
147
|
+
const originalDurationSeconds = payload.exp && payload.iat ? payload.exp - payload.iat : null;
|
|
148
|
+
const newExpirationSeconds = expirationSeconds || originalDurationSeconds;
|
|
149
|
+
JwtRatchet.removeJwtFields(payload);
|
|
150
|
+
JwtRatchet.removeExpiredFlag(payload);
|
|
151
|
+
const token = await this.createTokenString(payload, newExpirationSeconds);
|
|
152
|
+
return token;
|
|
153
|
+
}
|
|
154
|
+
static async decodeTokenNoVerify(token) {
|
|
155
|
+
const rval = jsonwebtoken.decode(token);
|
|
156
|
+
return rval;
|
|
157
|
+
}
|
|
158
|
+
static removeJwtFields(ob) {
|
|
159
|
+
if (ob) {
|
|
160
|
+
['iss', 'sub', 'aud', 'exp', 'nbf', 'iat', 'jti'].forEach((k) => {
|
|
161
|
+
delete ob[k];
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
static removeExpiredFlag(ob) {
|
|
166
|
+
if (ob) {
|
|
167
|
+
delete ob[JwtRatchet.EXPIRED_FLAG_NAME];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=jwt-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-ratchet.js","sourceRoot":"","sources":["../../src/jwt/jwt-ratchet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-token-base.js","sourceRoot":"","sources":["../../src/jwt/jwt-token-base.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class ArrayRatchet {
|
|
2
|
+
static wrapElementsInArray(input: any[]): any[][];
|
|
3
|
+
static compareTwoArrays<T>(ar1: T[], ar2: T[], fn: ComparisonFunction<T>): MatchReport<T>;
|
|
4
|
+
static extractSubarrayFromSortedByNumberField<T>(input: T[], fieldDotPath: string, minInclusive: number, maxExclusive: number): T[];
|
|
5
|
+
static findSplit(input: any[], fieldDotPath: string, target: number): number;
|
|
6
|
+
}
|
|
7
|
+
export type ComparisonFunction<T> = (t1: T, t2: T) => number;
|
|
8
|
+
export interface MatchReport<T> {
|
|
9
|
+
matching: T[];
|
|
10
|
+
setOneOnly: T[];
|
|
11
|
+
setTwoOnly: T[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { RequireRatchet } from './require-ratchet.js';
|
|
2
|
+
import { MapRatchet } from './map-ratchet.js';
|
|
3
|
+
export class ArrayRatchet {
|
|
4
|
+
static wrapElementsInArray(input) {
|
|
5
|
+
return input.map((i) => [i]);
|
|
6
|
+
}
|
|
7
|
+
static compareTwoArrays(ar1, ar2, fn) {
|
|
8
|
+
ar1.sort(fn);
|
|
9
|
+
ar2.sort(fn);
|
|
10
|
+
let id1 = 0;
|
|
11
|
+
let id2 = 0;
|
|
12
|
+
const rval = {
|
|
13
|
+
matching: [],
|
|
14
|
+
setOneOnly: [],
|
|
15
|
+
setTwoOnly: [],
|
|
16
|
+
};
|
|
17
|
+
while (id1 < ar1.length && id2 < ar2.length) {
|
|
18
|
+
const aVal = ar1[id1];
|
|
19
|
+
const pVal = ar2[id2];
|
|
20
|
+
const comp = fn(aVal, pVal);
|
|
21
|
+
if (comp === 0) {
|
|
22
|
+
rval.matching.push(aVal);
|
|
23
|
+
id1++;
|
|
24
|
+
id2++;
|
|
25
|
+
}
|
|
26
|
+
else if (comp < 0) {
|
|
27
|
+
rval.setOneOnly.push(aVal);
|
|
28
|
+
id1++;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
rval.setTwoOnly.push(pVal);
|
|
32
|
+
id2++;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (id1 < ar1.length - 1) {
|
|
36
|
+
rval.setOneOnly = rval.setOneOnly.concat(ar1.slice(id1));
|
|
37
|
+
}
|
|
38
|
+
if (id2 < ar2.length - 1) {
|
|
39
|
+
rval.setTwoOnly = rval.setTwoOnly.concat(ar2.slice(id2));
|
|
40
|
+
}
|
|
41
|
+
return rval;
|
|
42
|
+
}
|
|
43
|
+
static extractSubarrayFromSortedByNumberField(input, fieldDotPath, minInclusive, maxExclusive) {
|
|
44
|
+
if (!input || input.length === 0) {
|
|
45
|
+
return input;
|
|
46
|
+
}
|
|
47
|
+
let bottomIdx = minInclusive === null ? 0 : ArrayRatchet.findSplit(input, fieldDotPath, minInclusive) || 0;
|
|
48
|
+
const topIdx = maxExclusive === null ? input.length : ArrayRatchet.findSplit(input, fieldDotPath, maxExclusive);
|
|
49
|
+
const bottomValue = MapRatchet.findValueDotPath(input[bottomIdx], fieldDotPath);
|
|
50
|
+
if (bottomIdx === input.length - 1 && bottomValue < minInclusive) {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
if (bottomIdx < input.length && bottomIdx < topIdx && bottomValue < minInclusive) {
|
|
54
|
+
bottomIdx++;
|
|
55
|
+
}
|
|
56
|
+
return input.slice(bottomIdx, topIdx + 1);
|
|
57
|
+
}
|
|
58
|
+
static findSplit(input, fieldDotPath, target) {
|
|
59
|
+
RequireRatchet.notNullOrUndefined(input);
|
|
60
|
+
RequireRatchet.notNullOrUndefined(fieldDotPath);
|
|
61
|
+
RequireRatchet.notNullOrUndefined(target);
|
|
62
|
+
if (input.length === 0 || MapRatchet.findValueDotPath(input[0], fieldDotPath) > target) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
let min = 0;
|
|
66
|
+
let max = input.length;
|
|
67
|
+
let rval = null;
|
|
68
|
+
while (rval === null) {
|
|
69
|
+
const curIdx = Math.floor((min + max) / 2);
|
|
70
|
+
const curVal = MapRatchet.findValueDotPath(input[curIdx], fieldDotPath);
|
|
71
|
+
if (min === max || min === max - 1) {
|
|
72
|
+
rval = min;
|
|
73
|
+
}
|
|
74
|
+
else if (curVal <= target) {
|
|
75
|
+
min = curIdx;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
max = curIdx;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return rval;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=array-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-ratchet.js","sourceRoot":"","sources":["../../src/lang/array-ratchet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,OAAO,YAAY;IAChB,MAAM,CAAC,mBAAmB,CAAC,KAAY;QAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAI,GAAQ,EAAE,GAAQ,EAAE,EAAyB;QAC7E,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEb,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,IAAI,GAAmB;YAC3B,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,IAAI,GAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,IAAI,GAAW,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEpC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,CAAC;YACR,CAAC;iBAAM,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,GAAG,EAAE,CAAC;YACR,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,GAAG,EAAE,CAAC;YACR,CAAC;QACH,CAAC;QAED,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAUM,MAAM,CAAC,sCAAsC,CAClD,KAAU,EACV,YAAoB,EACpB,YAAoB,EACpB,YAAoB;QAEpB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,SAAS,GAAW,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QACnH,MAAM,MAAM,GAAW,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAExH,MAAM,WAAW,GAAW,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;QACxF,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;YAEjE,OAAO,EAAE,CAAC;QACZ,CAAC;QAID,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,SAAS,GAAG,MAAM,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;YACjF,SAAS,EAAE,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAUM,MAAM,CAAC,SAAS,CAAC,KAAY,EAAE,YAAoB,EAAE,MAAc;QACxE,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAChD,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,MAAM,EAAE,CAAC;YACvF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,GAAG,GAAW,KAAK,CAAC,MAAM,CAAC;QAC/B,IAAI,IAAI,GAAW,IAAI,CAAC;QAExB,OAAO,IAAI,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,MAAM,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,MAAM,MAAM,GAAW,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;YAChF,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;gBACnC,IAAI,GAAG,GAAG,CAAC;YACb,CAAC;iBAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;gBAC5B,GAAG,GAAG,MAAM,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,MAAM,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare class Base64Ratchet {
|
|
2
|
+
static safeObjectToBase64JSON(input: any): any;
|
|
3
|
+
static safeBase64JSONParse(input: string): any;
|
|
4
|
+
static generateBase64VersionOfBlob(blob: Blob): Promise<string>;
|
|
5
|
+
static generateBase64VersionOfString(input: string): string;
|
|
6
|
+
static generateBase64VersionOfUint8Array(input: Uint8Array): string;
|
|
7
|
+
static base64StringToUint8Array(b64encoded: string): Uint8Array;
|
|
8
|
+
static base64StringToString(input: string, encoding?: string): string;
|
|
9
|
+
private static BASE64_ABC;
|
|
10
|
+
private static BASE64_CODES;
|
|
11
|
+
static getBase64Code(charCode: number): number;
|
|
12
|
+
static uint8ArrayToBase64UrlString(bytes: Uint8Array): string;
|
|
13
|
+
static uint8ArrayToBase64String(bytes: Uint8Array): string;
|
|
14
|
+
static base64StringToBytes(str: string): Uint8Array;
|
|
15
|
+
static base64UrlStringToBytes(str: string): Uint8Array;
|
|
16
|
+
static encodeStringToBase64String(str: string, encoder?: TextEncoder): string;
|
|
17
|
+
static encodeStringToBase64UrlString(str: string, encoder?: TextEncoder): string;
|
|
18
|
+
static decodeBase64StringToString(str: string, decoder?: TextDecoder): string;
|
|
19
|
+
static decodeBase64UrlStringToString(str: string, decoder?: TextDecoder): string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { Logger } from '../logger/logger.js';
|
|
2
|
+
import { StringRatchet } from './string-ratchet.js';
|
|
3
|
+
import { ErrorRatchet } from './error-ratchet.js';
|
|
4
|
+
export class Base64Ratchet {
|
|
5
|
+
static safeObjectToBase64JSON(input) {
|
|
6
|
+
return input ? Base64Ratchet.generateBase64VersionOfString(JSON.stringify(input)) : null;
|
|
7
|
+
}
|
|
8
|
+
static safeBase64JSONParse(input) {
|
|
9
|
+
let rval = {};
|
|
10
|
+
try {
|
|
11
|
+
if (input) {
|
|
12
|
+
rval = JSON.parse(Base64Ratchet.base64StringToString(input, 'utf-8'));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
Logger.warn('Error parsing b64/json : %s as json, got %s', input, err, err);
|
|
17
|
+
rval = {};
|
|
18
|
+
}
|
|
19
|
+
return rval;
|
|
20
|
+
}
|
|
21
|
+
static generateBase64VersionOfBlob(blob) {
|
|
22
|
+
return new Promise(function (resolve, reject) {
|
|
23
|
+
if (!blob || blob.size == 0) {
|
|
24
|
+
reject('Wont convert null or non-blob or empty blob');
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const reader = new FileReader();
|
|
28
|
+
reader.onloadend = function () {
|
|
29
|
+
resolve(reader.result.toString());
|
|
30
|
+
};
|
|
31
|
+
reader.readAsDataURL(blob);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
static generateBase64VersionOfString(input) {
|
|
36
|
+
return Base64Ratchet.generateBase64VersionOfUint8Array(StringRatchet.stringToUint8Array(input));
|
|
37
|
+
}
|
|
38
|
+
static generateBase64VersionOfUint8Array(input) {
|
|
39
|
+
return Base64Ratchet.uint8ArrayToBase64String(input);
|
|
40
|
+
}
|
|
41
|
+
static base64StringToUint8Array(b64encoded) {
|
|
42
|
+
try {
|
|
43
|
+
const uint8 = Base64Ratchet.base64StringToBytes(b64encoded);
|
|
44
|
+
return uint8;
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
Logger.error('Failed to decode base64: %s', b64encoded);
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
static base64StringToString(input, encoding = 'utf8') {
|
|
52
|
+
return new TextDecoder(encoding).decode(Base64Ratchet.base64StringToUint8Array(input));
|
|
53
|
+
}
|
|
54
|
+
static BASE64_ABC = [
|
|
55
|
+
'A',
|
|
56
|
+
'B',
|
|
57
|
+
'C',
|
|
58
|
+
'D',
|
|
59
|
+
'E',
|
|
60
|
+
'F',
|
|
61
|
+
'G',
|
|
62
|
+
'H',
|
|
63
|
+
'I',
|
|
64
|
+
'J',
|
|
65
|
+
'K',
|
|
66
|
+
'L',
|
|
67
|
+
'M',
|
|
68
|
+
'N',
|
|
69
|
+
'O',
|
|
70
|
+
'P',
|
|
71
|
+
'Q',
|
|
72
|
+
'R',
|
|
73
|
+
'S',
|
|
74
|
+
'T',
|
|
75
|
+
'U',
|
|
76
|
+
'V',
|
|
77
|
+
'W',
|
|
78
|
+
'X',
|
|
79
|
+
'Y',
|
|
80
|
+
'Z',
|
|
81
|
+
'a',
|
|
82
|
+
'b',
|
|
83
|
+
'c',
|
|
84
|
+
'd',
|
|
85
|
+
'e',
|
|
86
|
+
'f',
|
|
87
|
+
'g',
|
|
88
|
+
'h',
|
|
89
|
+
'i',
|
|
90
|
+
'j',
|
|
91
|
+
'k',
|
|
92
|
+
'l',
|
|
93
|
+
'm',
|
|
94
|
+
'n',
|
|
95
|
+
'o',
|
|
96
|
+
'p',
|
|
97
|
+
'q',
|
|
98
|
+
'r',
|
|
99
|
+
's',
|
|
100
|
+
't',
|
|
101
|
+
'u',
|
|
102
|
+
'v',
|
|
103
|
+
'w',
|
|
104
|
+
'x',
|
|
105
|
+
'y',
|
|
106
|
+
'z',
|
|
107
|
+
'0',
|
|
108
|
+
'1',
|
|
109
|
+
'2',
|
|
110
|
+
'3',
|
|
111
|
+
'4',
|
|
112
|
+
'5',
|
|
113
|
+
'6',
|
|
114
|
+
'7',
|
|
115
|
+
'8',
|
|
116
|
+
'9',
|
|
117
|
+
'+',
|
|
118
|
+
'/',
|
|
119
|
+
];
|
|
120
|
+
static BASE64_CODES = [
|
|
121
|
+
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
|
122
|
+
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59,
|
|
123
|
+
60, 61, 255, 255, 255, 0, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
|
|
124
|
+
255, 255, 255, 255, 255, 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
|
|
125
|
+
];
|
|
126
|
+
static getBase64Code(charCode) {
|
|
127
|
+
if (charCode >= Base64Ratchet.BASE64_CODES.length) {
|
|
128
|
+
throw new Error('Unable to parse base64 string.');
|
|
129
|
+
}
|
|
130
|
+
const code = Base64Ratchet.BASE64_CODES[charCode];
|
|
131
|
+
if (code === 255) {
|
|
132
|
+
throw new Error('Unable to parse base64 string.');
|
|
133
|
+
}
|
|
134
|
+
return code;
|
|
135
|
+
}
|
|
136
|
+
static uint8ArrayToBase64UrlString(bytes) {
|
|
137
|
+
let tmp = Base64Ratchet.uint8ArrayToBase64String(bytes);
|
|
138
|
+
tmp = tmp.split('+').join('-').split('/').join('_').split('=').join('');
|
|
139
|
+
return tmp;
|
|
140
|
+
}
|
|
141
|
+
static uint8ArrayToBase64String(bytes) {
|
|
142
|
+
let result = '';
|
|
143
|
+
let i;
|
|
144
|
+
const l = bytes.length;
|
|
145
|
+
for (i = 2; i < l; i += 3) {
|
|
146
|
+
result += Base64Ratchet.BASE64_ABC[bytes[i - 2] >> 2];
|
|
147
|
+
result += Base64Ratchet.BASE64_ABC[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];
|
|
148
|
+
result += Base64Ratchet.BASE64_ABC[((bytes[i - 1] & 0x0f) << 2) | (bytes[i] >> 6)];
|
|
149
|
+
result += Base64Ratchet.BASE64_ABC[bytes[i] & 0x3f];
|
|
150
|
+
}
|
|
151
|
+
if (i === l + 1) {
|
|
152
|
+
result += Base64Ratchet.BASE64_ABC[bytes[i - 2] >> 2];
|
|
153
|
+
result += Base64Ratchet.BASE64_ABC[(bytes[i - 2] & 0x03) << 4];
|
|
154
|
+
result += '==';
|
|
155
|
+
}
|
|
156
|
+
if (i === l) {
|
|
157
|
+
result += Base64Ratchet.BASE64_ABC[bytes[i - 2] >> 2];
|
|
158
|
+
result += Base64Ratchet.BASE64_ABC[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];
|
|
159
|
+
result += Base64Ratchet.BASE64_ABC[(bytes[i - 1] & 0x0f) << 2];
|
|
160
|
+
result += '=';
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
static base64StringToBytes(str) {
|
|
165
|
+
if (str.length % 4 !== 0) {
|
|
166
|
+
throw ErrorRatchet.fErr('Unable to parse base64 string, length: %s', str.length);
|
|
167
|
+
}
|
|
168
|
+
const index = str.indexOf('=');
|
|
169
|
+
if (index !== -1 && index < str.length - 2) {
|
|
170
|
+
throw ErrorRatchet.fErr('Unable to parse base64 string, index %s', index);
|
|
171
|
+
}
|
|
172
|
+
const missingOctets = str.endsWith('==') ? 2 : str.endsWith('=') ? 1 : 0;
|
|
173
|
+
const n = str.length;
|
|
174
|
+
const result = new Uint8Array(3 * (n / 4));
|
|
175
|
+
let buffer;
|
|
176
|
+
for (let i = 0, j = 0; i < n; i += 4, j += 3) {
|
|
177
|
+
buffer =
|
|
178
|
+
(Base64Ratchet.getBase64Code(str.charCodeAt(i)) << 18) |
|
|
179
|
+
(Base64Ratchet.getBase64Code(str.charCodeAt(i + 1)) << 12) |
|
|
180
|
+
(Base64Ratchet.getBase64Code(str.charCodeAt(i + 2)) << 6) |
|
|
181
|
+
Base64Ratchet.getBase64Code(str.charCodeAt(i + 3));
|
|
182
|
+
result[j] = buffer >> 16;
|
|
183
|
+
result[j + 1] = (buffer >> 8) & 0xff;
|
|
184
|
+
result[j + 2] = buffer & 0xff;
|
|
185
|
+
}
|
|
186
|
+
return result.subarray(0, result.length - missingOctets);
|
|
187
|
+
}
|
|
188
|
+
static base64UrlStringToBytes(str) {
|
|
189
|
+
let dec = str.split('-').join('+').split('_').join('/');
|
|
190
|
+
while (dec.length % 4 !== 0) {
|
|
191
|
+
dec += '=';
|
|
192
|
+
}
|
|
193
|
+
Logger.info('pre: %s post %s', str, dec);
|
|
194
|
+
return Base64Ratchet.base64StringToBytes(dec);
|
|
195
|
+
}
|
|
196
|
+
static encodeStringToBase64String(str, encoder = new TextEncoder()) {
|
|
197
|
+
return Base64Ratchet.uint8ArrayToBase64String(encoder.encode(str));
|
|
198
|
+
}
|
|
199
|
+
static encodeStringToBase64UrlString(str, encoder = new TextEncoder()) {
|
|
200
|
+
return Base64Ratchet.uint8ArrayToBase64UrlString(encoder.encode(str));
|
|
201
|
+
}
|
|
202
|
+
static decodeBase64StringToString(str, decoder = new TextDecoder()) {
|
|
203
|
+
return decoder.decode(Base64Ratchet.base64StringToBytes(str));
|
|
204
|
+
}
|
|
205
|
+
static decodeBase64UrlStringToString(str, decoder = new TextDecoder()) {
|
|
206
|
+
return decoder.decode(Base64Ratchet.base64UrlStringToBytes(str));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=base64-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64-ratchet.js","sourceRoot":"","sources":["../../src/lang/base64-ratchet.ts"],"names":[],"mappings":"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aM,MAAM,CAAC,YAAY,GAAa;QACtC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACrI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACrI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACrI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class BooleanRatchet {
|
|
2
|
+
static allTrue(vals: boolean[], emptyArraysReturn?: boolean): boolean;
|
|
3
|
+
static anyTrue(vals: boolean[], emptyArraysReturn?: boolean): boolean;
|
|
4
|
+
static parseBool(val: any): boolean;
|
|
5
|
+
static intToBool(val: any): boolean;
|
|
6
|
+
static boolToInt(val: any): number;
|
|
7
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { NumberRatchet } from './number-ratchet.js';
|
|
2
|
+
export class BooleanRatchet {
|
|
3
|
+
static allTrue(vals, emptyArraysReturn = false) {
|
|
4
|
+
let rval = null;
|
|
5
|
+
if (vals) {
|
|
6
|
+
if (vals.length > 0) {
|
|
7
|
+
rval = vals.reduce((a, i) => a && i, true);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
rval = emptyArraysReturn;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
rval = false;
|
|
15
|
+
}
|
|
16
|
+
return rval;
|
|
17
|
+
}
|
|
18
|
+
static anyTrue(vals, emptyArraysReturn = false) {
|
|
19
|
+
let rval = null;
|
|
20
|
+
if (vals) {
|
|
21
|
+
if (vals.length > 0) {
|
|
22
|
+
rval = vals.reduce((a, i) => a || i, false);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
rval = emptyArraysReturn;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
rval = false;
|
|
30
|
+
}
|
|
31
|
+
return rval;
|
|
32
|
+
}
|
|
33
|
+
static parseBool(val) {
|
|
34
|
+
return val === true || (val !== null && val !== undefined && typeof val === 'string' && val.toLowerCase() === 'true');
|
|
35
|
+
}
|
|
36
|
+
static intToBool(val) {
|
|
37
|
+
if (val === null || val === undefined) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return NumberRatchet.safeNumber(val) !== 0;
|
|
41
|
+
}
|
|
42
|
+
static boolToInt(val) {
|
|
43
|
+
return BooleanRatchet.parseBool(val) ? 1 : 0;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=boolean-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean-ratchet.js","sourceRoot":"","sources":["../../src/lang/boolean-ratchet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,OAAO,cAAc;IAClB,MAAM,CAAC,OAAO,CAAC,IAAe,EAAE,iBAAiB,GAAG,KAAK;QAC9D,IAAI,IAAI,GAAY,IAAI,CAAC;QACzB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,iBAAiB,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,IAAe,EAAE,iBAAiB,GAAG,KAAK;QAC9D,IAAI,IAAI,GAAY,IAAI,CAAC;QACzB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,iBAAiB,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,GAAQ;QAC9B,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;IACxH,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,GAAQ;QAC9B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,GAAQ;QAC9B,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LastSuccessProvider } from './last-success-provider.js';
|
|
2
|
+
export declare class CompositeLastSuccessProvider implements LastSuccessProvider {
|
|
3
|
+
private sources;
|
|
4
|
+
private mostRecent;
|
|
5
|
+
constructor(src: LastSuccessProvider[], mostRecentSrc?: boolean);
|
|
6
|
+
lastSuccess(): number;
|
|
7
|
+
}
|