@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.
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,192 @@
1
+ import { Logger } from '../logger/logger.js';
2
+ import { NumberRatchet } from '../lang/number-ratchet.js';
3
+ import { DateTime } from 'luxon';
4
+ export class BuiltInTransforms {
5
+ static keysOnly(rule) {
6
+ return {
7
+ transform(value, isKey, context) {
8
+ return isKey ? rule.transform(value, isKey, context) : value;
9
+ },
10
+ };
11
+ }
12
+ static valuesOnly(rule) {
13
+ return {
14
+ transform(value, isKey, context) {
15
+ return !isKey ? rule.transform(value, isKey, context) : value;
16
+ },
17
+ };
18
+ }
19
+ static stringReplaceTransform(input, output) {
20
+ return {
21
+ transform(value, _isKey, _context) {
22
+ return value == input ? output : value;
23
+ },
24
+ };
25
+ }
26
+ static stripStringTransform(input) {
27
+ return {
28
+ transform(value, _isKey, _context) {
29
+ return value == input ? null : value;
30
+ },
31
+ };
32
+ }
33
+ static retainAll(input) {
34
+ return {
35
+ transform(value, _isKey, _context) {
36
+ return input.indexOf(value) == -1 ? null : value;
37
+ },
38
+ };
39
+ }
40
+ static removeAll(input) {
41
+ return {
42
+ transform(value, _isKey, _context) {
43
+ return input.indexOf(value) > -1 ? null : value;
44
+ },
45
+ };
46
+ }
47
+ static snakeToCamelCase() {
48
+ return {
49
+ transform(value, _isKey, _context) {
50
+ let rval = value;
51
+ if (typeof value == 'string') {
52
+ rval = value.replace(/_([a-z0-9])/gi, function (s, group1) {
53
+ return group1.toUpperCase();
54
+ });
55
+ }
56
+ return rval;
57
+ },
58
+ };
59
+ }
60
+ static stringToNumber() {
61
+ return {
62
+ transform(value, _isKey, _context) {
63
+ let rval = value;
64
+ if (typeof value == 'string') {
65
+ const num = NumberRatchet.safeNumber(value);
66
+ if (num !== null) {
67
+ rval = num;
68
+ }
69
+ }
70
+ return rval;
71
+ },
72
+ };
73
+ }
74
+ static camelToSnakeCase() {
75
+ return {
76
+ transform(value, _isKey, _context) {
77
+ let rval = value;
78
+ if (typeof value == 'string') {
79
+ rval = value
80
+ .replace(/\.?([A-Z]+)/g, function (x, y) {
81
+ return '_' + y.toLowerCase();
82
+ })
83
+ .replace(/^_/, '');
84
+ }
85
+ return rval;
86
+ },
87
+ };
88
+ }
89
+ static concatenateToNewField(newFieldName, oldFieldNamesInOrder, abortIfFieldMissing = true) {
90
+ return {
91
+ transform(value, _isKey, _context) {
92
+ if (typeof value == 'object') {
93
+ let rval = '';
94
+ oldFieldNamesInOrder.forEach((n) => {
95
+ if (rval != null) {
96
+ const temp = value[n];
97
+ if (temp == null && abortIfFieldMissing) {
98
+ rval = null;
99
+ }
100
+ else {
101
+ rval = temp == null ? rval : rval + String(temp);
102
+ }
103
+ }
104
+ });
105
+ if (rval != null) {
106
+ value[newFieldName] = rval;
107
+ oldFieldNamesInOrder.forEach((n) => delete value[n]);
108
+ }
109
+ }
110
+ return value;
111
+ },
112
+ };
113
+ }
114
+ static numberToBool(fieldNames) {
115
+ return {
116
+ transform(value, _isKey, _context) {
117
+ if (typeof value == 'object') {
118
+ fieldNames.forEach((n) => {
119
+ const oldVal = value[n];
120
+ if (typeof oldVal == 'number') {
121
+ const newVal = 0 != oldVal;
122
+ value[n] = newVal;
123
+ }
124
+ });
125
+ }
126
+ return value;
127
+ },
128
+ };
129
+ }
130
+ static boolToNumber(fieldNames) {
131
+ return {
132
+ transform(value, _isKey, _context) {
133
+ if (typeof value == 'object') {
134
+ fieldNames.forEach((n) => {
135
+ const oldVal = value[n];
136
+ if (typeof oldVal == 'boolean') {
137
+ const newVal = oldVal ? 1 : 0;
138
+ value[n] = newVal;
139
+ }
140
+ });
141
+ }
142
+ return value;
143
+ },
144
+ };
145
+ }
146
+ static makeDuplicateField(oldName, newName) {
147
+ return {
148
+ transform(value, _isKey, _context) {
149
+ if (typeof value == 'object') {
150
+ const oldVal = value[oldName];
151
+ if (oldVal != null) {
152
+ value[newName] = oldVal;
153
+ }
154
+ }
155
+ return value;
156
+ },
157
+ };
158
+ }
159
+ static addField(name, valueToAdd) {
160
+ return {
161
+ transform(value, _isKey, _context) {
162
+ if (typeof value == 'object') {
163
+ value[name] = valueToAdd;
164
+ }
165
+ return value;
166
+ },
167
+ };
168
+ }
169
+ static reformatDateFields(fieldNames, oldFormat, newFormat) {
170
+ return {
171
+ transform(value, _isKey, _context) {
172
+ if (typeof value == 'object') {
173
+ fieldNames.forEach((key) => {
174
+ const oldValue = value[key];
175
+ if (oldValue != null) {
176
+ try {
177
+ const parsed = DateTime.fromFormat(oldValue, oldFormat);
178
+ const newValue = parsed.toFormat(newFormat);
179
+ value[key] = newValue;
180
+ }
181
+ catch (err) {
182
+ Logger.warn('Failed to reparse date %s in format %s : %s', oldValue, oldFormat, err);
183
+ }
184
+ }
185
+ });
186
+ }
187
+ return value;
188
+ },
189
+ };
190
+ }
191
+ }
192
+ //# sourceMappingURL=built-in-transforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in-transforms.js","sourceRoot":"","sources":["../../src/transform/built-in-transforms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './built-in-transforms.js';
2
+ export * from './transform-ratchet.js';
3
+ export * from './transform-rule.js';
@@ -0,0 +1,4 @@
1
+ export * from './built-in-transforms.js';
2
+ export * from './transform-ratchet.js';
3
+ export * from './transform-rule.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"AAIA,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { TransformRule } from './transform-rule.js';
2
+ export declare class TransformRatchet {
3
+ static transform(toTransform: any, rules?: TransformRule[]): any;
4
+ private static transformGeneric;
5
+ private static applyTransformToObject;
6
+ private static applyTransformToPrimitive;
7
+ }
@@ -0,0 +1,67 @@
1
+ import { Logger } from '../logger/logger.js';
2
+ export class TransformRatchet {
3
+ static transform(toTransform, rules = []) {
4
+ return TransformRatchet.transformGeneric(toTransform, rules, false, null);
5
+ }
6
+ static transformGeneric(toTransform, rules = [], isKey, context) {
7
+ let rval = null;
8
+ const type = typeof toTransform;
9
+ switch (type) {
10
+ case 'undefined':
11
+ case 'symbol':
12
+ case 'function':
13
+ rval = toTransform;
14
+ break;
15
+ case 'number':
16
+ case 'string':
17
+ case 'boolean':
18
+ rval = TransformRatchet.applyTransformToPrimitive(toTransform, rules, isKey, context);
19
+ break;
20
+ case 'object':
21
+ rval = TransformRatchet.applyTransformToObject(toTransform, rules, isKey, context);
22
+ break;
23
+ default:
24
+ throw new Error('Unrecognized type ' + type);
25
+ }
26
+ return rval;
27
+ }
28
+ static applyTransformToObject(toTransform, rules = [], isKey, context = null) {
29
+ Logger.silly('Tranform: %j, %s, %j', toTransform, isKey, context);
30
+ let rval = null;
31
+ if (toTransform != null) {
32
+ if (Array.isArray(toTransform)) {
33
+ rval = [];
34
+ toTransform.forEach((val) => {
35
+ const newVal = TransformRatchet.transformGeneric(val, rules, isKey, toTransform);
36
+ if (newVal != null) {
37
+ rval.push(newVal);
38
+ }
39
+ });
40
+ }
41
+ else {
42
+ rval = {};
43
+ Object.keys(toTransform).forEach((k) => {
44
+ const oldValue = toTransform[k];
45
+ const newKey = TransformRatchet.applyTransformToPrimitive(k, rules, true, toTransform);
46
+ if (newKey != null) {
47
+ let newValue = TransformRatchet.transformGeneric(oldValue, rules, false, toTransform);
48
+ newValue = TransformRatchet.applyTransformToPrimitive(newValue, rules, false, toTransform);
49
+ if (newValue != null) {
50
+ rval[newKey] = newValue;
51
+ }
52
+ }
53
+ });
54
+ rval = TransformRatchet.applyTransformToPrimitive(rval, rules, false, toTransform);
55
+ }
56
+ }
57
+ return rval;
58
+ }
59
+ static applyTransformToPrimitive(toTransform, rules = [], isKey, context) {
60
+ let rval = toTransform;
61
+ rules.forEach((r) => {
62
+ rval = rval == null ? null : r.transform(rval, isKey, context);
63
+ });
64
+ return rval;
65
+ }
66
+ }
67
+ //# sourceMappingURL=transform-ratchet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-ratchet.js","sourceRoot":"","sources":["../../src/transform/transform-ratchet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export interface TransformRule {
2
+ transform(value: any, isKey: boolean, context: any): any;
3
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transform-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-rule.js","sourceRoot":"","sources":["../../src/transform/transform-rule.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from './transaction-configuration.js';
2
+ export * from './transaction-final-state.js';
3
+ export * from './transaction-ratchet.js';
4
+ export * from './transaction-result.js';
5
+ export * from './transaction-step.js';
@@ -0,0 +1,6 @@
1
+ export * from './transaction-configuration.js';
2
+ export * from './transaction-final-state.js';
3
+ export * from './transaction-ratchet.js';
4
+ export * from './transaction-result.js';
5
+ export * from './transaction-step.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tx/index.ts"],"names":[],"mappings":"AAIA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { TransactionResult } from './transaction-result.js';
2
+ import { LoggerLevelName } from '../logger/logger-level-name.js';
3
+ export interface TransactionConfiguration<T> {
4
+ stepLogLevel?: LoggerLevelName;
5
+ executeAfterRollback?(result: TransactionResult<T>): Promise<void>;
6
+ executeAfterRollbackFailure?(result: TransactionResult<T>): Promise<void>;
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transaction-configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-configuration.js","sourceRoot":"","sources":["../../src/tx/transaction-configuration.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export declare const TransactionFinalState: {
2
+ Success: string;
3
+ RolledBack: string;
4
+ RollbackFailed: string;
5
+ };
6
+ export type TransactionFinalState = (typeof TransactionFinalState)[keyof typeof TransactionFinalState];
@@ -0,0 +1,6 @@
1
+ export const TransactionFinalState = {
2
+ Success: 'Success',
3
+ RolledBack: 'RolledBack',
4
+ RollbackFailed: 'RollbackFailed',
5
+ };
6
+ //# sourceMappingURL=transaction-final-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-final-state.js","sourceRoot":"","sources":["../../src/tx/transaction-final-state.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,gBAAgB;CACjC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { TransactionStep } from './transaction-step.js';
2
+ import { TransactionResult } from './transaction-result.js';
3
+ import { TransactionConfiguration } from './transaction-configuration.js';
4
+ export declare class TransactionRatchet {
5
+ static execute<T>(steps: TransactionStep<T>[], initialContext: T, inConfiguration?: TransactionConfiguration<T>): Promise<TransactionResult<T>>;
6
+ }
@@ -0,0 +1,77 @@
1
+ import { Logger } from '../logger/logger.js';
2
+ import { RequireRatchet } from '../lang/require-ratchet.js';
3
+ import { LoggerLevelName } from '../logger/logger-level-name.js';
4
+ import { TransactionFinalState } from './transaction-final-state.js';
5
+ export class TransactionRatchet {
6
+ static async execute(steps, initialContext, inConfiguration) {
7
+ RequireRatchet.notNullOrUndefined(steps, 'steps');
8
+ RequireRatchet.notNullOrUndefined(initialContext, 'initialContext');
9
+ RequireRatchet.true(steps.length > 0, 'steps may not be empty');
10
+ const config = Object.assign({}, inConfiguration || {});
11
+ config.stepLogLevel = config.stepLogLevel || LoggerLevelName.info;
12
+ const rval = {
13
+ finalContext: initialContext,
14
+ finalState: null,
15
+ };
16
+ const stepNames = steps.map((s, idx) => s.name || 'Step ' + idx);
17
+ Logger.info('Beginning transaction of %d steps', steps.length);
18
+ let idx = 0;
19
+ do {
20
+ Logger.logByLevel(config.stepLogLevel, 'Processing step %d of %d (%s)', idx + 1, steps.length, stepNames[idx]);
21
+ try {
22
+ await steps[idx].execute(rval.finalContext, idx);
23
+ idx++;
24
+ }
25
+ catch (err) {
26
+ Logger.error('Failure detected on step %d : %s : %s : Rolling back', idx, stepNames[idx], err, err);
27
+ rval.error = err;
28
+ rval.errorStep = idx;
29
+ }
30
+ } while (!rval.error && idx < steps.length);
31
+ if (rval.error) {
32
+ do {
33
+ Logger.logByLevel(config.stepLogLevel, 'Rolling back step %d of %d (%s)', idx + 1, steps.length, stepNames[idx]);
34
+ try {
35
+ if (steps[idx].rollback) {
36
+ await steps[idx].rollback(rval.finalContext, idx);
37
+ }
38
+ else {
39
+ Logger.info('Skipping - no rollback defined');
40
+ }
41
+ }
42
+ catch (err) {
43
+ Logger.error('Very bad - rollback code failed on step %d : %s : Aborting in invalid state: %s', idx, stepNames[idx], err, err);
44
+ rval.rollbackError = err;
45
+ rval.rollbackErrorStep = idx;
46
+ }
47
+ idx--;
48
+ } while (idx >= 0);
49
+ }
50
+ rval.finalState = rval.rollbackError
51
+ ? TransactionFinalState.RollbackFailed
52
+ : rval.error
53
+ ? TransactionFinalState.RolledBack
54
+ : TransactionFinalState.Success;
55
+ Logger.info('Transaction completed with status : %s', rval.finalState);
56
+ if (config?.executeAfterRollback && rval.finalState !== TransactionFinalState.Success) {
57
+ try {
58
+ Logger.info('Applying executeAfterRollback');
59
+ await config.executeAfterRollback(rval);
60
+ }
61
+ catch (err) {
62
+ Logger.error('Very bad - failure in executeAfterRollback : %s', err, err);
63
+ }
64
+ }
65
+ if (config?.executeAfterRollbackFailure && rval.finalState !== TransactionFinalState.Success) {
66
+ try {
67
+ Logger.info('Applying executeAfterRollbackFailure');
68
+ await config.executeAfterRollbackFailure(rval);
69
+ }
70
+ catch (err) {
71
+ Logger.error('Very bad - failure in executeAfterRollbackFailure : %s', err, err);
72
+ }
73
+ }
74
+ return rval;
75
+ }
76
+ }
77
+ //# sourceMappingURL=transaction-ratchet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-ratchet.js","sourceRoot":"","sources":["../../src/tx/transaction-ratchet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { TransactionFinalState } from './transaction-final-state.js';
2
+ export interface TransactionResult<T> {
3
+ finalContext: T;
4
+ finalState: TransactionFinalState;
5
+ error?: any;
6
+ rollbackError?: any;
7
+ errorStep?: number;
8
+ rollbackErrorStep?: number;
9
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transaction-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-result.js","sourceRoot":"","sources":["../../src/tx/transaction-result.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export interface TransactionStep<T> {
2
+ execute(context: T, stepNumber?: number): Promise<void>;
3
+ rollback?(context: T, stepNumber?: number): Promise<void>;
4
+ name?: string;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transaction-step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-step.js","sourceRoot":"","sources":["../../src/tx/transaction-step.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,18 +1,17 @@
1
1
  {
2
2
  "name": "@bitblit/ratchet-common",
3
- "version": "4.0.420-alpha",
3
+ "version": "4.0.421-alpha",
4
4
  "description": "Common tools for general use",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "lib/**",
8
8
  "bin/**"
9
9
  ],
10
- "module": "./lib/index.mjs",
11
- "types": "./lib/types.d.ts",
12
10
  "exports": {
13
- ".": {
14
- "types": "./lib/types.d.ts",
15
- "import": "./lib/index.mjs"
11
+ "./package.json": "./package.json",
12
+ "./*": {
13
+ "import": "./lib/*.js",
14
+ "types": "./lib/*.d.ts"
16
15
  }
17
16
  },
18
17
  "contributors": [
@@ -29,11 +28,6 @@
29
28
  "pre-commit": "pretty-quick --staged"
30
29
  }
31
30
  },
32
- "prettier": {
33
- "printWidth": 140,
34
- "singleQuote": true,
35
- "arrowParens": "always"
36
- },
37
31
  "config": {},
38
32
  "repository": {
39
33
  "type": "git",
@@ -54,7 +48,7 @@
54
48
  "node": ">=14.18"
55
49
  },
56
50
  "license": "Apache-2.0",
57
- "dependencies": {
51
+ "optionalDependencies": {
58
52
  "jsonwebtoken": "9.0.2",
59
53
  "ts-enum-util": "4.1.0"
60
54
  },