assertron 8.0.0 → 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 (161) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +11 -29
  3. package/cjs/assert-order/AssertOrder.js +7 -7
  4. package/cjs/assert-order/InvalidOrder.d.ts +5 -6
  5. package/cjs/assert-order/InvalidOrder.d.ts.map +1 -1
  6. package/cjs/assert-order/InvalidOrder.js +9 -14
  7. package/cjs/assert-order/StateMachine.d.ts +1 -1
  8. package/cjs/assert-order/StateMachine.d.ts.map +1 -1
  9. package/cjs/assert-order/StateMachine.js +1 -1
  10. package/cjs/assert-order/index.d.ts +2 -1
  11. package/cjs/assert-order/index.d.ts.map +1 -1
  12. package/cjs/assert-order/index.js +3 -2
  13. package/cjs/assert-order/{interfaces.d.ts → types.d.ts} +1 -1
  14. package/cjs/assert-order/types.d.ts.map +1 -0
  15. package/cjs/assert-order/types.js +3 -0
  16. package/cjs/assertron/assertron.d.ts.map +1 -1
  17. package/cjs/assertron/assertron.js +5 -5
  18. package/cjs/assertron/falsy.d.ts.map +1 -1
  19. package/cjs/assertron/falsy.js +3 -4
  20. package/cjs/assertron/pathEqual.d.ts.map +1 -1
  21. package/cjs/assertron/pathEqual.js +3 -4
  22. package/cjs/assertron/rejects.d.ts.map +1 -1
  23. package/cjs/assertron/rejects.js +4 -8
  24. package/cjs/assertron/repeat.d.ts +0 -8
  25. package/cjs/assertron/repeat.d.ts.map +1 -1
  26. package/cjs/assertron/repeat.js +6 -17
  27. package/cjs/assertron/resolves.d.ts.map +1 -1
  28. package/cjs/assertron/resolves.js +4 -11
  29. package/cjs/assertron/satisfies.d.ts +4 -4
  30. package/cjs/assertron/satisfies.d.ts.map +1 -1
  31. package/cjs/assertron/satisfies.js +3 -4
  32. package/cjs/assertron/throws.d.ts +1 -1
  33. package/cjs/assertron/throws.d.ts.map +1 -1
  34. package/cjs/assertron/throws.js +25 -31
  35. package/cjs/assertron/truthy.d.ts.map +1 -1
  36. package/cjs/assertron/truthy.js +3 -4
  37. package/cjs/errors.d.ts +17 -0
  38. package/cjs/errors.d.ts.map +1 -0
  39. package/cjs/errors.js +29 -0
  40. package/cjs/index.d.ts +2 -1
  41. package/cjs/index.d.ts.map +1 -1
  42. package/cjs/index.js +3 -2
  43. package/cjs/{errors/interfaces.d.ts → types.d.ts} +1 -1
  44. package/cjs/types.d.ts.map +1 -0
  45. package/cjs/types.js +3 -0
  46. package/cjs/utils/index.d.ts +8 -0
  47. package/cjs/utils/index.d.ts.map +1 -0
  48. package/cjs/utils/index.js +16 -0
  49. package/cjs/{errors/util.d.ts → utils/isErrorConstructor.d.ts} +2 -2
  50. package/cjs/utils/isErrorConstructor.d.ts.map +1 -0
  51. package/cjs/utils/isErrorConstructor.js +8 -0
  52. package/cjs/{errors → utils}/notEqualMessage.d.ts +0 -0
  53. package/cjs/utils/notEqualMessage.d.ts.map +1 -0
  54. package/cjs/{errors → utils}/notEqualMessage.js +2 -2
  55. package/cjs/{errors/NotSatisfied.d.ts → utils/notSatisfiedMessage.d.ts} +1 -1
  56. package/cjs/utils/notSatisfiedMessage.d.ts.map +1 -0
  57. package/cjs/utils/notSatisfiedMessage.js +28 -0
  58. package/cjs/{errors → utils}/notThrownMessage.d.ts +0 -0
  59. package/cjs/utils/notThrownMessage.d.ts.map +1 -0
  60. package/cjs/{errors → utils}/notThrownMessage.js +1 -1
  61. package/cjs/utils/promiseMessages.d.ts +3 -0
  62. package/cjs/utils/promiseMessages.d.ts.map +1 -0
  63. package/cjs/utils/promiseMessages.js +15 -0
  64. package/cjs/{errors → utils}/unexpectedErrorMessage.d.ts +1 -1
  65. package/cjs/utils/unexpectedErrorMessage.d.ts.map +1 -0
  66. package/cjs/utils/unexpectedErrorMessage.js +11 -0
  67. package/esm/assert-order/AssertOrder.js +7 -7
  68. package/esm/assert-order/InvalidOrder.js +8 -8
  69. package/esm/assert-order/StateMachine.js +1 -1
  70. package/esm/assert-order/index.js +3 -2
  71. package/esm/assert-order/types.js +2 -0
  72. package/esm/assertron/assertron.js +5 -4
  73. package/esm/assertron/falsy.js +3 -3
  74. package/esm/assertron/pathEqual.js +4 -4
  75. package/esm/assertron/rejects.js +4 -7
  76. package/esm/assertron/repeat.js +4 -11
  77. package/esm/assertron/resolves.js +4 -10
  78. package/esm/assertron/satisfies.js +4 -4
  79. package/esm/assertron/throws.js +26 -32
  80. package/esm/assertron/truthy.js +3 -3
  81. package/esm/errors.js +18 -0
  82. package/esm/index.js +3 -2
  83. package/esm/types.js +2 -0
  84. package/esm/utils/index.js +11 -0
  85. package/esm/utils/isErrorConstructor.js +4 -0
  86. package/esm/utils/notEqualMessage.js +4 -0
  87. package/esm/utils/notSatisfiedMessage.js +23 -0
  88. package/esm/{errors → utils}/notThrownMessage.js +1 -1
  89. package/esm/utils/promiseMessages.js +10 -0
  90. package/esm/utils/unexpectedErrorMessage.js +7 -0
  91. package/package.json +17 -18
  92. package/src/assert-order/AssertOrder.spec.ts +10 -11
  93. package/src/assert-order/AssertOrder.ts +6 -6
  94. package/src/assert-order/InvalidOrder.ts +7 -9
  95. package/src/assert-order/StateMachine.ts +2 -3
  96. package/src/assert-order/index.ts +3 -1
  97. package/src/assert-order/{interfaces.ts → types.ts} +0 -0
  98. package/src/assertron/assertron.spec.ts +1 -2
  99. package/src/assertron/assertron.ts +5 -6
  100. package/src/assertron/falsy.spec.ts +1 -2
  101. package/src/assertron/falsy.ts +2 -6
  102. package/src/assertron/pathEqual.spec.ts +1 -2
  103. package/src/assertron/pathEqual.ts +3 -6
  104. package/src/assertron/rejects.spec.ts +1 -2
  105. package/src/assertron/rejects.ts +3 -9
  106. package/src/assertron/repeat.spec.ts +2 -4
  107. package/src/assertron/repeat.ts +3 -8
  108. package/src/assertron/resolves.spec.ts +1 -2
  109. package/src/assertron/resolves.ts +3 -10
  110. package/src/assertron/satisfies.spec.ts +51 -19
  111. package/src/assertron/satisfies.ts +18 -15
  112. package/src/assertron/throws.spec.ts +39 -35
  113. package/src/assertron/throws.ts +28 -54
  114. package/src/assertron/truthy.spec.ts +1 -2
  115. package/src/assertron/truthy.ts +2 -3
  116. package/src/errors.ts +22 -0
  117. package/src/index.ts +2 -1
  118. package/src/testUtils.ts +2 -3
  119. package/src/{errors/interfaces.ts → types.ts} +0 -0
  120. package/src/utils/index.ts +12 -0
  121. package/src/{errors/util.ts → utils/isErrorConstructor.ts} +1 -1
  122. package/src/utils/notEqualMessage.ts +4 -0
  123. package/src/{errors → utils}/notSatisfiedMessage.spec.ts +0 -0
  124. package/src/{errors/NotSatisfied.ts → utils/notSatisfiedMessage.ts} +0 -0
  125. package/src/{errors → utils}/notThrownMessage.ts +0 -0
  126. package/src/utils/promiseMessages.ts +12 -0
  127. package/src/{errors → utils}/unexpectedErrorMessage.ts +4 -3
  128. package/cjs/assert-order/interfaces.d.ts.map +0 -1
  129. package/cjs/assert-order/interfaces.js +0 -3
  130. package/cjs/errors/NotSatisfied.d.ts.map +0 -1
  131. package/cjs/errors/NotSatisfied.js +0 -28
  132. package/cjs/errors/index.d.ts +0 -8
  133. package/cjs/errors/index.d.ts.map +0 -1
  134. package/cjs/errors/index.js +0 -11
  135. package/cjs/errors/interfaces.d.ts.map +0 -1
  136. package/cjs/errors/interfaces.js +0 -3
  137. package/cjs/errors/notEqualMessage.d.ts.map +0 -1
  138. package/cjs/errors/notRejectedMessage.d.ts +0 -2
  139. package/cjs/errors/notRejectedMessage.d.ts.map +0 -1
  140. package/cjs/errors/notRejectedMessage.js +0 -8
  141. package/cjs/errors/notThrownMessage.d.ts.map +0 -1
  142. package/cjs/errors/returnNotRejectedMessage.d.ts +0 -2
  143. package/cjs/errors/returnNotRejectedMessage.d.ts.map +0 -1
  144. package/cjs/errors/returnNotRejectedMessage.js +0 -8
  145. package/cjs/errors/unexpectedErrorMessage.d.ts.map +0 -1
  146. package/cjs/errors/unexpectedErrorMessage.js +0 -10
  147. package/cjs/errors/util.d.ts.map +0 -1
  148. package/cjs/errors/util.js +0 -8
  149. package/esm/assert-order/interfaces.js +0 -2
  150. package/esm/errors/NotSatisfied.js +0 -23
  151. package/esm/errors/index.js +0 -8
  152. package/esm/errors/interfaces.js +0 -2
  153. package/esm/errors/notEqualMessage.js +0 -4
  154. package/esm/errors/notRejectedMessage.js +0 -4
  155. package/esm/errors/returnNotRejectedMessage.js +0 -4
  156. package/esm/errors/unexpectedErrorMessage.js +0 -6
  157. package/esm/errors/util.js +0 -4
  158. package/src/errors/index.ts +0 -7
  159. package/src/errors/notEqualMessage.ts +0 -3
  160. package/src/errors/notRejectedMessage.ts +0 -3
  161. package/src/errors/returnNotRejectedMessage.ts +0 -3
@@ -1,4 +1,5 @@
1
- import AssertionError from 'assertion-error';
1
+ import { AssertionError } from '../errors';
2
+ import { notEqualMessage } from '../utils';
2
3
  import { falsy } from './falsy';
3
4
  import { pathEqual } from './pathEqual';
4
5
  import { rejects } from './rejects';
@@ -10,7 +11,7 @@ import { truthy } from './truthy';
10
11
  export const assertron = {
11
12
  false(value) {
12
13
  if (value !== false)
13
- throw new AssertionError(`Expected value to equal false, but received ${value}`, { value }, assertron.false);
14
+ throw new AssertionError(notEqualMessage(value, false), { ssf: assertron.false });
14
15
  },
15
16
  falsy,
16
17
  pathEqual,
@@ -21,8 +22,8 @@ export const assertron = {
21
22
  throws,
22
23
  true(value) {
23
24
  if (value !== true)
24
- throw new AssertionError(`Expected value to equal true, but received ${value}`, { value }, assertron.true);
25
+ throw new AssertionError(notEqualMessage(value, true), { ssf: assertron.true });
25
26
  },
26
27
  truthy
27
28
  };
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0cm9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9hc3NlcnRyb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixLQUFLLENBQUMsS0FBVTtRQUNkLElBQUksS0FBSyxLQUFLLEtBQUs7WUFDakIsTUFBTSxJQUFJLGNBQWMsQ0FDdEIsK0NBQStDLEtBQUssRUFBRSxFQUN0RCxFQUFFLEtBQUssRUFBRSxFQUNULFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBQ0QsS0FBSztJQUNMLFNBQVM7SUFDVCxPQUFPO0lBQ1AsTUFBTTtJQUNOLFFBQVE7SUFDUixTQUFTO0lBQ1QsTUFBTTtJQUNOLElBQUksQ0FBQyxLQUFVO1FBQ2IsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLE1BQU0sSUFBSSxjQUFjLENBQUMsOENBQThDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2hJLENBQUM7SUFDRCxNQUFNO0NBQ1AsQ0FBQSJ9
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0cm9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9hc3NlcnRyb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVqQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIsS0FBSyxDQUFDLEtBQVU7UUFDZCxJQUFJLEtBQUssS0FBSyxLQUFLO1lBQ2pCLE1BQU0sSUFBSSxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUNyRixDQUFDO0lBQ0QsS0FBSztJQUNMLFNBQVM7SUFDVCxPQUFPO0lBQ1AsTUFBTTtJQUNOLFFBQVE7SUFDUixTQUFTO0lBQ1QsTUFBTTtJQUNOLElBQUksQ0FBQyxLQUFVO1FBQ2IsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUNoQixNQUFNLElBQUksY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7SUFDbkYsQ0FBQztJQUNELE1BQU07Q0FDUCxDQUFBIn0=
@@ -1,6 +1,6 @@
1
- import AssertionError from 'assertion-error';
1
+ import { AssertionError } from '../errors';
2
2
  export function falsy(value) {
3
3
  if (value)
4
- throw new AssertionError(`Expected value to be falsy, but received ${value}`, { value }, falsy);
4
+ throw new AssertionError(`Expected value to be falsy, but received ${value}`, { ssf: falsy });
5
5
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsc3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0cm9uL2ZhbHN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFBO0FBRTVDLE1BQU0sVUFBVSxLQUFLLENBQUMsS0FBVTtJQUM5QixJQUFJLEtBQUs7UUFDUCxNQUFNLElBQUksY0FBYyxDQUN0Qiw0Q0FBNEMsS0FBSyxFQUFFLEVBQ25ELEVBQUUsS0FBSyxFQUFFLEVBQ1QsS0FBSyxDQUNOLENBQUE7QUFDTCxDQUFDIn0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsc3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0cm9uL2ZhbHN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFMUMsTUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFVO0lBQzlCLElBQUksS0FBSztRQUNQLE1BQU0sSUFBSSxjQUFjLENBQUMsNENBQTRDLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7QUFDakcsQ0FBQyJ9
@@ -1,8 +1,8 @@
1
- import AssertionError from 'assertion-error';
2
1
  import { pathEqual as isPathEqual } from 'path-equal';
3
- import { notEqualMessage } from '../errors';
2
+ import { AssertionError } from '../errors';
3
+ import { notEqualMessage } from '../utils';
4
4
  export function pathEqual(actual, expected) {
5
5
  if (!isPathEqual(actual, expected))
6
- throw new AssertionError(notEqualMessage(actual, expected), { actual, expected }, pathEqual);
6
+ throw new AssertionError(notEqualMessage(actual, expected), { ssf: pathEqual });
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aEVxdWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9wYXRoRXF1YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLFNBQVMsSUFBSSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQWMsRUFBRSxRQUFnQjtJQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7UUFDaEMsTUFBTSxJQUFJLGNBQWMsQ0FDdEIsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFDakMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQ3BCLFNBQVMsQ0FBQyxDQUFBO0FBQ2hCLENBQUMifQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aEVxdWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9wYXRoRXF1YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsSUFBSSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRTFDLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBYyxFQUFFLFFBQWdCO0lBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztRQUNoQyxNQUFNLElBQUksY0FBYyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtBQUNuRixDQUFDIn0=
@@ -1,9 +1,6 @@
1
- import { tersify } from 'tersify';
2
- import AssertionError from 'assertion-error';
1
+ import { AssertionError } from '../errors';
2
+ import { notRejectedMessage } from '../utils';
3
3
  export function rejects(promise) {
4
- return promise.then(value => {
5
- throw new AssertionError(`Expected promise to reject, but it resolves with ${typeof value === 'string' ?
6
- `'${value}'` : tersify(value, { maxLength: Infinity })}`, { value }, rejects);
7
- }, () => { });
4
+ return promise.then(value => { throw new AssertionError(notRejectedMessage(value), { ssf: rejects }); }, () => { });
8
5
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3NlcnRyb24vcmVqZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2pDLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFBO0FBRTVDLE1BQU0sVUFBVSxPQUFPLENBQUMsT0FBcUI7SUFDM0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixLQUFLLENBQUMsRUFBRTtRQUNOLE1BQU0sSUFBSSxjQUFjLENBQ3RCLG9EQUFvRCxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQztZQUM3RSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFDMUQsRUFBRSxLQUFLLEVBQUUsRUFDVCxPQUFPLENBQUMsQ0FBQTtJQUNaLENBQUMsRUFDRCxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQ1YsQ0FBQTtBQUNILENBQUMifQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3NlcnRyb24vcmVqZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUU3QyxNQUFNLFVBQVUsT0FBTyxDQUFDLE9BQXFCO0lBQzNDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FDakIsS0FBSyxDQUFDLEVBQUUsR0FBRyxNQUFNLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQ2xGLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FDVixDQUFBO0FBQ0gsQ0FBQyJ9
@@ -1,5 +1,5 @@
1
1
  import isPromise from 'is-promise';
2
- import AssertionError from 'assertion-error';
2
+ import { FailOnOccurrence } from '../errors';
3
3
  /**
4
4
  * Repeat the specified function n times and return the last result.
5
5
  * If the result is a promise, it will run the function sequentially.
@@ -13,7 +13,7 @@ function repeatRecur(fn, i, times) {
13
13
  if (i === times)
14
14
  return result;
15
15
  if (isPromise(result)) {
16
- return result.then(() => repeatRecur(fn, i + 1, times), (e) => { throw new FailOnOccurrence(i, e); });
16
+ return result.then(() => repeatRecur(fn, i + 1, times), (e) => { throw new FailOnOccurrence(i, e, { ssf: repeat }); });
17
17
  }
18
18
  else {
19
19
  return repeatRecur(fn, i + 1, times);
@@ -22,14 +22,7 @@ function repeatRecur(fn, i, times) {
22
22
  catch (e) {
23
23
  if (e instanceof FailOnOccurrence)
24
24
  throw e;
25
- throw new FailOnOccurrence(i, e);
25
+ throw new FailOnOccurrence(i, e, { ssf: repeat });
26
26
  }
27
27
  }
28
- export class FailOnOccurrence extends AssertionError {
29
- constructor(occurrence, error) {
30
- super(`Failed on ${occurrence} occurrence`);
31
- this.occurrence = occurrence;
32
- this.error = error;
33
- }
34
- }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9yZXBlYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFBO0FBRTVDOzs7R0FHRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUksRUFBZ0MsRUFBRSxLQUFhO0lBQ3ZFLE9BQU8sV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFJLEVBQWdDLEVBQUUsQ0FBUyxFQUFFLEtBQWE7SUFDaEYsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFBO1FBQ25CLElBQUksQ0FBQyxLQUFLLEtBQUs7WUFBRSxPQUFPLE1BQWEsQ0FBQTtRQUVyQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsRUFDbkMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQ3JDLENBQUE7U0FDVDthQUNJO1lBQ0gsT0FBTyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDckM7S0FDRjtJQUNELE9BQU8sQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLFlBQVksZ0JBQWdCO1lBQUUsTUFBTSxDQUFDLENBQUE7UUFDMUMsTUFBTSxJQUFJLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUNqQztBQUNILENBQUM7QUFFRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsY0FBc0M7SUFDMUUsWUFBbUIsVUFBa0IsRUFBUyxLQUFVO1FBQ3RELEtBQUssQ0FBQyxhQUFhLFVBQVUsYUFBYSxDQUFDLENBQUE7UUFEMUIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQUs7SUFFeEQsQ0FBQztDQUNGIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9yZXBlYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU3Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFJLEVBQWdDLEVBQUUsS0FBYTtJQUN2RSxPQUFPLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ2xDLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBSSxFQUFnQyxFQUFFLENBQVMsRUFBRSxLQUFhO0lBQ2hGLElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQTtRQUNuQixJQUFJLENBQUMsS0FBSyxLQUFLO1lBQUUsT0FBTyxNQUFhLENBQUE7UUFFckMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUN0RCxDQUFBO1NBQ1Q7YUFDSTtZQUNILE9BQU8sV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3JDO0tBQ0Y7SUFDRCxPQUFPLENBQUMsRUFBRTtRQUNSLElBQUksQ0FBQyxZQUFZLGdCQUFnQjtZQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7S0FDbEQ7QUFDSCxDQUFDIn0=
@@ -1,12 +1,6 @@
1
- import { tersify } from 'tersify';
2
- import AssertionError from 'assertion-error';
1
+ import { AssertionError } from '../errors';
2
+ import { notResolvedMessage } from '../utils';
3
3
  export function resolves(promise) {
4
- return promise.then(() => { }, error => {
5
- throw new AssertionError(`Expected promise to resolve, but it rejects with ${typeof error === 'string' ?
6
- `'${error}'` :
7
- error instanceof Error ?
8
- error :
9
- tersify(error, { maxLength: Infinity })}`, { error }, resolves);
10
- });
4
+ return promise.then(() => { }, error => { throw new AssertionError(notResolvedMessage(error), { ssf: resolves }); });
11
5
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0cm9uL3Jlc29sdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDakMsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUE7QUFFNUMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUFxQjtJQUM1QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQ2pCLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFDVCxLQUFLLENBQUMsRUFBRTtRQUNOLE1BQU0sSUFBSSxjQUFjLENBQUMsb0RBQW9ELE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ3RHLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNkLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLENBQUM7Z0JBQ1AsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLENBQ2pFLENBQUE7SUFDSCxDQUFDLENBQ0YsQ0FBQTtBQUNILENBQUMifQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0cm9uL3Jlc29sdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRTdDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBcUI7SUFDNUMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQ1QsS0FBSyxDQUFDLEVBQUUsR0FBRyxNQUFNLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQ3BGLENBQUE7QUFDSCxDQUFDIn0=
@@ -1,6 +1,6 @@
1
- import AssertionError from 'assertion-error';
2
1
  import { createSatisfier } from 'satisfier';
3
- import { notSatisfiedMessage } from '../errors';
2
+ import { AssertionError } from '../errors';
3
+ import { notSatisfiedMessage } from '../utils';
4
4
  /**
5
5
  * Check if `actual` satisfies criteria in `expected`.
6
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.
@@ -8,7 +8,7 @@ import { notSatisfiedMessage } from '../errors';
8
8
  export function satisfies(actual, expected) {
9
9
  const diff = createSatisfier(expected).exec(actual);
10
10
  if (diff) {
11
- throw new AssertionError(notSatisfiedMessage(diff), { diff }, satisfies);
11
+ throw new AssertionError(notSatisfiedMessage(diff), { ssf: satisfies });
12
12
  }
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F0aXNmaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9zYXRpc2ZpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFXL0M7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBUyxNQUFjLEVBQUUsUUFBb0M7SUFDcEYsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLFFBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksRUFBRTtRQUNSLE1BQU0sSUFBSSxjQUFjLENBQ3RCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUN6QixFQUFFLElBQUksRUFBRSxFQUNSLFNBQVMsQ0FDVixDQUFBO0tBQ0Y7QUFDSCxDQUFDIn0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F0aXNmaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9zYXRpc2ZpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQWtCOUM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBUyxNQUFjLEVBQUUsUUFBb0M7SUFDcEYsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLFFBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksRUFBRTtRQUNSLE1BQU0sSUFBSSxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtLQUN4RTtBQUNILENBQUMifQ==
@@ -1,33 +1,29 @@
1
- import AssertionError from 'assertion-error';
2
1
  import isPromise from 'is-promise';
3
- import { notRejectedMessage, notThrownMessage, returnNotRejectedMessage, unexpectedErrorMessage } from '../errors';
4
- import { isErrorConstructor } from '../errors/util';
2
+ import { AssertionError } from '../errors';
3
+ import { isErrorConstructor, notRejectedMessage, notThrownMessage, unexpectedErrorMessage } from '../utils';
5
4
  export function throws(value, validator) {
6
5
  if (typeof value !== 'function' && !isPromise(value)) {
7
- throw new AssertionError('`assertron.throws()` must be called with a function or promise.', undefined, throws);
6
+ throw new AssertionError('`assertron.throws()` must be called with a function or promise.', { ssf: throws });
8
7
  }
9
- if (isPromise(value)) {
10
- return value.then(value => {
11
- throw new AssertionError(notRejectedMessage(value), { value }, throws);
12
- }, err => {
13
- validateError(validator, err);
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
14
  return err;
15
- });
16
- }
17
- const { threw, err, result } = tryCatch(value);
18
- if (threw) {
19
- validateError(validator, err);
20
- return err;
15
+ }
16
+ value = result;
21
17
  }
22
- if (isPromise(result)) {
23
- return result.then(value => {
24
- throw new AssertionError(returnNotRejectedMessage(value), { value }, throws);
25
- }, err => {
26
- validateError(validator, err);
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
+ }
27
23
  return err;
28
24
  });
29
25
  }
30
- throw new AssertionError(notThrownMessage(result), { value: result }, throws);
26
+ throw new AssertionError(notThrownMessage(value), { ssf: throws });
31
27
  }
32
28
  function tryCatch(fn) {
33
29
  let result;
@@ -42,16 +38,14 @@ function tryCatch(fn) {
42
38
  }
43
39
  return { threw, err, result };
44
40
  }
45
- function validateError(validator, error) {
46
- if (validator) {
47
- if (isErrorConstructor(validator)) {
48
- if (!(error instanceof validator))
49
- throw new AssertionError(unexpectedErrorMessage(error, validator), { actual: error, expected: validator }, throws);
50
- }
51
- else if (!validator(error)) {
52
- // console.log('msg:', unexpectedErrorMessage(error, validator))
53
- throw new AssertionError(unexpectedErrorMessage(error, validator), { actual: error, expected: validator }, throws);
54
- }
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);
55
49
  }
56
50
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi90aHJvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBb0Msa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNcEQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUF3RCxFQUFFLFNBQWtEO0lBQ2pJLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3BELE1BQU0sSUFBSSxjQUFjLENBQ3RCLGlFQUFpRSxFQUNqRSxTQUFTLEVBQ1QsTUFBTSxDQUNQLENBQUE7S0FDRjtJQUVELElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixLQUFLLENBQUMsRUFBRTtZQUNOLE1BQU0sSUFBSSxjQUFjLENBQ3RCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUN6QixFQUFFLEtBQUssRUFBRSxFQUNULE1BQU0sQ0FBQyxDQUFBO1FBQ1gsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0osYUFBYSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUM3QixPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUMsQ0FDRixDQUFBO0tBQ0Y7SUFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUMsSUFBSSxLQUFLLEVBQUU7UUFDVCxhQUFhLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzdCLE9BQU8sR0FBRyxDQUFBO0tBQ1g7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLEtBQUssQ0FBQyxFQUFFO1lBQ04sTUFBTSxJQUFJLGNBQWMsQ0FDdEIsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQy9CLEVBQUUsS0FBSyxFQUFFLEVBQ1QsTUFBTSxDQUFDLENBQUE7UUFDWCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDSixhQUFhLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQzdCLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQyxDQUNGLENBQUE7S0FDRjtJQUVELE1BQU0sSUFBSSxjQUFjLENBQ3RCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUN4QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFDakIsTUFBTSxDQUNQLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsRUFBYTtJQUM3QixJQUFJLE1BQU0sQ0FBQTtJQUNWLElBQUksR0FBRyxDQUFBO0lBQ1AsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ2pCLElBQUk7UUFDRixNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUE7S0FDZDtJQUNELE9BQU8sQ0FBQyxFQUFFO1FBQ1IsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUNQLEtBQUssR0FBRyxJQUFJLENBQUE7S0FDYjtJQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQy9CLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxTQUE2RCxFQUFFLEtBQVU7SUFDOUYsSUFBSSxTQUFTLEVBQUU7UUFDYixJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxTQUFTLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxjQUFjLENBQ3RCLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFDeEMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFDdEMsTUFBTSxDQUNQLENBQUE7U0FDSjthQUNJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsZ0VBQWdFO1lBQ2hFLE1BQU0sSUFBSSxjQUFjLENBQ3RCLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFDeEMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFDdEMsTUFBTSxDQUNQLENBQUE7U0FDRjtLQUNGO0FBQ0gsQ0FBQyJ9
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi90aHJvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBTTVHLE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBd0QsRUFBRSxTQUFrRDtJQUNqSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNwRCxNQUFNLElBQUksY0FBYyxDQUN0QixpRUFBaUUsRUFDakUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQ2hCLENBQUE7S0FDRjtJQUVELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDckIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzlDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxjQUFjLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLElBQUksY0FBYyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO2FBQ2xGO1lBQ0QsT0FBTyxHQUFHLENBQUE7U0FDWDtRQUNELEtBQUssR0FBRyxNQUFNLENBQUM7S0FDaEI7SUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNwQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2YsS0FBSyxDQUFDLEVBQUUsR0FBRyxNQUFNLElBQUksY0FBYyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQ2pGLEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxjQUFjLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLElBQUksY0FBYyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO2FBQ2xGO1lBQ0QsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLENBQ0YsQ0FBQTtLQUNGO0lBRUQsTUFBTSxJQUFJLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQ3BFLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxFQUFhO0lBQzdCLElBQUksTUFBTSxDQUFBO0lBQ1YsSUFBSSxHQUFHLENBQUE7SUFDUCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDakIsSUFBSTtRQUNGLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQTtLQUNkO0lBQ0QsT0FBTyxDQUFDLEVBQUU7UUFDUixHQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ1AsS0FBSyxHQUFHLElBQUksQ0FBQTtLQUNiO0lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUE7QUFDL0IsQ0FBQztBQUNELFNBQVMsY0FBYyxDQUFDLFNBQTZELEVBQUUsS0FBVTtJQUMvRixJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRTVCLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDakMsT0FBTyxDQUFDLENBQUMsS0FBSyxZQUFZLFNBQVMsQ0FBQyxDQUFBO0tBQ3JDO1NBQ0k7UUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO0tBQ3pCO0FBQ0gsQ0FBQyJ9
@@ -1,6 +1,6 @@
1
- import AssertionError from 'assertion-error';
1
+ import { AssertionError } from '../errors';
2
2
  export function truthy(value) {
3
3
  if (!value)
4
- throw new AssertionError(`Expected value to be truthy, but received ${value}`, { value }, truthy);
4
+ throw new AssertionError(`Expected value to be truthy, but received ${value}`, { ssf: truthy });
5
5
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1dGh5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi90cnV0aHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUFVO0lBQy9CLElBQUksQ0FBQyxLQUFLO1FBQUUsTUFBTSxJQUFJLGNBQWMsQ0FDbEMsNkNBQTZDLEtBQUssRUFBRSxFQUNwRCxFQUFFLEtBQUssRUFBRSxFQUNULE1BQU0sQ0FDUCxDQUFBO0FBQ0gsQ0FBQyJ9
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 CHANGED
@@ -1,5 +1,6 @@
1
1
  import { assertron } from './assertron';
2
- export * from './assertron';
3
2
  export * from './assert-order';
3
+ export * from './errors';
4
+ export * from './assertron';
4
5
  export default assertron;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV2QyxjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGVBQWUsU0FBUyxDQUFBIn0=
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==
@@ -2,4 +2,4 @@ import { tersify } from 'tersify';
2
2
  export function notThrownMessage(value) {
3
3
  return `Expect function to throw, but it returned '${tersify(value)}' instead.`;
4
4
  }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90VGhyb3duTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvbm90VGhyb3duTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRWpDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFVO0lBQ3pDLE9BQU8sOENBQThDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFBO0FBQ2pGLENBQUMifQ==
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==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "assertron",
3
- "version": "8.0.0",
4
- "description": "A supplementary assertion cjsrary",
3
+ "version": "9.0.0",
4
+ "description": "A supplementary assertion library",
5
5
  "homepage": "https://github.com/unional/assertron",
6
6
  "bugs": {
7
7
  "url": "https://github.com/unional/assertron/issues"
@@ -16,7 +16,6 @@
16
16
  "email": "homawong@gmail.com"
17
17
  },
18
18
  "sideEffects": false,
19
- "type": "module",
20
19
  "main": "cjs/index.js",
21
20
  "module": "esm/index.js",
22
21
  "jsnext:main": "esm/index.js",
@@ -51,34 +50,34 @@
51
50
  }
52
51
  },
53
52
  "dependencies": {
54
- "assertion-error": "^1.1.0",
55
53
  "is-node": "^1.0.2",
56
54
  "is-promise": "^4.0.0",
55
+ "iso-error": "^4.1.0",
57
56
  "path-equal": "^1.1.1",
58
57
  "satisfier": "^5.1.1",
59
58
  "tersify": "^3.7.9",
60
59
  "tslib": "^2.3.1",
61
- "type-plus": "^3.13.1"
60
+ "type-plus": "^3.14.0"
62
61
  },
63
62
  "devDependencies": {
64
- "@babel/core": "^7.12.16",
65
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.13",
66
- "@babel/plugin-proposal-optional-chaining": "^7.12.16",
67
- "@babel/preset-env": "^7.12.16",
68
- "@babel/preset-typescript": "^7.12.16",
63
+ "@babel/core": "^7.16.5",
64
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5",
65
+ "@babel/plugin-proposal-optional-chaining": "^7.16.5",
66
+ "@babel/preset-env": "^7.16.5",
67
+ "@babel/preset-typescript": "^7.16.5",
69
68
  "@commitlint/cli": "^15.0.0",
70
69
  "@commitlint/config-conventional": "^15.0.0",
71
70
  "@types/jest": "^27.0.3",
72
- "@types/lodash": "^4.14.149",
73
- "@types/node": "^16.11.11",
74
- "@typescript-eslint/eslint-plugin": "^5.5.0",
75
- "@typescript-eslint/parser": "^5.5.0",
76
- "babel-jest": "^27.4.2",
71
+ "@types/lodash": "^4.14.178",
72
+ "@types/node": "^17.0.4",
73
+ "@typescript-eslint/eslint-plugin": "^5.8.0",
74
+ "@typescript-eslint/parser": "^5.8.0",
75
+ "babel-jest": "^27.4.5",
77
76
  "dependency-check": "^4.1.0",
78
- "eslint": "^8.4.0",
77
+ "eslint": "^8.5.0",
79
78
  "eslint-plugin-harmony": "^6.0.0",
80
79
  "husky": "^7.0.4",
81
- "jest": "^27.4.3",
80
+ "jest": "^27.4.5",
82
81
  "jest-junit": "^13.0.0",
83
82
  "jest-progress-tracker": "^3.0.1",
84
83
  "jest-validate": "^27.4.2",
@@ -88,7 +87,7 @@
88
87
  "jest-watch-typeahead": "^1.0.0",
89
88
  "node-supported-releases": "^0.0.0",
90
89
  "rimraf": "^3.0.2",
91
- "typescript": "^4.1.5",
90
+ "typescript": "^4.5.4",
92
91
  "update-notifier": "^5.1.0"
93
92
  }
94
93
  }
@@ -1,6 +1,5 @@
1
1
  import t from 'assert';
2
- import AssertionError from 'assertion-error';
3
- import a, { AssertOrder, State } from '..';
2
+ import a, { AssertOrder, InvalidOrder, State } from '..';
4
3
 
5
4
  test('is() expecting 1', () => {
6
5
  const order = new AssertOrder()
@@ -255,7 +254,7 @@ test(`onAny() throws if all assert functions throws`, () => {
255
254
  test('AssertOrder(0) accepts no step >= 1', () => {
256
255
  const order = new AssertOrder(0)
257
256
 
258
- const err = a.throws(() => order.once(1)) as AssertionError<{ state: any }>
257
+ const err = a.throws(() => order.once(1), InvalidOrder)
259
258
 
260
259
  t.strictEqual(err.state.maxStep, 0)
261
260
  })
@@ -265,7 +264,7 @@ test('AssertOrder(1) accepts step 1 but not 2', () => {
265
264
 
266
265
  order.once(1)
267
266
 
268
- const err = a.throws(() => order.once(2)) as AssertionError<{ state: any }>
267
+ const err = a.throws(() => order.once(2), InvalidOrder)
269
268
 
270
269
  t.strictEqual(err.state.maxStep, 1)
271
270
  })
@@ -286,7 +285,7 @@ test('end() would mark to not accepting more steps if plan is not defined', () =
286
285
  let order = new AssertOrder()
287
286
  order.end()
288
287
 
289
- let err = a.throws(() => order.once(1)) as AssertionError<{ state: any }>
288
+ let err = a.throws(() => order.once(1), InvalidOrder)
290
289
 
291
290
  t.strictEqual(err.state.maxStep, 0)
292
291
 
@@ -294,7 +293,7 @@ test('end() would mark to not accepting more steps if plan is not defined', () =
294
293
  order.once(1)
295
294
  order.end()
296
295
 
297
- err = a.throws(() => order.once(2)) as AssertionError<{ state: any }>
296
+ err = a.throws(() => order.once(2), InvalidOrder)
298
297
 
299
298
  t.strictEqual(err.state.maxStep, 1)
300
299
  })
@@ -310,7 +309,7 @@ test('end() throws if planned step not met', () => {
310
309
  const order = new AssertOrder(2)
311
310
  order.once(1)
312
311
 
313
- const err = a.throws(() => order.end()) as AssertionError<{ state: any }>
312
+ const err = a.throws(() => order.end(), InvalidOrder)
314
313
 
315
314
  t.strictEqual(err.state.maxStep, 2)
316
315
  })
@@ -331,7 +330,7 @@ test('end(n) waits n milliseconds and fail when step not met', async () => {
331
330
  setTimeout(() => {
332
331
  order.once(1)
333
332
  }, 10)
334
- const err = await a.throws(order.end(1)) as AssertionError<{ state: any }>
333
+ const err = await a.throws(order.end(1), InvalidOrder)
335
334
 
336
335
  t.strictEqual(err.state.maxStep, 1)
337
336
  })
@@ -421,7 +420,7 @@ test('wait(step, callback) will execute the async callback but not wait for it a
421
420
  const o2 = new AssertOrder(1)
422
421
 
423
422
  order.wait(1, () => {
424
- return new Promise(a => {
423
+ return new Promise<void>(a => {
425
424
  setImmediate(() => {
426
425
  o2.once(1)
427
426
  a()
@@ -434,8 +433,8 @@ test('wait(step, callback) will execute the async callback but not wait for it a
434
433
  return o2.end(100)
435
434
  })
436
435
 
437
- async function assertOrderThrows(fn, state: Partial<State>, method, ...args) {
438
- const err = await a.throws(fn) as AssertionError<{ state: any, method: string, args: any[] }>
436
+ async function assertOrderThrows(fn: () => any, state: Partial<State>, method: string, ...args: any[]) {
437
+ const err = await a.throws(fn, InvalidOrder)
439
438
  t.strictEqual(err.method, method)
440
439
  t.deepStrictEqual(err.args, args)
441
440
  if (state.step) {
@@ -31,7 +31,7 @@ export class AssertOrder {
31
31
  */
32
32
  not(step: number) {
33
33
  if (this.state.isValid(step)) {
34
- throw new InvalidOrder(this.state.get(), 'not', this.not, step)
34
+ throw new InvalidOrder(this.state.get(), 'not', [step], { ssf: this.not })
35
35
  }
36
36
  }
37
37
 
@@ -73,13 +73,13 @@ export class AssertOrder {
73
73
  return this.state.moveSubStep()
74
74
  }
75
75
  else
76
- throw new InvalidOrder(this.state.get(), 'atLeastOnce', this.atLeastOnce, step)
76
+ throw new InvalidOrder(this.state.get(), 'atLeastOnce', [step], { ssf: this.atLeastOnce })
77
77
  }
78
78
 
79
79
  any(steps: number[]) {
80
80
  const index = steps.indexOf(this.state.step)
81
81
  if (index === -1)
82
- throw new InvalidOrder(this.state.get(), 'any', this.any, steps)
82
+ throw new InvalidOrder(this.state.get(), 'any', [steps], { ssf: this.any })
83
83
 
84
84
  this.state.move()
85
85
  return steps[index]
@@ -121,12 +121,12 @@ export class AssertOrder {
121
121
  }
122
122
 
123
123
  if (this.state.isAccepting()) {
124
- throw new InvalidOrder(this.state.get(), 'end', this.end)
124
+ throw new InvalidOrder(this.state.get(), 'end', [], { ssf: this.end })
125
125
  }
126
126
  }
127
127
  exactly(step: number, times: number) {
128
128
  if (this.state.isNotValid(step))
129
- throw new InvalidOrder(this.state.get(), 'exactly', this.exactly, step, times)
129
+ throw new InvalidOrder(this.state.get(), 'exactly', [step, times], { ssf: this.exactly })
130
130
 
131
131
  if (this.state.maxSubStep === undefined) {
132
132
  this.state.maxSubStep = times
@@ -145,7 +145,7 @@ export class AssertOrder {
145
145
  }
146
146
  private assert(method: string, step: number) {
147
147
  if (this.state.isNotValid(step)) {
148
- throw new InvalidOrder(this.state.get(), method, (this as any)[method], step)
148
+ throw new InvalidOrder(this.state.get(), method, [step], { ssf: (this as any)[method] })
149
149
  }
150
150
  }
151
151
  }
@@ -1,10 +1,9 @@
1
- import AssertionError from 'assertion-error'
2
- import { State } from './interfaces'
1
+ import { AssertionError } from '../errors'
2
+ import { State } from './types'
3
3
 
4
- export class InvalidOrder extends AssertionError<{ method: string, state: State, args: any[] }> {
5
- constructor(state: State, method: string, ssf: (...args: any[]) => any, ...args: any[]) {
6
- const message = method === 'end' ? getEndMessage(state) : getExpectingMessage(state, method, args)
7
- super(message, { method, state, args }, ssf)
4
+ export class InvalidOrder extends AssertionError {
5
+ constructor(public state: State, public method: string, public args: any[], options: AssertionError.Options) {
6
+ super(method === 'end' ? getEndMessage(state) : getExpectingMessage(state, method, args), options)
8
7
  }
9
8
  }
10
9
 
@@ -20,9 +19,8 @@ function getExpectingCalls(state: State) {
20
19
  let message: string
21
20
  if (state.subStep === 0) {
22
21
  const methods = ['is', 'once', 'any']
23
- message = methods.map(m => ['any'].indexOf(m) === -1 ?
24
- `'${m}(${state.step})'` :
25
- `'${m}([${state.step}])'`
22
+ message = methods.map(
23
+ m => `'${m}(${['any'].indexOf(m) === -1 ? state.step : `[${state.step}]`})'`
26
24
  ).join(', ')
27
25
  }
28
26
  else {
@@ -1,11 +1,10 @@
1
1
  import isNode from 'is-node'
2
- import { State } from './interfaces'
2
+ import { State } from './types'
3
3
 
4
4
  // istanbul ignore next
5
5
  function nodeVersionIsOrAbove(major: number, minor = 0, patch = 0) {
6
6
  // without this, systemJS will complain `process is not defined`
7
- if (!global.process)
8
- return false
7
+ if (!global.process) return false
9
8
  const versionString = process.version.startsWith('v') ? process.version.slice(1) : process.version
10
9
  const [actualMajor, actualMinor, actualPatch] = versionString.split('.').map(s => parseInt(s, 10))
11
10
  const checking = major * 1000 * 1000 + minor * 1000 + patch