@bitblit/ratchet-common 4.0.128-alpha → 4.0.130-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/lib/2d/line-2d.js +2 -0
  2. package/lib/2d/line-2d.js.map +1 -0
  3. package/lib/2d/plane-2d.js +2 -0
  4. package/lib/2d/plane-2d.js.map +1 -0
  5. package/lib/2d/point-2d.js +2 -0
  6. package/lib/2d/point-2d.js.map +1 -0
  7. package/lib/2d/poly-line-2d.js +2 -0
  8. package/lib/2d/poly-line-2d.js.map +1 -0
  9. package/lib/2d/ratchet-2d.js +246 -0
  10. package/lib/2d/ratchet-2d.js.map +1 -0
  11. package/lib/2d/ratchet-2d.spec.js +118 -0
  12. package/lib/2d/ratchet-2d.spec.js.map +1 -0
  13. package/lib/build/build-information.js +2 -0
  14. package/lib/build/build-information.js.map +1 -0
  15. package/lib/build/ratchet-common-info.js +15 -0
  16. package/lib/build/ratchet-common-info.js.map +1 -0
  17. package/lib/histogram/histogram-entry.js +2 -0
  18. package/lib/histogram/histogram-entry.js.map +1 -0
  19. package/lib/histogram/histogram.js +49 -0
  20. package/lib/histogram/histogram.js.map +1 -0
  21. package/lib/histogram/histogram.spec.js +20 -0
  22. package/lib/histogram/histogram.spec.js.map +1 -0
  23. package/lib/index.js +74 -0
  24. package/lib/index.js.map +1 -0
  25. package/lib/jwt/common-jwt-token.js +2 -0
  26. package/lib/jwt/common-jwt-token.js.map +1 -0
  27. package/lib/jwt/expired-jwt-handling.js +7 -0
  28. package/lib/jwt/expired-jwt-handling.js.map +1 -0
  29. package/lib/jwt/jwt-ratchet-like.js +2 -0
  30. package/lib/jwt/jwt-ratchet-like.js.map +1 -0
  31. package/lib/jwt/jwt-ratchet.js +166 -0
  32. package/lib/jwt/jwt-ratchet.js.map +1 -0
  33. package/lib/jwt/jwt-ratchet.spec.js +50 -0
  34. package/lib/jwt/jwt-ratchet.spec.js.map +1 -0
  35. package/lib/jwt/jwt-token-base.js +2 -0
  36. package/lib/jwt/jwt-token-base.js.map +1 -0
  37. package/lib/lang/array-ratchet.js +84 -0
  38. package/lib/lang/array-ratchet.js.map +1 -0
  39. package/lib/lang/array-ratchet.spec.js +69 -0
  40. package/lib/lang/array-ratchet.spec.js.map +1 -0
  41. package/lib/lang/base64-ratchet.d.ts +1 -1
  42. package/lib/lang/base64-ratchet.js +46 -0
  43. package/lib/lang/base64-ratchet.js.map +1 -0
  44. package/lib/lang/base64-ratchet.spec.js +29 -0
  45. package/lib/lang/base64-ratchet.spec.js.map +1 -0
  46. package/lib/lang/boolean-ratchet.js +46 -0
  47. package/lib/lang/boolean-ratchet.js.map +1 -0
  48. package/lib/lang/boolean-ratchet.spec.js +82 -0
  49. package/lib/lang/boolean-ratchet.spec.js.map +1 -0
  50. package/lib/lang/composite-last-success-provider.js +27 -0
  51. package/lib/lang/composite-last-success-provider.js.map +1 -0
  52. package/lib/lang/composite-last-success-provider.spec.js +27 -0
  53. package/lib/lang/composite-last-success-provider.spec.js.map +1 -0
  54. package/lib/lang/date-ratchet.js +31 -0
  55. package/lib/lang/date-ratchet.js.map +1 -0
  56. package/lib/lang/date-ratchet.spec.js +22 -0
  57. package/lib/lang/date-ratchet.spec.js.map +1 -0
  58. package/lib/lang/duration-ratchet.js +43 -0
  59. package/lib/lang/duration-ratchet.js.map +1 -0
  60. package/lib/lang/duration-ratchet.spec.js +40 -0
  61. package/lib/lang/duration-ratchet.spec.js.map +1 -0
  62. package/lib/lang/enum-ratchet.js +31 -0
  63. package/lib/lang/enum-ratchet.js.map +1 -0
  64. package/lib/lang/enum-ratchet.spec.js +32 -0
  65. package/lib/lang/enum-ratchet.spec.js.map +1 -0
  66. package/lib/lang/error-ratchet.js +45 -0
  67. package/lib/lang/error-ratchet.js.map +1 -0
  68. package/lib/lang/error-ratchet.spec.js +21 -0
  69. package/lib/lang/error-ratchet.spec.js.map +1 -0
  70. package/lib/lang/esm-ratchet.js +18 -0
  71. package/lib/lang/esm-ratchet.js.map +1 -0
  72. package/lib/lang/expiring-object.js +73 -0
  73. package/lib/lang/expiring-object.js.map +1 -0
  74. package/lib/lang/expiring-object.spec.js +52 -0
  75. package/lib/lang/expiring-object.spec.js.map +1 -0
  76. package/lib/lang/geolocation-ratchet.js +264 -0
  77. package/lib/lang/geolocation-ratchet.js.map +1 -0
  78. package/lib/lang/geolocation-ratchet.spec.js +75 -0
  79. package/lib/lang/geolocation-ratchet.spec.js.map +1 -0
  80. package/lib/lang/global-ratchet.js +44 -0
  81. package/lib/lang/global-ratchet.js.map +1 -0
  82. package/lib/lang/global-ratchet.spec.js +15 -0
  83. package/lib/lang/global-ratchet.spec.js.map +1 -0
  84. package/lib/lang/key-value.js +5 -0
  85. package/lib/lang/key-value.js.map +1 -0
  86. package/lib/lang/last-success-provider.js +2 -0
  87. package/lib/lang/last-success-provider.js.map +1 -0
  88. package/lib/lang/map-ratchet.js +165 -0
  89. package/lib/lang/map-ratchet.js.map +1 -0
  90. package/lib/lang/map-ratchet.spec.js +91 -0
  91. package/lib/lang/map-ratchet.spec.js.map +1 -0
  92. package/lib/lang/no.js +5 -0
  93. package/lib/lang/no.js.map +1 -0
  94. package/lib/lang/no.spec.js +8 -0
  95. package/lib/lang/no.spec.js.map +1 -0
  96. package/lib/lang/number-ratchet.js +157 -0
  97. package/lib/lang/number-ratchet.js.map +1 -0
  98. package/lib/lang/number-ratchet.spec.js +119 -0
  99. package/lib/lang/number-ratchet.spec.js.map +1 -0
  100. package/lib/lang/parsed-url.js +2 -0
  101. package/lib/lang/parsed-url.js.map +1 -0
  102. package/lib/lang/promise-ratchet.js +139 -0
  103. package/lib/lang/promise-ratchet.js.map +1 -0
  104. package/lib/lang/promise-ratchet.spec.js +75 -0
  105. package/lib/lang/promise-ratchet.spec.js.map +1 -0
  106. package/lib/lang/require-ratchet.js +56 -0
  107. package/lib/lang/require-ratchet.js.map +1 -0
  108. package/lib/lang/require-ratchet.spec.js +81 -0
  109. package/lib/lang/require-ratchet.spec.js.map +1 -0
  110. package/lib/lang/stop-watch.js +115 -0
  111. package/lib/lang/stop-watch.js.map +1 -0
  112. package/lib/lang/string-ratchet.js +203 -0
  113. package/lib/lang/string-ratchet.js.map +1 -0
  114. package/lib/lang/string-ratchet.spec.js +159 -0
  115. package/lib/lang/string-ratchet.spec.js.map +1 -0
  116. package/lib/lang/time-zone-ratchet.js +79 -0
  117. package/lib/lang/time-zone-ratchet.js.map +1 -0
  118. package/lib/lang/time-zone-ratchet.spec.js +41 -0
  119. package/lib/lang/time-zone-ratchet.spec.js.map +1 -0
  120. package/lib/lang/timeout-token.js +18 -0
  121. package/lib/lang/timeout-token.js.map +1 -0
  122. package/lib/lang/timeout-token.spec.js +10 -0
  123. package/lib/lang/timeout-token.spec.js.map +1 -0
  124. package/lib/lang/transform-ratchet.js +67 -0
  125. package/lib/lang/transform-ratchet.js.map +1 -0
  126. package/lib/lang/transform-ratchet.spec.js +119 -0
  127. package/lib/lang/transform-ratchet.spec.js.map +1 -0
  128. package/lib/logger/classic-single-line-log-message-formatter.js +14 -0
  129. package/lib/logger/classic-single-line-log-message-formatter.js.map +1 -0
  130. package/lib/logger/log-message-builder.js +49 -0
  131. package/lib/logger/log-message-builder.js.map +1 -0
  132. package/lib/logger/log-message-format-type.js +7 -0
  133. package/lib/logger/log-message-format-type.js.map +1 -0
  134. package/lib/logger/log-message-formatter.js +2 -0
  135. package/lib/logger/log-message-formatter.js.map +1 -0
  136. package/lib/logger/log-message-processor.js +2 -0
  137. package/lib/logger/log-message-processor.js.map +1 -0
  138. package/lib/logger/log-message.js +2 -0
  139. package/lib/logger/log-message.js.map +1 -0
  140. package/lib/logger/log-snapshot.js +2 -0
  141. package/lib/logger/log-snapshot.js.map +1 -0
  142. package/lib/logger/logger-instance.js +209 -0
  143. package/lib/logger/logger-instance.js.map +1 -0
  144. package/lib/logger/logger-level-name.js +10 -0
  145. package/lib/logger/logger-level-name.js.map +1 -0
  146. package/lib/logger/logger-meta.js +2 -0
  147. package/lib/logger/logger-meta.js.map +1 -0
  148. package/lib/logger/logger-options.js +2 -0
  149. package/lib/logger/logger-options.js.map +1 -0
  150. package/lib/logger/logger-output-function.js +7 -0
  151. package/lib/logger/logger-output-function.js.map +1 -0
  152. package/lib/logger/logger-ring-buffer.js +72 -0
  153. package/lib/logger/logger-ring-buffer.js.map +1 -0
  154. package/lib/logger/logger-util.js +46 -0
  155. package/lib/logger/logger-util.js.map +1 -0
  156. package/lib/logger/logger-util.spec.js +10 -0
  157. package/lib/logger/logger-util.spec.js.map +1 -0
  158. package/lib/logger/logger.js +136 -0
  159. package/lib/logger/logger.js.map +1 -0
  160. package/lib/logger/logger.spec.js +135 -0
  161. package/lib/logger/logger.spec.js.map +1 -0
  162. package/lib/logger/none-log-message-formatter.js +6 -0
  163. package/lib/logger/none-log-message-formatter.js.map +1 -0
  164. package/lib/logger/structured-json-log-message-formatter.js +20 -0
  165. package/lib/logger/structured-json-log-message-formatter.js.map +1 -0
  166. package/lib/network/browser-local-ip-provider.js +22 -0
  167. package/lib/network/browser-local-ip-provider.js.map +1 -0
  168. package/lib/network/browser-local-ip-provider.spec.js +17 -0
  169. package/lib/network/browser-local-ip-provider.spec.js.map +1 -0
  170. package/lib/network/fixed-local-ip-provider.js +10 -0
  171. package/lib/network/fixed-local-ip-provider.js.map +1 -0
  172. package/lib/network/local-ip-provider.js +2 -0
  173. package/lib/network/local-ip-provider.js.map +1 -0
  174. package/lib/network/network-ratchet.js +104 -0
  175. package/lib/network/network-ratchet.js.map +1 -0
  176. package/lib/network/network-ratchet.spec.js +14 -0
  177. package/lib/network/network-ratchet.spec.js.map +1 -0
  178. package/lib/stream/buffer-writable.d.ts +2 -2
  179. package/lib/stream/buffer-writable.js +17 -0
  180. package/lib/stream/buffer-writable.js.map +1 -0
  181. package/lib/stream/multi-stream.d.ts +1 -1
  182. package/lib/stream/multi-stream.js +13 -0
  183. package/lib/stream/multi-stream.js.map +1 -0
  184. package/lib/stream/stream-ratchet.d.ts +2 -2
  185. package/lib/stream/stream-ratchet.js +69 -0
  186. package/lib/stream/stream-ratchet.js.map +1 -0
  187. package/lib/stream/stream-ratchet.spec.js +14 -0
  188. package/lib/stream/stream-ratchet.spec.js.map +1 -0
  189. package/lib/stream/string-writable.d.ts +1 -1
  190. package/lib/stream/string-writable.js +15 -0
  191. package/lib/stream/string-writable.js.map +1 -0
  192. package/lib/stream/string-writable.spec.js +13 -0
  193. package/lib/stream/string-writable.spec.js.map +1 -0
  194. package/lib/third-party/google/google-recaptcha-ratchet.js +30 -0
  195. package/lib/third-party/google/google-recaptcha-ratchet.js.map +1 -0
  196. package/lib/third-party/google/google-recaptcha-ratchet.spec.js +21 -0
  197. package/lib/third-party/google/google-recaptcha-ratchet.spec.js.map +1 -0
  198. package/lib/third-party/twilio/twilio-ratchet.js +75 -0
  199. package/lib/third-party/twilio/twilio-ratchet.js.map +1 -0
  200. package/lib/transform/built-in-transforms.js +192 -0
  201. package/lib/transform/built-in-transforms.js.map +1 -0
  202. package/lib/transform/transform-rule.js +2 -0
  203. package/lib/transform/transform-rule.js.map +1 -0
  204. package/lib/tx/transaction-configuration.js +2 -0
  205. package/lib/tx/transaction-configuration.js.map +1 -0
  206. package/lib/tx/transaction-final-state.js +7 -0
  207. package/lib/tx/transaction-final-state.js.map +1 -0
  208. package/lib/tx/transaction-ratchet.js +77 -0
  209. package/lib/tx/transaction-ratchet.js.map +1 -0
  210. package/lib/tx/transaction-ratchet.spec.js +131 -0
  211. package/lib/tx/transaction-ratchet.spec.js.map +1 -0
  212. package/lib/tx/transaction-result.js +2 -0
  213. package/lib/tx/transaction-result.js.map +1 -0
  214. package/lib/tx/transaction-step.js +2 -0
  215. package/lib/tx/transaction-step.js.map +1 -0
  216. package/package.json +3 -2
  217. package/lib/index.mjs +0 -4
  218. package/lib/index.mjs.map +0 -1
@@ -0,0 +1,7 @@
1
+ export var ExpiredJwtHandling;
2
+ (function (ExpiredJwtHandling) {
3
+ ExpiredJwtHandling[ExpiredJwtHandling["RETURN_NULL"] = 0] = "RETURN_NULL";
4
+ ExpiredJwtHandling[ExpiredJwtHandling["THROW_EXCEPTION"] = 1] = "THROW_EXCEPTION";
5
+ ExpiredJwtHandling[ExpiredJwtHandling["ADD_FLAG"] = 2] = "ADD_FLAG";
6
+ })(ExpiredJwtHandling || (ExpiredJwtHandling = {}));
7
+ //# sourceMappingURL=expired-jwt-handling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expired-jwt-handling.js","sourceRoot":"","sources":["../../src/jwt/expired-jwt-handling.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,yEAAW,CAAA;IACX,iFAAe,CAAA;IACf,mEAAQ,CAAA;AACV,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jwt-ratchet-like.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-ratchet-like.js","sourceRoot":"","sources":["../../src/jwt/jwt-ratchet-like.ts"],"names":[],"mappings":""}
@@ -0,0 +1,166 @@
1
+ import jwt from 'jsonwebtoken';
2
+ import { RequireRatchet } from '../lang/require-ratchet.js';
3
+ import { Logger } from '../logger/logger.js';
4
+ import { StringRatchet } from '../lang/string-ratchet.js';
5
+ import { DurationRatchet } from '../lang/duration-ratchet.js';
6
+ import { LoggerLevelName } from '../logger/logger-level-name.js';
7
+ import { ExpiredJwtHandling } from './expired-jwt-handling.js';
8
+ class JwtRatchet {
9
+ _encryptionKeyPromise;
10
+ _decryptKeysPromise;
11
+ _jtiGenerator;
12
+ _decryptOnlyKeyUseLogLevel;
13
+ _parseFailureLogLevel;
14
+ static EXPIRED_FLAG_NAME = '__jwtServiceExpiredFlag';
15
+ constructor(_encryptionKeyPromise, _decryptKeysPromise, _jtiGenerator = StringRatchet.createType4Guid, _decryptOnlyKeyUseLogLevel = LoggerLevelName.info, _parseFailureLogLevel = LoggerLevelName.debug) {
16
+ this._encryptionKeyPromise = _encryptionKeyPromise;
17
+ this._decryptKeysPromise = _decryptKeysPromise;
18
+ this._jtiGenerator = _jtiGenerator;
19
+ this._decryptOnlyKeyUseLogLevel = _decryptOnlyKeyUseLogLevel;
20
+ this._parseFailureLogLevel = _parseFailureLogLevel;
21
+ RequireRatchet.notNullOrUndefined(_encryptionKeyPromise, 'encryptionKeyPromise');
22
+ }
23
+ get encryptionKeyPromise() {
24
+ return this._encryptionKeyPromise;
25
+ }
26
+ get decryptKeysPromise() {
27
+ return this._decryptKeysPromise;
28
+ }
29
+ get jtiGenerator() {
30
+ return this._jtiGenerator;
31
+ }
32
+ get decryptOnlyKeyUseLogLevel() {
33
+ return this._decryptOnlyKeyUseLogLevel;
34
+ }
35
+ get parseFailureLogLevel() {
36
+ return this._parseFailureLogLevel;
37
+ }
38
+ static hasExpiredFlag(ob) {
39
+ return ob && ob[JwtRatchet.EXPIRED_FLAG_NAME] === true;
40
+ }
41
+ static async invalidSafeDecode(payloadString, decryptKey, logLevel = LoggerLevelName.silly) {
42
+ let rval = null;
43
+ try {
44
+ rval = jwt.verify(payloadString, decryptKey, { ignoreExpiration: true });
45
+ }
46
+ catch (err) {
47
+ Logger.logByLevel(logLevel, 'Caught %s - ignoring', err);
48
+ }
49
+ return rval;
50
+ }
51
+ static async secondsRemainingUntilExpiration(payloadString) {
52
+ let rval = null;
53
+ if (StringRatchet.trimToNull(payloadString)) {
54
+ const output = await JwtRatchet.decodeTokenNoVerify(payloadString);
55
+ const nowSecond = Math.floor(Date.now() / 1000);
56
+ if (output.exp) {
57
+ const expSeconds = output.exp > nowSecond * 100 ? Math.floor(output.exp / 1000) : output.exp;
58
+ rval = Math.max(0, expSeconds - nowSecond);
59
+ }
60
+ }
61
+ return rval;
62
+ }
63
+ static async msRemainingUntilExpiration(payloadString) {
64
+ const secs = await JwtRatchet.secondsRemainingUntilExpiration(payloadString);
65
+ let rval = null;
66
+ if (secs !== null && secs !== undefined) {
67
+ rval = secs * 1000;
68
+ }
69
+ return rval;
70
+ }
71
+ async decodeToken(payloadString, expiredHandling = ExpiredJwtHandling.RETURN_NULL) {
72
+ const encKeys = await this.encryptionKeyArray();
73
+ let decKeys = Object.assign([], encKeys);
74
+ if (this.decryptKeysPromise) {
75
+ decKeys = decKeys.concat(await this.decryptKeysPromise);
76
+ }
77
+ const keysTried = [];
78
+ let payload = null;
79
+ for (let i = 0; i < decKeys.length && !payload; i++) {
80
+ keysTried.push(StringRatchet.obscure(decKeys[i], 1, 1));
81
+ const logLevel = i === decKeys.length - 1 && this.parseFailureLogLevel ? this.parseFailureLogLevel : LoggerLevelName.silly;
82
+ payload = await JwtRatchet.invalidSafeDecode(payloadString, decKeys[i], logLevel);
83
+ if (payload && i >= encKeys.length) {
84
+ Logger.logByLevel(this.decryptOnlyKeyUseLogLevel, 'Used old key to decode token : %s', StringRatchet.obscure(decKeys[i], 2));
85
+ }
86
+ }
87
+ if (payload) {
88
+ const nowSeconds = Math.floor(Date.now() / 1000);
89
+ const expSeconds = payload?.exp && payload.exp > nowSeconds * 100 ? Math.floor(payload.exp / 1000) : payload?.exp;
90
+ const nbfSeconds = payload?.nbf && payload.nbf > nowSeconds * 100 ? Math.floor(payload.nbf / 1000) : payload?.nbf;
91
+ if ((expSeconds && nowSeconds >= expSeconds) || (nbfSeconds && nowSeconds <= nbfSeconds)) {
92
+ const age = nowSeconds - expSeconds;
93
+ Logger.debug('JWT token expired or before NBF : on %d, %s ago', payload.exp, DurationRatchet.formatMsDuration(age * 1000));
94
+ switch (expiredHandling) {
95
+ case ExpiredJwtHandling.THROW_EXCEPTION:
96
+ throw new Error('JWT Token was expired');
97
+ case ExpiredJwtHandling.ADD_FLAG:
98
+ payload[JwtRatchet.EXPIRED_FLAG_NAME] = true;
99
+ break;
100
+ default:
101
+ payload = null;
102
+ break;
103
+ }
104
+ }
105
+ }
106
+ else {
107
+ Logger.warn('Unable to parse a payload (Tried %j) from : %s', keysTried, payloadString);
108
+ }
109
+ return payload;
110
+ }
111
+ async encryptionKeyArray() {
112
+ const encKey = await this.encryptionKeyPromise;
113
+ const rval = Array.isArray(encKey) ? encKey : [encKey];
114
+ if (rval.length < 1) {
115
+ throw new Error('Cannot create JwtRatchet with empty encryption key set');
116
+ }
117
+ return rval;
118
+ }
119
+ async selectRandomEncryptionKey() {
120
+ const encKey = await this.encryptionKeyArray();
121
+ const rval = encKey[Math.floor(Math.random() * encKey.length)];
122
+ return rval;
123
+ }
124
+ async createTokenString(payload, expirationSeconds, overrideEncryptionKey) {
125
+ const encKey = StringRatchet.trimToNull(overrideEncryptionKey)
126
+ ? StringRatchet.trimToNull(overrideEncryptionKey)
127
+ : await this.selectRandomEncryptionKey();
128
+ RequireRatchet.notNullOrUndefined(payload, 'payload');
129
+ payload.jti = this.jtiGenerator ? this.jtiGenerator() : null;
130
+ if (expirationSeconds) {
131
+ const nowSeconds = Math.floor(Date.now() / 1000);
132
+ const expires = nowSeconds + expirationSeconds;
133
+ Logger.debug('Forcing expiration to %d', expires);
134
+ payload.exp = expires;
135
+ }
136
+ const token = jwt.sign(payload, encKey);
137
+ return token;
138
+ }
139
+ async refreshJWTString(tokenString, allowExpired, expirationSeconds) {
140
+ const handling = allowExpired ? ExpiredJwtHandling.ADD_FLAG : ExpiredJwtHandling.THROW_EXCEPTION;
141
+ const payload = await this.decodeToken(tokenString, handling);
142
+ const originalDurationSeconds = payload.exp && payload.iat ? payload.exp - payload.iat : null;
143
+ const newExpirationSeconds = expirationSeconds || originalDurationSeconds;
144
+ JwtRatchet.removeJwtFields(payload);
145
+ JwtRatchet.removeExpiredFlag(payload);
146
+ const token = await this.createTokenString(payload, newExpirationSeconds);
147
+ return token;
148
+ }
149
+ static decodeTokenNoVerify(token) {
150
+ return jwt.decode(token);
151
+ }
152
+ static removeJwtFields(ob) {
153
+ if (ob) {
154
+ ['iss', 'sub', 'aud', 'exp', 'nbf', 'iat', 'jti'].forEach((k) => {
155
+ delete ob[k];
156
+ });
157
+ }
158
+ }
159
+ static removeExpiredFlag(ob) {
160
+ if (ob) {
161
+ delete ob[JwtRatchet.EXPIRED_FLAG_NAME];
162
+ }
163
+ }
164
+ }
165
+ export { JwtRatchet };
166
+ //# 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,50 @@
1
+ import { JwtRatchet } from './jwt-ratchet.js';
2
+ import { ExpiredJwtHandling } from './expired-jwt-handling.js';
3
+ describe('#jwtRatchet', function () {
4
+ it('should test expiration flag for a token with millisecond expiration', async () => {
5
+ const jwt = new JwtRatchet(Promise.resolve('test1234'), Promise.resolve([]));
6
+ const token1 = await jwt.createTokenString({ test: 1, exp: Date.now() - 100 }, null);
7
+ const output = await jwt.decodeToken(token1, ExpiredJwtHandling.ADD_FLAG);
8
+ expect(output).not.toBeNull();
9
+ expect(JwtRatchet.hasExpiredFlag(output)).toBeTruthy();
10
+ });
11
+ it('should test expiration calculation for a token', async () => {
12
+ const jwt = new JwtRatchet(Promise.resolve('test1234'), Promise.resolve([]));
13
+ const token1 = await jwt.createTokenString({ test: 1 }, 120);
14
+ const output = await JwtRatchet.secondsRemainingUntilExpiration(token1);
15
+ expect(output).not.toBeNull();
16
+ expect(output).toBeLessThan(121);
17
+ expect(output).toBeGreaterThan(115);
18
+ });
19
+ it('should test round-trip for a token', async () => {
20
+ const jwt = new JwtRatchet(Promise.resolve('test1234'), Promise.resolve([]));
21
+ const token1 = await jwt.createTokenString({ test: 1 }, 120);
22
+ const output = await jwt.decodeToken(token1);
23
+ expect(output).not.toBeNull();
24
+ expect(output['test']).toEqual(1);
25
+ });
26
+ it('should test round-trip for a token with array enc keys', async () => {
27
+ const jwt = new JwtRatchet(Promise.resolve(['test1234', 'test5678']), Promise.resolve([]));
28
+ const token1 = await jwt.createTokenString({ test: 1 }, 120);
29
+ const token2 = await jwt.createTokenString({ test: 1 }, 120);
30
+ const token3 = await jwt.createTokenString({ test: 1 }, 120);
31
+ const output1 = await jwt.decodeToken(token1);
32
+ const output2 = await jwt.decodeToken(token2);
33
+ const output3 = await jwt.decodeToken(token3);
34
+ expect(output1).not.toBeNull();
35
+ expect(output1['test']).toEqual(1);
36
+ expect(output2).not.toBeNull();
37
+ expect(output2['test']).toEqual(1);
38
+ expect(output3).not.toBeNull();
39
+ expect(output3['test']).toEqual(1);
40
+ });
41
+ it('should decode with a decode key', async () => {
42
+ const jwtOld = new JwtRatchet(Promise.resolve('oldKey'), Promise.resolve([]));
43
+ const jwtNew = new JwtRatchet(Promise.resolve('newKey'), Promise.resolve(['oldKey']));
44
+ const token1 = await jwtOld.createTokenString({ test: 1 }, 120);
45
+ const output = await jwtNew.decodeToken(token1);
46
+ expect(output).not.toBeNull();
47
+ expect(output['test']).toEqual(1);
48
+ });
49
+ });
50
+ //# sourceMappingURL=jwt-ratchet.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-ratchet.spec.js","sourceRoot":"","sources":["../../src/jwt/jwt-ratchet.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,QAAQ,CAAC,aAAa,EAAE;IACtB,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,GAAG,GAAe,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAW,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QAE7F,MAAM,MAAM,GAAQ,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,GAAG,GAAe,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAW,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,MAAM,GAAW,MAAM,UAAU,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAEhF,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,GAAG,GAAe,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAW,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,MAAM,GAAQ,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,GAAG,GAAe,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvG,MAAM,MAAM,GAAW,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,MAAM,GAAW,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,MAAM,GAAW,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,OAAO,GAAQ,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,OAAO,GAAQ,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,OAAO,GAAQ,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,GAAe,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAe,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAElG,MAAM,MAAM,GAAW,MAAM,MAAM,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACxE,MAAM,MAAM,GAAQ,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jwt-token-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-token-base.js","sourceRoot":"","sources":["../../src/jwt/jwt-token-base.ts"],"names":[],"mappings":""}
@@ -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":"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"}
@@ -0,0 +1,69 @@
1
+ import { ArrayRatchet } from './array-ratchet.js';
2
+ const sortedArr = [
3
+ {
4
+ n: 'test1',
5
+ v: 1,
6
+ },
7
+ {
8
+ n: 'test1',
9
+ v: 2,
10
+ },
11
+ {
12
+ n: 'test1',
13
+ v: 4,
14
+ },
15
+ {
16
+ n: 'test1',
17
+ v: 4,
18
+ },
19
+ {
20
+ n: 'test1',
21
+ v: 7,
22
+ },
23
+ {
24
+ n: 'test1',
25
+ v: 12,
26
+ },
27
+ {
28
+ n: 'test1',
29
+ v: 25,
30
+ },
31
+ {
32
+ n: 'test1',
33
+ v: 30,
34
+ },
35
+ ];
36
+ describe('#extractSubarrayFromSortedByNumberField', function () {
37
+ it('should extract the subarray', function () {
38
+ const subArr1 = ArrayRatchet.extractSubarrayFromSortedByNumberField(sortedArr, 'v', 5, 14);
39
+ expect(subArr1.length).toEqual(2);
40
+ const subArr2 = ArrayRatchet.extractSubarrayFromSortedByNumberField(sortedArr, 'v', null, 4);
41
+ expect(subArr2.length).toEqual(4);
42
+ const subArr3 = ArrayRatchet.extractSubarrayFromSortedByNumberField(sortedArr, 'v', 7, null);
43
+ expect(subArr3.length).toEqual(4);
44
+ });
45
+ });
46
+ describe('#compareTwoArrays', function () {
47
+ it('should create a match report', function () {
48
+ const arr1 = ['a', 'b', 'c'];
49
+ const arr2 = ['a', 'e', 'i', 'o', 'u'];
50
+ const report = ArrayRatchet.compareTwoArrays(arr1, arr2, (a, b) => a.localeCompare(b));
51
+ expect(report).toBeTruthy();
52
+ expect(report.setOneOnly.length).toEqual(2);
53
+ expect(report.setTwoOnly.length).toEqual(4);
54
+ expect(report.matching.length).toEqual(1);
55
+ });
56
+ });
57
+ describe('#findSplit', function () {
58
+ it('should find the split', function () {
59
+ const split10 = ArrayRatchet.findSplit(sortedArr, 'v', 10);
60
+ const split4 = ArrayRatchet.findSplit(sortedArr, 'v', 4);
61
+ const split0 = ArrayRatchet.findSplit(sortedArr, 'v', 0);
62
+ const split32 = ArrayRatchet.findSplit(sortedArr, 'v', 32);
63
+ expect(split10).toEqual(4);
64
+ expect(split4).toEqual(3);
65
+ expect(split0).toEqual(null);
66
+ expect(split32).toEqual(7);
67
+ });
68
+ });
69
+ //# sourceMappingURL=array-ratchet.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-ratchet.spec.js","sourceRoot":"","sources":["../../src/lang/array-ratchet.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;AAE/D,MAAM,SAAS,GAAU;IACvB;QACE,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,CAAC;KACL;IACD;QACE,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,CAAC;KACL;IACD;QACE,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,CAAC;KACL;IACD;QACE,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,CAAC;KACL;IACD;QACE,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,CAAC;KACL;IACD;QACE,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,EAAE;KACN;IACD;QACE,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,EAAE;KACN;IACD;QACE,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,EAAE;KACN;CACF,CAAC;AAEF,QAAQ,CAAC,yCAAyC,EAAE;IAClD,EAAE,CAAC,6BAA6B,EAAE;QAChC,MAAM,OAAO,GAAU,YAAY,CAAC,sCAAsC,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAClG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,OAAO,GAAU,YAAY,CAAC,sCAAsC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,OAAO,GAAU,YAAY,CAAC,sCAAsC,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACpG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE;IAC5B,EAAE,CAAC,8BAA8B,EAAE;QACjC,MAAM,IAAI,GAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,IAAI,GAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAwB,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5G,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE;IACrB,EAAE,CAAC,uBAAuB,EAAE;QAE1B,MAAM,OAAO,GAAW,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,MAAM,GAAW,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,MAAM,GAAW,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,OAAO,GAAW,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAEnE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- /// <reference types="node" />
1
+ /// <reference types="node" resolution-mode="require"/>
2
2
  export declare class Base64Ratchet {
3
3
  static safeObjectToBase64JSON(input: any): any;
4
4
  static safeBase64JSONParse(input: string): any;
@@ -0,0 +1,46 @@
1
+ import { Logger } from '../logger/logger.js';
2
+ export class Base64Ratchet {
3
+ static safeObjectToBase64JSON(input) {
4
+ return !!input ? Base64Ratchet.generateBase64VersionOfString(JSON.stringify(input)) : null;
5
+ }
6
+ static safeBase64JSONParse(input) {
7
+ let rval = {};
8
+ try {
9
+ if (input) {
10
+ rval = JSON.parse(Base64Ratchet.base64StringToString(input));
11
+ }
12
+ }
13
+ catch (err) {
14
+ Logger.warn('Error parsing b64/json : %s as json, got %s', input, err, err);
15
+ rval = {};
16
+ }
17
+ return rval;
18
+ }
19
+ static generateBase64VersionOfBlob(blob) {
20
+ return new Promise(function (resolve, reject) {
21
+ if (!blob || blob.size == 0) {
22
+ reject('Wont convert null or non-blob or empty blob');
23
+ }
24
+ else {
25
+ const reader = new FileReader();
26
+ reader.onloadend = function () {
27
+ resolve(reader.result.toString());
28
+ };
29
+ reader.readAsDataURL(blob);
30
+ }
31
+ });
32
+ }
33
+ static generateBase64VersionOfString(input) {
34
+ return Base64Ratchet.generateBase64VersionOfBuffer(Buffer.from(input));
35
+ }
36
+ static generateBase64VersionOfBuffer(input) {
37
+ return input.toString('base64');
38
+ }
39
+ static base64StringToBuffer(input) {
40
+ return Buffer.from(input, 'base64');
41
+ }
42
+ static base64StringToString(input, encoding = 'utf8') {
43
+ return Buffer.from(input, 'base64').toString(encoding);
44
+ }
45
+ }
46
+ //# sourceMappingURL=base64-ratchet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64-ratchet.js","sourceRoot":"","sources":["../../src/lang/base64-ratchet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,OAAO,aAAa;IAEjB,MAAM,CAAC,sBAAsB,CAAC,KAAU;QAC7C,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,KAAa;QAC7C,IAAI,IAAI,GAAQ,EAAE,CAAC;QACnB,IAAI;YACF,IAAI,KAAK,EAAE;gBACT,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;aAC9D;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5E,IAAI,GAAG,EAAE,CAAC;SACX;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,IAAU;QAClD,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;YAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAC3B,MAAM,CAAC,6CAA6C,CAAC,CAAC;aACvD;iBAAM;gBACL,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,CAAC,SAAS,GAAG;oBACjB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,6BAA6B,CAAC,KAAa;QACvD,OAAO,aAAa,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,6BAA6B,CAAC,KAAa;QAEvD,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,KAAa;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,KAAa,EAAE,WAA2B,MAAM;QACjF,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import { Base64Ratchet } from './base64-ratchet.js';
2
+ describe('#base64', function () {
3
+ it('should parse a buffer from base64', function () {
4
+ const result = Base64Ratchet.base64StringToBuffer('dGVzdHVzZXI6dGVzdHBhc3M=');
5
+ expect(result).toBeTruthy();
6
+ expect(result.length).toEqual(17);
7
+ });
8
+ it('should parse a string from base64', function () {
9
+ const result = Base64Ratchet.base64StringToString('dGVzdHVzZXI6dGVzdHBhc3M=');
10
+ expect(result).toBeTruthy();
11
+ expect(result.length).toEqual(17);
12
+ });
13
+ it('should round-trip a string', function () {
14
+ const testString = 'teststring';
15
+ const enc = Base64Ratchet.generateBase64VersionOfString(testString);
16
+ const result = Base64Ratchet.base64StringToString(enc);
17
+ expect(result).toBeTruthy();
18
+ expect(result).toEqual(testString);
19
+ });
20
+ it('should round-trip an object', function () {
21
+ const testOb = { a: 'teststring', b: 27 };
22
+ const enc = Base64Ratchet.safeObjectToBase64JSON(testOb);
23
+ const result = Base64Ratchet.safeBase64JSONParse(enc);
24
+ expect(result).toBeTruthy();
25
+ expect(result.a).toEqual(testOb.a);
26
+ expect(result.b).toEqual(testOb.b);
27
+ });
28
+ });
29
+ //# sourceMappingURL=base64-ratchet.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64-ratchet.spec.js","sourceRoot":"","sources":["../../src/lang/base64-ratchet.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,QAAQ,CAAC,SAAS,EAAE;IAClB,EAAE,CAAC,mCAAmC,EAAE;QACtC,MAAM,MAAM,GAAW,aAAa,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;QACtF,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE;QACtC,MAAM,MAAM,GAAW,aAAa,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;QACtF,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE;QAC/B,MAAM,UAAU,GAAW,YAAY,CAAC;QACxC,MAAM,GAAG,GAAW,aAAa,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAW,aAAa,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE;QAChC,MAAM,MAAM,GAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAW,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,MAAM,GAAQ,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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,oBAA6B,KAAK;QACvE,IAAI,IAAI,GAAY,IAAI,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,EAAE;YACV,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;aAC5C;iBAAM;gBACL,IAAI,GAAG,iBAAiB,CAAC;aAC1B;SACF;aAAM;YAEL,IAAI,GAAG,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,IAAe,EAAE,oBAA6B,KAAK;QACvE,IAAI,IAAI,GAAY,IAAI,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,EAAE;YACV,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;aAC7C;iBAAM;gBACL,IAAI,GAAG,iBAAiB,CAAC;aAC1B;SACF;aAAM;YAEL,IAAI,GAAG,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAGM,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;IAGM,MAAM,CAAC,SAAS,CAAC,GAAQ;QAC9B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;YACrC,OAAO,KAAK,CAAC;SACd;QACD,OAAO,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAGM,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"}