@bitblit/ratchet-common 4.0.420-alpha → 4.0.421-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/2d/index.d.ts +5 -0
- package/lib/2d/index.js +6 -0
- package/lib/2d/index.js.map +1 -0
- package/lib/2d/line-2d.d.ts +5 -0
- package/lib/2d/line-2d.js +2 -0
- package/lib/2d/line-2d.js.map +1 -0
- package/lib/2d/plane-2d.d.ts +6 -0
- package/lib/2d/plane-2d.js +2 -0
- package/lib/2d/plane-2d.js.map +1 -0
- package/lib/2d/point-2d.d.ts +4 -0
- package/lib/2d/point-2d.js +2 -0
- package/lib/2d/point-2d.js.map +1 -0
- package/lib/2d/poly-line-2d.d.ts +4 -0
- package/lib/2d/poly-line-2d.js +2 -0
- package/lib/2d/poly-line-2d.js.map +1 -0
- package/lib/2d/ratchet-2d.d.ts +37 -0
- package/lib/2d/ratchet-2d.js +246 -0
- package/lib/2d/ratchet-2d.js.map +1 -0
- package/lib/build/build-information.d.ts +8 -0
- package/lib/build/build-information.js +2 -0
- package/lib/build/build-information.js.map +1 -0
- package/lib/build/index.d.ts +2 -0
- package/lib/build/index.js +3 -0
- package/lib/build/index.js.map +1 -0
- package/lib/build/ratchet-common-info.d.ts +5 -0
- package/lib/build/ratchet-common-info.js +15 -0
- package/lib/build/ratchet-common-info.js.map +1 -0
- package/lib/histogram/histogram-entry.d.ts +4 -0
- package/lib/histogram/histogram-entry.js +2 -0
- package/lib/histogram/histogram-entry.js.map +1 -0
- package/lib/histogram/histogram.d.ts +12 -0
- package/lib/histogram/histogram.js +49 -0
- package/lib/histogram/histogram.js.map +1 -0
- package/lib/histogram/index.d.ts +2 -0
- package/lib/histogram/index.js +3 -0
- package/lib/histogram/index.js.map +1 -0
- package/lib/jwt/common-jwt-token.d.ts +6 -0
- package/lib/jwt/common-jwt-token.js +2 -0
- package/lib/jwt/common-jwt-token.js.map +1 -0
- package/lib/jwt/expired-jwt-handling.d.ts +5 -0
- package/lib/jwt/expired-jwt-handling.js +7 -0
- package/lib/jwt/expired-jwt-handling.js.map +1 -0
- package/lib/jwt/index.d.ts +6 -0
- package/lib/jwt/index.js +7 -0
- package/lib/jwt/index.js.map +1 -0
- package/lib/jwt/jwt-ratchet-config.d.ts +8 -0
- package/lib/jwt/jwt-ratchet-config.js +2 -0
- package/lib/jwt/jwt-ratchet-config.js.map +1 -0
- package/lib/jwt/jwt-ratchet-like.d.ts +15 -0
- package/lib/jwt/jwt-ratchet-like.js +2 -0
- package/lib/jwt/jwt-ratchet-like.js.map +1 -0
- package/lib/jwt/jwt-ratchet.d.ts +28 -0
- package/lib/jwt/jwt-ratchet.js +171 -0
- package/lib/jwt/jwt-ratchet.js.map +1 -0
- package/lib/jwt/jwt-token-base.d.ts +9 -0
- package/lib/jwt/jwt-token-base.js +2 -0
- package/lib/jwt/jwt-token-base.js.map +1 -0
- package/lib/lang/array-ratchet.d.ts +12 -0
- package/lib/lang/array-ratchet.js +84 -0
- package/lib/lang/array-ratchet.js.map +1 -0
- package/lib/lang/base64-ratchet.d.ts +20 -0
- package/lib/lang/base64-ratchet.js +209 -0
- package/lib/lang/base64-ratchet.js.map +1 -0
- package/lib/lang/boolean-ratchet.d.ts +7 -0
- package/lib/lang/boolean-ratchet.js +46 -0
- package/lib/lang/boolean-ratchet.js.map +1 -0
- package/lib/lang/composite-last-success-provider.d.ts +7 -0
- package/lib/lang/composite-last-success-provider.js +27 -0
- package/lib/lang/composite-last-success-provider.js.map +1 -0
- package/lib/lang/date-ratchet.d.ts +11 -0
- package/lib/lang/date-ratchet.js +30 -0
- package/lib/lang/date-ratchet.js.map +1 -0
- package/lib/lang/duration-ratchet.d.ts +7 -0
- package/lib/lang/duration-ratchet.js +43 -0
- package/lib/lang/duration-ratchet.js.map +1 -0
- package/lib/lang/enum-ratchet.d.ts +5 -0
- package/lib/lang/enum-ratchet.js +31 -0
- package/lib/lang/enum-ratchet.js.map +1 -0
- package/lib/lang/error-ratchet.d.ts +6 -0
- package/lib/lang/error-ratchet.js +45 -0
- package/lib/lang/error-ratchet.js.map +1 -0
- package/lib/lang/esm-ratchet.d.ts +7 -0
- package/lib/lang/esm-ratchet.js +65 -0
- package/lib/lang/esm-ratchet.js.map +1 -0
- package/lib/lang/expiring-object.d.ts +20 -0
- package/lib/lang/expiring-object.js +73 -0
- package/lib/lang/expiring-object.js.map +1 -0
- package/lib/lang/geolocation-ratchet.d.ts +40 -0
- package/lib/lang/geolocation-ratchet.js +264 -0
- package/lib/lang/geolocation-ratchet.js.map +1 -0
- package/lib/lang/global-ratchet.d.ts +6 -0
- package/lib/lang/global-ratchet.js +44 -0
- package/lib/lang/global-ratchet.js.map +1 -0
- package/lib/lang/index.d.ts +27 -0
- package/lib/lang/index.js +28 -0
- package/lib/lang/index.js.map +1 -0
- package/lib/lang/key-value.d.ts +4 -0
- package/lib/lang/key-value.js +5 -0
- package/lib/lang/key-value.js.map +1 -0
- package/lib/lang/last-success-provider.d.ts +3 -0
- package/lib/lang/last-success-provider.js +2 -0
- package/lib/lang/last-success-provider.js.map +1 -0
- package/lib/lang/map-ratchet.d.ts +15 -0
- package/lib/lang/map-ratchet.js +173 -0
- package/lib/lang/map-ratchet.js.map +1 -0
- package/lib/lang/no.d.ts +3 -0
- package/lib/lang/no.js +5 -0
- package/lib/lang/no.js.map +1 -0
- package/lib/lang/number-ratchet.d.ts +28 -0
- package/lib/lang/number-ratchet.js +186 -0
- package/lib/lang/number-ratchet.js.map +1 -0
- package/lib/lang/parsed-url.d.ts +10 -0
- package/lib/lang/parsed-url.js +2 -0
- package/lib/lang/parsed-url.js.map +1 -0
- package/lib/lang/promise-ratchet.d.ts +18 -0
- package/lib/lang/promise-ratchet.js +130 -0
- package/lib/lang/promise-ratchet.js.map +1 -0
- package/lib/lang/require-ratchet.d.ts +11 -0
- package/lib/lang/require-ratchet.js +56 -0
- package/lib/lang/require-ratchet.js.map +1 -0
- package/lib/lang/sort-ratchet.d.ts +7 -0
- package/lib/lang/sort-ratchet.js +33 -0
- package/lib/lang/sort-ratchet.js.map +1 -0
- package/lib/lang/stop-watch.d.ts +27 -0
- package/lib/lang/stop-watch.js +170 -0
- package/lib/lang/stop-watch.js.map +1 -0
- package/lib/lang/string-ratchet.d.ts +40 -0
- package/lib/lang/string-ratchet.js +280 -0
- package/lib/lang/string-ratchet.js.map +1 -0
- package/lib/lang/time-zone-ratchet.d.ts +20 -0
- package/lib/lang/time-zone-ratchet.js +81 -0
- package/lib/lang/time-zone-ratchet.js.map +1 -0
- package/lib/lang/timeout-token.d.ts +9 -0
- package/lib/lang/timeout-token.js +19 -0
- package/lib/lang/timeout-token.js.map +1 -0
- package/lib/lang/uint-8-array-ratchet.d.ts +5 -0
- package/lib/lang/uint-8-array-ratchet.js +31 -0
- package/lib/lang/uint-8-array-ratchet.js.map +1 -0
- package/lib/lang/web-stream-ratchet.d.ts +6 -0
- package/lib/lang/web-stream-ratchet.js +47 -0
- package/lib/lang/web-stream-ratchet.js.map +1 -0
- package/lib/logger/classic-single-line-log-message-formatter.d.ts +6 -0
- package/lib/logger/classic-single-line-log-message-formatter.js +14 -0
- package/lib/logger/classic-single-line-log-message-formatter.js.map +1 -0
- package/lib/logger/index.d.ts +17 -0
- package/lib/logger/index.js +18 -0
- package/lib/logger/index.js.map +1 -0
- package/lib/logger/log-message-builder.d.ts +14 -0
- package/lib/logger/log-message-builder.js +49 -0
- package/lib/logger/log-message-builder.js.map +1 -0
- package/lib/logger/log-message-format-type.d.ts +6 -0
- package/lib/logger/log-message-format-type.js +6 -0
- package/lib/logger/log-message-format-type.js.map +1 -0
- package/lib/logger/log-message-formatter.d.ts +5 -0
- package/lib/logger/log-message-formatter.js +2 -0
- package/lib/logger/log-message-formatter.js.map +1 -0
- package/lib/logger/log-message-processor.d.ts +5 -0
- package/lib/logger/log-message-processor.js +2 -0
- package/lib/logger/log-message-processor.js.map +1 -0
- package/lib/logger/log-message.d.ts +8 -0
- package/lib/logger/log-message.js +2 -0
- package/lib/logger/log-message.js.map +1 -0
- package/lib/logger/log-snapshot.d.ts +5 -0
- package/lib/logger/log-snapshot.js +2 -0
- package/lib/logger/log-snapshot.js.map +1 -0
- package/lib/logger/logger-instance.d.ts +49 -0
- package/lib/logger/logger-instance.js +216 -0
- package/lib/logger/logger-instance.js.map +1 -0
- package/lib/logger/logger-level-name.d.ts +9 -0
- package/lib/logger/logger-level-name.js +9 -0
- package/lib/logger/logger-level-name.js.map +1 -0
- package/lib/logger/logger-meta.d.ts +6 -0
- package/lib/logger/logger-meta.js +2 -0
- package/lib/logger/logger-meta.js.map +1 -0
- package/lib/logger/logger-options.d.ts +13 -0
- package/lib/logger/logger-options.js +2 -0
- package/lib/logger/logger-options.js.map +1 -0
- package/lib/logger/logger-output-function.d.ts +6 -0
- package/lib/logger/logger-output-function.js +6 -0
- package/lib/logger/logger-output-function.js.map +1 -0
- package/lib/logger/logger-ring-buffer.d.ts +18 -0
- package/lib/logger/logger-ring-buffer.js +72 -0
- package/lib/logger/logger-ring-buffer.js.map +1 -0
- package/lib/logger/logger-util.d.ts +8 -0
- package/lib/logger/logger-util.js +45 -0
- package/lib/logger/logger-util.js.map +1 -0
- package/lib/logger/logger.d.ts +46 -0
- package/lib/logger/logger.js +150 -0
- package/lib/logger/logger.js.map +1 -0
- package/lib/logger/none-log-message-formatter.d.ts +6 -0
- package/lib/logger/none-log-message-formatter.js +6 -0
- package/lib/logger/none-log-message-formatter.js.map +1 -0
- package/lib/logger/structured-json-log-message-formatter.d.ts +6 -0
- package/lib/logger/structured-json-log-message-formatter.js +20 -0
- package/lib/logger/structured-json-log-message-formatter.js.map +1 -0
- package/lib/mail/archive-email-result.d.ts +5 -0
- package/lib/mail/archive-email-result.js +2 -0
- package/lib/mail/archive-email-result.js.map +1 -0
- package/lib/mail/email-attachment.d.ts +5 -0
- package/lib/mail/email-attachment.js +2 -0
- package/lib/mail/email-attachment.js.map +1 -0
- package/lib/mail/index.d.ts +11 -0
- package/lib/mail/index.js +12 -0
- package/lib/mail/index.js.map +1 -0
- package/lib/mail/mail-sending-provider.d.ts +5 -0
- package/lib/mail/mail-sending-provider.js +2 -0
- package/lib/mail/mail-sending-provider.js.map +1 -0
- package/lib/mail/mailer-config.d.ts +11 -0
- package/lib/mail/mailer-config.js +2 -0
- package/lib/mail/mailer-config.js.map +1 -0
- package/lib/mail/mailer-like.d.ts +11 -0
- package/lib/mail/mailer-like.js +2 -0
- package/lib/mail/mailer-like.js.map +1 -0
- package/lib/mail/mailer-util.d.ts +7 -0
- package/lib/mail/mailer-util.js +49 -0
- package/lib/mail/mailer-util.js.map +1 -0
- package/lib/mail/mailer.d.ts +17 -0
- package/lib/mail/mailer.js +174 -0
- package/lib/mail/mailer.js.map +1 -0
- package/lib/mail/ready-to-send-email.d.ts +13 -0
- package/lib/mail/ready-to-send-email.js +2 -0
- package/lib/mail/ready-to-send-email.js.map +1 -0
- package/lib/mail/resolved-ready-to-send-email.d.ts +5 -0
- package/lib/mail/resolved-ready-to-send-email.js +2 -0
- package/lib/mail/resolved-ready-to-send-email.js.map +1 -0
- package/lib/mail/send-email-result.d.ts +12 -0
- package/lib/mail/send-email-result.js +2 -0
- package/lib/mail/send-email-result.js.map +1 -0
- package/lib/mail/test-mail-sending-provider.d.ts +8 -0
- package/lib/mail/test-mail-sending-provider.js +31 -0
- package/lib/mail/test-mail-sending-provider.js.map +1 -0
- package/lib/network/browser-local-ip-provider.d.ts +7 -0
- package/lib/network/browser-local-ip-provider.js +22 -0
- package/lib/network/browser-local-ip-provider.js.map +1 -0
- package/lib/network/fixed-local-ip-provider.d.ts +6 -0
- package/lib/network/fixed-local-ip-provider.js +10 -0
- package/lib/network/fixed-local-ip-provider.js.map +1 -0
- package/lib/network/index.d.ts +9 -0
- package/lib/network/index.js +10 -0
- package/lib/network/index.js.map +1 -0
- package/lib/network/local-ip-provider.d.ts +3 -0
- package/lib/network/local-ip-provider.js +2 -0
- package/lib/network/local-ip-provider.js.map +1 -0
- package/lib/network/network-ratchet.d.ts +10 -0
- package/lib/network/network-ratchet.js +102 -0
- package/lib/network/network-ratchet.js.map +1 -0
- package/lib/network/remote-file-sync/backup-result.d.ts +5 -0
- package/lib/network/remote-file-sync/backup-result.js +7 -0
- package/lib/network/remote-file-sync/backup-result.js.map +1 -0
- package/lib/network/remote-file-sync/file-transfer-result.d.ts +5 -0
- package/lib/network/remote-file-sync/file-transfer-result.js +7 -0
- package/lib/network/remote-file-sync/file-transfer-result.js.map +1 -0
- package/lib/network/remote-file-sync/remote-file-sync-like.d.ts +16 -0
- package/lib/network/remote-file-sync/remote-file-sync-like.js +2 -0
- package/lib/network/remote-file-sync/remote-file-sync-like.js.map +1 -0
- package/lib/network/remote-file-sync/remote-status-data.d.ts +6 -0
- package/lib/network/remote-file-sync/remote-status-data.js +2 -0
- package/lib/network/remote-file-sync/remote-status-data.js.map +1 -0
- package/lib/network/restful-api-http-error.d.ts +41 -0
- package/lib/network/restful-api-http-error.js +134 -0
- package/lib/network/restful-api-http-error.js.map +1 -0
- package/lib/template/index.d.ts +1 -0
- package/lib/template/index.js +2 -0
- package/lib/template/index.js.map +1 -0
- package/lib/template/ratchet-template-renderer.d.ts +4 -0
- package/lib/template/ratchet-template-renderer.js +2 -0
- package/lib/template/ratchet-template-renderer.js.map +1 -0
- package/lib/third-party/google/google-recaptcha-ratchet.d.ts +4 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js +27 -0
- package/lib/third-party/google/google-recaptcha-ratchet.js.map +1 -0
- package/lib/third-party/index.d.ts +3 -0
- package/lib/third-party/index.js +4 -0
- package/lib/third-party/index.js.map +1 -0
- package/lib/third-party/twilio/twilio-ratchet.d.ts +11 -0
- package/lib/third-party/twilio/twilio-ratchet.js +70 -0
- package/lib/third-party/twilio/twilio-ratchet.js.map +1 -0
- package/lib/third-party/twilio/twilio-verify-ratchet.d.ts +23 -0
- package/lib/third-party/twilio/twilio-verify-ratchet.js +60 -0
- package/lib/third-party/twilio/twilio-verify-ratchet.js.map +1 -0
- package/lib/transform/built-in-transforms.d.ts +18 -0
- package/lib/transform/built-in-transforms.js +192 -0
- package/lib/transform/built-in-transforms.js.map +1 -0
- package/lib/transform/index.d.ts +3 -0
- package/lib/transform/index.js +4 -0
- package/lib/transform/index.js.map +1 -0
- package/lib/transform/transform-ratchet.d.ts +7 -0
- package/lib/transform/transform-ratchet.js +67 -0
- package/lib/transform/transform-ratchet.js.map +1 -0
- package/lib/transform/transform-rule.d.ts +3 -0
- package/lib/transform/transform-rule.js +2 -0
- package/lib/transform/transform-rule.js.map +1 -0
- package/lib/tx/index.d.ts +5 -0
- package/lib/tx/index.js +6 -0
- package/lib/tx/index.js.map +1 -0
- package/lib/tx/transaction-configuration.d.ts +7 -0
- package/lib/tx/transaction-configuration.js +2 -0
- package/lib/tx/transaction-configuration.js.map +1 -0
- package/lib/tx/transaction-final-state.d.ts +6 -0
- package/lib/tx/transaction-final-state.js +6 -0
- package/lib/tx/transaction-final-state.js.map +1 -0
- package/lib/tx/transaction-ratchet.d.ts +6 -0
- package/lib/tx/transaction-ratchet.js +77 -0
- package/lib/tx/transaction-ratchet.js.map +1 -0
- package/lib/tx/transaction-result.d.ts +9 -0
- package/lib/tx/transaction-result.js +2 -0
- package/lib/tx/transaction-result.js.map +1 -0
- package/lib/tx/transaction-step.d.ts +5 -0
- package/lib/tx/transaction-step.js +2 -0
- package/lib/tx/transaction-step.js.map +1 -0
- package/package.json +6 -12
- package/lib/index.mjs +0 -2
- package/lib/types.d.ts +0 -1024
|
@@ -0,0 +1,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":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,OAAO,iBAAiB;IACrB,MAAM,CAAC,QAAQ,CAAC,IAAmB;QACxC,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,KAAc,EAAE,OAAY;gBAChD,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/D,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAmB;QAC1C,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,KAAc,EAAE,OAAY;gBAChD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAChE,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,KAAa,EAAE,MAAc;QAChE,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YACzC,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,KAAa;QAC9C,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACvC,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAe;QACrC,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACnD,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAe;QACrC,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAClD,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,gBAAgB;QAC5B,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAE7B,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM;wBACvD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC9B,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,MAAM,GAAG,GAAW,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACpD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;wBACjB,IAAI,GAAG,GAAG,CAAC;oBACb,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,gBAAgB;QAC5B,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAE7B,IAAI,GAAG,KAAK;yBACT,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC;wBACrC,OAAO,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC/B,CAAC,CAAC;yBACD,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvB,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,YAAoB,EAAE,oBAA8B,EAAE,mBAAmB,GAAG,IAAI;QAClH,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;oBACd,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBACjC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;4BACjB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;4BACtB,IAAI,IAAI,IAAI,IAAI,IAAI,mBAAmB,EAAE,CAAC;gCACxC,IAAI,GAAG,IAAI,CAAC;4BACd,CAAC;iCAAM,CAAC;gCACN,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;4BACnD,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;wBACjB,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;wBAG3B,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,UAAoB;QAC7C,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBACvB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBACxB,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE,CAAC;4BAC9B,MAAM,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC;4BAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;wBACpB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,UAAoB;QAC7C,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBACvB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBACxB,IAAI,OAAO,MAAM,IAAI,SAAS,EAAE,CAAC;4BAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;wBACpB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,OAAe,EAAE,OAAe;QAC/D,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC9B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;wBACnB,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;oBAC1B,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACe,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,UAAkB;QACrD,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;gBAC3B,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACe,CAAC;IACrB,CAAC;IAGM,MAAM,CAAC,kBAAkB,CAAC,UAAoB,EAAE,SAAiB,EAAE,SAAiB;QACzF,OAAO;YACL,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAa;gBAClD,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC5B,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;4BACrB,IAAI,CAAC;gCACH,MAAM,MAAM,GAAa,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gCAClE,MAAM,QAAQ,GAAW,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gCACpD,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;4BACxB,CAAC;4BAAC,OAAO,GAAG,EAAE,CAAC;gCACb,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;4BACvF,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACe,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"transform-rule.js","sourceRoot":"","sources":["../../src/transform/transform-rule.ts"],"names":[],"mappings":""}
|
package/lib/tx/index.js
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-configuration.js","sourceRoot":"","sources":["../../src/tx/transaction-configuration.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-result.js","sourceRoot":"","sources":["../../src/tx/transaction-result.ts"],"names":[],"mappings":""}
|
|
@@ -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.
|
|
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
|
-
|
|
15
|
-
"import": "./lib
|
|
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
|
-
"
|
|
51
|
+
"optionalDependencies": {
|
|
58
52
|
"jsonwebtoken": "9.0.2",
|
|
59
53
|
"ts-enum-util": "4.1.0"
|
|
60
54
|
},
|