@bitblit/ratchet-common 4.0.419-alpha → 4.0.421-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/lib/2d/index.d.ts +5 -0
  2. package/lib/2d/index.js +6 -0
  3. package/lib/2d/index.js.map +1 -0
  4. package/lib/2d/line-2d.d.ts +5 -0
  5. package/lib/2d/line-2d.js +2 -0
  6. package/lib/2d/line-2d.js.map +1 -0
  7. package/lib/2d/plane-2d.d.ts +6 -0
  8. package/lib/2d/plane-2d.js +2 -0
  9. package/lib/2d/plane-2d.js.map +1 -0
  10. package/lib/2d/point-2d.d.ts +4 -0
  11. package/lib/2d/point-2d.js +2 -0
  12. package/lib/2d/point-2d.js.map +1 -0
  13. package/lib/2d/poly-line-2d.d.ts +4 -0
  14. package/lib/2d/poly-line-2d.js +2 -0
  15. package/lib/2d/poly-line-2d.js.map +1 -0
  16. package/lib/2d/ratchet-2d.d.ts +37 -0
  17. package/lib/2d/ratchet-2d.js +246 -0
  18. package/lib/2d/ratchet-2d.js.map +1 -0
  19. package/lib/build/build-information.d.ts +8 -0
  20. package/lib/build/build-information.js +2 -0
  21. package/lib/build/build-information.js.map +1 -0
  22. package/lib/build/index.d.ts +2 -0
  23. package/lib/build/index.js +3 -0
  24. package/lib/build/index.js.map +1 -0
  25. package/lib/build/ratchet-common-info.d.ts +5 -0
  26. package/lib/build/ratchet-common-info.js +15 -0
  27. package/lib/build/ratchet-common-info.js.map +1 -0
  28. package/lib/histogram/histogram-entry.d.ts +4 -0
  29. package/lib/histogram/histogram-entry.js +2 -0
  30. package/lib/histogram/histogram-entry.js.map +1 -0
  31. package/lib/histogram/histogram.d.ts +12 -0
  32. package/lib/histogram/histogram.js +49 -0
  33. package/lib/histogram/histogram.js.map +1 -0
  34. package/lib/histogram/index.d.ts +2 -0
  35. package/lib/histogram/index.js +3 -0
  36. package/lib/histogram/index.js.map +1 -0
  37. package/lib/jwt/common-jwt-token.d.ts +6 -0
  38. package/lib/jwt/common-jwt-token.js +2 -0
  39. package/lib/jwt/common-jwt-token.js.map +1 -0
  40. package/lib/jwt/expired-jwt-handling.d.ts +5 -0
  41. package/lib/jwt/expired-jwt-handling.js +7 -0
  42. package/lib/jwt/expired-jwt-handling.js.map +1 -0
  43. package/lib/jwt/index.d.ts +6 -0
  44. package/lib/jwt/index.js +7 -0
  45. package/lib/jwt/index.js.map +1 -0
  46. package/lib/jwt/jwt-ratchet-config.d.ts +8 -0
  47. package/lib/jwt/jwt-ratchet-config.js +2 -0
  48. package/lib/jwt/jwt-ratchet-config.js.map +1 -0
  49. package/lib/jwt/jwt-ratchet-like.d.ts +15 -0
  50. package/lib/jwt/jwt-ratchet-like.js +2 -0
  51. package/lib/jwt/jwt-ratchet-like.js.map +1 -0
  52. package/lib/jwt/jwt-ratchet.d.ts +28 -0
  53. package/lib/jwt/jwt-ratchet.js +171 -0
  54. package/lib/jwt/jwt-ratchet.js.map +1 -0
  55. package/lib/jwt/jwt-token-base.d.ts +9 -0
  56. package/lib/jwt/jwt-token-base.js +2 -0
  57. package/lib/jwt/jwt-token-base.js.map +1 -0
  58. package/lib/lang/array-ratchet.d.ts +12 -0
  59. package/lib/lang/array-ratchet.js +84 -0
  60. package/lib/lang/array-ratchet.js.map +1 -0
  61. package/lib/lang/base64-ratchet.d.ts +20 -0
  62. package/lib/lang/base64-ratchet.js +209 -0
  63. package/lib/lang/base64-ratchet.js.map +1 -0
  64. package/lib/lang/boolean-ratchet.d.ts +7 -0
  65. package/lib/lang/boolean-ratchet.js +46 -0
  66. package/lib/lang/boolean-ratchet.js.map +1 -0
  67. package/lib/lang/composite-last-success-provider.d.ts +7 -0
  68. package/lib/lang/composite-last-success-provider.js +27 -0
  69. package/lib/lang/composite-last-success-provider.js.map +1 -0
  70. package/lib/lang/date-ratchet.d.ts +11 -0
  71. package/lib/lang/date-ratchet.js +30 -0
  72. package/lib/lang/date-ratchet.js.map +1 -0
  73. package/lib/lang/duration-ratchet.d.ts +7 -0
  74. package/lib/lang/duration-ratchet.js +43 -0
  75. package/lib/lang/duration-ratchet.js.map +1 -0
  76. package/lib/lang/enum-ratchet.d.ts +5 -0
  77. package/lib/lang/enum-ratchet.js +31 -0
  78. package/lib/lang/enum-ratchet.js.map +1 -0
  79. package/lib/lang/error-ratchet.d.ts +6 -0
  80. package/lib/lang/error-ratchet.js +45 -0
  81. package/lib/lang/error-ratchet.js.map +1 -0
  82. package/lib/lang/esm-ratchet.d.ts +7 -0
  83. package/lib/lang/esm-ratchet.js +65 -0
  84. package/lib/lang/esm-ratchet.js.map +1 -0
  85. package/lib/lang/expiring-object.d.ts +20 -0
  86. package/lib/lang/expiring-object.js +73 -0
  87. package/lib/lang/expiring-object.js.map +1 -0
  88. package/lib/lang/geolocation-ratchet.d.ts +40 -0
  89. package/lib/lang/geolocation-ratchet.js +264 -0
  90. package/lib/lang/geolocation-ratchet.js.map +1 -0
  91. package/lib/lang/global-ratchet.d.ts +6 -0
  92. package/lib/lang/global-ratchet.js +44 -0
  93. package/lib/lang/global-ratchet.js.map +1 -0
  94. package/lib/lang/index.d.ts +27 -0
  95. package/lib/lang/index.js +28 -0
  96. package/lib/lang/index.js.map +1 -0
  97. package/lib/lang/key-value.d.ts +4 -0
  98. package/lib/lang/key-value.js +5 -0
  99. package/lib/lang/key-value.js.map +1 -0
  100. package/lib/lang/last-success-provider.d.ts +3 -0
  101. package/lib/lang/last-success-provider.js +2 -0
  102. package/lib/lang/last-success-provider.js.map +1 -0
  103. package/lib/lang/map-ratchet.d.ts +15 -0
  104. package/lib/lang/map-ratchet.js +173 -0
  105. package/lib/lang/map-ratchet.js.map +1 -0
  106. package/lib/lang/no.d.ts +3 -0
  107. package/lib/lang/no.js +5 -0
  108. package/lib/lang/no.js.map +1 -0
  109. package/lib/lang/number-ratchet.d.ts +28 -0
  110. package/lib/lang/number-ratchet.js +186 -0
  111. package/lib/lang/number-ratchet.js.map +1 -0
  112. package/lib/lang/parsed-url.d.ts +10 -0
  113. package/lib/lang/parsed-url.js +2 -0
  114. package/lib/lang/parsed-url.js.map +1 -0
  115. package/lib/lang/promise-ratchet.d.ts +18 -0
  116. package/lib/lang/promise-ratchet.js +130 -0
  117. package/lib/lang/promise-ratchet.js.map +1 -0
  118. package/lib/lang/require-ratchet.d.ts +11 -0
  119. package/lib/lang/require-ratchet.js +56 -0
  120. package/lib/lang/require-ratchet.js.map +1 -0
  121. package/lib/lang/sort-ratchet.d.ts +7 -0
  122. package/lib/lang/sort-ratchet.js +33 -0
  123. package/lib/lang/sort-ratchet.js.map +1 -0
  124. package/lib/lang/stop-watch.d.ts +27 -0
  125. package/lib/lang/stop-watch.js +170 -0
  126. package/lib/lang/stop-watch.js.map +1 -0
  127. package/lib/lang/string-ratchet.d.ts +40 -0
  128. package/lib/lang/string-ratchet.js +280 -0
  129. package/lib/lang/string-ratchet.js.map +1 -0
  130. package/lib/lang/time-zone-ratchet.d.ts +20 -0
  131. package/lib/lang/time-zone-ratchet.js +81 -0
  132. package/lib/lang/time-zone-ratchet.js.map +1 -0
  133. package/lib/lang/timeout-token.d.ts +9 -0
  134. package/lib/lang/timeout-token.js +19 -0
  135. package/lib/lang/timeout-token.js.map +1 -0
  136. package/lib/lang/uint-8-array-ratchet.d.ts +5 -0
  137. package/lib/lang/uint-8-array-ratchet.js +31 -0
  138. package/lib/lang/uint-8-array-ratchet.js.map +1 -0
  139. package/lib/lang/web-stream-ratchet.d.ts +6 -0
  140. package/lib/lang/web-stream-ratchet.js +47 -0
  141. package/lib/lang/web-stream-ratchet.js.map +1 -0
  142. package/lib/logger/classic-single-line-log-message-formatter.d.ts +6 -0
  143. package/lib/logger/classic-single-line-log-message-formatter.js +14 -0
  144. package/lib/logger/classic-single-line-log-message-formatter.js.map +1 -0
  145. package/lib/logger/index.d.ts +17 -0
  146. package/lib/logger/index.js +18 -0
  147. package/lib/logger/index.js.map +1 -0
  148. package/lib/logger/log-message-builder.d.ts +14 -0
  149. package/lib/logger/log-message-builder.js +49 -0
  150. package/lib/logger/log-message-builder.js.map +1 -0
  151. package/lib/logger/log-message-format-type.d.ts +6 -0
  152. package/lib/logger/log-message-format-type.js +6 -0
  153. package/lib/logger/log-message-format-type.js.map +1 -0
  154. package/lib/logger/log-message-formatter.d.ts +5 -0
  155. package/lib/logger/log-message-formatter.js +2 -0
  156. package/lib/logger/log-message-formatter.js.map +1 -0
  157. package/lib/logger/log-message-processor.d.ts +5 -0
  158. package/lib/logger/log-message-processor.js +2 -0
  159. package/lib/logger/log-message-processor.js.map +1 -0
  160. package/lib/logger/log-message.d.ts +8 -0
  161. package/lib/logger/log-message.js +2 -0
  162. package/lib/logger/log-message.js.map +1 -0
  163. package/lib/logger/log-snapshot.d.ts +5 -0
  164. package/lib/logger/log-snapshot.js +2 -0
  165. package/lib/logger/log-snapshot.js.map +1 -0
  166. package/lib/logger/logger-instance.d.ts +49 -0
  167. package/lib/logger/logger-instance.js +216 -0
  168. package/lib/logger/logger-instance.js.map +1 -0
  169. package/lib/logger/logger-level-name.d.ts +9 -0
  170. package/lib/logger/logger-level-name.js +9 -0
  171. package/lib/logger/logger-level-name.js.map +1 -0
  172. package/lib/logger/logger-meta.d.ts +6 -0
  173. package/lib/logger/logger-meta.js +2 -0
  174. package/lib/logger/logger-meta.js.map +1 -0
  175. package/lib/logger/logger-options.d.ts +13 -0
  176. package/lib/logger/logger-options.js +2 -0
  177. package/lib/logger/logger-options.js.map +1 -0
  178. package/lib/logger/logger-output-function.d.ts +6 -0
  179. package/lib/logger/logger-output-function.js +6 -0
  180. package/lib/logger/logger-output-function.js.map +1 -0
  181. package/lib/logger/logger-ring-buffer.d.ts +18 -0
  182. package/lib/logger/logger-ring-buffer.js +72 -0
  183. package/lib/logger/logger-ring-buffer.js.map +1 -0
  184. package/lib/logger/logger-util.d.ts +8 -0
  185. package/lib/logger/logger-util.js +45 -0
  186. package/lib/logger/logger-util.js.map +1 -0
  187. package/lib/logger/logger.d.ts +46 -0
  188. package/lib/logger/logger.js +150 -0
  189. package/lib/logger/logger.js.map +1 -0
  190. package/lib/logger/none-log-message-formatter.d.ts +6 -0
  191. package/lib/logger/none-log-message-formatter.js +6 -0
  192. package/lib/logger/none-log-message-formatter.js.map +1 -0
  193. package/lib/logger/structured-json-log-message-formatter.d.ts +6 -0
  194. package/lib/logger/structured-json-log-message-formatter.js +20 -0
  195. package/lib/logger/structured-json-log-message-formatter.js.map +1 -0
  196. package/lib/mail/archive-email-result.d.ts +5 -0
  197. package/lib/mail/archive-email-result.js +2 -0
  198. package/lib/mail/archive-email-result.js.map +1 -0
  199. package/lib/mail/email-attachment.d.ts +5 -0
  200. package/lib/mail/email-attachment.js +2 -0
  201. package/lib/mail/email-attachment.js.map +1 -0
  202. package/lib/mail/index.d.ts +11 -0
  203. package/lib/mail/index.js +12 -0
  204. package/lib/mail/index.js.map +1 -0
  205. package/lib/mail/mail-sending-provider.d.ts +5 -0
  206. package/lib/mail/mail-sending-provider.js +2 -0
  207. package/lib/mail/mail-sending-provider.js.map +1 -0
  208. package/lib/mail/mailer-config.d.ts +11 -0
  209. package/lib/mail/mailer-config.js +2 -0
  210. package/lib/mail/mailer-config.js.map +1 -0
  211. package/lib/mail/mailer-like.d.ts +11 -0
  212. package/lib/mail/mailer-like.js +2 -0
  213. package/lib/mail/mailer-like.js.map +1 -0
  214. package/lib/mail/mailer-util.d.ts +7 -0
  215. package/lib/mail/mailer-util.js +49 -0
  216. package/lib/mail/mailer-util.js.map +1 -0
  217. package/lib/mail/mailer.d.ts +17 -0
  218. package/lib/mail/mailer.js +174 -0
  219. package/lib/mail/mailer.js.map +1 -0
  220. package/lib/mail/ready-to-send-email.d.ts +13 -0
  221. package/lib/mail/ready-to-send-email.js +2 -0
  222. package/lib/mail/ready-to-send-email.js.map +1 -0
  223. package/lib/mail/resolved-ready-to-send-email.d.ts +5 -0
  224. package/lib/mail/resolved-ready-to-send-email.js +2 -0
  225. package/lib/mail/resolved-ready-to-send-email.js.map +1 -0
  226. package/lib/mail/send-email-result.d.ts +12 -0
  227. package/lib/mail/send-email-result.js +2 -0
  228. package/lib/mail/send-email-result.js.map +1 -0
  229. package/lib/mail/test-mail-sending-provider.d.ts +8 -0
  230. package/lib/mail/test-mail-sending-provider.js +31 -0
  231. package/lib/mail/test-mail-sending-provider.js.map +1 -0
  232. package/lib/network/browser-local-ip-provider.d.ts +7 -0
  233. package/lib/network/browser-local-ip-provider.js +22 -0
  234. package/lib/network/browser-local-ip-provider.js.map +1 -0
  235. package/lib/network/fixed-local-ip-provider.d.ts +6 -0
  236. package/lib/network/fixed-local-ip-provider.js +10 -0
  237. package/lib/network/fixed-local-ip-provider.js.map +1 -0
  238. package/lib/network/index.d.ts +9 -0
  239. package/lib/network/index.js +10 -0
  240. package/lib/network/index.js.map +1 -0
  241. package/lib/network/local-ip-provider.d.ts +3 -0
  242. package/lib/network/local-ip-provider.js +2 -0
  243. package/lib/network/local-ip-provider.js.map +1 -0
  244. package/lib/network/network-ratchet.d.ts +10 -0
  245. package/lib/network/network-ratchet.js +102 -0
  246. package/lib/network/network-ratchet.js.map +1 -0
  247. package/lib/network/remote-file-sync/backup-result.d.ts +5 -0
  248. package/lib/network/remote-file-sync/backup-result.js +7 -0
  249. package/lib/network/remote-file-sync/backup-result.js.map +1 -0
  250. package/lib/network/remote-file-sync/file-transfer-result.d.ts +5 -0
  251. package/lib/network/remote-file-sync/file-transfer-result.js +7 -0
  252. package/lib/network/remote-file-sync/file-transfer-result.js.map +1 -0
  253. package/lib/network/remote-file-sync/remote-file-sync-like.d.ts +16 -0
  254. package/lib/network/remote-file-sync/remote-file-sync-like.js +2 -0
  255. package/lib/network/remote-file-sync/remote-file-sync-like.js.map +1 -0
  256. package/lib/network/remote-file-sync/remote-status-data.d.ts +6 -0
  257. package/lib/network/remote-file-sync/remote-status-data.js +2 -0
  258. package/lib/network/remote-file-sync/remote-status-data.js.map +1 -0
  259. package/lib/network/restful-api-http-error.d.ts +41 -0
  260. package/lib/network/restful-api-http-error.js +134 -0
  261. package/lib/network/restful-api-http-error.js.map +1 -0
  262. package/lib/template/index.d.ts +1 -0
  263. package/lib/template/index.js +2 -0
  264. package/lib/template/index.js.map +1 -0
  265. package/lib/template/ratchet-template-renderer.d.ts +4 -0
  266. package/lib/template/ratchet-template-renderer.js +2 -0
  267. package/lib/template/ratchet-template-renderer.js.map +1 -0
  268. package/lib/third-party/google/google-recaptcha-ratchet.d.ts +4 -0
  269. package/lib/third-party/google/google-recaptcha-ratchet.js +27 -0
  270. package/lib/third-party/google/google-recaptcha-ratchet.js.map +1 -0
  271. package/lib/third-party/index.d.ts +3 -0
  272. package/lib/third-party/index.js +4 -0
  273. package/lib/third-party/index.js.map +1 -0
  274. package/lib/third-party/twilio/twilio-ratchet.d.ts +11 -0
  275. package/lib/third-party/twilio/twilio-ratchet.js +70 -0
  276. package/lib/third-party/twilio/twilio-ratchet.js.map +1 -0
  277. package/lib/third-party/twilio/twilio-verify-ratchet.d.ts +23 -0
  278. package/lib/third-party/twilio/twilio-verify-ratchet.js +60 -0
  279. package/lib/third-party/twilio/twilio-verify-ratchet.js.map +1 -0
  280. package/lib/transform/built-in-transforms.d.ts +18 -0
  281. package/lib/transform/built-in-transforms.js +192 -0
  282. package/lib/transform/built-in-transforms.js.map +1 -0
  283. package/lib/transform/index.d.ts +3 -0
  284. package/lib/transform/index.js +4 -0
  285. package/lib/transform/index.js.map +1 -0
  286. package/lib/transform/transform-ratchet.d.ts +7 -0
  287. package/lib/transform/transform-ratchet.js +67 -0
  288. package/lib/transform/transform-ratchet.js.map +1 -0
  289. package/lib/transform/transform-rule.d.ts +3 -0
  290. package/lib/transform/transform-rule.js +2 -0
  291. package/lib/transform/transform-rule.js.map +1 -0
  292. package/lib/tx/index.d.ts +5 -0
  293. package/lib/tx/index.js +6 -0
  294. package/lib/tx/index.js.map +1 -0
  295. package/lib/tx/transaction-configuration.d.ts +7 -0
  296. package/lib/tx/transaction-configuration.js +2 -0
  297. package/lib/tx/transaction-configuration.js.map +1 -0
  298. package/lib/tx/transaction-final-state.d.ts +6 -0
  299. package/lib/tx/transaction-final-state.js +6 -0
  300. package/lib/tx/transaction-final-state.js.map +1 -0
  301. package/lib/tx/transaction-ratchet.d.ts +6 -0
  302. package/lib/tx/transaction-ratchet.js +77 -0
  303. package/lib/tx/transaction-ratchet.js.map +1 -0
  304. package/lib/tx/transaction-result.d.ts +9 -0
  305. package/lib/tx/transaction-result.js +2 -0
  306. package/lib/tx/transaction-result.js.map +1 -0
  307. package/lib/tx/transaction-step.d.ts +5 -0
  308. package/lib/tx/transaction-step.js +2 -0
  309. package/lib/tx/transaction-step.js.map +1 -0
  310. package/package.json +6 -12
  311. package/lib/index.mjs +0 -2
  312. 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,9 @@
1
+ export interface JwtTokenBase {
2
+ iss?: string;
3
+ sub?: string;
4
+ aud?: string;
5
+ exp?: number;
6
+ nbf?: number;
7
+ iat?: number;
8
+ jti?: string;
9
+ }
@@ -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,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":"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"}
@@ -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
+ }