assertron 7.1.1 → 9.0.0
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/LICENSE +2 -2
- package/README.md +61 -46
- package/{dist-es2015 → cjs}/assert-order/AssertOrder.d.ts +3 -2
- package/cjs/assert-order/AssertOrder.d.ts.map +1 -0
- package/cjs/assert-order/AssertOrder.js +148 -0
- package/cjs/assert-order/InvalidOrder.d.ts +9 -0
- package/cjs/assert-order/InvalidOrder.d.ts.map +1 -0
- package/cjs/assert-order/InvalidOrder.js +39 -0
- package/{dist-es5 → cjs}/assert-order/StateMachine.d.ts +5 -6
- package/cjs/assert-order/StateMachine.d.ts.map +1 -0
- package/cjs/assert-order/StateMachine.js +111 -0
- package/cjs/assert-order/index.d.ts +4 -0
- package/cjs/assert-order/index.d.ts.map +1 -0
- package/cjs/assert-order/index.js +7 -0
- package/{dist-es2015/assert-order/interfaces.d.ts → cjs/assert-order/types.d.ts} +1 -0
- package/cjs/assert-order/types.d.ts.map +1 -0
- package/cjs/assert-order/types.js +3 -0
- package/{dist-es2015 → cjs}/assertron/assertron.d.ts +1 -0
- package/cjs/assertron/assertron.d.ts.map +1 -0
- package/cjs/assertron/assertron.js +32 -0
- package/{dist-es2015 → cjs}/assertron/falsy.d.ts +1 -0
- package/cjs/assertron/falsy.d.ts.map +1 -0
- package/cjs/assertron/falsy.js +10 -0
- package/cjs/assertron/index.d.ts +2 -0
- package/cjs/assertron/index.d.ts.map +1 -0
- package/cjs/assertron/index.js +5 -0
- package/{dist-es2015 → cjs}/assertron/pathEqual.d.ts +1 -0
- package/cjs/assertron/pathEqual.d.ts.map +1 -0
- package/cjs/assertron/pathEqual.js +12 -0
- package/{dist-es2015 → cjs}/assertron/rejects.d.ts +1 -0
- package/cjs/assertron/rejects.d.ts.map +1 -0
- package/cjs/assertron/rejects.js +10 -0
- package/{dist-es2015 → cjs}/assertron/repeat.d.ts +1 -6
- package/cjs/assertron/repeat.d.ts.map +1 -0
- package/cjs/assertron/repeat.js +33 -0
- package/{dist-es2015 → cjs}/assertron/resolves.d.ts +1 -0
- package/cjs/assertron/resolves.d.ts.map +1 -0
- package/cjs/assertron/resolves.js +10 -0
- package/cjs/assertron/satisfies.d.ts +10 -0
- package/cjs/assertron/satisfies.d.ts.map +1 -0
- package/cjs/assertron/satisfies.js +18 -0
- package/{dist-es2015 → cjs}/assertron/throws.d.ts +3 -1
- package/cjs/assertron/throws.d.ts.map +1 -0
- package/cjs/assertron/throws.js +56 -0
- package/{dist-es2015 → cjs}/assertron/truthy.d.ts +1 -0
- package/cjs/assertron/truthy.d.ts.map +1 -0
- package/cjs/assertron/truthy.js +10 -0
- package/cjs/errors.d.ts +17 -0
- package/cjs/errors.d.ts.map +1 -0
- package/cjs/errors.js +29 -0
- package/{dist-es5 → cjs}/index.d.ts +3 -1
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +9 -0
- package/{dist-es2015/errors/interfaces.d.ts → cjs/types.d.ts} +1 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/types.js +3 -0
- package/cjs/utils/index.d.ts +8 -0
- package/cjs/utils/index.d.ts.map +1 -0
- package/cjs/utils/index.js +16 -0
- package/{dist-es2015/errors/util.d.ts → cjs/utils/isErrorConstructor.d.ts} +2 -1
- package/cjs/utils/isErrorConstructor.d.ts.map +1 -0
- package/cjs/utils/isErrorConstructor.js +8 -0
- package/{dist-es2015/errors → cjs/utils}/notEqualMessage.d.ts +1 -0
- package/cjs/utils/notEqualMessage.d.ts.map +1 -0
- package/cjs/utils/notEqualMessage.js +8 -0
- package/{dist-es2015/errors/NotSatisfied.d.ts → cjs/utils/notSatisfiedMessage.d.ts} +1 -0
- package/cjs/utils/notSatisfiedMessage.d.ts.map +1 -0
- package/cjs/utils/notSatisfiedMessage.js +28 -0
- package/{dist-es2015/errors → cjs/utils}/notThrownMessage.d.ts +1 -0
- package/cjs/utils/notThrownMessage.d.ts.map +1 -0
- package/cjs/utils/notThrownMessage.js +9 -0
- package/cjs/utils/promiseMessages.d.ts +3 -0
- package/cjs/utils/promiseMessages.d.ts.map +1 -0
- package/cjs/utils/promiseMessages.js +15 -0
- package/{dist-es2015/errors → cjs/utils}/unexpectedErrorMessage.d.ts +2 -1
- package/cjs/utils/unexpectedErrorMessage.d.ts.map +1 -0
- package/cjs/utils/unexpectedErrorMessage.js +11 -0
- package/esm/assert-order/AssertOrder.js +132 -0
- package/esm/assert-order/InvalidOrder.js +31 -0
- package/esm/assert-order/StateMachine.js +103 -0
- package/esm/assert-order/index.js +4 -0
- package/esm/assert-order/types.js +2 -0
- package/esm/assertron/assertron.js +29 -0
- package/esm/assertron/falsy.js +6 -0
- package/esm/assertron/index.js +2 -0
- package/esm/assertron/pathEqual.js +8 -0
- package/esm/assertron/rejects.js +6 -0
- package/esm/assertron/repeat.js +28 -0
- package/esm/assertron/resolves.js +6 -0
- package/esm/assertron/satisfies.js +14 -0
- package/esm/assertron/throws.js +51 -0
- package/esm/assertron/truthy.js +6 -0
- package/esm/errors.js +18 -0
- package/esm/index.js +6 -0
- package/esm/types.js +2 -0
- package/esm/utils/index.js +11 -0
- package/esm/utils/isErrorConstructor.js +4 -0
- package/esm/utils/notEqualMessage.js +4 -0
- package/esm/utils/notSatisfiedMessage.js +23 -0
- package/esm/utils/notThrownMessage.js +5 -0
- package/esm/utils/promiseMessages.js +10 -0
- package/esm/utils/unexpectedErrorMessage.js +7 -0
- package/package.json +62 -24
- package/src/assert-order/AssertOrder.spec.ts +10 -12
- package/src/assert-order/AssertOrder.ts +8 -8
- package/src/assert-order/InvalidOrder.ts +7 -12
- package/src/assert-order/StateMachine.ts +26 -31
- package/src/assert-order/index.ts +3 -1
- package/src/assert-order/internalInterfaces.ts +3 -3
- package/src/assert-order/types.ts +7 -0
- package/src/assertron/assertron.spec.ts +2 -4
- package/src/assertron/assertron.ts +13 -14
- package/src/assertron/falsy.spec.ts +2 -3
- package/src/assertron/falsy.ts +2 -6
- package/src/assertron/pathEqual.spec.ts +2 -3
- package/src/assertron/pathEqual.ts +4 -7
- package/src/assertron/rejects.spec.ts +7 -8
- package/src/assertron/rejects.ts +3 -11
- package/src/assertron/repeat.spec.ts +8 -10
- package/src/assertron/repeat.ts +4 -9
- package/src/assertron/resolves.spec.ts +3 -4
- package/src/assertron/resolves.ts +3 -13
- package/src/assertron/satisfies.spec.ts +57 -26
- package/src/assertron/satisfies.ts +23 -10
- package/src/assertron/throws.spec.ts +63 -39
- package/src/assertron/throws.ts +32 -55
- package/src/assertron/truthy.spec.ts +2 -3
- package/src/assertron/truthy.ts +2 -3
- package/src/errors.ts +22 -0
- package/src/index.ts +2 -1
- package/src/testUtils.ts +16 -13
- package/src/{errors/interfaces.ts → types.ts} +1 -1
- package/src/utils/index.ts +12 -0
- package/src/utils/isErrorConstructor.ts +5 -0
- package/src/utils/notEqualMessage.ts +4 -0
- package/src/{errors → utils}/notSatisfiedMessage.spec.ts +0 -0
- package/src/{errors/NotSatisfied.ts → utils/notSatisfiedMessage.ts} +1 -1
- package/src/utils/notThrownMessage.ts +5 -0
- package/src/utils/promiseMessages.ts +12 -0
- package/src/{errors → utils}/unexpectedErrorMessage.ts +4 -3
- package/dist-es2015/assert-order/AssertOrder.js +0 -132
- package/dist-es2015/assert-order/AssertOrder.js.map +0 -1
- package/dist-es2015/assert-order/InvalidOrder.d.ts +0 -8
- package/dist-es2015/assert-order/InvalidOrder.js +0 -31
- package/dist-es2015/assert-order/InvalidOrder.js.map +0 -1
- package/dist-es2015/assert-order/StateMachine.d.ts +0 -23
- package/dist-es2015/assert-order/StateMachine.js +0 -106
- package/dist-es2015/assert-order/StateMachine.js.map +0 -1
- package/dist-es2015/assert-order/index.d.ts +0 -2
- package/dist-es2015/assert-order/index.js +0 -2
- package/dist-es2015/assert-order/index.js.map +0 -1
- package/dist-es2015/assert-order/interfaces.js +0 -1
- package/dist-es2015/assert-order/interfaces.js.map +0 -1
- package/dist-es2015/assertron/assertron.js +0 -28
- package/dist-es2015/assertron/assertron.js.map +0 -1
- package/dist-es2015/assertron/falsy.js +0 -6
- package/dist-es2015/assertron/falsy.js.map +0 -1
- package/dist-es2015/assertron/index.d.ts +0 -1
- package/dist-es2015/assertron/index.js +0 -2
- package/dist-es2015/assertron/index.js.map +0 -1
- package/dist-es2015/assertron/pathEqual.js +0 -8
- package/dist-es2015/assertron/pathEqual.js.map +0 -1
- package/dist-es2015/assertron/rejects.js +0 -10
- package/dist-es2015/assertron/rejects.js.map +0 -1
- package/dist-es2015/assertron/repeat.js +0 -35
- package/dist-es2015/assertron/repeat.js.map +0 -1
- package/dist-es2015/assertron/resolves.js +0 -12
- package/dist-es2015/assertron/resolves.js.map +0 -1
- package/dist-es2015/assertron/satisfies.d.ts +0 -5
- package/dist-es2015/assertron/satisfies.js +0 -14
- package/dist-es2015/assertron/satisfies.js.map +0 -1
- package/dist-es2015/assertron/throws.js +0 -55
- package/dist-es2015/assertron/throws.js.map +0 -1
- package/dist-es2015/assertron/truthy.js +0 -6
- package/dist-es2015/assertron/truthy.js.map +0 -1
- package/dist-es2015/errors/NotSatisfied.js +0 -23
- package/dist-es2015/errors/NotSatisfied.js.map +0 -1
- package/dist-es2015/errors/index.d.ts +0 -7
- package/dist-es2015/errors/index.js +0 -7
- package/dist-es2015/errors/index.js.map +0 -1
- package/dist-es2015/errors/interfaces.js +0 -1
- package/dist-es2015/errors/interfaces.js.map +0 -1
- package/dist-es2015/errors/notEqualMessage.js +0 -4
- package/dist-es2015/errors/notEqualMessage.js.map +0 -1
- package/dist-es2015/errors/notRejectedMessage.d.ts +0 -1
- package/dist-es2015/errors/notRejectedMessage.js +0 -4
- package/dist-es2015/errors/notRejectedMessage.js.map +0 -1
- package/dist-es2015/errors/notThrownMessage.js +0 -4
- package/dist-es2015/errors/notThrownMessage.js.map +0 -1
- package/dist-es2015/errors/returnNotRejectedMessage.d.ts +0 -1
- package/dist-es2015/errors/returnNotRejectedMessage.js +0 -4
- package/dist-es2015/errors/returnNotRejectedMessage.js.map +0 -1
- package/dist-es2015/errors/unexpectedErrorMessage.js +0 -6
- package/dist-es2015/errors/unexpectedErrorMessage.js.map +0 -1
- package/dist-es2015/errors/util.js +0 -4
- package/dist-es2015/errors/util.js.map +0 -1
- package/dist-es2015/index.d.ts +0 -4
- package/dist-es2015/index.js +0 -5
- package/dist-es2015/index.js.map +0 -1
- package/dist-es5/assert-order/AssertOrder.d.ts +0 -40
- package/dist-es5/assert-order/AssertOrder.js +0 -147
- package/dist-es5/assert-order/AssertOrder.js.map +0 -1
- package/dist-es5/assert-order/InvalidOrder.d.ts +0 -8
- package/dist-es5/assert-order/InvalidOrder.js +0 -58
- package/dist-es5/assert-order/InvalidOrder.js.map +0 -1
- package/dist-es5/assert-order/StateMachine.js +0 -115
- package/dist-es5/assert-order/StateMachine.js.map +0 -1
- package/dist-es5/assert-order/index.d.ts +0 -2
- package/dist-es5/assert-order/index.js +0 -7
- package/dist-es5/assert-order/index.js.map +0 -1
- package/dist-es5/assert-order/interfaces.d.ts +0 -7
- package/dist-es5/assert-order/interfaces.js +0 -3
- package/dist-es5/assert-order/interfaces.js.map +0 -1
- package/dist-es5/assertron/assertron.d.ts +0 -20
- package/dist-es5/assertron/assertron.js +0 -33
- package/dist-es5/assertron/assertron.js.map +0 -1
- package/dist-es5/assertron/falsy.d.ts +0 -1
- package/dist-es5/assertron/falsy.js +0 -12
- package/dist-es5/assertron/falsy.js.map +0 -1
- package/dist-es5/assertron/index.d.ts +0 -1
- package/dist-es5/assertron/index.js +0 -7
- package/dist-es5/assertron/index.js.map +0 -1
- package/dist-es5/assertron/pathEqual.d.ts +0 -1
- package/dist-es5/assertron/pathEqual.js +0 -14
- package/dist-es5/assertron/pathEqual.js.map +0 -1
- package/dist-es5/assertron/rejects.d.ts +0 -1
- package/dist-es5/assertron/rejects.js +0 -16
- package/dist-es5/assertron/rejects.js.map +0 -1
- package/dist-es5/assertron/repeat.d.ts +0 -11
- package/dist-es5/assertron/repeat.js +0 -58
- package/dist-es5/assertron/repeat.js.map +0 -1
- package/dist-es5/assertron/resolves.d.ts +0 -1
- package/dist-es5/assertron/resolves.js +0 -18
- package/dist-es5/assertron/resolves.js.map +0 -1
- package/dist-es5/assertron/satisfies.d.ts +0 -5
- package/dist-es5/assertron/satisfies.js +0 -20
- package/dist-es5/assertron/satisfies.js.map +0 -1
- package/dist-es5/assertron/throws.d.ts +0 -4
- package/dist-es5/assertron/throws.js +0 -61
- package/dist-es5/assertron/throws.js.map +0 -1
- package/dist-es5/assertron/truthy.d.ts +0 -1
- package/dist-es5/assertron/truthy.js +0 -12
- package/dist-es5/assertron/truthy.js.map +0 -1
- package/dist-es5/errors/NotSatisfied.d.ts +0 -2
- package/dist-es5/errors/NotSatisfied.js +0 -26
- package/dist-es5/errors/NotSatisfied.js.map +0 -1
- package/dist-es5/errors/index.d.ts +0 -7
- package/dist-es5/errors/index.js +0 -12
- package/dist-es5/errors/index.js.map +0 -1
- package/dist-es5/errors/interfaces.d.ts +0 -2
- package/dist-es5/errors/interfaces.js +0 -3
- package/dist-es5/errors/interfaces.js.map +0 -1
- package/dist-es5/errors/notEqualMessage.d.ts +0 -1
- package/dist-es5/errors/notEqualMessage.js +0 -7
- package/dist-es5/errors/notEqualMessage.js.map +0 -1
- package/dist-es5/errors/notRejectedMessage.d.ts +0 -1
- package/dist-es5/errors/notRejectedMessage.js +0 -7
- package/dist-es5/errors/notRejectedMessage.js.map +0 -1
- package/dist-es5/errors/notThrownMessage.d.ts +0 -1
- package/dist-es5/errors/notThrownMessage.js +0 -7
- package/dist-es5/errors/notThrownMessage.js.map +0 -1
- package/dist-es5/errors/returnNotRejectedMessage.d.ts +0 -1
- package/dist-es5/errors/returnNotRejectedMessage.js +0 -7
- package/dist-es5/errors/returnNotRejectedMessage.js.map +0 -1
- package/dist-es5/errors/unexpectedErrorMessage.d.ts +0 -2
- package/dist-es5/errors/unexpectedErrorMessage.js +0 -9
- package/dist-es5/errors/unexpectedErrorMessage.js.map +0 -1
- package/dist-es5/errors/util.d.ts +0 -2
- package/dist-es5/errors/util.js +0 -7
- package/dist-es5/errors/util.js.map +0 -1
- package/dist-es5/index.js +0 -10
- package/dist-es5/index.js.map +0 -1
- package/src/assert-order/interfaces.ts +0 -7
- package/src/errors/index.ts +0 -7
- package/src/errors/notEqualMessage.ts +0 -3
- package/src/errors/notRejectedMessage.ts +0 -3
- package/src/errors/notThrownMessage.ts +0 -3
- package/src/errors/returnNotRejectedMessage.ts +0 -3
- package/src/errors/util.ts +0 -5
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { InvalidOrder } from './InvalidOrder';
|
|
2
|
+
import { StateMachine } from './StateMachine';
|
|
3
|
+
// order.atLeast(step, count) // expected to be executed at least `count` times
|
|
4
|
+
// order.atMost(step, count) // exected to be executed at most `count` times
|
|
5
|
+
export class AssertOrder {
|
|
6
|
+
constructor(plan) {
|
|
7
|
+
this.state = new StateMachine(plan);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Gets the current expecting step.
|
|
11
|
+
*/
|
|
12
|
+
get currentStep() {
|
|
13
|
+
return this.state.step;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Asserts the current step is `step`.
|
|
17
|
+
* @param step expected step.
|
|
18
|
+
*/
|
|
19
|
+
is(step) {
|
|
20
|
+
this.assert('is', step);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Asserts the current step is not `step`.
|
|
24
|
+
* @param step not expected step.
|
|
25
|
+
*/
|
|
26
|
+
not(step) {
|
|
27
|
+
if (this.state.isValid(step)) {
|
|
28
|
+
throw new InvalidOrder(this.state.get(), 'not', [step], { ssf: this.not });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Reset to specified step.
|
|
33
|
+
*/
|
|
34
|
+
jump(step) {
|
|
35
|
+
this.state.jump(step);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Move to next step.
|
|
39
|
+
*/
|
|
40
|
+
move() {
|
|
41
|
+
this.state.move();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Asserts the specified step will run once.
|
|
45
|
+
*/
|
|
46
|
+
once(step) {
|
|
47
|
+
this.assert('once', step);
|
|
48
|
+
this.state.move();
|
|
49
|
+
}
|
|
50
|
+
on(step, assert) {
|
|
51
|
+
this.state.on(step, () => {
|
|
52
|
+
assert(step);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
atLeastOnce(step) {
|
|
56
|
+
const nextStep = step + 1;
|
|
57
|
+
if (this.state.step === step) {
|
|
58
|
+
this.state.move();
|
|
59
|
+
return this.state.moveSubStep();
|
|
60
|
+
}
|
|
61
|
+
else if (this.state.step === nextStep && this.state.subStep > 0) {
|
|
62
|
+
return this.state.moveSubStep();
|
|
63
|
+
}
|
|
64
|
+
else
|
|
65
|
+
throw new InvalidOrder(this.state.get(), 'atLeastOnce', [step], { ssf: this.atLeastOnce });
|
|
66
|
+
}
|
|
67
|
+
any(steps) {
|
|
68
|
+
const index = steps.indexOf(this.state.step);
|
|
69
|
+
if (index === -1)
|
|
70
|
+
throw new InvalidOrder(this.state.get(), 'any', [steps], { ssf: this.any });
|
|
71
|
+
this.state.move();
|
|
72
|
+
return steps[index];
|
|
73
|
+
}
|
|
74
|
+
onAny(steps, ...asserts) {
|
|
75
|
+
steps.forEach(step => {
|
|
76
|
+
this.state.on(step, () => {
|
|
77
|
+
let firstError;
|
|
78
|
+
let hasPass = false;
|
|
79
|
+
asserts.forEach(assert => {
|
|
80
|
+
try {
|
|
81
|
+
assert(step);
|
|
82
|
+
hasPass = true;
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
if (!firstError)
|
|
86
|
+
firstError = err;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
if (!hasPass)
|
|
90
|
+
throw firstError;
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
end(timeout) {
|
|
96
|
+
if (timeout) {
|
|
97
|
+
return new Promise(r => {
|
|
98
|
+
setTimeout(r, timeout);
|
|
99
|
+
}).then(() => {
|
|
100
|
+
return this.end();
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (!this.state.isMaxStepDefined()) {
|
|
104
|
+
this.state.stopAccepting();
|
|
105
|
+
return this.state.getTimeTaken();
|
|
106
|
+
}
|
|
107
|
+
if (this.state.isAccepting()) {
|
|
108
|
+
throw new InvalidOrder(this.state.get(), 'end', [], { ssf: this.end });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exactly(step, times) {
|
|
112
|
+
if (this.state.isNotValid(step))
|
|
113
|
+
throw new InvalidOrder(this.state.get(), 'exactly', [step, times], { ssf: this.exactly });
|
|
114
|
+
if (this.state.maxSubStep === undefined) {
|
|
115
|
+
this.state.maxSubStep = times;
|
|
116
|
+
this.state.minSubStep = times;
|
|
117
|
+
}
|
|
118
|
+
return this.state.moveSubStep();
|
|
119
|
+
}
|
|
120
|
+
wait(step, callback) {
|
|
121
|
+
if (callback)
|
|
122
|
+
this.on(step, callback);
|
|
123
|
+
else
|
|
124
|
+
return new Promise(a => { this.on(step, a); });
|
|
125
|
+
}
|
|
126
|
+
assert(method, step) {
|
|
127
|
+
if (this.state.isNotValid(step)) {
|
|
128
|
+
throw new InvalidOrder(this.state.get(), method, [step], { ssf: this[method] });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNzZXJ0T3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0LW9yZGVyL0Fzc2VydE9yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFN0MsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUU1RSxNQUFNLE9BQU8sV0FBVztJQVN0QixZQUFZLElBQWE7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBVkQ7O09BRUc7SUFDSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO0lBQ3hCLENBQUM7SUFPRDs7O09BR0c7SUFDSCxFQUFFLENBQUMsSUFBWTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsSUFBWTtRQUNkLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsTUFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1NBQzNFO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLElBQVk7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUs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
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { AssertionError } from '../errors';
|
|
2
|
+
export class InvalidOrder extends AssertionError {
|
|
3
|
+
constructor(state, method, args, options) {
|
|
4
|
+
super(method === 'end' ? getEndMessage(state) : getExpectingMessage(state, method, args), options);
|
|
5
|
+
this.state = state;
|
|
6
|
+
this.method = method;
|
|
7
|
+
this.args = args;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function getEndMessage(state) {
|
|
11
|
+
return `Planned for ${state.maxStep} step but expecting step ${state.step} when 'end()' is called`;
|
|
12
|
+
}
|
|
13
|
+
function getExpectingMessage(state, method, args) {
|
|
14
|
+
return `Expecting ${getExpectingCalls(state)}, but received '${method}(${getMethodArgs(args)})'`;
|
|
15
|
+
}
|
|
16
|
+
function getExpectingCalls(state) {
|
|
17
|
+
let message;
|
|
18
|
+
if (state.subStep === 0) {
|
|
19
|
+
const methods = ['is', 'once', 'any'];
|
|
20
|
+
message = methods.map(m => `'${m}(${['any'].indexOf(m) === -1 ? state.step : `[${state.step}]`})'`).join(', ');
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const methods = ['exactly'];
|
|
24
|
+
message = methods.map(m => `'${m}(${state.step}, ${state.maxSubStep})'`).join(', ');
|
|
25
|
+
}
|
|
26
|
+
return message;
|
|
27
|
+
}
|
|
28
|
+
function getMethodArgs(args) {
|
|
29
|
+
return args.map(a => Array.isArray(a) ? `[${a.join(', ')}]` : a).join(', ');
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW52YWxpZE9yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydC1vcmRlci9JbnZhbGlkT3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUcxQyxNQUFNLE9BQU8sWUFBYSxTQUFRLGNBQWM7SUFDOUMsWUFBbUIsS0FBWSxFQUFTLE1BQWMsRUFBUyxJQUFXLEVBQUUsT0FBK0I7UUFDekcsS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQURqRixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLFNBQUksR0FBSixJQUFJLENBQU87SUFFMUUsQ0FBQztDQUNGO0FBRUQsU0FBUyxhQUFhLENBQUMsS0FBWTtJQUNqQyxPQUFPLGVBQWUsS0FBSyxDQUFDLE9BQU8sNEJBQTRCLEtBQUssQ0FBQyxJQUFJLHlCQUF5QixDQUFBO0FBQ3BHLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLEtBQVksRUFBRSxNQUFjLEVBQUUsSUFBVztJQUNwRSxPQUFPLGFBQWEsaUJBQWlCLENBQUMsS0FBSyxDQUFDLG1CQUFtQixNQUFNLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7QUFDbEcsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsS0FBWTtJQUNyQyxJQUFJLE9BQWUsQ0FBQTtJQUNuQixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNyQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FDbkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FDN0UsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7S0FDYjtTQUNJO1FBQ0gsTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUMzQixPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQ3BGO0lBQ0QsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQVc7SUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUM3RSxDQUFDIn0=
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import isNode from 'is-node';
|
|
2
|
+
// istanbul ignore next
|
|
3
|
+
function nodeVersionIsOrAbove(major, minor = 0, patch = 0) {
|
|
4
|
+
// without this, systemJS will complain `process is not defined`
|
|
5
|
+
if (!global.process)
|
|
6
|
+
return false;
|
|
7
|
+
const versionString = process.version.startsWith('v') ? process.version.slice(1) : process.version;
|
|
8
|
+
const [actualMajor, actualMinor, actualPatch] = versionString.split('.').map(s => parseInt(s, 10));
|
|
9
|
+
const checking = major * 1000 * 1000 + minor * 1000 + patch;
|
|
10
|
+
const actual = actualMajor * 1000 * 1000 + actualMinor * 1000 + actualPatch;
|
|
11
|
+
return actual >= checking;
|
|
12
|
+
}
|
|
13
|
+
// istanbul ignore next
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
15
|
+
const performance = isNode && nodeVersionIsOrAbove(8, 5) ? require('perf_hooks').performance : undefined;
|
|
16
|
+
let timeTracker;
|
|
17
|
+
// istanbul ignore else
|
|
18
|
+
if (process && typeof process.hrtime === 'function') {
|
|
19
|
+
let tick;
|
|
20
|
+
timeTracker = {
|
|
21
|
+
start() { tick = process.hrtime(); },
|
|
22
|
+
taken() {
|
|
23
|
+
const [second, nanoSecond] = process.hrtime(tick);
|
|
24
|
+
return second * 1000 + nanoSecond / 1e6;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
else if (performance && typeof performance.now === 'function') {
|
|
29
|
+
let tick;
|
|
30
|
+
timeTracker = {
|
|
31
|
+
start() { tick = performance.now(); },
|
|
32
|
+
taken() { return performance.now() - tick; }
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
let tick;
|
|
37
|
+
timeTracker = {
|
|
38
|
+
start() { tick = new Date().valueOf(); },
|
|
39
|
+
taken() { return new Date().valueOf() - tick; }
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export class StateMachine {
|
|
43
|
+
constructor(maxStep) {
|
|
44
|
+
this.listeners = {};
|
|
45
|
+
this.step = 1;
|
|
46
|
+
this.subStep = 0;
|
|
47
|
+
this.maxStep = maxStep;
|
|
48
|
+
timeTracker.start();
|
|
49
|
+
}
|
|
50
|
+
jump(step) {
|
|
51
|
+
this.step = step;
|
|
52
|
+
this.subStep = 0;
|
|
53
|
+
return this.step;
|
|
54
|
+
}
|
|
55
|
+
move() {
|
|
56
|
+
const listeners = this.listeners[this.step];
|
|
57
|
+
this.step = this.step + 1;
|
|
58
|
+
this.subStep = 0;
|
|
59
|
+
if (listeners) {
|
|
60
|
+
listeners.forEach(l => l());
|
|
61
|
+
}
|
|
62
|
+
return this.step;
|
|
63
|
+
}
|
|
64
|
+
moveSubStep() {
|
|
65
|
+
const subStep = ++this.subStep;
|
|
66
|
+
if (this.maxSubStep === this.subStep)
|
|
67
|
+
this.move();
|
|
68
|
+
return subStep;
|
|
69
|
+
}
|
|
70
|
+
get() {
|
|
71
|
+
const { step, subStep, maxStep, minSubStep, maxSubStep } = this;
|
|
72
|
+
return {
|
|
73
|
+
step,
|
|
74
|
+
maxStep,
|
|
75
|
+
subStep,
|
|
76
|
+
minSubStep,
|
|
77
|
+
maxSubStep
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
on(step, listener) {
|
|
81
|
+
this.listeners[step] = [listener];
|
|
82
|
+
}
|
|
83
|
+
isNotValid(step) {
|
|
84
|
+
return step !== this.step || (this.maxStep !== undefined && this.maxStep < step);
|
|
85
|
+
}
|
|
86
|
+
isValid(step) {
|
|
87
|
+
return step === this.step;
|
|
88
|
+
}
|
|
89
|
+
isMaxStepDefined() {
|
|
90
|
+
return this.maxStep !== undefined;
|
|
91
|
+
}
|
|
92
|
+
stopAccepting() {
|
|
93
|
+
this.maxStep = this.step - 1;
|
|
94
|
+
}
|
|
95
|
+
isAccepting() {
|
|
96
|
+
// istanbul ignore next
|
|
97
|
+
return this.maxStep ? this.maxStep >= this.step : true;
|
|
98
|
+
}
|
|
99
|
+
getTimeTaken() {
|
|
100
|
+
return timeTracker.taken();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGVNYWNoaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydC1vcmRlci9TdGF0ZU1hY2hpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sU0FBUyxDQUFBO0FBRzVCLHVCQUF1QjtBQUN2QixTQUFTLG9CQUFvQixDQUFDLEtBQWEsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDO0lBQy9ELGdFQUFnRTtJQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUNqQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFDbEcsTUFBTSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDbEcsTUFBTSxRQUFRLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUE7SUFDM0QsTUFBTSxNQUFNLEdBQUcsV0FBVyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsV0FBVyxHQUFHLElBQUksR0FBRyxXQUFXLENBQUE7SUFDM0UsT0FBTyxNQUFNLElBQUksUUFBUSxDQUFBO0FBQzNCLENBQUM7QUFFRCx1QkFBdUI7QUFDdkIsOERBQThEO0FBQzlELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxD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
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './AssertOrder';
|
|
2
|
+
export * from './InvalidOrder';
|
|
3
|
+
export * from './types';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0LW9yZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFBO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxTQUFTLENBQUEifQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AssertionError } from '../errors';
|
|
2
|
+
import { notEqualMessage } from '../utils';
|
|
3
|
+
import { falsy } from './falsy';
|
|
4
|
+
import { pathEqual } from './pathEqual';
|
|
5
|
+
import { rejects } from './rejects';
|
|
6
|
+
import { repeat } from './repeat';
|
|
7
|
+
import { resolves } from './resolves';
|
|
8
|
+
import { satisfies } from './satisfies';
|
|
9
|
+
import { throws } from './throws';
|
|
10
|
+
import { truthy } from './truthy';
|
|
11
|
+
export const assertron = {
|
|
12
|
+
false(value) {
|
|
13
|
+
if (value !== false)
|
|
14
|
+
throw new AssertionError(notEqualMessage(value, false), { ssf: assertron.false });
|
|
15
|
+
},
|
|
16
|
+
falsy,
|
|
17
|
+
pathEqual,
|
|
18
|
+
rejects,
|
|
19
|
+
repeat,
|
|
20
|
+
resolves,
|
|
21
|
+
satisfies,
|
|
22
|
+
throws,
|
|
23
|
+
true(value) {
|
|
24
|
+
if (value !== true)
|
|
25
|
+
throw new AssertionError(notEqualMessage(value, true), { ssf: assertron.true });
|
|
26
|
+
},
|
|
27
|
+
truthy
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0cm9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9hc3NlcnRyb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVqQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIsS0FBSyxDQUFDLEtBQVU7UUFDZCxJQUFJLEtBQUssS0FBSyxLQUFLO1lBQ2pCLE1BQU0sSUFBSSxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUNyRixDQUFDO0lBQ0QsS0FBSztJQUNMLFNBQVM7SUFDVCxPQUFPO0lBQ1AsTUFBTTtJQUNOLFFBQVE7SUFDUixTQUFTO0lBQ1QsTUFBTTtJQUNOLElBQUksQ0FBQyxLQUFVO1FBQ2IsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUNoQixNQUFNLElBQUksY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7SUFDbkYsQ0FBQztJQUNELE1BQU07Q0FDUCxDQUFBIn0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AssertionError } from '../errors';
|
|
2
|
+
export function falsy(value) {
|
|
3
|
+
if (value)
|
|
4
|
+
throw new AssertionError(`Expected value to be falsy, but received ${value}`, { ssf: falsy });
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsc3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0cm9uL2ZhbHN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFMUMsTUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFVO0lBQzlCLElBQUksS0FBSztRQUNQLE1BQU0sSUFBSSxjQUFjLENBQUMsNENBQTRDLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7QUFDakcsQ0FBQyJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { pathEqual as isPathEqual } from 'path-equal';
|
|
2
|
+
import { AssertionError } from '../errors';
|
|
3
|
+
import { notEqualMessage } from '../utils';
|
|
4
|
+
export function pathEqual(actual, expected) {
|
|
5
|
+
if (!isPathEqual(actual, expected))
|
|
6
|
+
throw new AssertionError(notEqualMessage(actual, expected), { ssf: pathEqual });
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aEVxdWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9wYXRoRXF1YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsSUFBSSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRTFDLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBYyxFQUFFLFFBQWdCO0lBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztRQUNoQyxNQUFNLElBQUksY0FBYyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtBQUNuRixDQUFDIn0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AssertionError } from '../errors';
|
|
2
|
+
import { notRejectedMessage } from '../utils';
|
|
3
|
+
export function rejects(promise) {
|
|
4
|
+
return promise.then(value => { throw new AssertionError(notRejectedMessage(value), { ssf: rejects }); }, () => { });
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3NlcnRyb24vcmVqZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUU3QyxNQUFNLFVBQVUsT0FBTyxDQUFDLE9BQXFCO0lBQzNDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FDakIsS0FBSyxDQUFDLEVBQUUsR0FBRyxNQUFNLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQ2xGLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FDVixDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import isPromise from 'is-promise';
|
|
2
|
+
import { FailOnOccurrence } from '../errors';
|
|
3
|
+
/**
|
|
4
|
+
* Repeat the specified function n times and return the last result.
|
|
5
|
+
* If the result is a promise, it will run the function sequentially.
|
|
6
|
+
*/
|
|
7
|
+
export function repeat(fn, times) {
|
|
8
|
+
return repeatRecur(fn, 1, times);
|
|
9
|
+
}
|
|
10
|
+
function repeatRecur(fn, i, times) {
|
|
11
|
+
try {
|
|
12
|
+
const result = fn();
|
|
13
|
+
if (i === times)
|
|
14
|
+
return result;
|
|
15
|
+
if (isPromise(result)) {
|
|
16
|
+
return result.then(() => repeatRecur(fn, i + 1, times), (e) => { throw new FailOnOccurrence(i, e, { ssf: repeat }); });
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return repeatRecur(fn, i + 1, times);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
if (e instanceof FailOnOccurrence)
|
|
24
|
+
throw e;
|
|
25
|
+
throw new FailOnOccurrence(i, e, { ssf: repeat });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9yZXBlYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU3Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFJLEVBQWdDLEVBQUUsS0FBYTtJQUN2RSxPQUFPLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ2xDLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBSSxFQUFnQyxFQUFFLENBQVMsRUFBRSxLQUFhO0lBQ2hGLElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQTtRQUNuQixJQUFJLENBQUMsS0FBSyxLQUFLO1lBQUUsT0FBTyxNQUFhLENBQUE7UUFFckMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUN0RCxDQUFBO1NBQ1Q7YUFDSTtZQUNILE9BQU8sV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3JDO0tBQ0Y7SUFDRCxPQUFPLENBQUMsRUFBRTtRQUNSLElBQUksQ0FBQyxZQUFZLGdCQUFnQjtZQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7S0FDbEQ7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AssertionError } from '../errors';
|
|
2
|
+
import { notResolvedMessage } from '../utils';
|
|
3
|
+
export function resolves(promise) {
|
|
4
|
+
return promise.then(() => { }, error => { throw new AssertionError(notResolvedMessage(error), { ssf: resolves }); });
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0cm9uL3Jlc29sdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRTdDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBcUI7SUFDNUMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQ1QsS0FBSyxDQUFDLEVBQUUsR0FBRyxNQUFNLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQ3BGLENBQUE7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createSatisfier } from 'satisfier';
|
|
2
|
+
import { AssertionError } from '../errors';
|
|
3
|
+
import { notSatisfiedMessage } from '../utils';
|
|
4
|
+
/**
|
|
5
|
+
* Check if `actual` satisfies criteria in `expected`.
|
|
6
|
+
* @param expected All properties can be a value which will be compared to the same property in `actual`, RegExp, or a predicate function that will be used to check against the property.
|
|
7
|
+
*/
|
|
8
|
+
export function satisfies(actual, expected) {
|
|
9
|
+
const diff = createSatisfier(expected).exec(actual);
|
|
10
|
+
if (diff) {
|
|
11
|
+
throw new AssertionError(notSatisfiedMessage(diff), { ssf: satisfies });
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F0aXNmaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9zYXRpc2ZpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQWtCOUM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBUyxNQUFjLEVBQUUsUUFBb0M7SUFDcEYsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLFFBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksRUFBRTtRQUNSLE1BQU0sSUFBSSxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtLQUN4RTtBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import isPromise from 'is-promise';
|
|
2
|
+
import { AssertionError } from '../errors';
|
|
3
|
+
import { isErrorConstructor, notRejectedMessage, notThrownMessage, unexpectedErrorMessage } from '../utils';
|
|
4
|
+
export function throws(value, validator) {
|
|
5
|
+
if (typeof value !== 'function' && !isPromise(value)) {
|
|
6
|
+
throw new AssertionError('`assertron.throws()` must be called with a function or promise.', { ssf: throws });
|
|
7
|
+
}
|
|
8
|
+
if (!isPromise(value)) {
|
|
9
|
+
const { threw, err, result } = tryCatch(value);
|
|
10
|
+
if (threw) {
|
|
11
|
+
if (failValidation(validator, err)) {
|
|
12
|
+
throw new AssertionError(unexpectedErrorMessage(err, validator), { ssf: throws });
|
|
13
|
+
}
|
|
14
|
+
return err;
|
|
15
|
+
}
|
|
16
|
+
value = result;
|
|
17
|
+
}
|
|
18
|
+
if (isPromise(value)) {
|
|
19
|
+
return value.then(value => { throw new AssertionError(notRejectedMessage(value), { ssf: throws }); }, err => {
|
|
20
|
+
if (failValidation(validator, err)) {
|
|
21
|
+
throw new AssertionError(unexpectedErrorMessage(err, validator), { ssf: throws });
|
|
22
|
+
}
|
|
23
|
+
return err;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
throw new AssertionError(notThrownMessage(value), { ssf: throws });
|
|
27
|
+
}
|
|
28
|
+
function tryCatch(fn) {
|
|
29
|
+
let result;
|
|
30
|
+
let err;
|
|
31
|
+
let threw = false;
|
|
32
|
+
try {
|
|
33
|
+
result = fn();
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
err = e;
|
|
37
|
+
threw = true;
|
|
38
|
+
}
|
|
39
|
+
return { threw, err, result };
|
|
40
|
+
}
|
|
41
|
+
function failValidation(validator, error) {
|
|
42
|
+
if (!validator)
|
|
43
|
+
return false;
|
|
44
|
+
if (isErrorConstructor(validator)) {
|
|
45
|
+
return !(error instanceof validator);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return !validator(error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi90aHJvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBTTVHLE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBd0QsRUFBRSxTQUFrRDtJQUNqSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNwRCxNQUFNLElBQUksY0FBYyxDQUN0QixpRUFBaUUsRUFDakUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQ2hCLENBQUE7S0FDRjtJQUVELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDckIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzlDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxjQUFjLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLElBQUksY0FBYyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO2FBQ2xGO1lBQ0QsT0FBTyxHQUFHLENBQUE7U0FDWDtRQUNELEtBQUssR0FBRyxNQUFNLENBQUM7S0FDaEI7SUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNwQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2YsS0FBSyxDQUFDLEVBQUUsR0FBRyxNQUFNLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQ2pGLEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxjQUFjLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLElBQUksY0FBYyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO2FBQ2xGO1lBQ0QsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLENBQ0YsQ0FBQTtLQUNGO0lBRUQsTUFBTSxJQUFJLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQ3BFLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxFQUFhO0lBQzdCLElBQUksTUFBTSxDQUFBO0lBQ1YsSUFBSSxHQUFHLENBQUE7SUFDUCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDakIsSUFBSTtRQUNGLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQTtLQUNkO0lBQ0QsT0FBTyxDQUFDLEVBQUU7UUFDUixHQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ1AsS0FBSyxHQUFHLElBQUksQ0FBQTtLQUNiO0lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUE7QUFDL0IsQ0FBQztBQUNELFNBQVMsY0FBYyxDQUFDLFNBQTZELEVBQUUsS0FBVTtJQUMvRixJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRTVCLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDakMsT0FBTyxDQUFDLENBQUMsS0FBSyxZQUFZLFNBQVMsQ0FBQyxDQUFBO0tBQ3JDO1NBQ0k7UUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO0tBQ3pCO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AssertionError } from '../errors';
|
|
2
|
+
export function truthy(value) {
|
|
3
|
+
if (!value)
|
|
4
|
+
throw new AssertionError(`Expected value to be truthy, but received ${value}`, { ssf: truthy });
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1dGh5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi90cnV0aHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUzQyxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQVU7SUFDL0IsSUFBSSxDQUFDLEtBQUs7UUFBRSxNQUFNLElBQUksY0FBYyxDQUNsQyw2Q0FBNkMsS0FBSyxFQUFFLEVBQ3BELEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUNoQixDQUFBO0FBQ0gsQ0FBQyJ9
|
package/esm/errors.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ModuleError } from 'iso-error';
|
|
2
|
+
import { failOnOccurrence } from './utils';
|
|
3
|
+
/**
|
|
4
|
+
* A base error for all assertion errors
|
|
5
|
+
*/
|
|
6
|
+
export class AssertionError extends ModuleError {
|
|
7
|
+
constructor(message, options) {
|
|
8
|
+
super('assertron', message, options);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class FailOnOccurrence extends AssertionError {
|
|
12
|
+
constructor(occurrence, error, options) {
|
|
13
|
+
super(failOnOccurrence(occurrence, error), options);
|
|
14
|
+
this.occurrence = occurrence;
|
|
15
|
+
this.error = error;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRWpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUUxQzs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsV0FBVztJQUM3QyxZQUFZLE9BQWUsRUFBRSxPQUErQjtRQUMxRCxLQUFLLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0NBQ0Y7QUFNRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsY0FBYztJQUNsRCxZQUFtQixVQUFrQixFQUFTLEtBQVUsRUFBRSxPQUErQjtRQUN2RixLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRGxDLGVBQVUsR0FBVixVQUFVLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFLO0lBRXhELENBQUM7Q0FDRiJ9
|
package/esm/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { assertron } from './assertron';
|
|
2
|
+
export * from './assert-order';
|
|
3
|
+
export * from './errors';
|
|
4
|
+
export * from './assertron';
|
|
5
|
+
export default assertron;
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV2QyxjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGVBQWUsU0FBUyxDQUFBIn0=
|
package/esm/types.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
export * from './isErrorConstructor';
|
|
3
|
+
export * from './notEqualMessage';
|
|
4
|
+
export * from './notSatisfiedMessage';
|
|
5
|
+
export * from './notThrownMessage';
|
|
6
|
+
export * from './promiseMessages';
|
|
7
|
+
export * from './unexpectedErrorMessage';
|
|
8
|
+
export function failOnOccurrence(occurrence, error) {
|
|
9
|
+
return `Failed on ${occurrence} occurrence: ${tersify(error, { maxLength: Infinity })}`;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxLQUFVO0lBQzdELE9BQU8sYUFBYSxVQUFVLGdCQUFnQixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQTtBQUN6RixDQUFDIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function isErrorConstructor(validator) {
|
|
2
|
+
return Object.prototype.isPrototypeOf.call(Error.prototype, validator.prototype);
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNFcnJvckNvbnN0cnVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2lzRXJyb3JDb25zdHJ1Y3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBYztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUNsRixDQUFDIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function notEqualMessage(actual, expected) {
|
|
2
|
+
return `Expected value to equal ${expected}, but received ${actual}`;
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90RXF1YWxNZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL25vdEVxdWFsTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQVcsRUFBRSxRQUFhO0lBQ3hELE9BQU8sMkJBQTJCLFFBQVEsa0JBQWtCLE1BQU0sRUFBRSxDQUFBO0FBQ3RFLENBQUMifQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
export function notSatisfiedMessage(entries) {
|
|
3
|
+
return entries.map(e => {
|
|
4
|
+
const path = formatPath(e.path);
|
|
5
|
+
return `Expect ${path} to satisfy ${formatValue(e.expected)}, but received ${formatValue(e.actual)}`;
|
|
6
|
+
}).join('\n');
|
|
7
|
+
}
|
|
8
|
+
function formatPath(entries) {
|
|
9
|
+
if (entries.length === 0)
|
|
10
|
+
return 'actual';
|
|
11
|
+
const nodes = [...entries];
|
|
12
|
+
if (isIndice(nodes[0])) {
|
|
13
|
+
nodes.unshift('actual');
|
|
14
|
+
}
|
|
15
|
+
return nodes.map(n => isIndice(n) ? `[${n}]` : '.' + n).join('').slice(1);
|
|
16
|
+
}
|
|
17
|
+
function isIndice(node) {
|
|
18
|
+
return typeof node === 'number';
|
|
19
|
+
}
|
|
20
|
+
function formatValue(value) {
|
|
21
|
+
return tersify(value);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90U2F0aXNmaWVkTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9ub3RTYXRpc2ZpZWRNZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbEMsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQWU7SUFDakQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0IsT0FBTyxVQUFVLElBQUksZUFBZSxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO0lBQ3RHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNmLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxPQUE0QjtJQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUN0QixPQUFPLFFBQVEsQ0FBQTtJQUNqQixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUE7SUFDMUIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtLQUN4QjtJQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDM0UsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQXFCO0lBQ3JDLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFBO0FBQ2pDLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFVO0lBQzdCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3ZCLENBQUMifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
export function notThrownMessage(value) {
|
|
3
|
+
return `Expect function to throw, but it returned '${tersify(value)}' instead.`;
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90VGhyb3duTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9ub3RUaHJvd25NZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFakMsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQVU7SUFDekMsT0FBTyw4Q0FBOEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUE7QUFDakYsQ0FBQyJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
export function notRejectedMessage(value) {
|
|
3
|
+
return `Expected promise to reject, but it resolves with ` + (typeof value === 'string'
|
|
4
|
+
? `'${value}'` : tersify(value, { maxLength: Infinity }));
|
|
5
|
+
}
|
|
6
|
+
export function notResolvedMessage(error) {
|
|
7
|
+
return `Expected promise to resolve, but it rejects with ` + (typeof error === 'string'
|
|
8
|
+
? `'${error}'` : error instanceof Error ? error : tersify(error, { maxLength: Infinity }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZU1lc3NhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3Byb21pc2VNZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRWpDLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFVO0lBQzNDLE9BQU8sbURBQW1ELEdBQUcsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3JGLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUM3RCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQVU7SUFDM0MsT0FBTyxtREFBbUQsR0FBRyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDckYsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDOUYsQ0FBQyJ9
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
import { isErrorConstructor } from './isErrorConstructor';
|
|
3
|
+
export function unexpectedErrorMessage(actual, expected) {
|
|
4
|
+
return `Unexpected error. Expecting '${isErrorConstructor(expected) ?
|
|
5
|
+
expected.name : tersify(expected)}' but received ${tersify(actual)}`;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5leHBlY3RlZEVycm9yTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91bmV4cGVjdGVkRXJyb3JNZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE1BQVcsRUFBRSxRQUFnRDtJQUNsRyxPQUFPLGdDQUFnQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ25FLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO0FBQ3hFLENBQUMifQ==
|