hein 1.4.2 → 2.0.0-alpha.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 (303) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/ESM_MIGRATION_NOTES.md +6 -0
  3. package/README.md +46 -7
  4. package/dist/assert-9EsvfQwn.d.cts +483 -0
  5. package/dist/assert-9EsvfQwn.d.cts.map +1 -0
  6. package/dist/assert-B_vcZS90.d.ts +481 -0
  7. package/dist/assert-B_vcZS90.d.ts.map +1 -0
  8. package/dist/assert-DZjgWjOw.cjs +1626 -0
  9. package/dist/assert-DZjgWjOw.cjs.map +1 -0
  10. package/dist/assert-kFXp7i_B.js +1260 -0
  11. package/dist/assert-kFXp7i_B.js.map +1 -0
  12. package/dist/assert.cjs +53 -0
  13. package/dist/assert.d.cts +3 -0
  14. package/dist/assert.d.ts +3 -27
  15. package/dist/assert.js +3 -84
  16. package/dist/chunk-CTAAG5j7.js +13 -0
  17. package/dist/expect.types-DPl6xY56.d.ts +99 -0
  18. package/dist/expect.types-DPl6xY56.d.ts.map +1 -0
  19. package/dist/expect.types-s8icgWp5.d.cts +99 -0
  20. package/dist/expect.types-s8icgWp5.d.cts.map +1 -0
  21. package/dist/expect.types.cjs +0 -0
  22. package/dist/expect.types.d.cts +3 -0
  23. package/dist/expect.types.d.ts +3 -66
  24. package/dist/expect.types.js +1 -4
  25. package/dist/index.cjs +596 -0
  26. package/dist/index.cjs.map +1 -0
  27. package/dist/index.d.cts +16 -0
  28. package/dist/index.d.cts.map +1 -0
  29. package/dist/index.d.ts +15 -8
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +573 -27
  32. package/dist/index.js.map +1 -1
  33. package/dist/throws-BrCCeBBl.d.ts +42 -0
  34. package/dist/throws-BrCCeBBl.d.ts.map +1 -0
  35. package/dist/throws-D7JsW4NM.d.cts +40 -0
  36. package/dist/throws-D7JsW4NM.d.cts.map +1 -0
  37. package/eslint.config.mjs +13 -0
  38. package/package.json +31 -18
  39. package/tsdown.config.ts +9 -0
  40. package/dist/assert/deep-equal.d.ts +0 -2
  41. package/dist/assert/deep-equal.d.ts.map +0 -1
  42. package/dist/assert/deep-equal.js +0 -26
  43. package/dist/assert/deep-equal.js.map +0 -1
  44. package/dist/assert/deep-has-property.d.ts +0 -20
  45. package/dist/assert/deep-has-property.d.ts.map +0 -1
  46. package/dist/assert/deep-has-property.js +0 -50
  47. package/dist/assert/deep-has-property.js.map +0 -1
  48. package/dist/assert/ends-with.d.ts +0 -11
  49. package/dist/assert/ends-with.d.ts.map +0 -1
  50. package/dist/assert/ends-with.js +0 -30
  51. package/dist/assert/ends-with.js.map +0 -1
  52. package/dist/assert/equal.d.ts +0 -9
  53. package/dist/assert/equal.d.ts.map +0 -1
  54. package/dist/assert/equal.js +0 -21
  55. package/dist/assert/equal.js.map +0 -1
  56. package/dist/assert/greater-than-equal.d.ts +0 -9
  57. package/dist/assert/greater-than-equal.d.ts.map +0 -1
  58. package/dist/assert/greater-than-equal.js +0 -20
  59. package/dist/assert/greater-than-equal.js.map +0 -1
  60. package/dist/assert/greater-than.d.ts +0 -9
  61. package/dist/assert/greater-than.d.ts.map +0 -1
  62. package/dist/assert/greater-than.js +0 -20
  63. package/dist/assert/greater-than.js.map +0 -1
  64. package/dist/assert/has-keys.d.ts +0 -14
  65. package/dist/assert/has-keys.d.ts.map +0 -1
  66. package/dist/assert/has-keys.js +0 -47
  67. package/dist/assert/has-keys.js.map +0 -1
  68. package/dist/assert/has-members.d.ts +0 -46
  69. package/dist/assert/has-members.d.ts.map +0 -1
  70. package/dist/assert/has-members.js +0 -58
  71. package/dist/assert/has-members.js.map +0 -1
  72. package/dist/assert/has-property.d.ts +0 -20
  73. package/dist/assert/has-property.d.ts.map +0 -1
  74. package/dist/assert/has-property.js +0 -47
  75. package/dist/assert/has-property.js.map +0 -1
  76. package/dist/assert/has-size.d.ts +0 -40
  77. package/dist/assert/has-size.d.ts.map +0 -1
  78. package/dist/assert/has-size.js +0 -68
  79. package/dist/assert/has-size.js.map +0 -1
  80. package/dist/assert/in-ballpark.d.ts +0 -14
  81. package/dist/assert/in-ballpark.d.ts.map +0 -1
  82. package/dist/assert/in-ballpark.js +0 -26
  83. package/dist/assert/in-ballpark.js.map +0 -1
  84. package/dist/assert/includes.d.ts +0 -22
  85. package/dist/assert/includes.d.ts.map +0 -1
  86. package/dist/assert/includes.js +0 -32
  87. package/dist/assert/includes.js.map +0 -1
  88. package/dist/assert/instance-of.d.ts +0 -13
  89. package/dist/assert/instance-of.d.ts.map +0 -1
  90. package/dist/assert/instance-of.js +0 -35
  91. package/dist/assert/instance-of.js.map +0 -1
  92. package/dist/assert/is-after.d.ts +0 -9
  93. package/dist/assert/is-after.d.ts.map +0 -1
  94. package/dist/assert/is-after.js +0 -27
  95. package/dist/assert/is-after.js.map +0 -1
  96. package/dist/assert/is-before.d.ts +0 -9
  97. package/dist/assert/is-before.d.ts.map +0 -1
  98. package/dist/assert/is-before.js +0 -27
  99. package/dist/assert/is-before.js.map +0 -1
  100. package/dist/assert/is-between.d.ts +0 -13
  101. package/dist/assert/is-between.d.ts.map +0 -1
  102. package/dist/assert/is-between.js +0 -38
  103. package/dist/assert/is-between.js.map +0 -1
  104. package/dist/assert/is-empty.d.ts +0 -29
  105. package/dist/assert/is-empty.d.ts.map +0 -1
  106. package/dist/assert/is-empty.js +0 -48
  107. package/dist/assert/is-empty.js.map +0 -1
  108. package/dist/assert/is-type.d.ts +0 -94
  109. package/dist/assert/is-type.d.ts.map +0 -1
  110. package/dist/assert/is-type.js +0 -32
  111. package/dist/assert/is-type.js.map +0 -1
  112. package/dist/assert/less-than-equal.d.ts +0 -9
  113. package/dist/assert/less-than-equal.d.ts.map +0 -1
  114. package/dist/assert/less-than-equal.js +0 -27
  115. package/dist/assert/less-than-equal.js.map +0 -1
  116. package/dist/assert/less-than.d.ts +0 -9
  117. package/dist/assert/less-than.d.ts.map +0 -1
  118. package/dist/assert/less-than.js +0 -20
  119. package/dist/assert/less-than.js.map +0 -1
  120. package/dist/assert/match.d.ts +0 -13
  121. package/dist/assert/match.d.ts.map +0 -1
  122. package/dist/assert/match.js +0 -29
  123. package/dist/assert/match.js.map +0 -1
  124. package/dist/assert/rejects.d.ts +0 -33
  125. package/dist/assert/rejects.d.ts.map +0 -1
  126. package/dist/assert/rejects.js +0 -48
  127. package/dist/assert/rejects.js.map +0 -1
  128. package/dist/assert/round-to.d.ts +0 -13
  129. package/dist/assert/round-to.d.ts.map +0 -1
  130. package/dist/assert/round-to.js +0 -43
  131. package/dist/assert/round-to.js.map +0 -1
  132. package/dist/assert/starts-with.d.ts +0 -12
  133. package/dist/assert/starts-with.d.ts.map +0 -1
  134. package/dist/assert/starts-with.js +0 -30
  135. package/dist/assert/starts-with.js.map +0 -1
  136. package/dist/assert/throws.d.ts +0 -33
  137. package/dist/assert/throws.d.ts.map +0 -1
  138. package/dist/assert/throws.js +0 -40
  139. package/dist/assert/throws.js.map +0 -1
  140. package/dist/assert.d.ts.map +0 -1
  141. package/dist/assert.js.map +0 -1
  142. package/dist/expect/after.d.ts +0 -11
  143. package/dist/expect/after.d.ts.map +0 -1
  144. package/dist/expect/after.js +0 -18
  145. package/dist/expect/after.js.map +0 -1
  146. package/dist/expect/ballpark.d.ts +0 -12
  147. package/dist/expect/ballpark.d.ts.map +0 -1
  148. package/dist/expect/ballpark.js +0 -18
  149. package/dist/expect/ballpark.js.map +0 -1
  150. package/dist/expect/before.d.ts +0 -11
  151. package/dist/expect/before.d.ts.map +0 -1
  152. package/dist/expect/before.js +0 -18
  153. package/dist/expect/before.js.map +0 -1
  154. package/dist/expect/between.d.ts +0 -21
  155. package/dist/expect/between.d.ts.map +0 -1
  156. package/dist/expect/between.js +0 -18
  157. package/dist/expect/between.js.map +0 -1
  158. package/dist/expect/empty.d.ts +0 -16
  159. package/dist/expect/empty.d.ts.map +0 -1
  160. package/dist/expect/empty.js +0 -18
  161. package/dist/expect/empty.js.map +0 -1
  162. package/dist/expect/end-with.d.ts +0 -12
  163. package/dist/expect/end-with.d.ts.map +0 -1
  164. package/dist/expect/end-with.js +0 -18
  165. package/dist/expect/end-with.js.map +0 -1
  166. package/dist/expect/eql.d.ts +0 -11
  167. package/dist/expect/eql.d.ts.map +0 -1
  168. package/dist/expect/eql.js +0 -22
  169. package/dist/expect/eql.js.map +0 -1
  170. package/dist/expect/equal-shorthand.d.ts +0 -14
  171. package/dist/expect/equal-shorthand.d.ts.map +0 -1
  172. package/dist/expect/equal-shorthand.js +0 -34
  173. package/dist/expect/equal-shorthand.js.map +0 -1
  174. package/dist/expect/equal.d.ts +0 -14
  175. package/dist/expect/equal.d.ts.map +0 -1
  176. package/dist/expect/equal.js +0 -28
  177. package/dist/expect/equal.js.map +0 -1
  178. package/dist/expect/excluding.d.ts +0 -11
  179. package/dist/expect/excluding.d.ts.map +0 -1
  180. package/dist/expect/excluding.js +0 -14
  181. package/dist/expect/excluding.js.map +0 -1
  182. package/dist/expect/greater-than-equal.d.ts +0 -32
  183. package/dist/expect/greater-than-equal.d.ts.map +0 -1
  184. package/dist/expect/greater-than-equal.js +0 -20
  185. package/dist/expect/greater-than-equal.js.map +0 -1
  186. package/dist/expect/greater-than.d.ts +0 -32
  187. package/dist/expect/greater-than.d.ts.map +0 -1
  188. package/dist/expect/greater-than.js +0 -20
  189. package/dist/expect/greater-than.js.map +0 -1
  190. package/dist/expect/has-property.d.ts +0 -36
  191. package/dist/expect/has-property.d.ts.map +0 -1
  192. package/dist/expect/has-property.js +0 -22
  193. package/dist/expect/has-property.js.map +0 -1
  194. package/dist/expect/include.d.ts +0 -25
  195. package/dist/expect/include.d.ts.map +0 -1
  196. package/dist/expect/include.js +0 -22
  197. package/dist/expect/include.js.map +0 -1
  198. package/dist/expect/instance-of-shorthand.d.ts +0 -34
  199. package/dist/expect/instance-of-shorthand.d.ts.map +0 -1
  200. package/dist/expect/instance-of-shorthand.js +0 -22
  201. package/dist/expect/instance-of-shorthand.js.map +0 -1
  202. package/dist/expect/instance-of.d.ts +0 -11
  203. package/dist/expect/instance-of.d.ts.map +0 -1
  204. package/dist/expect/instance-of.js +0 -18
  205. package/dist/expect/instance-of.js.map +0 -1
  206. package/dist/expect/keys.d.ts +0 -17
  207. package/dist/expect/keys.d.ts.map +0 -1
  208. package/dist/expect/keys.js +0 -18
  209. package/dist/expect/keys.js.map +0 -1
  210. package/dist/expect/length.d.ts +0 -28
  211. package/dist/expect/length.d.ts.map +0 -1
  212. package/dist/expect/length.js +0 -19
  213. package/dist/expect/length.js.map +0 -1
  214. package/dist/expect/less-than-equal.d.ts +0 -32
  215. package/dist/expect/less-than-equal.d.ts.map +0 -1
  216. package/dist/expect/less-than-equal.js +0 -20
  217. package/dist/expect/less-than-equal.js.map +0 -1
  218. package/dist/expect/less-than.d.ts +0 -32
  219. package/dist/expect/less-than.d.ts.map +0 -1
  220. package/dist/expect/less-than.js +0 -20
  221. package/dist/expect/less-than.js.map +0 -1
  222. package/dist/expect/match.d.ts +0 -10
  223. package/dist/expect/match.d.ts.map +0 -1
  224. package/dist/expect/match.js +0 -18
  225. package/dist/expect/match.js.map +0 -1
  226. package/dist/expect/members.d.ts +0 -20
  227. package/dist/expect/members.d.ts.map +0 -1
  228. package/dist/expect/members.js +0 -32
  229. package/dist/expect/members.js.map +0 -1
  230. package/dist/expect/reject.d.ts +0 -12
  231. package/dist/expect/reject.d.ts.map +0 -1
  232. package/dist/expect/reject.js +0 -13
  233. package/dist/expect/reject.js.map +0 -1
  234. package/dist/expect/round-to.d.ts +0 -12
  235. package/dist/expect/round-to.d.ts.map +0 -1
  236. package/dist/expect/round-to.js +0 -18
  237. package/dist/expect/round-to.js.map +0 -1
  238. package/dist/expect/start-with.d.ts +0 -12
  239. package/dist/expect/start-with.d.ts.map +0 -1
  240. package/dist/expect/start-with.js +0 -18
  241. package/dist/expect/start-with.js.map +0 -1
  242. package/dist/expect/throw.d.ts +0 -12
  243. package/dist/expect/throw.d.ts.map +0 -1
  244. package/dist/expect/throw.js +0 -13
  245. package/dist/expect/throw.js.map +0 -1
  246. package/dist/expect/type-shorthand.d.ts +0 -66
  247. package/dist/expect/type-shorthand.d.ts.map +0 -1
  248. package/dist/expect/type-shorthand.js +0 -34
  249. package/dist/expect/type-shorthand.js.map +0 -1
  250. package/dist/expect/type.d.ts +0 -10
  251. package/dist/expect/type.d.ts.map +0 -1
  252. package/dist/expect/type.js +0 -18
  253. package/dist/expect/type.js.map +0 -1
  254. package/dist/expect.d.ts +0 -33
  255. package/dist/expect.d.ts.map +0 -1
  256. package/dist/expect.js +0 -88
  257. package/dist/expect.js.map +0 -1
  258. package/dist/expect.types.d.ts.map +0 -1
  259. package/dist/expect.types.js.map +0 -1
  260. package/dist/mixins.d.ts +0 -26
  261. package/dist/mixins.d.ts.map +0 -1
  262. package/dist/mixins.js +0 -9
  263. package/dist/mixins.js.map +0 -1
  264. package/dist/utils/cast-array.d.ts +0 -2
  265. package/dist/utils/cast-array.d.ts.map +0 -1
  266. package/dist/utils/cast-array.js +0 -14
  267. package/dist/utils/cast-array.js.map +0 -1
  268. package/dist/utils/chain.d.ts +0 -3
  269. package/dist/utils/chain.d.ts.map +0 -1
  270. package/dist/utils/chain.js +0 -21
  271. package/dist/utils/chain.js.map +0 -1
  272. package/dist/utils/fail.d.ts +0 -6
  273. package/dist/utils/fail.d.ts.map +0 -1
  274. package/dist/utils/fail.js +0 -13
  275. package/dist/utils/fail.js.map +0 -1
  276. package/dist/utils/get-size.d.ts +0 -2
  277. package/dist/utils/get-size.d.ts.map +0 -1
  278. package/dist/utils/get-size.js +0 -24
  279. package/dist/utils/get-size.js.map +0 -1
  280. package/dist/utils/get-type.d.ts +0 -3
  281. package/dist/utils/get-type.d.ts.map +0 -1
  282. package/dist/utils/get-type.js +0 -17
  283. package/dist/utils/get-type.js.map +0 -1
  284. package/dist/utils/match.d.ts +0 -15
  285. package/dist/utils/match.d.ts.map +0 -1
  286. package/dist/utils/match.js +0 -150
  287. package/dist/utils/match.js.map +0 -1
  288. package/dist/utils/process-error.d.ts +0 -11
  289. package/dist/utils/process-error.d.ts.map +0 -1
  290. package/dist/utils/process-error.js +0 -98
  291. package/dist/utils/process-error.js.map +0 -1
  292. package/dist/utils/types.d.ts +0 -4
  293. package/dist/utils/types.d.ts.map +0 -1
  294. package/dist/utils/types.js +0 -3
  295. package/dist/utils/types.js.map +0 -1
  296. package/dist/utils/validate-numeric-and-dates.d.ts +0 -2
  297. package/dist/utils/validate-numeric-and-dates.d.ts.map +0 -1
  298. package/dist/utils/validate-numeric-and-dates.js +0 -15
  299. package/dist/utils/validate-numeric-and-dates.js.map +0 -1
  300. package/dist/utils/xor.d.ts +0 -2
  301. package/dist/utils/xor.d.ts.map +0 -1
  302. package/dist/utils/xor.js +0 -8
  303. package/dist/utils/xor.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file. Dates are d
4
4
 
5
5
  Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
6
6
 
7
+ #### [hein@1.5.0](https://github.com/KristjanTammekivi/hein/compare/hein@1.4.2...hein@1.5.0)
8
+
9
+ > 1 October 2024
10
+
11
+ - feat: add .every [`#348`](https://github.com/KristjanTammekivi/hein/issues/348)
12
+ - style: run lint fix [`9391e27`](https://github.com/KristjanTammekivi/hein/commit/9391e2712592341fc003a5cec1953559e4d0bf34)
13
+ - fix: adapt to typescript-eslint 8 changes [`dd9e1b2`](https://github.com/KristjanTammekivi/hein/commit/dd9e1b2e98bbd138946005621a504de4e506d1db)
14
+
7
15
  #### [hein@1.4.2](https://github.com/KristjanTammekivi/hein/compare/hein@1.4.1...hein@1.4.2)
8
16
 
9
17
  > 11 December 2023
@@ -0,0 +1,6 @@
1
+ # Notes about ESM migration
2
+
3
+ 1. Imports have to end with .js
4
+ 2. package.json type: module
5
+ 3. tsconfig module: esnext, allowSyntheticDefaultImports true
6
+ 4.
package/README.md CHANGED
@@ -40,13 +40,52 @@ expect(1).to.equal(1);
40
40
 
41
41
  #### Chainable properties
42
42
 
43
- - a
44
- - an
45
- - and - used to chain multiple assertions, clears the state (so .not will be reset)
46
- - be
47
- - have
48
- - not - inverts the expectation (ie `expect(5).to.not.equal(5)` will throw)
49
- - to
43
+ ##### Language chains
44
+
45
+ There are multiple side-effect free tokens to chain assertions together. These include:
46
+ - to
47
+ - be
48
+ - a
49
+ - an
50
+ - have
51
+ - in
52
+ - of
53
+
54
+ ```typescript
55
+ expect(5).to.be.a.number(); // same as expect(5).number();
56
+ ```
57
+
58
+ ##### not
59
+
60
+ Not inverts the conditions inside the expectation.
61
+
62
+ ```typescript
63
+ expect(5).to.not.equal(4);
64
+ ```
65
+
66
+ ##### every
67
+
68
+ Run the assertion for each member of an array
69
+
70
+ ```typescript
71
+ expect([1, 2, 3]).every.to.be.a.number();
72
+ ```
73
+
74
+ ##### length
75
+
76
+ Run the assertion on the length of an array
77
+
78
+ ```typescript
79
+ expect([1, 2, 3]).length.to.be.greaterThan(2);
80
+ ```
81
+
82
+ ##### and
83
+
84
+ Clears most of the state in the chain (with the exception of the effects of .every);
85
+
86
+ ```typescript
87
+ expect(1).to.not.be.greaterThan(5).and.be.greaterThan(0);
88
+ ```
50
89
 
51
90
  #### Assertions
52
91
 
@@ -0,0 +1,483 @@
1
+ import { Constructor, ErrorPredicate, notThrows, throws } from "./throws-D7JsW4NM.cjs";
2
+
3
+ //#region rolldown:runtime
4
+ //#endregion
5
+ //#region src/assert/deep-equal.d.ts
6
+ declare const deepEqual: <T>(actual: T, expected: T, partialOrMessage?: string | boolean, message?: string) => true | void, notDeepEqual: <T>(actual: T, expected: T, partialOrMessage?: string | boolean, message?: string) => true | void;
7
+ //#endregion
8
+ //#region src/assert/equal.d.ts
9
+ interface Equal {
10
+ /**
11
+ * check for === equality except here NaN is equal to NaN
12
+ */
13
+ <T>(actual: T, expected: T, message?: string): void;
14
+ }
15
+ declare const equal: Equal, notEqual: Equal;
16
+ //#endregion
17
+ //#region src/assert/greater-than.d.ts
18
+ interface GreaterThan {
19
+ /**
20
+ * check for >
21
+ */
22
+ <T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;
23
+ }
24
+ declare const greaterThan: GreaterThan, notGreaterThan: GreaterThan;
25
+ //#endregion
26
+ //#region src/assert/greater-than-equal.d.ts
27
+ interface GreaterThanEqual {
28
+ /**
29
+ * check for >=
30
+ */
31
+ <T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;
32
+ }
33
+ declare const greaterThanEqual: GreaterThanEqual, notGreaterThanEqual: GreaterThanEqual;
34
+ //#endregion
35
+ //#region src/assert/has-property.d.ts
36
+ interface HasProperty {
37
+ /**
38
+ * check if object has a property
39
+ * @param object
40
+ * @param property a property in the object.
41
+ * @example hasProperty({a: 1}, 'a');
42
+ */
43
+ <T, K extends keyof T>(object: T, property: K): void;
44
+ /**
45
+ * check if object has a property with a specific value
46
+ * @param object
47
+ * @param property a property in the object.
48
+ * @param value
49
+ * @example hasProperty({a: 1}, 'a', 1);
50
+ */
51
+ <T, K extends keyof T>(object: T, property: K, value: T[K]): void;
52
+ }
53
+ declare const hasProperty: HasProperty, notHasProperty: HasProperty;
54
+ //#endregion
55
+ //#region src/assert/has-size.d.ts
56
+ interface HasSize {
57
+ /**
58
+ * check if array has a specific length
59
+ * @param array
60
+ * @param length
61
+ * @example hasSize([1, 2, 3], 3);
62
+ */
63
+ (array: any[], length: number, message?: string): void;
64
+ /**
65
+ * check if object has a specific amount of keys
66
+ * @param object
67
+ * @param length
68
+ * @example hasSize({a: 1, b: 2}, 2);
69
+ */
70
+ (object: Record<string, unknown>, length: number, message?: string): void;
71
+ /**
72
+ * check if Map has a specific amount of keys
73
+ * @param map
74
+ * @param length
75
+ * @example hasSize(new Map([['a', 1], ['b', 2]]), 2);
76
+ */
77
+ (map: Map<unknown, unknown>, length: number, message?: string): void;
78
+ /**
79
+ * check if Set has a specific amount of members
80
+ * @param set
81
+ * @param length
82
+ * @example hasSize(new Set([1, 2, 3]), 3);
83
+ */
84
+ (set: Set<unknown>, length: number, message?: string): void;
85
+ /**
86
+ * check if string has a specific length
87
+ * @param string
88
+ * @param length
89
+ * @example hasSize('abc', 3);
90
+ */
91
+ (string: string, length: number, message?: string): void;
92
+ }
93
+ declare const hasSize: HasSize, notHasSize: HasSize;
94
+ //#endregion
95
+ //#region src/assert/includes.d.ts
96
+ interface Includes {
97
+ /**
98
+ * check if array includes a specific element
99
+ * @param array
100
+ * @param element
101
+ * @example includes([1, 2, 3], 2);
102
+ * @example includes([1, 2, 3], 2, 3);
103
+ */
104
+ <T>(array: T[], ...elements: T[]): void;
105
+ /**
106
+ * check if string includes a specific string
107
+ * @param string
108
+ * @param element
109
+ * @example includes('abc', 'b');
110
+ * @example includes('abc', 'b', 'c');
111
+ * @example includes('abc', 'bc');
112
+ */
113
+ (string: string, ...elements: string[]): void;
114
+ }
115
+ declare const includes: Includes, notIncludes: Includes;
116
+ //#endregion
117
+ //#region src/assert/instance-of.d.ts
118
+ interface InstanceOf {
119
+ /**
120
+ * check if value is an instance of a constructor
121
+ * @param value
122
+ * @param constructor
123
+ * @example instanceOf(new Error(), Error);
124
+ */
125
+ <T extends Constructor>(value: InstanceType<T>, constructor: T): void;
126
+ }
127
+ declare const instanceOf: InstanceOf, notInstanceOf: InstanceOf;
128
+ //#endregion
129
+ //#region src/assert/is-empty.d.ts
130
+ interface IsEmpty {
131
+ /**
132
+ * check if array is empty
133
+ * @param array
134
+ * @example isEmpty([]);
135
+ */
136
+ <T>(array: T[], message?: string): void;
137
+ /**
138
+ * check if object is empty
139
+ * @param object
140
+ * @example isEmpty({});
141
+ */
142
+ (object: Record<string, unknown>, message?: string): void;
143
+ /**
144
+ * check if Map is empty
145
+ * @param map
146
+ * @example isEmpty(new Map());
147
+ */
148
+ <K, V>(map: Map<K, V>, message?: string): void;
149
+ /**
150
+ * check if Set is empty
151
+ * @param set
152
+ * @example isEmpty(new Set());
153
+ */
154
+ <T>(set: Set<T>, message?: string): void;
155
+ }
156
+ declare const isEmpty: IsEmpty, notIsEmpty: IsEmpty;
157
+ //#endregion
158
+ //#region src/utils/get-type.d.ts
159
+ type ValueType = 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function' | 'null' | 'NaN' | 'array';
160
+ //#endregion
161
+ //#region src/assert/is-type.d.ts
162
+ interface IsType {
163
+ /**
164
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
165
+ * @param value
166
+ * @param expectedType
167
+ * @example isType('foo', 'string');
168
+ * @example isType(1, 'number');
169
+ * @example isType(1n, 'bigint');
170
+ * @example isType(true, 'boolean');
171
+ * @example isType(Symbol('foo'), 'symbol');
172
+ * @example isType(undefined, 'undefined');
173
+ * @example isType({}, 'object');
174
+ * @example isType(() => {}, 'function');
175
+ * @example isType(null, 'null');
176
+ * @example isType(NaN, 'NaN');
177
+ * @example isType([], 'array');
178
+ */
179
+ (value: unknown, expectedType: ValueType): void;
180
+ /**
181
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
182
+ * @param value
183
+ * @param expectedType
184
+ * @example isType('foo', 'string');
185
+ */
186
+ (value: string, expectedType: 'string'): void;
187
+ /**
188
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
189
+ * @param value
190
+ * @param expectedType
191
+ * @example isType(1, 'number');
192
+ * @example isType(NaN, 'NaN');
193
+ */
194
+ (value: number, expectedType: 'number' | 'NaN'): void;
195
+ /**
196
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
197
+ * @param value
198
+ * @param expectedType
199
+ * @example isType(1n, 'bigint');
200
+ */
201
+ (value: bigint, expectedType: 'bigint'): void;
202
+ /**
203
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
204
+ * @param value
205
+ * @param expectedType
206
+ * @example isType(true, 'boolean');
207
+ */
208
+ (value: boolean, expectedType: 'boolean'): void;
209
+ /**
210
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
211
+ * @param value
212
+ * @param expectedType
213
+ * @example isType(Symbol('foo'), 'symbol');
214
+ */
215
+ (value: symbol, expectedType: 'symbol'): void;
216
+ /**
217
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
218
+ * @param value
219
+ * @param expectedType
220
+ * @example isType(Symbol('foo'), 'symbol');
221
+ */
222
+ (value: undefined, expectedType: 'undefined'): void;
223
+ /**
224
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
225
+ * @param value
226
+ * @param expectedType
227
+ * @example isType({}, 'object');
228
+ */
229
+ (value: object, expectedType: 'object'): void;
230
+ /**
231
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
232
+ * @param value
233
+ * @param expectedType
234
+ * @example isType(() => {}, 'function');
235
+ */
236
+ (value: Function, expectedType: 'function'): void;
237
+ /**
238
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
239
+ * @param value
240
+ * @param expectedType
241
+ * @example isType(null, 'null');
242
+ */
243
+ (value: null, expectedType: 'null'): void;
244
+ /**
245
+ * check if value is of a specific type, nulls, NaN and arrays are specially handled
246
+ * @param value
247
+ * @param expectedType
248
+ * @example isType([], 'array');
249
+ */
250
+ (value: any[], expectedType: 'array'): void;
251
+ }
252
+ declare const isType: IsType, notIsType: IsType;
253
+ //#endregion
254
+ //#region src/assert/less-than.d.ts
255
+ interface LesserThan {
256
+ /**
257
+ * check for <
258
+ */
259
+ <T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;
260
+ }
261
+ declare const lessThan: LesserThan, notLessThan: LesserThan;
262
+ //#endregion
263
+ //#region src/assert/less-than-equal.d.ts
264
+ interface LessThanEqual {
265
+ /**
266
+ * check for <=
267
+ */
268
+ <T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;
269
+ }
270
+ declare const lessThanEqual: LessThanEqual, notLessThanEqual: LessThanEqual;
271
+ //#endregion
272
+ //#region src/assert/match.d.ts
273
+ interface IsMatch {
274
+ /**
275
+ * check if string matches regex
276
+ * @param actual
277
+ * @param regex
278
+ * @example match('foo', /foo/);
279
+ * @example notMatch('foo', /bar/);
280
+ */
281
+ (actual: string, regex: RegExp): void;
282
+ }
283
+ declare const match: IsMatch, notMatch: IsMatch;
284
+ //#endregion
285
+ //#region src/assert/rejects.d.ts
286
+ interface Rejects {
287
+ /**
288
+ * check if promise rejects
289
+ * @param promise
290
+ * @example rejects(Promise.reject());
291
+ */
292
+ (promise: Promise<any>, message?: string): Promise<void>;
293
+ /**
294
+ * check if promise rejects with an instance of constructor
295
+ * @param promise
296
+ * @param constructor - expected error constructor
297
+ * @example rejects(Promise.reject(new Error()), Error);
298
+ */
299
+ (promise: Promise<any>, constructor: Constructor, message?: string): Promise<void>;
300
+ /**
301
+ * check if promise rejects with a specific error message
302
+ * @param promise
303
+ * @param regex - expected error message regex
304
+ * @example rejects(Promise.reject(new Error('This is worrying)), /worrying/);
305
+ */
306
+ (promise: Promise<any>, constructor: RegExp, message?: string): Promise<void>;
307
+ /**
308
+ * check if promise rejects with and matches the predicate function
309
+ * @param promise
310
+ * @param predicate - predicate function that receives the error and returns boolean
311
+ * @example rejects(Promise.reject(new Error('This is worrying')), (error) => error.message === 'This is worrying');));
312
+ */
313
+ (promise: Promise<any>, constructor: ErrorPredicate, message?: string): Promise<void>;
314
+ }
315
+ declare const rejects: Rejects, notRejects: Rejects;
316
+ //#endregion
317
+ //#region src/assert/deep-has-property.d.ts
318
+ interface DeepHasProperty {
319
+ /**
320
+ * check if object has a property
321
+ * @param object
322
+ * @param property a property in the object. Can be a path like 'a.b.c'
323
+ * @example deepHasProperty([{a: {b: {c: 1}}}], '[0].a.b.c');
324
+ */
325
+ (object: any, property: string): void;
326
+ /**
327
+ * check if object has a property with a specific value
328
+ * @param object
329
+ * @param property a property in the object. Can be a path like 'a.b.c'
330
+ * @param value
331
+ * @example deepHasProperty([{a: {b: {c: 1}}}], '[0].a.b.c', 1);
332
+ */
333
+ (object: any, property: string, value: any): void;
334
+ }
335
+ declare const deepHasProperty: DeepHasProperty, deepNotHasProperty: DeepHasProperty;
336
+ //#endregion
337
+ //#region src/assert/starts-with.d.ts
338
+ interface StartsWith {
339
+ /**
340
+ * check if string starts with start
341
+ * @param string
342
+ * @param start
343
+ * @example startsWith('foo', 'f');
344
+ */
345
+ (string: string, start: string): void;
346
+ }
347
+ declare const startsWith: StartsWith, notStartsWith: StartsWith;
348
+ //#endregion
349
+ //#region src/assert/ends-with.d.ts
350
+ interface EndsWith {
351
+ /**
352
+ * check if string ends with a specific string
353
+ * @param string
354
+ * @param end
355
+ */
356
+ (string: string, end: string): void;
357
+ }
358
+ declare const endsWith: EndsWith, notEndsWith: EndsWith;
359
+ //#endregion
360
+ //#region src/assert/is-before.d.ts
361
+ interface IsBefore {
362
+ /**
363
+ * check that date is before another date
364
+ */
365
+ <T extends Date>(actual: T, expected: T, message?: string): void;
366
+ }
367
+ declare const isBefore: IsBefore, notBefore: IsBefore;
368
+ //#endregion
369
+ //#region src/assert/is-after.d.ts
370
+ interface IsAfter {
371
+ /**
372
+ * check that date is after another date
373
+ */
374
+ <T extends Date>(actual: T, expected: T): void;
375
+ }
376
+ declare const isAfter: IsAfter, notAfter: IsAfter;
377
+ //#endregion
378
+ //#region src/assert/is-between.d.ts
379
+ interface IsBetweenOptions {
380
+ inclusive?: boolean;
381
+ }
382
+ interface IsBetween {
383
+ /**
384
+ * check that date is Between another date
385
+ */
386
+ <T extends Date>(actual: T, start: T, end: T, options?: IsBetweenOptions): void;
387
+ <T extends number>(actual: T, start: T, end: T, options?: IsBetweenOptions): void;
388
+ }
389
+ declare const isBetween: IsBetween, notBetween: IsBetween;
390
+ //#endregion
391
+ //#region src/assert/in-ballpark.d.ts
392
+ interface InBallpark {
393
+ /**
394
+ * check if a number is in ballpark of another number. See also roundTo
395
+ * @param actual
396
+ * @param expected
397
+ * @param [allowedDifferenceMultiplier=0.1] - a number between 0 and 1 (exclusive). 0.1 (default) means 10% difference is allowed.
398
+ * @example inBallpark(1, 1.1);
399
+ * @example inBallpark(1, 1.1, 0.1);
400
+ */
401
+ (actual: number, expected: number, allowedDifferenceMultiplier?: number): void;
402
+ }
403
+ declare const inBallpark: InBallpark, notInBallpark: InBallpark;
404
+ //#endregion
405
+ //#region src/assert/round-to.d.ts
406
+ interface RoundTo {
407
+ /**
408
+ * check if value rounds to target
409
+ * @param actual
410
+ * @param expected
411
+ * @param [decimals=0] - number of decimals to round to, defaults to 0
412
+ * @example roundTo(1.234, 1.23, 2);
413
+ */
414
+ (actual: number, expected: number, decimals?: number): void;
415
+ }
416
+ declare const roundTo: RoundTo, notRoundTo: RoundTo;
417
+ //#endregion
418
+ //#region src/assert/has-members.d.ts
419
+ interface HasMembersOptions {
420
+ /**
421
+ * check for deep equality (ie {a: 1} === {a: 1})
422
+ * @default false
423
+ * @example
424
+ * hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });
425
+ */
426
+ deep?: boolean;
427
+ /**
428
+ * use partial matching (ie {a: 1, b: 2} === {a: 1})
429
+ * implies deep
430
+ * @default false
431
+ * @example
432
+ * hasMembers([{ a: 1, b: 2 }], [{ a: 1 }], { partial: true });
433
+ */
434
+ partial?: boolean;
435
+ /**
436
+ * check that all the members in the first array are present in the second one
437
+ * @default false
438
+ * @example
439
+ * hasMembers([1, 2], [2, 1], { same: true });
440
+ * notHasMembers([1, 2], [1], { same: true});
441
+ */
442
+ same?: boolean;
443
+ /**
444
+ * check that the members in the first array are in the same order as the second one
445
+ * @default false
446
+ * @example
447
+ * hasMembers([1, 2], [1, 2], { ordered: true });
448
+ * notHasMembers([1, 2], [2, 1], { ordered: true });
449
+ */
450
+ ordered?: boolean;
451
+ }
452
+ interface HasMembers {
453
+ /**
454
+ * check that the members in second array are present in the first one
455
+ * @example
456
+ * hasMembers([1], [1]);
457
+ * hasMembers([1, 2], [2, 1]);
458
+ * hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });
459
+ */
460
+ <T>(actual: T[], expected: T[], options?: HasMembersOptions, message?: string): void;
461
+ }
462
+ declare const hasMembers: HasMembers, notHasMembers: HasMembers;
463
+ //#endregion
464
+ //#region src/assert/has-keys.d.ts
465
+ interface HasKeys {
466
+ /**
467
+ * check if object has keys
468
+ * @param object
469
+ * @param keys a key or array of keys in the object.
470
+ * @example hasKeys({a: 1}, 'a');
471
+ * @example hasKeys({a: 1, b: 2}, ['a', 'b']);
472
+ */
473
+ <T extends Record<string, any>, K extends keyof T>(object: T, keys: K[] | K, message?: string): void;
474
+ <K, T extends Map<K, any>>(object: T, keys: K[] | K, message?: string): void;
475
+ }
476
+ declare const hasKeys: HasKeys, notHasKeys: HasKeys;
477
+ declare namespace assert_d_exports {
478
+ export { assert, deepEqual, deepHasProperty, deepNotHasProperty, endsWith, equal, greaterThan, greaterThanEqual, hasKeys, hasMembers, hasProperty, hasSize, inBallpark, includes, instanceOf, isAfter, isBefore, isBetween, isEmpty, isType, lessThan, lessThanEqual, match, notAfter, notBefore, notBetween, notDeepEqual, notEndsWith, notEqual, notGreaterThan, notGreaterThanEqual, notHasKeys, notHasMembers, notHasProperty, notHasSize, notInBallpark, notIncludes, notInstanceOf, notIsEmpty, notIsType, notLessThan, notLessThanEqual, notMatch, notRejects, notRoundTo, notStartsWith, notThrows, rejects, roundTo, startsWith, throws };
479
+ }
480
+ declare const assert: () => never;
481
+ //#endregion
482
+ export { ValueType, assert, assert_d_exports, deepEqual, deepHasProperty, deepNotHasProperty, endsWith, equal, greaterThan, greaterThanEqual, hasKeys, hasMembers, hasProperty, hasSize, inBallpark, includes, instanceOf, isAfter, isBefore, isBetween, isEmpty, isType, lessThan, lessThanEqual, match, notAfter, notBefore, notBetween, notDeepEqual, notEndsWith, notEqual, notGreaterThan, notGreaterThanEqual, notHasKeys, notHasMembers, notHasProperty, notHasSize, notInBallpark, notIncludes, notInstanceOf, notIsEmpty, notIsType, notLessThan, notLessThanEqual, notMatch, notRejects, notRoundTo, notStartsWith, rejects, roundTo, startsWith };
483
+ //# sourceMappingURL=assert-9EsvfQwn.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-9EsvfQwn.d.cts","names":[],"sources":["../src/assert/deep-equal.ts","../src/assert/equal.ts","../src/assert/greater-than.ts","../src/assert/greater-than-equal.ts","../src/assert/has-property.ts","../src/assert/has-size.ts","../src/assert/includes.ts","../src/assert/instance-of.ts","../src/assert/is-empty.ts","../src/utils/get-type.ts","../src/assert/is-type.ts","../src/assert/less-than.ts","../src/assert/less-than-equal.ts","../src/assert/match.ts","../src/assert/rejects.ts","../src/assert/deep-has-property.ts","../src/assert/starts-with.ts","../src/assert/ends-with.ts","../src/assert/is-before.ts","../src/assert/is-after.ts","../src/assert/is-between.ts","../src/assert/in-ballpark.ts","../src/assert/round-to.ts","../src/assert/has-members.ts","../src/assert/has-keys.ts","../src/assert.ts"],"sourcesContent":[],"mappings":"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"}