@serenity-js/assertions 3.0.0-rc.1 → 3.0.0-rc.12

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 (46) hide show
  1. package/CHANGELOG.md +366 -0
  2. package/lib/Ensure.d.ts +1 -1
  3. package/lib/Ensure.js +7 -10
  4. package/lib/Ensure.js.map +1 -1
  5. package/lib/expectations/and.d.ts +1 -1
  6. package/lib/expectations/and.js +6 -6
  7. package/lib/expectations/and.js.map +1 -1
  8. package/lib/expectations/contain.d.ts +1 -1
  9. package/lib/expectations/containAtLeastOneItemThat.d.ts +1 -1
  10. package/lib/expectations/containAtLeastOneItemThat.js +16 -9
  11. package/lib/expectations/containAtLeastOneItemThat.js.map +1 -1
  12. package/lib/expectations/containItemsWhereEachItem.d.ts +1 -1
  13. package/lib/expectations/containItemsWhereEachItem.js +16 -9
  14. package/lib/expectations/containItemsWhereEachItem.js.map +1 -1
  15. package/lib/expectations/index.d.ts +1 -1
  16. package/lib/expectations/index.js +1 -1
  17. package/lib/expectations/index.js.map +1 -1
  18. package/lib/expectations/isFalse.js.map +1 -1
  19. package/lib/expectations/isPresent.d.ts +14 -0
  20. package/lib/expectations/isPresent.js +50 -0
  21. package/lib/expectations/isPresent.js.map +1 -0
  22. package/lib/expectations/isTrue.js.map +1 -1
  23. package/lib/expectations/matches.d.ts +1 -1
  24. package/lib/expectations/not.d.ts +1 -1
  25. package/lib/expectations/not.js +7 -8
  26. package/lib/expectations/not.js.map +1 -1
  27. package/lib/expectations/or.d.ts +1 -1
  28. package/lib/expectations/or.js +17 -12
  29. package/lib/expectations/or.js.map +1 -1
  30. package/package.json +8 -8
  31. package/src/Ensure.ts +17 -21
  32. package/src/expectations/and.ts +19 -18
  33. package/src/expectations/contain.ts +1 -1
  34. package/src/expectations/containAtLeastOneItemThat.ts +38 -14
  35. package/src/expectations/containItemsWhereEachItem.ts +38 -14
  36. package/src/expectations/index.ts +1 -1
  37. package/src/expectations/isFalse.ts +1 -1
  38. package/src/expectations/isPresent.ts +58 -0
  39. package/src/expectations/isTrue.ts +1 -1
  40. package/src/expectations/matches.ts +1 -1
  41. package/src/expectations/not.ts +15 -15
  42. package/src/expectations/or.ts +28 -25
  43. package/lib/expectations/property.d.ts +0 -2
  44. package/lib/expectations/property.js +0 -28
  45. package/lib/expectations/property.js.map +0 -1
  46. package/src/expectations/property.ts +0 -33
package/CHANGELOG.md CHANGED
@@ -3,6 +3,335 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.0.0-rc.12](https://github.com/serenity-js/serenity-js/compare/v2.33.2...v3.0.0-rc.12) (2022-02-23)
7
+
8
+
9
+
10
+ # [3.0.0-rc.11](https://github.com/serenity-js/serenity-js/compare/v2.33.1...v3.0.0-rc.11) (2022-02-13)
11
+
12
+
13
+
14
+ # [3.0.0-rc.10](https://github.com/serenity-js/serenity-js/compare/v2.33.0...v3.0.0-rc.10) (2022-02-03)
15
+
16
+
17
+
18
+ # [3.0.0-rc.9](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.8...v3.0.0-rc.9) (2022-02-01)
19
+
20
+
21
+
22
+ # [3.0.0-rc.8](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.7...v3.0.0-rc.8) (2022-01-28)
23
+
24
+
25
+
26
+ # [3.0.0-rc.7](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.6...v3.0.0-rc.7) (2022-01-28)
27
+
28
+
29
+ ### Features
30
+
31
+ * **assertions:** isPresent works with any Optional ([cea75dc](https://github.com/serenity-js/serenity-js/commit/cea75dc1c728e45e06a87aaf9c1573a237334285)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
32
+ * **core:** replaced `Adapter` with `QuestionAdapter` and introduced `Optional` ([8d84ad3](https://github.com/serenity-js/serenity-js/commit/8d84ad3863e3c726533d0f21934fb1e2fa8b3022)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
33
+ * **core:** support for Optional chaining, expectation isPresent, refactored Expectations ([1841ee5](https://github.com/serenity-js/serenity-js/commit/1841ee5fc48cfa403ddc53358f75764d9a010c21)), closes [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
34
+
35
+
36
+
37
+ # [3.0.0-rc.6](https://github.com/serenity-js/serenity-js/compare/v2.32.7...v3.0.0-rc.6) (2022-01-10)
38
+
39
+
40
+
41
+ # [3.0.0-rc.5](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2022-01-07)
42
+
43
+
44
+
45
+ # [3.0.0-rc.4](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2021-12-30)
46
+
47
+
48
+
49
+ # [3.0.0-rc.3](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2021-12-29)
50
+
51
+
52
+ ### Bug Fixes
53
+
54
+ * **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
55
+
56
+
57
+
58
+ # [3.0.0-rc.2](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2021-12-09)
59
+
60
+
61
+
62
+ # [3.0.0-rc.1](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2021-12-09)
63
+
64
+
65
+
66
+ # [3.0.0-rc.0](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v3.0.0-rc.0) (2021-12-08)
67
+
68
+
69
+ ### Bug Fixes
70
+
71
+ * **core:** 3.0 RC ([469d54e](https://github.com/serenity-js/serenity-js/commit/469d54e4f81ef430566b93852e3174826f8ef672)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
72
+
73
+
74
+ ### BREAKING CHANGES
75
+
76
+ * **core:** Introduced @serenity-js/web - a shared library for Serenity/JS Web integration
77
+ modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
78
+
79
+
80
+
81
+
82
+
83
+ # [3.0.0-rc.11](https://github.com/serenity-js/serenity-js/compare/v2.33.1...v3.0.0-rc.11) (2022-02-13)
84
+
85
+
86
+
87
+ # [3.0.0-rc.10](https://github.com/serenity-js/serenity-js/compare/v2.33.0...v3.0.0-rc.10) (2022-02-03)
88
+
89
+
90
+
91
+ # [3.0.0-rc.9](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.8...v3.0.0-rc.9) (2022-02-01)
92
+
93
+
94
+
95
+ # [3.0.0-rc.8](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.7...v3.0.0-rc.8) (2022-01-28)
96
+
97
+
98
+
99
+ # [3.0.0-rc.7](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.6...v3.0.0-rc.7) (2022-01-28)
100
+
101
+
102
+ ### Features
103
+
104
+ * **assertions:** isPresent works with any Optional ([cea75dc](https://github.com/serenity-js/serenity-js/commit/cea75dc1c728e45e06a87aaf9c1573a237334285)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
105
+ * **core:** replaced `Adapter` with `QuestionAdapter` and introduced `Optional` ([8d84ad3](https://github.com/serenity-js/serenity-js/commit/8d84ad3863e3c726533d0f21934fb1e2fa8b3022)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
106
+ * **core:** support for Optional chaining, expectation isPresent, refactored Expectations ([1841ee5](https://github.com/serenity-js/serenity-js/commit/1841ee5fc48cfa403ddc53358f75764d9a010c21)), closes [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
107
+
108
+
109
+
110
+ # [3.0.0-rc.6](https://github.com/serenity-js/serenity-js/compare/v2.32.7...v3.0.0-rc.6) (2022-01-10)
111
+
112
+
113
+
114
+ # [3.0.0-rc.5](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2022-01-07)
115
+
116
+
117
+
118
+ # [3.0.0-rc.4](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2021-12-30)
119
+
120
+
121
+
122
+ # [3.0.0-rc.3](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2021-12-29)
123
+
124
+
125
+ ### Bug Fixes
126
+
127
+ * **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
128
+
129
+
130
+
131
+ # [3.0.0-rc.2](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2021-12-09)
132
+
133
+
134
+
135
+ # [3.0.0-rc.1](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2021-12-09)
136
+
137
+
138
+
139
+ # [3.0.0-rc.0](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v3.0.0-rc.0) (2021-12-08)
140
+
141
+
142
+ ### Bug Fixes
143
+
144
+ * **core:** 3.0 RC ([469d54e](https://github.com/serenity-js/serenity-js/commit/469d54e4f81ef430566b93852e3174826f8ef672)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
145
+
146
+
147
+ ### BREAKING CHANGES
148
+
149
+ * **core:** Introduced @serenity-js/web - a shared library for Serenity/JS Web integration
150
+ modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
151
+
152
+
153
+
154
+
155
+
156
+ # [3.0.0-rc.10](https://github.com/serenity-js/serenity-js/compare/v2.33.0...v3.0.0-rc.10) (2022-02-03)
157
+
158
+
159
+
160
+ # [3.0.0-rc.9](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.8...v3.0.0-rc.9) (2022-02-01)
161
+
162
+
163
+
164
+ # [3.0.0-rc.8](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.7...v3.0.0-rc.8) (2022-01-28)
165
+
166
+
167
+
168
+ # [3.0.0-rc.7](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.6...v3.0.0-rc.7) (2022-01-28)
169
+
170
+
171
+ ### Features
172
+
173
+ * **assertions:** isPresent works with any Optional ([cea75dc](https://github.com/serenity-js/serenity-js/commit/cea75dc1c728e45e06a87aaf9c1573a237334285)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
174
+ * **core:** replaced `Adapter` with `QuestionAdapter` and introduced `Optional` ([8d84ad3](https://github.com/serenity-js/serenity-js/commit/8d84ad3863e3c726533d0f21934fb1e2fa8b3022)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
175
+ * **core:** support for Optional chaining, expectation isPresent, refactored Expectations ([1841ee5](https://github.com/serenity-js/serenity-js/commit/1841ee5fc48cfa403ddc53358f75764d9a010c21)), closes [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
176
+
177
+
178
+
179
+ # [3.0.0-rc.6](https://github.com/serenity-js/serenity-js/compare/v2.32.7...v3.0.0-rc.6) (2022-01-10)
180
+
181
+
182
+
183
+ # [3.0.0-rc.5](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2022-01-07)
184
+
185
+
186
+
187
+ # [3.0.0-rc.4](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2021-12-30)
188
+
189
+
190
+
191
+ # [3.0.0-rc.3](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2021-12-29)
192
+
193
+
194
+ ### Bug Fixes
195
+
196
+ * **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
197
+
198
+
199
+
200
+ # [3.0.0-rc.2](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2021-12-09)
201
+
202
+
203
+
204
+ # [3.0.0-rc.1](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2021-12-09)
205
+
206
+
207
+
208
+ # [3.0.0-rc.0](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v3.0.0-rc.0) (2021-12-08)
209
+
210
+
211
+ ### Bug Fixes
212
+
213
+ * **core:** 3.0 RC ([469d54e](https://github.com/serenity-js/serenity-js/commit/469d54e4f81ef430566b93852e3174826f8ef672)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
214
+
215
+
216
+ ### BREAKING CHANGES
217
+
218
+ * **core:** Introduced @serenity-js/web - a shared library for Serenity/JS Web integration
219
+ modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
220
+
221
+
222
+
223
+
224
+
225
+ # [3.0.0-rc.9](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.8...v3.0.0-rc.9) (2022-02-01)
226
+
227
+ **Note:** Version bump only for package @serenity-js/assertions
228
+
229
+
230
+
231
+
232
+
233
+ # [3.0.0-rc.8](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.7...v3.0.0-rc.8) (2022-01-28)
234
+
235
+ **Note:** Version bump only for package @serenity-js/assertions
236
+
237
+
238
+
239
+
240
+
241
+ # [3.0.0-rc.7](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.6...v3.0.0-rc.7) (2022-01-28)
242
+
243
+
244
+ ### Features
245
+
246
+ * **assertions:** isPresent works with any Optional ([cea75dc](https://github.com/serenity-js/serenity-js/commit/cea75dc1c728e45e06a87aaf9c1573a237334285)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
247
+ * **core:** replaced `Adapter` with `QuestionAdapter` and introduced `Optional` ([8d84ad3](https://github.com/serenity-js/serenity-js/commit/8d84ad3863e3c726533d0f21934fb1e2fa8b3022)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
248
+ * **core:** support for Optional chaining, expectation isPresent, refactored Expectations ([1841ee5](https://github.com/serenity-js/serenity-js/commit/1841ee5fc48cfa403ddc53358f75764d9a010c21)), closes [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
249
+
250
+
251
+
252
+
253
+
254
+ # [3.0.0-rc.6](https://github.com/serenity-js/serenity-js/compare/v2.32.7...v3.0.0-rc.6) (2022-01-10)
255
+
256
+
257
+
258
+ # [3.0.0-rc.5](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2022-01-07)
259
+
260
+
261
+
262
+ # [3.0.0-rc.4](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2021-12-30)
263
+
264
+
265
+
266
+ # [3.0.0-rc.3](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2021-12-29)
267
+
268
+
269
+ ### Bug Fixes
270
+
271
+ * **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
272
+
273
+
274
+
275
+ # [3.0.0-rc.2](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2021-12-09)
276
+
277
+
278
+
279
+ # [3.0.0-rc.1](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2021-12-09)
280
+
281
+
282
+
283
+ # [3.0.0-rc.0](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v3.0.0-rc.0) (2021-12-08)
284
+
285
+
286
+ ### Bug Fixes
287
+
288
+ * **core:** 3.0 RC ([469d54e](https://github.com/serenity-js/serenity-js/commit/469d54e4f81ef430566b93852e3174826f8ef672)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
289
+
290
+
291
+ ### BREAKING CHANGES
292
+
293
+ * **core:** Introduced @serenity-js/web - a shared library for Serenity/JS Web integration
294
+ modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
295
+
296
+
297
+
298
+
299
+
300
+ # [3.0.0-rc.5](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2022-01-07)
301
+
302
+ **Note:** Version bump only for package @serenity-js/assertions
303
+
304
+
305
+
306
+
307
+
308
+ # [3.0.0-rc.4](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2021-12-30)
309
+
310
+ **Note:** Version bump only for package @serenity-js/assertions
311
+
312
+
313
+
314
+
315
+
316
+ # [3.0.0-rc.3](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2021-12-29)
317
+
318
+
319
+ ### Bug Fixes
320
+
321
+ * **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
322
+
323
+
324
+
325
+
326
+
327
+ # [3.0.0-rc.2](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2021-12-09)
328
+
329
+ **Note:** Version bump only for package @serenity-js/assertions
330
+
331
+
332
+
333
+
334
+
6
335
  # [3.0.0-rc.1](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2021-12-09)
7
336
 
8
337
  **Note:** Version bump only for package @serenity-js/assertions
@@ -25,9 +354,46 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
25
354
  modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
26
355
 
27
356
 
357
+ ## [2.33.2](https://github.com/serenity-js/serenity-js/compare/v2.33.1...v2.33.2) (2022-02-23)
358
+
359
+ **Note:** Version bump only for package @serenity-js/assertions
360
+
361
+
362
+
363
+
364
+
365
+ ## [2.33.1](https://github.com/serenity-js/serenity-js/compare/v2.33.0...v2.33.1) (2022-02-10)
366
+
367
+
368
+ ### Bug Fixes
369
+
370
+ * **deps:** update dependency tiny-types to ^1.17.0 ([7b7d6fd](https://github.com/serenity-js/serenity-js/commit/7b7d6fda08f5db7199d8608ff4cf1389a6e84d3c))
371
+
372
+
28
373
 
29
374
 
30
375
 
376
+ # [2.33.0](https://github.com/serenity-js/serenity-js/compare/v2.32.7...v2.33.0) (2022-02-03)
377
+
378
+ **Note:** Version bump only for package @serenity-js/assertions
379
+
380
+
381
+
382
+
383
+
384
+ ## [2.32.7](https://github.com/serenity-js/serenity-js/compare/v2.32.6...v2.32.7) (2022-01-10)
385
+
386
+ **Note:** Version bump only for package @serenity-js/assertions
387
+
388
+
389
+
390
+
391
+
392
+ ## [2.32.6](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v2.32.6) (2022-01-10)
393
+
394
+ **Note:** Version bump only for package @serenity-js/assertions
395
+
396
+
31
397
  ## [2.32.5](https://github.com/serenity-js/serenity-js/compare/v2.32.4...v2.32.5) (2021-12-08)
32
398
 
33
399
  **Note:** Version bump only for package @serenity-js/assertions
package/lib/Ensure.d.ts CHANGED
@@ -52,7 +52,7 @@ export declare class Ensure<Actual> extends Interaction {
52
52
  *
53
53
  * @returns {Ensure<A>}
54
54
  */
55
- static that<A>(actual: Answerable<A>, expectation: Expectation<any, A>): Ensure<A>;
55
+ static that<A>(actual: Answerable<A>, expectation: Expectation<A>): Ensure<A>;
56
56
  /**
57
57
  * @param {@serenity-js/core/lib/screenplay~Answerable<T>} actual
58
58
  * @param {@serenity-js/core/lib/screenplay/questions~Expectation<T>} expectation
package/lib/Ensure.js CHANGED
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Ensure = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
- const io_1 = require("@serenity-js/core/lib/io");
6
5
  const inspected_1 = require("@serenity-js/core/lib/io/inspected");
7
6
  const model_1 = require("@serenity-js/core/lib/model");
8
7
  const tiny_types_1 = require("tiny-types");
@@ -82,19 +81,17 @@ class Ensure extends core_1.Interaction {
82
81
  * @see {@link @serenity-js/core/lib/screenplay/actor~CollectsArtifacts}
83
82
  * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
84
83
  */
85
- performAs(actor) {
86
- return Promise.all([
87
- actor.answer(this.actual),
88
- actor.answer(this.expectation),
89
- ]).then(([actual, expectation]) => expectation(actual).then(outcome => (0, tiny_types_1.match)(outcome)
84
+ async performAs(actor) {
85
+ const outcome = await actor.answer(this.expectation.isMetFor(this.actual));
86
+ return (0, tiny_types_1.match)(outcome)
90
87
  .when(core_1.ExpectationNotMet, o => {
91
88
  actor.collect(this.artifactFrom(o.expected, o.actual), new model_1.Name(`Assertion Report`));
92
89
  throw this.errorForOutcome(o);
93
90
  })
94
91
  .when(core_1.ExpectationMet, _ => void 0)
95
92
  .else(o => {
96
- throw new core_1.LogicError((0, io_1.formatted) `An Expectation should return an instance of an ExpectationOutcome, not ${o}`);
97
- })));
93
+ throw new core_1.LogicError((0, core_1.f) `Expectation#isMetFor(actual) should return an instance of an ExpectationOutcome, not ${o}`);
94
+ });
98
95
  }
99
96
  /**
100
97
  * @desc
@@ -103,7 +100,7 @@ class Ensure extends core_1.Interaction {
103
100
  * @returns {string}
104
101
  */
105
102
  toString() {
106
- return (0, io_1.formatted) `#actor ensures that ${this.actual} does ${this.expectation}`;
103
+ return (0, core_1.d) `#actor ensures that ${this.actual} does ${this.expectation}`;
107
104
  }
108
105
  /**
109
106
  * @desc
@@ -143,7 +140,7 @@ class Ensure extends core_1.Interaction {
143
140
  * @protected
144
141
  */
145
142
  asAssertionError(outcome) {
146
- return new core_1.AssertionError(`Expected ${(0, io_1.formatted) `${this.actual}`} to ${outcome.message}`, outcome.expected, outcome.actual);
143
+ return new core_1.AssertionError(`Expected ${(0, core_1.d) `${this.actual}`} to ${outcome.message}`, outcome.expected, outcome.actual);
147
144
  }
148
145
  artifactFrom(expected, actual) {
149
146
  return model_1.AssertionReport.fromJSON({
package/lib/Ensure.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Ensure.js","sourceRoot":"","sources":["../src/Ensure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Ensure.js","sourceRoot":"","sources":["../src/Ensure.ts"],"names":[],"mappings":";;;AAAA,4CAe2B;AAC3B,kEAA+D;AAC/D,uDAA8E;AAC9E,2CAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAa,MAAe,SAAQ,kBAAW;IAY3C;;;OAGG;IACH,YACuB,MAA0B,EAC1B,WAAgC;QAEnD,KAAK,EAAE,CAAC;QAHW,WAAM,GAAN,MAAM,CAAoB;QAC1B,gBAAW,GAAX,WAAW,CAAqB;IAGvD,CAAC;IApBD;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAI,MAAqB,EAAE,WAA2B;QAC7D,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC;IAaD;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,SAAS,CAAC,KAA2D;QACvE,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3E,OAAO,IAAA,kBAAK,EAA4C,OAAO,CAAC;aAC3D,IAAI,CAAC,wBAAiB,EAAE,CAAC,CAAC,EAAE;YACzB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,YAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAErF,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,IAAI,CAAC,qBAAc,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;aACjC,IAAI,CAAC,CAAC,CAAC,EAAE;YACN,MAAM,IAAI,iBAAU,CAAC,IAAA,QAAC,EAAA,wFAAyF,CAAE,EAAE,CAAC,CAAC;QACzH,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACJ,OAAO,IAAA,QAAC,EAAA,uBAAwB,IAAI,CAAC,MAAO,SAAU,IAAI,CAAC,WAAY,EAAE,CAAC;IAC9E,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,kBAAwE,EAAE,OAAgB;QACxG,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACvG,CAAC;IAED;;;;;;;;OAQG;IACO,eAAe,CAAC,OAAwC;QAC9D,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;OAQG;IACO,gBAAgB,CAAC,OAAwC;QAC/D,OAAO,IAAI,qBAAc,CACrB,YAAa,IAAA,QAAC,EAAA,GAAI,IAAI,CAAC,MAAO,EAAG,OAAQ,OAAO,CAAC,OAAQ,EAAE,EAC3D,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,MAAM,CACjB,CAAC;IACN,CAAC;IAEO,YAAY,CAAC,QAAa,EAAE,MAAc;QAC9C,OAAO,uBAAe,CAAC,QAAQ,CAAC;YAC5B,QAAQ,EAAE,IAAA,qBAAS,EAAC,QAAQ,CAAC;YAC7B,MAAM,EAAE,IAAA,qBAAS,EAAC,MAAM,CAAC;SAC5B,CAAC,CAAC;IACP,CAAC;CACJ;AAlHD,wBAkHC;AAED;;GAEG;AACH,MAAM,2BAAoC,SAAQ,MAAc;IAC5D,YACI,MAA0B,EAC1B,WAAgC,EACf,kBAAwE,EACxE,OAAgB;QAEjC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAHV,uBAAkB,GAAlB,kBAAkB,CAAsD;QACxE,YAAO,GAAP,OAAO,CAAS;IAGrC,CAAC;IAES,eAAe,CAAC,OAAwC;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC/F,CAAC;CACJ"}
@@ -1,2 +1,2 @@
1
1
  import { Expectation } from '@serenity-js/core';
2
- export declare function and<Actual>(...expectations: Array<Expectation<any, Actual>>): Expectation<any, Actual>;
2
+ export declare function and<Actual>(...expectations: Array<Expectation<Actual>>): Expectation<Actual>;
@@ -12,13 +12,13 @@ exports.and = and;
12
12
  */
13
13
  class And extends core_1.Expectation {
14
14
  constructor(expectations) {
15
- super(expectations.map(assertion => assertion.toString()).join(' and '));
15
+ super(expectations.map(expectation => expectation.toString()).join(And.Separator), (actor, actual) => {
16
+ return expectations.reduce((previous, current) => previous.then(outcome => (0, tiny_types_1.match)(outcome)
17
+ .when(core_1.ExpectationNotMet, o => o)
18
+ .else(_ => actor.answer(current.isMetFor(actual)))), Promise.resolve(void 0));
19
+ });
16
20
  this.expectations = expectations;
17
21
  }
18
- answeredBy(actor) {
19
- return (actual) => this.expectations.reduce((previous, current) => previous.then(outcome => (0, tiny_types_1.match)(outcome)
20
- .when(core_1.ExpectationNotMet, o => o)
21
- .else(_ => current.answeredBy(actor)(actual))), Promise.resolve(void 0));
22
- }
23
22
  }
23
+ And.Separator = ' and ';
24
24
  //# sourceMappingURL=and.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"and.js","sourceRoot":"","sources":["../../src/expectations/and.ts"],"names":[],"mappings":";;;AAAA,4CAAyG;AACzG,2CAAmC;AAEnC,SAAgB,GAAG,CAAS,GAAG,YAA6C;IACxE,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC;AAFD,kBAEC;AAED;;GAEG;AACH,MAAM,GAAY,SAAQ,kBAAwB;IAC9C,YAA6B,YAA6C;QACtE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QADhD,iBAAY,GAAZ,YAAY,CAAiC;IAE1E,CAAC;IAED,UAAU,CAAC,KAAuB;QAE9B,OAAO,CAAC,MAAW,EAAE,EAAE,CACnB,IAAI,CAAC,YAAY,CAAC,MAAM,CACpB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAClB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACpB,IAAA,kBAAK,EAAC,OAAO,CAAC;aACT,IAAI,CAAC,wBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CACpD,EACL,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAC1B,CAAC;IACV,CAAC;CACJ"}
1
+ {"version":3,"file":"and.js","sourceRoot":"","sources":["../../src/expectations/and.ts"],"names":[],"mappings":";;;AAAA,4CAAiG;AACjG,2CAAmC;AAEnC,SAAgB,GAAG,CAAS,GAAG,YAAwC;IACnE,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC;AAFD,kBAEC;AAED;;GAEG;AACH,MAAM,GAAY,SAAQ,kBAAmB;IAGzC,YAA6B,YAAwC;QACjE,KAAK,CACD,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAC3E,CAAC,KAAuB,EAAE,MAA0B,EAAE,EAAE;YACpD,OAAO,YAAY,CAAC,MAAM,CACtB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAClB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACpB,IAAA,kBAAK,EAAC,OAAO,CAAC;iBACT,IAAI,CAAC,wBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CACzD,EACL,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAC1B,CAAC;QACN,CAAC,CACJ,CAAC;QAduB,iBAAY,GAAZ,YAAY,CAA4B;IAerE,CAAC;;AAjBuB,aAAS,GAAG,OAAO,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import { Answerable, Expectation } from '@serenity-js/core';
2
- export declare function contain<Item>(expected: Answerable<Item>): Expectation<Item, Item[]>;
2
+ export declare function contain<Item>(expected: Answerable<Item>): Expectation<Item[]>;
@@ -1,2 +1,2 @@
1
1
  import { Expectation } from '@serenity-js/core';
2
- export declare function containAtLeastOneItemThat<Actual>(expectation: Expectation<any, Actual>): Expectation<any, Actual[]>;
2
+ export declare function containAtLeastOneItemThat<Actual>(expectation: Expectation<Actual>): Expectation<Actual[]>;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.containAtLeastOneItemThat = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
- const io_1 = require("@serenity-js/core/lib/io");
6
5
  function containAtLeastOneItemThat(expectation) {
7
6
  return new ContainAtLeastOneItemThatMeetsExpectation(expectation);
8
7
  }
@@ -12,16 +11,24 @@ exports.containAtLeastOneItemThat = containAtLeastOneItemThat;
12
11
  */
13
12
  class ContainAtLeastOneItemThatMeetsExpectation extends core_1.Expectation {
14
13
  constructor(expectation) {
15
- super((0, io_1.formatted) `contain at least one item that does ${expectation}`);
14
+ super(ContainAtLeastOneItemThatMeetsExpectation.descriptionFor(expectation), async (actor, actual) => {
15
+ const items = await actor.answer(actual);
16
+ if (!items || items.length === 0) {
17
+ return new core_1.ExpectationNotMet(ContainAtLeastOneItemThatMeetsExpectation.descriptionFor(expectation), undefined, items);
18
+ }
19
+ let outcome;
20
+ for (const item of items) {
21
+ outcome = await actor.answer(expectation.isMetFor(item));
22
+ if (outcome instanceof core_1.ExpectationMet) {
23
+ return new core_1.ExpectationMet(ContainAtLeastOneItemThatMeetsExpectation.descriptionFor(expectation), outcome.expected, items);
24
+ }
25
+ }
26
+ return new core_1.ExpectationNotMet(ContainAtLeastOneItemThatMeetsExpectation.descriptionFor(expectation), outcome.expected, items);
27
+ });
16
28
  this.expectation = expectation;
17
29
  }
18
- answeredBy(actor) {
19
- return (actual) => actual.length === 0
20
- ? Promise.resolve(new core_1.ExpectationNotMet(this.toString(), undefined, actual))
21
- : Promise.all(actual.map(item => this.expectation.answeredBy(actor)(item)))
22
- .then(results => results.some(result => result instanceof core_1.ExpectationMet)
23
- ? new core_1.ExpectationMet(this.toString(), results[0].expected, actual)
24
- : new core_1.ExpectationNotMet(this.toString(), results[0].expected, actual));
30
+ static descriptionFor(expectation) {
31
+ return (0, core_1.d) `contain at least one item that does ${expectation}`;
25
32
  }
26
33
  }
27
34
  //# sourceMappingURL=containAtLeastOneItemThat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"containAtLeastOneItemThat.js","sourceRoot":"","sources":["../../src/expectations/containAtLeastOneItemThat.ts"],"names":[],"mappings":";;;AAAA,4CAAyH;AACzH,iDAAqD;AAErD,SAAgB,yBAAyB,CAAS,WAAqC;IACnF,OAAO,IAAI,yCAAyC,CAAC,WAAW,CAAC,CAAC;AACtE,CAAC;AAFD,8DAEC;AAED;;GAEG;AACH,MAAM,yCAA4D,SAAQ,kBAA+B;IACrG,YAA6B,WAA0C;QACnE,KAAK,CAAC,IAAA,cAAS,EAAC,uCAAwC,WAAY,EAAE,CAAC,CAAC;QAD/C,gBAAW,GAAX,WAAW,CAA+B;IAEvE,CAAC;IAED,UAAU,CAAC,KAAuB;QAC9B,OAAO,CAAC,MAAgB,EAAE,EAAE,CACxB,MAAM,CAAC,MAAM,KAAK,CAAC;YACf,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,wBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC5E,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,YAAY,qBAAc,CAAC;gBACrE,CAAC,CAAC,IAAI,qBAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAClE,CAAC,CAAC,IAAI,wBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CACxE,CAAC;IAClB,CAAC;CACJ"}
1
+ {"version":3,"file":"containAtLeastOneItemThat.js","sourceRoot":"","sources":["../../src/expectations/containAtLeastOneItemThat.ts"],"names":[],"mappings":";;;AAAA,4CAAwI;AAExI,SAAgB,yBAAyB,CAAS,WAAgC;IAC9E,OAAO,IAAI,yCAAyC,CAAC,WAAW,CAAC,CAAC;AACtE,CAAC;AAFD,8DAEC;AAED;;GAEG;AACH,MAAM,yCAAkD,SAAQ,kBAAqB;IAMjF,YAA6B,WAAgC;QACzD,KAAK,CACD,yCAAyC,CAAC,cAAc,CAAC,WAAW,CAAC,EACrE,KAAK,EAAE,KAAuB,EAAE,MAA4B,EAAE,EAAE;YAE5D,MAAM,KAAK,GAAa,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,CAAE,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC/B,OAAO,IAAI,wBAAiB,CACxB,yCAAyC,CAAC,cAAc,CAAC,WAAW,CAAC,EACrE,SAAS,EACT,KAAK,CACR,CAAC;aACL;YAED,IAAI,OAA4C,CAAC;YAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBAEtB,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;gBAExD,IAAI,OAAO,YAAY,qBAAc,EAAE;oBACnC,OAAO,IAAI,qBAAc,CACrB,yCAAyC,CAAC,cAAc,CAAC,WAAW,CAAC,EACrE,OAAO,CAAC,QAAQ,EAChB,KAAK,CACR,CAAC;iBACL;aACJ;YAED,OAAO,IAAI,wBAAiB,CAAC,yCAAyC,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjI,CAAC,CACJ,CAAC;QAhCuB,gBAAW,GAAX,WAAW,CAAqB;IAiC7D,CAAC;IArCO,MAAM,CAAC,cAAc,CAAC,WAA6B;QACvD,OAAO,IAAA,QAAC,EAAA,uCAAwC,WAAY,EAAE,CAAC;IACnE,CAAC;CAoCJ"}
@@ -1,2 +1,2 @@
1
1
  import { Expectation } from '@serenity-js/core';
2
- export declare function containItemsWhereEachItem<Actual>(expectation: Expectation<any, Actual>): Expectation<any, Actual[]>;
2
+ export declare function containItemsWhereEachItem<Actual>(expectation: Expectation<Actual>): Expectation<Actual[]>;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.containItemsWhereEachItem = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
- const io_1 = require("@serenity-js/core/lib/io");
6
5
  function containItemsWhereEachItem(expectation) {
7
6
  return new ContainItemsWhereEachItemMeetsExpectation(expectation);
8
7
  }
@@ -12,16 +11,24 @@ exports.containItemsWhereEachItem = containItemsWhereEachItem;
12
11
  */
13
12
  class ContainItemsWhereEachItemMeetsExpectation extends core_1.Expectation {
14
13
  constructor(expectation) {
15
- super((0, io_1.formatted) `contain items where each item does ${expectation}`);
14
+ super(ContainItemsWhereEachItemMeetsExpectation.descriptionFor(expectation), async (actor, actual) => {
15
+ const items = await actor.answer(actual);
16
+ if (!items || items.length === 0) {
17
+ return new core_1.ExpectationNotMet(ContainItemsWhereEachItemMeetsExpectation.descriptionFor(expectation), undefined, items);
18
+ }
19
+ let outcome;
20
+ for (const item of items) {
21
+ outcome = await actor.answer(expectation.isMetFor(item));
22
+ if (outcome instanceof core_1.ExpectationNotMet) {
23
+ return new core_1.ExpectationNotMet(ContainItemsWhereEachItemMeetsExpectation.descriptionFor(expectation), outcome.expected, items);
24
+ }
25
+ }
26
+ return new core_1.ExpectationMet(ContainItemsWhereEachItemMeetsExpectation.descriptionFor(expectation), outcome.expected, items);
27
+ });
16
28
  this.expectation = expectation;
17
29
  }
18
- answeredBy(actor) {
19
- return (actual) => actual.length === 0
20
- ? Promise.resolve(new core_1.ExpectationNotMet(this.toString(), undefined, actual))
21
- : Promise.all(actual.map(item => this.expectation.answeredBy(actor)(item)))
22
- .then(results => results.every(result => result instanceof core_1.ExpectationMet)
23
- ? new core_1.ExpectationMet(this.toString(), results[0].expected, actual)
24
- : new core_1.ExpectationNotMet(this.toString(), results[0].expected, actual));
30
+ static descriptionFor(expectation) {
31
+ return (0, core_1.d) `contain items where each item does ${expectation}`;
25
32
  }
26
33
  }
27
34
  //# sourceMappingURL=containItemsWhereEachItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"containItemsWhereEachItem.js","sourceRoot":"","sources":["../../src/expectations/containItemsWhereEachItem.ts"],"names":[],"mappings":";;;AAAA,4CAAyH;AACzH,iDAAqD;AAErD,SAAgB,yBAAyB,CAAS,WAAqC;IACnF,OAAO,IAAI,yCAAyC,CAAC,WAAW,CAAC,CAAC;AACtE,CAAC;AAFD,8DAEC;AAED;;GAEG;AACH,MAAM,yCAA4D,SAAQ,kBAA+B;IACrG,YAA6B,WAA0C;QACnE,KAAK,CAAC,IAAA,cAAS,EAAC,sCAAuC,WAAY,EAAE,CAAC,CAAC;QAD9C,gBAAW,GAAX,WAAW,CAA+B;IAEvE,CAAC;IAED,UAAU,CAAC,KAAuB;QAC9B,OAAO,CAAC,MAAgB,EAAE,EAAE,CACxB,MAAM,CAAC,MAAM,KAAK,CAAC;YACf,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,wBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC5E,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,YAAY,qBAAc,CAAC;gBACtE,CAAC,CAAC,IAAI,qBAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAClE,CAAC,CAAC,IAAI,wBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CACxE,CAAC;IAClB,CAAC;CACJ"}
1
+ {"version":3,"file":"containItemsWhereEachItem.js","sourceRoot":"","sources":["../../src/expectations/containItemsWhereEachItem.ts"],"names":[],"mappings":";;;AAAA,4CAAwI;AAExI,SAAgB,yBAAyB,CAAS,WAAgC;IAC9E,OAAO,IAAI,yCAAyC,CAAC,WAAW,CAAC,CAAC;AACtE,CAAC;AAFD,8DAEC;AAED;;GAEG;AACH,MAAM,yCAAkD,SAAQ,kBAAqB;IAMjF,YAA6B,WAAgC;QACzD,KAAK,CACD,yCAAyC,CAAC,cAAc,CAAC,WAAW,CAAC,EACrE,KAAK,EAAE,KAAuB,EAAE,MAA4B,EAAE,EAAE;YAE5D,MAAM,KAAK,GAAa,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,CAAE,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC/B,OAAO,IAAI,wBAAiB,CACxB,yCAAyC,CAAC,cAAc,CAAC,WAAW,CAAC,EACrE,SAAS,EACT,KAAK,CACR,CAAC;aACL;YAED,IAAI,OAA4C,CAAC;YAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBAEtB,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;gBAExD,IAAI,OAAO,YAAY,wBAAiB,EAAE;oBACtC,OAAO,IAAI,wBAAiB,CACxB,yCAAyC,CAAC,cAAc,CAAC,WAAW,CAAC,EACrE,OAAO,CAAC,QAAQ,EAChB,KAAK,CACR,CAAC;iBACL;aACJ;YAED,OAAO,IAAI,qBAAc,CAAC,yCAAyC,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9H,CAAC,CACJ,CAAC;QAhCuB,gBAAW,GAAX,WAAW,CAAqB;IAiC7D,CAAC;IArCO,MAAM,CAAC,cAAc,CAAC,WAA6B;QACvD,OAAO,IAAA,QAAC,EAAA,sCAAuC,WAAY,EAAE,CAAC;IAClE,CAAC;CAoCJ"}
@@ -10,9 +10,9 @@ export * from './isBefore';
10
10
  export * from './isFalse';
11
11
  export * from './isGreaterThan';
12
12
  export * from './isLessThan';
13
+ export * from './isPresent';
13
14
  export * from './isTrue';
14
15
  export * from './matches';
15
16
  export * from './not';
16
17
  export * from './or';
17
- export * from './property';
18
18
  export * from './startsWith';
@@ -22,10 +22,10 @@ __exportStar(require("./isBefore"), exports);
22
22
  __exportStar(require("./isFalse"), exports);
23
23
  __exportStar(require("./isGreaterThan"), exports);
24
24
  __exportStar(require("./isLessThan"), exports);
25
+ __exportStar(require("./isPresent"), exports);
25
26
  __exportStar(require("./isTrue"), exports);
26
27
  __exportStar(require("./matches"), exports);
27
28
  __exportStar(require("./not"), exports);
28
29
  __exportStar(require("./or"), exports);
29
- __exportStar(require("./property"), exports);
30
30
  __exportStar(require("./startsWith"), exports);
31
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expectations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAsB;AACtB,4CAA0B;AAC1B,8DAA4C;AAC5C,8DAA4C;AAC5C,6CAA2B;AAC3B,2CAAyB;AACzB,6CAA2B;AAC3B,4CAA0B;AAC1B,6CAA2B;AAC3B,4CAA0B;AAC1B,kDAAgC;AAChC,+CAA6B;AAC7B,2CAAyB;AACzB,4CAA0B;AAC1B,wCAAsB;AACtB,uCAAqB;AACrB,6CAA2B;AAC3B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expectations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAsB;AACtB,4CAA0B;AAC1B,8DAA4C;AAC5C,8DAA4C;AAC5C,6CAA2B;AAC3B,2CAAyB;AACzB,6CAA2B;AAC3B,4CAA0B;AAC1B,6CAA2B;AAC3B,4CAA0B;AAC1B,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,wCAAsB;AACtB,uCAAqB;AACrB,+CAA6B"}
@@ -1 +1 @@
1
- {"version":3,"file":"isFalse.js","sourceRoot":"","sources":["../../src/expectations/isFalse.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAEhD,qCAAkC;AAElC,SAAgB,OAAO;IACnB,OAAO,kBAAW,CAAC,EAAE,CAAU,aAAa,CAAC,CAAC,YAAY,CAAC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAFD,0BAEC"}
1
+ {"version":3,"file":"isFalse.js","sourceRoot":"","sources":["../../src/expectations/isFalse.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAEhD,qCAAkC;AAElC,SAAgB,OAAO;IACnB,OAAO,kBAAW,CAAC,EAAE,CAAiB,aAAa,CAAC,CAAC,YAAY,CAAC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC;AACrF,CAAC;AAFD,0BAEC"}