@bitblit/ratchet-common 4.0.115-alpha → 4.0.119-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/index.d.ts +73 -1
- package/lib/index.mjs +4 -0
- package/lib/index.mjs.map +1 -0
- package/lib/lang/base64-ratchet.d.ts +1 -1
- package/lib/stream/buffer-writable.d.ts +2 -2
- package/lib/stream/multi-stream.d.ts +1 -1
- package/lib/stream/stream-ratchet.d.ts +2 -2
- package/lib/stream/string-writable.d.ts +1 -1
- package/package.json +9 -5
- package/lib/2d/line-2d.js +0 -1
- package/lib/2d/plane-2d.js +0 -1
- package/lib/2d/point-2d.js +0 -1
- package/lib/2d/poly-line-2d.js +0 -1
- package/lib/2d/ratchet-2d.js +0 -245
- package/lib/2d/ratchet-2d.spec.js +0 -117
- package/lib/build/build-information.js +0 -1
- package/lib/build/ratchet-common-info.js +0 -14
- package/lib/histogram/histogram-entry.js +0 -1
- package/lib/histogram/histogram.js +0 -48
- package/lib/histogram/histogram.spec.js +0 -19
- package/lib/index.js +0 -1
- package/lib/jwt/common-jwt-token.js +0 -1
- package/lib/jwt/expired-jwt-handling.js +0 -6
- package/lib/jwt/jwt-ratchet-like.js +0 -1
- package/lib/jwt/jwt-ratchet.js +0 -164
- package/lib/jwt/jwt-ratchet.spec.js +0 -49
- package/lib/jwt/jwt-token-base.js +0 -1
- package/lib/lang/array-ratchet.js +0 -83
- package/lib/lang/array-ratchet.spec.js +0 -68
- package/lib/lang/base64-ratchet.js +0 -45
- package/lib/lang/base64-ratchet.spec.js +0 -28
- package/lib/lang/boolean-ratchet.js +0 -45
- package/lib/lang/boolean-ratchet.spec.js +0 -81
- package/lib/lang/composite-last-success-provider.js +0 -26
- package/lib/lang/composite-last-success-provider.spec.js +0 -26
- package/lib/lang/date-ratchet.js +0 -29
- package/lib/lang/date-ratchet.spec.js +0 -21
- package/lib/lang/duration-ratchet.js +0 -42
- package/lib/lang/duration-ratchet.spec.js +0 -39
- package/lib/lang/enum-ratchet.js +0 -30
- package/lib/lang/enum-ratchet.spec.js +0 -31
- package/lib/lang/error-ratchet.js +0 -44
- package/lib/lang/error-ratchet.spec.js +0 -20
- package/lib/lang/esm-ratchet.js +0 -17
- package/lib/lang/expiring-object.js +0 -72
- package/lib/lang/expiring-object.spec.js +0 -51
- package/lib/lang/geolocation-ratchet.js +0 -263
- package/lib/lang/geolocation-ratchet.spec.js +0 -74
- package/lib/lang/global-ratchet.js +0 -43
- package/lib/lang/global-ratchet.spec.js +0 -14
- package/lib/lang/key-value.js +0 -4
- package/lib/lang/last-success-provider.js +0 -1
- package/lib/lang/map-ratchet.js +0 -164
- package/lib/lang/map-ratchet.spec.js +0 -90
- package/lib/lang/no.js +0 -4
- package/lib/lang/no.spec.js +0 -7
- package/lib/lang/number-ratchet.js +0 -155
- package/lib/lang/number-ratchet.spec.js +0 -118
- package/lib/lang/parsed-url.js +0 -1
- package/lib/lang/promise-ratchet.js +0 -138
- package/lib/lang/promise-ratchet.spec.js +0 -74
- package/lib/lang/require-ratchet.js +0 -56
- package/lib/lang/require-ratchet.spec.js +0 -80
- package/lib/lang/stop-watch.js +0 -114
- package/lib/lang/string-ratchet.js +0 -201
- package/lib/lang/string-ratchet.spec.js +0 -158
- package/lib/lang/time-zone-ratchet.js +0 -77
- package/lib/lang/time-zone-ratchet.spec.js +0 -40
- package/lib/lang/timeout-token.js +0 -17
- package/lib/lang/timeout-token.spec.js +0 -9
- package/lib/lang/transform-ratchet.js +0 -66
- package/lib/lang/transform-ratchet.spec.js +0 -118
- package/lib/logger/classic-single-line-log-message-formatter.js +0 -13
- package/lib/logger/log-message-builder.js +0 -48
- package/lib/logger/log-message-format-type.js +0 -6
- package/lib/logger/log-message-formatter.js +0 -1
- package/lib/logger/log-message-processor.js +0 -1
- package/lib/logger/log-message.js +0 -1
- package/lib/logger/log-snapshot.js +0 -1
- package/lib/logger/logger-instance.js +0 -208
- package/lib/logger/logger-level-name.js +0 -9
- package/lib/logger/logger-meta.js +0 -1
- package/lib/logger/logger-options.js +0 -1
- package/lib/logger/logger-output-function.js +0 -6
- package/lib/logger/logger-ring-buffer.js +0 -73
- package/lib/logger/logger-util.js +0 -44
- package/lib/logger/logger-util.spec.js +0 -9
- package/lib/logger/logger.js +0 -134
- package/lib/logger/logger.spec.js +0 -134
- package/lib/logger/none-log-message-formatter.js +0 -5
- package/lib/logger/structured-json-log-message-formatter.js +0 -19
- package/lib/network/browser-local-ip-provider.js +0 -21
- package/lib/network/browser-local-ip-provider.spec.js +0 -16
- package/lib/network/fixed-local-ip-provider.js +0 -9
- package/lib/network/local-ip-provider.js +0 -1
- package/lib/network/network-ratchet.js +0 -102
- package/lib/network/network-ratchet.spec.js +0 -13
- package/lib/stream/buffer-writable.js +0 -16
- package/lib/stream/multi-stream.js +0 -12
- package/lib/stream/stream-ratchet.js +0 -68
- package/lib/stream/stream-ratchet.spec.js +0 -13
- package/lib/stream/string-writable.js +0 -14
- package/lib/stream/string-writable.spec.js +0 -12
- package/lib/third-party/google/google-recaptcha-ratchet.js +0 -28
- package/lib/third-party/google/google-recaptcha-ratchet.spec.js +0 -20
- package/lib/third-party/twilio/twilio-ratchet.js +0 -73
- package/lib/transform/built-in-transforms.js +0 -191
- package/lib/transform/transform-rule.js +0 -1
- package/lib/tx/transaction-configuration.js +0 -1
- package/lib/tx/transaction-final-state.js +0 -6
- package/lib/tx/transaction-ratchet.js +0 -76
- package/lib/tx/transaction-ratchet.spec.js +0 -130
- package/lib/tx/transaction-result.js +0 -1
- package/lib/tx/transaction-step.js +0 -1
|
@@ -1,76 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { TransactionRatchet } from './transaction-ratchet.js';
|
|
2
|
-
import { TransactionFinalState } from './transaction-final-state.js';
|
|
3
|
-
import { LoggerLevelName } from '../logger/logger-level-name.js';
|
|
4
|
-
class TestTransactionStep {
|
|
5
|
-
async execute(context, stepNumber) {
|
|
6
|
-
context.runningTotal += stepNumber;
|
|
7
|
-
if (stepNumber === context?.failStep) {
|
|
8
|
-
throw new Error('Forced error at step ' + stepNumber);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
async rollback(context, stepNumber) {
|
|
12
|
-
context.runningTotal -= stepNumber;
|
|
13
|
-
if (stepNumber === context?.failRollbackStep) {
|
|
14
|
-
throw new Error('Forced rollback error at step ' + stepNumber);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
describe('#TransactionRatchet.execute', function () {
|
|
19
|
-
it('should return the right value when it executes successfully', async () => {
|
|
20
|
-
const steps = [new TestTransactionStep(), new TestTransactionStep(), new TestTransactionStep()];
|
|
21
|
-
const ctx = { runningTotal: 0 };
|
|
22
|
-
const result = await TransactionRatchet.execute(steps, ctx);
|
|
23
|
-
expect(result).not.toBeNull();
|
|
24
|
-
expect(result.error).toBeUndefined();
|
|
25
|
-
expect(result.finalState).toEqual(TransactionFinalState.Success);
|
|
26
|
-
expect(result.finalContext.runningTotal).toEqual(3);
|
|
27
|
-
});
|
|
28
|
-
it('should return the right value when it rolls back successfully fail step 2', async () => {
|
|
29
|
-
const steps = [new TestTransactionStep(), new TestTransactionStep(), new TestTransactionStep()];
|
|
30
|
-
const ctx = { runningTotal: 0, failStep: 2 };
|
|
31
|
-
const result = await TransactionRatchet.execute(steps, ctx);
|
|
32
|
-
expect(result).not.toBeUndefined();
|
|
33
|
-
expect(result.finalState).toEqual(TransactionFinalState.RolledBack);
|
|
34
|
-
expect(result.errorStep).toEqual(2);
|
|
35
|
-
expect(result.error).not.toBeUndefined();
|
|
36
|
-
expect(result.finalContext.runningTotal).toEqual(0);
|
|
37
|
-
});
|
|
38
|
-
it('should return the right value when it rolls back successfully fail step 1', async () => {
|
|
39
|
-
const steps = [new TestTransactionStep(), new TestTransactionStep(), new TestTransactionStep()];
|
|
40
|
-
const ctx = { runningTotal: 0, failStep: 2 };
|
|
41
|
-
const result = await TransactionRatchet.execute(steps, ctx);
|
|
42
|
-
expect(result).not.toBeUndefined();
|
|
43
|
-
expect(result.finalState).toEqual(TransactionFinalState.RolledBack);
|
|
44
|
-
expect(result.errorStep).toEqual(2);
|
|
45
|
-
expect(result.error).not.toBeUndefined();
|
|
46
|
-
expect(result.finalContext.runningTotal).toEqual(0);
|
|
47
|
-
});
|
|
48
|
-
it('should return the right value the rollback fails', async () => {
|
|
49
|
-
const steps = [new TestTransactionStep(), new TestTransactionStep(), new TestTransactionStep()];
|
|
50
|
-
const ctx = { runningTotal: 0, failStep: 2, failRollbackStep: 1 };
|
|
51
|
-
const result = await TransactionRatchet.execute(steps, ctx);
|
|
52
|
-
expect(result).not.toBeUndefined();
|
|
53
|
-
expect(result.finalState).toEqual(TransactionFinalState.RollbackFailed);
|
|
54
|
-
expect(result.finalContext.runningTotal).toEqual(0);
|
|
55
|
-
expect(result.errorStep).toEqual(2);
|
|
56
|
-
expect(result.rollbackErrorStep).toEqual(1);
|
|
57
|
-
expect(result.error).not.toBeUndefined();
|
|
58
|
-
expect(result.rollbackError).not.toBeUndefined();
|
|
59
|
-
});
|
|
60
|
-
it('should run the post-error handler when a failure happens', async () => {
|
|
61
|
-
const steps = [new TestTransactionStep(), new TestTransactionStep(), new TestTransactionStep()];
|
|
62
|
-
const ctx = { runningTotal: 0, failStep: 2 };
|
|
63
|
-
const result = await TransactionRatchet.execute(steps, ctx, {
|
|
64
|
-
executeAfterRollback: async (res) => {
|
|
65
|
-
res.finalContext.postTxTracker = 1;
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
expect(result).not.toBeUndefined();
|
|
69
|
-
expect(result.finalState).toEqual(TransactionFinalState.RolledBack);
|
|
70
|
-
expect(result.errorStep).toEqual(2);
|
|
71
|
-
expect(result.error).not.toBeUndefined();
|
|
72
|
-
expect(result.finalContext.postTxTracker).toEqual(1);
|
|
73
|
-
});
|
|
74
|
-
it('should run both post-error handler when a failure happens in both error and rollback', async () => {
|
|
75
|
-
const steps = [new TestTransactionStep(), new TestTransactionStep(), new TestTransactionStep()];
|
|
76
|
-
const ctx = { runningTotal: 0, failStep: 2, failRollbackStep: 1 };
|
|
77
|
-
const result = await TransactionRatchet.execute(steps, ctx, {
|
|
78
|
-
executeAfterRollback: async (res) => {
|
|
79
|
-
res.finalContext.postTxTracker = 1;
|
|
80
|
-
},
|
|
81
|
-
executeAfterRollbackFailure: async (res) => {
|
|
82
|
-
res.finalContext.postTxTracker += 1;
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
expect(result).not.toBeUndefined();
|
|
86
|
-
expect(result.finalState).toEqual(TransactionFinalState.RollbackFailed);
|
|
87
|
-
expect(result.errorStep).toEqual(2);
|
|
88
|
-
expect(result.error).not.toBeUndefined();
|
|
89
|
-
expect(result.finalContext.postTxTracker).toEqual(2);
|
|
90
|
-
});
|
|
91
|
-
it('should still return if a post-tx executor fails', async () => {
|
|
92
|
-
const steps = [new TestTransactionStep(), new TestTransactionStep(), new TestTransactionStep()];
|
|
93
|
-
const ctx = { runningTotal: 0, failStep: 2, failRollbackStep: 1 };
|
|
94
|
-
const result = await TransactionRatchet.execute(steps, ctx, {
|
|
95
|
-
executeAfterRollback: async (res) => {
|
|
96
|
-
res.finalContext.postTxTracker = 1;
|
|
97
|
-
},
|
|
98
|
-
executeAfterRollbackFailure: async (res) => {
|
|
99
|
-
res.finalContext.postTxTracker += 1;
|
|
100
|
-
throw new Error('Forced tracker failure');
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
expect(result).not.toBeUndefined();
|
|
104
|
-
expect(result.finalState).toEqual(TransactionFinalState.RollbackFailed);
|
|
105
|
-
expect(result.errorStep).toEqual(2);
|
|
106
|
-
expect(result.error).not.toBeUndefined();
|
|
107
|
-
expect(result.finalContext.postTxTracker).toEqual(2);
|
|
108
|
-
});
|
|
109
|
-
it('should work with transaction configuration that only provides read log level access', async () => {
|
|
110
|
-
const steps = [new TestTransactionStep(), new TestTransactionStep(), new TestTransactionStep()];
|
|
111
|
-
const ctx = { runningTotal: 0, failStep: 2, failRollbackStep: 1 };
|
|
112
|
-
const result = await TransactionRatchet.execute(steps, ctx, {
|
|
113
|
-
get stepLogLevel() {
|
|
114
|
-
return LoggerLevelName.info;
|
|
115
|
-
},
|
|
116
|
-
executeAfterRollback: async (res) => {
|
|
117
|
-
res.finalContext.postTxTracker = 1;
|
|
118
|
-
},
|
|
119
|
-
executeAfterRollbackFailure: async (res) => {
|
|
120
|
-
res.finalContext.postTxTracker += 1;
|
|
121
|
-
throw new Error('Forced tracker failure');
|
|
122
|
-
},
|
|
123
|
-
});
|
|
124
|
-
expect(result).not.toBeUndefined();
|
|
125
|
-
expect(result.finalState).toEqual(TransactionFinalState.RollbackFailed);
|
|
126
|
-
expect(result.errorStep).toEqual(2);
|
|
127
|
-
expect(result.error).not.toBeUndefined();
|
|
128
|
-
expect(result.finalContext.postTxTracker).toEqual(2);
|
|
129
|
-
});
|
|
130
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|