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.
Files changed (279) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +61 -46
  3. package/{dist-es2015 → cjs}/assert-order/AssertOrder.d.ts +3 -2
  4. package/cjs/assert-order/AssertOrder.d.ts.map +1 -0
  5. package/cjs/assert-order/AssertOrder.js +148 -0
  6. package/cjs/assert-order/InvalidOrder.d.ts +9 -0
  7. package/cjs/assert-order/InvalidOrder.d.ts.map +1 -0
  8. package/cjs/assert-order/InvalidOrder.js +39 -0
  9. package/{dist-es5 → cjs}/assert-order/StateMachine.d.ts +5 -6
  10. package/cjs/assert-order/StateMachine.d.ts.map +1 -0
  11. package/cjs/assert-order/StateMachine.js +111 -0
  12. package/cjs/assert-order/index.d.ts +4 -0
  13. package/cjs/assert-order/index.d.ts.map +1 -0
  14. package/cjs/assert-order/index.js +7 -0
  15. package/{dist-es2015/assert-order/interfaces.d.ts → cjs/assert-order/types.d.ts} +1 -0
  16. package/cjs/assert-order/types.d.ts.map +1 -0
  17. package/cjs/assert-order/types.js +3 -0
  18. package/{dist-es2015 → cjs}/assertron/assertron.d.ts +1 -0
  19. package/cjs/assertron/assertron.d.ts.map +1 -0
  20. package/cjs/assertron/assertron.js +32 -0
  21. package/{dist-es2015 → cjs}/assertron/falsy.d.ts +1 -0
  22. package/cjs/assertron/falsy.d.ts.map +1 -0
  23. package/cjs/assertron/falsy.js +10 -0
  24. package/cjs/assertron/index.d.ts +2 -0
  25. package/cjs/assertron/index.d.ts.map +1 -0
  26. package/cjs/assertron/index.js +5 -0
  27. package/{dist-es2015 → cjs}/assertron/pathEqual.d.ts +1 -0
  28. package/cjs/assertron/pathEqual.d.ts.map +1 -0
  29. package/cjs/assertron/pathEqual.js +12 -0
  30. package/{dist-es2015 → cjs}/assertron/rejects.d.ts +1 -0
  31. package/cjs/assertron/rejects.d.ts.map +1 -0
  32. package/cjs/assertron/rejects.js +10 -0
  33. package/{dist-es2015 → cjs}/assertron/repeat.d.ts +1 -6
  34. package/cjs/assertron/repeat.d.ts.map +1 -0
  35. package/cjs/assertron/repeat.js +33 -0
  36. package/{dist-es2015 → cjs}/assertron/resolves.d.ts +1 -0
  37. package/cjs/assertron/resolves.d.ts.map +1 -0
  38. package/cjs/assertron/resolves.js +10 -0
  39. package/cjs/assertron/satisfies.d.ts +10 -0
  40. package/cjs/assertron/satisfies.d.ts.map +1 -0
  41. package/cjs/assertron/satisfies.js +18 -0
  42. package/{dist-es2015 → cjs}/assertron/throws.d.ts +3 -1
  43. package/cjs/assertron/throws.d.ts.map +1 -0
  44. package/cjs/assertron/throws.js +56 -0
  45. package/{dist-es2015 → cjs}/assertron/truthy.d.ts +1 -0
  46. package/cjs/assertron/truthy.d.ts.map +1 -0
  47. package/cjs/assertron/truthy.js +10 -0
  48. package/cjs/errors.d.ts +17 -0
  49. package/cjs/errors.d.ts.map +1 -0
  50. package/cjs/errors.js +29 -0
  51. package/{dist-es5 → cjs}/index.d.ts +3 -1
  52. package/cjs/index.d.ts.map +1 -0
  53. package/cjs/index.js +9 -0
  54. package/{dist-es2015/errors/interfaces.d.ts → cjs/types.d.ts} +1 -0
  55. package/cjs/types.d.ts.map +1 -0
  56. package/cjs/types.js +3 -0
  57. package/cjs/utils/index.d.ts +8 -0
  58. package/cjs/utils/index.d.ts.map +1 -0
  59. package/cjs/utils/index.js +16 -0
  60. package/{dist-es2015/errors/util.d.ts → cjs/utils/isErrorConstructor.d.ts} +2 -1
  61. package/cjs/utils/isErrorConstructor.d.ts.map +1 -0
  62. package/cjs/utils/isErrorConstructor.js +8 -0
  63. package/{dist-es2015/errors → cjs/utils}/notEqualMessage.d.ts +1 -0
  64. package/cjs/utils/notEqualMessage.d.ts.map +1 -0
  65. package/cjs/utils/notEqualMessage.js +8 -0
  66. package/{dist-es2015/errors/NotSatisfied.d.ts → cjs/utils/notSatisfiedMessage.d.ts} +1 -0
  67. package/cjs/utils/notSatisfiedMessage.d.ts.map +1 -0
  68. package/cjs/utils/notSatisfiedMessage.js +28 -0
  69. package/{dist-es2015/errors → cjs/utils}/notThrownMessage.d.ts +1 -0
  70. package/cjs/utils/notThrownMessage.d.ts.map +1 -0
  71. package/cjs/utils/notThrownMessage.js +9 -0
  72. package/cjs/utils/promiseMessages.d.ts +3 -0
  73. package/cjs/utils/promiseMessages.d.ts.map +1 -0
  74. package/cjs/utils/promiseMessages.js +15 -0
  75. package/{dist-es2015/errors → cjs/utils}/unexpectedErrorMessage.d.ts +2 -1
  76. package/cjs/utils/unexpectedErrorMessage.d.ts.map +1 -0
  77. package/cjs/utils/unexpectedErrorMessage.js +11 -0
  78. package/esm/assert-order/AssertOrder.js +132 -0
  79. package/esm/assert-order/InvalidOrder.js +31 -0
  80. package/esm/assert-order/StateMachine.js +103 -0
  81. package/esm/assert-order/index.js +4 -0
  82. package/esm/assert-order/types.js +2 -0
  83. package/esm/assertron/assertron.js +29 -0
  84. package/esm/assertron/falsy.js +6 -0
  85. package/esm/assertron/index.js +2 -0
  86. package/esm/assertron/pathEqual.js +8 -0
  87. package/esm/assertron/rejects.js +6 -0
  88. package/esm/assertron/repeat.js +28 -0
  89. package/esm/assertron/resolves.js +6 -0
  90. package/esm/assertron/satisfies.js +14 -0
  91. package/esm/assertron/throws.js +51 -0
  92. package/esm/assertron/truthy.js +6 -0
  93. package/esm/errors.js +18 -0
  94. package/esm/index.js +6 -0
  95. package/esm/types.js +2 -0
  96. package/esm/utils/index.js +11 -0
  97. package/esm/utils/isErrorConstructor.js +4 -0
  98. package/esm/utils/notEqualMessage.js +4 -0
  99. package/esm/utils/notSatisfiedMessage.js +23 -0
  100. package/esm/utils/notThrownMessage.js +5 -0
  101. package/esm/utils/promiseMessages.js +10 -0
  102. package/esm/utils/unexpectedErrorMessage.js +7 -0
  103. package/package.json +62 -24
  104. package/src/assert-order/AssertOrder.spec.ts +10 -12
  105. package/src/assert-order/AssertOrder.ts +8 -8
  106. package/src/assert-order/InvalidOrder.ts +7 -12
  107. package/src/assert-order/StateMachine.ts +26 -31
  108. package/src/assert-order/index.ts +3 -1
  109. package/src/assert-order/internalInterfaces.ts +3 -3
  110. package/src/assert-order/types.ts +7 -0
  111. package/src/assertron/assertron.spec.ts +2 -4
  112. package/src/assertron/assertron.ts +13 -14
  113. package/src/assertron/falsy.spec.ts +2 -3
  114. package/src/assertron/falsy.ts +2 -6
  115. package/src/assertron/pathEqual.spec.ts +2 -3
  116. package/src/assertron/pathEqual.ts +4 -7
  117. package/src/assertron/rejects.spec.ts +7 -8
  118. package/src/assertron/rejects.ts +3 -11
  119. package/src/assertron/repeat.spec.ts +8 -10
  120. package/src/assertron/repeat.ts +4 -9
  121. package/src/assertron/resolves.spec.ts +3 -4
  122. package/src/assertron/resolves.ts +3 -13
  123. package/src/assertron/satisfies.spec.ts +57 -26
  124. package/src/assertron/satisfies.ts +23 -10
  125. package/src/assertron/throws.spec.ts +63 -39
  126. package/src/assertron/throws.ts +32 -55
  127. package/src/assertron/truthy.spec.ts +2 -3
  128. package/src/assertron/truthy.ts +2 -3
  129. package/src/errors.ts +22 -0
  130. package/src/index.ts +2 -1
  131. package/src/testUtils.ts +16 -13
  132. package/src/{errors/interfaces.ts → types.ts} +1 -1
  133. package/src/utils/index.ts +12 -0
  134. package/src/utils/isErrorConstructor.ts +5 -0
  135. package/src/utils/notEqualMessage.ts +4 -0
  136. package/src/{errors → utils}/notSatisfiedMessage.spec.ts +0 -0
  137. package/src/{errors/NotSatisfied.ts → utils/notSatisfiedMessage.ts} +1 -1
  138. package/src/utils/notThrownMessage.ts +5 -0
  139. package/src/utils/promiseMessages.ts +12 -0
  140. package/src/{errors → utils}/unexpectedErrorMessage.ts +4 -3
  141. package/dist-es2015/assert-order/AssertOrder.js +0 -132
  142. package/dist-es2015/assert-order/AssertOrder.js.map +0 -1
  143. package/dist-es2015/assert-order/InvalidOrder.d.ts +0 -8
  144. package/dist-es2015/assert-order/InvalidOrder.js +0 -31
  145. package/dist-es2015/assert-order/InvalidOrder.js.map +0 -1
  146. package/dist-es2015/assert-order/StateMachine.d.ts +0 -23
  147. package/dist-es2015/assert-order/StateMachine.js +0 -106
  148. package/dist-es2015/assert-order/StateMachine.js.map +0 -1
  149. package/dist-es2015/assert-order/index.d.ts +0 -2
  150. package/dist-es2015/assert-order/index.js +0 -2
  151. package/dist-es2015/assert-order/index.js.map +0 -1
  152. package/dist-es2015/assert-order/interfaces.js +0 -1
  153. package/dist-es2015/assert-order/interfaces.js.map +0 -1
  154. package/dist-es2015/assertron/assertron.js +0 -28
  155. package/dist-es2015/assertron/assertron.js.map +0 -1
  156. package/dist-es2015/assertron/falsy.js +0 -6
  157. package/dist-es2015/assertron/falsy.js.map +0 -1
  158. package/dist-es2015/assertron/index.d.ts +0 -1
  159. package/dist-es2015/assertron/index.js +0 -2
  160. package/dist-es2015/assertron/index.js.map +0 -1
  161. package/dist-es2015/assertron/pathEqual.js +0 -8
  162. package/dist-es2015/assertron/pathEqual.js.map +0 -1
  163. package/dist-es2015/assertron/rejects.js +0 -10
  164. package/dist-es2015/assertron/rejects.js.map +0 -1
  165. package/dist-es2015/assertron/repeat.js +0 -35
  166. package/dist-es2015/assertron/repeat.js.map +0 -1
  167. package/dist-es2015/assertron/resolves.js +0 -12
  168. package/dist-es2015/assertron/resolves.js.map +0 -1
  169. package/dist-es2015/assertron/satisfies.d.ts +0 -5
  170. package/dist-es2015/assertron/satisfies.js +0 -14
  171. package/dist-es2015/assertron/satisfies.js.map +0 -1
  172. package/dist-es2015/assertron/throws.js +0 -55
  173. package/dist-es2015/assertron/throws.js.map +0 -1
  174. package/dist-es2015/assertron/truthy.js +0 -6
  175. package/dist-es2015/assertron/truthy.js.map +0 -1
  176. package/dist-es2015/errors/NotSatisfied.js +0 -23
  177. package/dist-es2015/errors/NotSatisfied.js.map +0 -1
  178. package/dist-es2015/errors/index.d.ts +0 -7
  179. package/dist-es2015/errors/index.js +0 -7
  180. package/dist-es2015/errors/index.js.map +0 -1
  181. package/dist-es2015/errors/interfaces.js +0 -1
  182. package/dist-es2015/errors/interfaces.js.map +0 -1
  183. package/dist-es2015/errors/notEqualMessage.js +0 -4
  184. package/dist-es2015/errors/notEqualMessage.js.map +0 -1
  185. package/dist-es2015/errors/notRejectedMessage.d.ts +0 -1
  186. package/dist-es2015/errors/notRejectedMessage.js +0 -4
  187. package/dist-es2015/errors/notRejectedMessage.js.map +0 -1
  188. package/dist-es2015/errors/notThrownMessage.js +0 -4
  189. package/dist-es2015/errors/notThrownMessage.js.map +0 -1
  190. package/dist-es2015/errors/returnNotRejectedMessage.d.ts +0 -1
  191. package/dist-es2015/errors/returnNotRejectedMessage.js +0 -4
  192. package/dist-es2015/errors/returnNotRejectedMessage.js.map +0 -1
  193. package/dist-es2015/errors/unexpectedErrorMessage.js +0 -6
  194. package/dist-es2015/errors/unexpectedErrorMessage.js.map +0 -1
  195. package/dist-es2015/errors/util.js +0 -4
  196. package/dist-es2015/errors/util.js.map +0 -1
  197. package/dist-es2015/index.d.ts +0 -4
  198. package/dist-es2015/index.js +0 -5
  199. package/dist-es2015/index.js.map +0 -1
  200. package/dist-es5/assert-order/AssertOrder.d.ts +0 -40
  201. package/dist-es5/assert-order/AssertOrder.js +0 -147
  202. package/dist-es5/assert-order/AssertOrder.js.map +0 -1
  203. package/dist-es5/assert-order/InvalidOrder.d.ts +0 -8
  204. package/dist-es5/assert-order/InvalidOrder.js +0 -58
  205. package/dist-es5/assert-order/InvalidOrder.js.map +0 -1
  206. package/dist-es5/assert-order/StateMachine.js +0 -115
  207. package/dist-es5/assert-order/StateMachine.js.map +0 -1
  208. package/dist-es5/assert-order/index.d.ts +0 -2
  209. package/dist-es5/assert-order/index.js +0 -7
  210. package/dist-es5/assert-order/index.js.map +0 -1
  211. package/dist-es5/assert-order/interfaces.d.ts +0 -7
  212. package/dist-es5/assert-order/interfaces.js +0 -3
  213. package/dist-es5/assert-order/interfaces.js.map +0 -1
  214. package/dist-es5/assertron/assertron.d.ts +0 -20
  215. package/dist-es5/assertron/assertron.js +0 -33
  216. package/dist-es5/assertron/assertron.js.map +0 -1
  217. package/dist-es5/assertron/falsy.d.ts +0 -1
  218. package/dist-es5/assertron/falsy.js +0 -12
  219. package/dist-es5/assertron/falsy.js.map +0 -1
  220. package/dist-es5/assertron/index.d.ts +0 -1
  221. package/dist-es5/assertron/index.js +0 -7
  222. package/dist-es5/assertron/index.js.map +0 -1
  223. package/dist-es5/assertron/pathEqual.d.ts +0 -1
  224. package/dist-es5/assertron/pathEqual.js +0 -14
  225. package/dist-es5/assertron/pathEqual.js.map +0 -1
  226. package/dist-es5/assertron/rejects.d.ts +0 -1
  227. package/dist-es5/assertron/rejects.js +0 -16
  228. package/dist-es5/assertron/rejects.js.map +0 -1
  229. package/dist-es5/assertron/repeat.d.ts +0 -11
  230. package/dist-es5/assertron/repeat.js +0 -58
  231. package/dist-es5/assertron/repeat.js.map +0 -1
  232. package/dist-es5/assertron/resolves.d.ts +0 -1
  233. package/dist-es5/assertron/resolves.js +0 -18
  234. package/dist-es5/assertron/resolves.js.map +0 -1
  235. package/dist-es5/assertron/satisfies.d.ts +0 -5
  236. package/dist-es5/assertron/satisfies.js +0 -20
  237. package/dist-es5/assertron/satisfies.js.map +0 -1
  238. package/dist-es5/assertron/throws.d.ts +0 -4
  239. package/dist-es5/assertron/throws.js +0 -61
  240. package/dist-es5/assertron/throws.js.map +0 -1
  241. package/dist-es5/assertron/truthy.d.ts +0 -1
  242. package/dist-es5/assertron/truthy.js +0 -12
  243. package/dist-es5/assertron/truthy.js.map +0 -1
  244. package/dist-es5/errors/NotSatisfied.d.ts +0 -2
  245. package/dist-es5/errors/NotSatisfied.js +0 -26
  246. package/dist-es5/errors/NotSatisfied.js.map +0 -1
  247. package/dist-es5/errors/index.d.ts +0 -7
  248. package/dist-es5/errors/index.js +0 -12
  249. package/dist-es5/errors/index.js.map +0 -1
  250. package/dist-es5/errors/interfaces.d.ts +0 -2
  251. package/dist-es5/errors/interfaces.js +0 -3
  252. package/dist-es5/errors/interfaces.js.map +0 -1
  253. package/dist-es5/errors/notEqualMessage.d.ts +0 -1
  254. package/dist-es5/errors/notEqualMessage.js +0 -7
  255. package/dist-es5/errors/notEqualMessage.js.map +0 -1
  256. package/dist-es5/errors/notRejectedMessage.d.ts +0 -1
  257. package/dist-es5/errors/notRejectedMessage.js +0 -7
  258. package/dist-es5/errors/notRejectedMessage.js.map +0 -1
  259. package/dist-es5/errors/notThrownMessage.d.ts +0 -1
  260. package/dist-es5/errors/notThrownMessage.js +0 -7
  261. package/dist-es5/errors/notThrownMessage.js.map +0 -1
  262. package/dist-es5/errors/returnNotRejectedMessage.d.ts +0 -1
  263. package/dist-es5/errors/returnNotRejectedMessage.js +0 -7
  264. package/dist-es5/errors/returnNotRejectedMessage.js.map +0 -1
  265. package/dist-es5/errors/unexpectedErrorMessage.d.ts +0 -2
  266. package/dist-es5/errors/unexpectedErrorMessage.js +0 -9
  267. package/dist-es5/errors/unexpectedErrorMessage.js.map +0 -1
  268. package/dist-es5/errors/util.d.ts +0 -2
  269. package/dist-es5/errors/util.js +0 -7
  270. package/dist-es5/errors/util.js.map +0 -1
  271. package/dist-es5/index.js +0 -10
  272. package/dist-es5/index.js.map +0 -1
  273. package/src/assert-order/interfaces.ts +0 -7
  274. package/src/errors/index.ts +0 -7
  275. package/src/errors/notEqualMessage.ts +0 -3
  276. package/src/errors/notRejectedMessage.ts +0 -3
  277. package/src/errors/notThrownMessage.ts +0 -3
  278. package/src/errors/returnNotRejectedMessage.ts +0 -3
  279. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0LW9yZGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -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,2 @@
1
+ export * from './assertron';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0cm9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFBIn0=
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -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==