hein 2.0.0-alpha.2 → 2.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/rolldown_runtime.cjs +34 -0
- package/dist/assert/deep-equal.cjs +40 -0
- package/dist/assert/deep-equal.cjs.map +1 -0
- package/dist/assert/deep-equal.d.cts +5 -0
- package/dist/assert/deep-equal.d.cts.map +1 -0
- package/dist/assert/deep-equal.d.ts +5 -0
- package/dist/assert/deep-equal.d.ts.map +1 -0
- package/dist/assert/deep-equal.js +36 -0
- package/dist/assert/deep-equal.js.map +1 -0
- package/dist/assert/deep-has-property.cjs +68 -0
- package/dist/assert/deep-has-property.cjs.map +1 -0
- package/dist/assert/deep-has-property.d.cts +22 -0
- package/dist/assert/deep-has-property.d.cts.map +1 -0
- package/dist/assert/deep-has-property.d.ts +22 -0
- package/dist/assert/deep-has-property.d.ts.map +1 -0
- package/dist/assert/deep-has-property.js +63 -0
- package/dist/assert/deep-has-property.js.map +1 -0
- package/dist/assert/ends-with.cjs +30 -0
- package/dist/assert/ends-with.cjs.map +1 -0
- package/dist/assert/ends-with.d.cts +13 -0
- package/dist/assert/ends-with.d.cts.map +1 -0
- package/dist/assert/ends-with.d.ts +13 -0
- package/dist/assert/ends-with.d.ts.map +1 -0
- package/dist/assert/ends-with.js +27 -0
- package/dist/assert/ends-with.js.map +1 -0
- package/dist/assert/equal.cjs +37 -0
- package/dist/assert/equal.cjs.map +1 -0
- package/dist/assert/equal.d.cts +11 -0
- package/dist/assert/equal.d.cts.map +1 -0
- package/dist/assert/equal.d.ts +11 -0
- package/dist/assert/equal.d.ts.map +1 -0
- package/dist/assert/equal.js +34 -0
- package/dist/assert/equal.js.map +1 -0
- package/dist/assert/greater-than-equal.cjs +32 -0
- package/dist/assert/greater-than-equal.cjs.map +1 -0
- package/dist/assert/greater-than-equal.d.cts +11 -0
- package/dist/assert/greater-than-equal.d.cts.map +1 -0
- package/dist/assert/greater-than-equal.d.ts +11 -0
- package/dist/assert/greater-than-equal.d.ts.map +1 -0
- package/dist/assert/greater-than-equal.js +29 -0
- package/dist/assert/greater-than-equal.js.map +1 -0
- package/dist/assert/greater-than.cjs +33 -0
- package/dist/assert/greater-than.cjs.map +1 -0
- package/dist/assert/greater-than.d.cts +11 -0
- package/dist/assert/greater-than.d.cts.map +1 -0
- package/dist/assert/greater-than.d.ts +11 -0
- package/dist/assert/greater-than.d.ts.map +1 -0
- package/dist/assert/greater-than.js +30 -0
- package/dist/assert/greater-than.js.map +1 -0
- package/dist/assert/has-keys.cjs +58 -0
- package/dist/assert/has-keys.cjs.map +1 -0
- package/dist/assert/has-keys.d.cts +16 -0
- package/dist/assert/has-keys.d.cts.map +1 -0
- package/dist/assert/has-keys.d.ts +16 -0
- package/dist/assert/has-keys.d.ts.map +1 -0
- package/dist/assert/has-keys.js +54 -0
- package/dist/assert/has-keys.js.map +1 -0
- package/dist/assert/has-members.cjs +67 -0
- package/dist/assert/has-members.cjs.map +1 -0
- package/dist/assert/has-members.d.cts +48 -0
- package/dist/assert/has-members.d.cts.map +1 -0
- package/dist/assert/has-members.d.ts +48 -0
- package/dist/assert/has-members.d.ts.map +1 -0
- package/dist/assert/has-members.js +64 -0
- package/dist/assert/has-members.js.map +1 -0
- package/dist/assert/has-property.cjs +61 -0
- package/dist/assert/has-property.cjs.map +1 -0
- package/dist/assert/has-property.d.cts +22 -0
- package/dist/assert/has-property.d.cts.map +1 -0
- package/dist/assert/has-property.d.ts +22 -0
- package/dist/assert/has-property.d.ts.map +1 -0
- package/dist/assert/has-property.js +58 -0
- package/dist/assert/has-property.js.map +1 -0
- package/dist/assert/has-size.cjs +122 -0
- package/dist/assert/has-size.cjs.map +1 -0
- package/dist/assert/has-size.d.cts +42 -0
- package/dist/assert/has-size.d.cts.map +1 -0
- package/dist/assert/has-size.d.ts +42 -0
- package/dist/assert/has-size.d.ts.map +1 -0
- package/dist/assert/has-size.js +118 -0
- package/dist/assert/has-size.js.map +1 -0
- package/dist/assert/in-ballpark.cjs +44 -0
- package/dist/assert/in-ballpark.cjs.map +1 -0
- package/dist/assert/in-ballpark.d.cts +16 -0
- package/dist/assert/in-ballpark.d.cts.map +1 -0
- package/dist/assert/in-ballpark.d.ts +16 -0
- package/dist/assert/in-ballpark.d.ts.map +1 -0
- package/dist/assert/in-ballpark.js +41 -0
- package/dist/assert/in-ballpark.js.map +1 -0
- package/dist/assert/includes.cjs +30 -0
- package/dist/assert/includes.cjs.map +1 -0
- package/dist/assert/includes.d.cts +24 -0
- package/dist/assert/includes.d.cts.map +1 -0
- package/dist/assert/includes.d.ts +24 -0
- package/dist/assert/includes.d.ts.map +1 -0
- package/dist/assert/includes.js +27 -0
- package/dist/assert/includes.js.map +1 -0
- package/dist/assert/instance-of.cjs +36 -0
- package/dist/assert/instance-of.cjs.map +1 -0
- package/dist/assert/instance-of.d.cts +16 -0
- package/dist/assert/instance-of.d.cts.map +1 -0
- package/dist/assert/instance-of.d.ts +16 -0
- package/dist/assert/instance-of.d.ts.map +1 -0
- package/dist/assert/instance-of.js +32 -0
- package/dist/assert/instance-of.js.map +1 -0
- package/dist/assert/is-after.cjs +29 -0
- package/dist/assert/is-after.cjs.map +1 -0
- package/dist/assert/is-after.d.cts +11 -0
- package/dist/assert/is-after.d.cts.map +1 -0
- package/dist/assert/is-after.d.ts +11 -0
- package/dist/assert/is-after.d.ts.map +1 -0
- package/dist/assert/is-after.js +26 -0
- package/dist/assert/is-after.js.map +1 -0
- package/dist/assert/is-before.cjs +29 -0
- package/dist/assert/is-before.cjs.map +1 -0
- package/dist/assert/is-before.d.cts +11 -0
- package/dist/assert/is-before.d.cts.map +1 -0
- package/dist/assert/is-before.d.ts +11 -0
- package/dist/assert/is-before.d.ts.map +1 -0
- package/dist/assert/is-before.js +26 -0
- package/dist/assert/is-before.js.map +1 -0
- package/dist/assert/is-between.cjs +47 -0
- package/dist/assert/is-between.cjs.map +1 -0
- package/dist/assert/is-between.d.cts +15 -0
- package/dist/assert/is-between.d.cts.map +1 -0
- package/dist/assert/is-between.d.ts +15 -0
- package/dist/assert/is-between.d.ts.map +1 -0
- package/dist/assert/is-between.js +44 -0
- package/dist/assert/is-between.js.map +1 -0
- package/dist/assert/is-empty.cjs +98 -0
- package/dist/assert/is-empty.cjs.map +1 -0
- package/dist/assert/is-empty.d.cts +31 -0
- package/dist/assert/is-empty.d.cts.map +1 -0
- package/dist/assert/is-empty.d.ts +31 -0
- package/dist/assert/is-empty.d.ts.map +1 -0
- package/dist/assert/is-empty.js +94 -0
- package/dist/assert/is-empty.js.map +1 -0
- package/dist/assert/is-type.cjs +34 -0
- package/dist/assert/is-type.cjs.map +1 -0
- package/dist/assert/is-type.d.cts +97 -0
- package/dist/assert/is-type.d.cts.map +1 -0
- package/dist/assert/is-type.d.ts +97 -0
- package/dist/assert/is-type.d.ts.map +1 -0
- package/dist/assert/is-type.js +31 -0
- package/dist/assert/is-type.js.map +1 -0
- package/dist/assert/less-than-equal.cjs +36 -0
- package/dist/assert/less-than-equal.cjs.map +1 -0
- package/dist/assert/less-than-equal.d.cts +11 -0
- package/dist/assert/less-than-equal.d.cts.map +1 -0
- package/dist/assert/less-than-equal.d.ts +11 -0
- package/dist/assert/less-than-equal.d.ts.map +1 -0
- package/dist/assert/less-than-equal.js +33 -0
- package/dist/assert/less-than-equal.js.map +1 -0
- package/dist/assert/less-than.cjs +34 -0
- package/dist/assert/less-than.cjs.map +1 -0
- package/dist/assert/less-than.d.cts +11 -0
- package/dist/assert/less-than.d.cts.map +1 -0
- package/dist/assert/less-than.d.ts +11 -0
- package/dist/assert/less-than.d.ts.map +1 -0
- package/dist/assert/less-than.js +31 -0
- package/dist/assert/less-than.js.map +1 -0
- package/dist/assert/match.cjs +31 -0
- package/dist/assert/match.cjs.map +1 -0
- package/dist/assert/match.d.cts +15 -0
- package/dist/assert/match.d.cts.map +1 -0
- package/dist/assert/match.d.ts +15 -0
- package/dist/assert/match.d.ts.map +1 -0
- package/dist/assert/match.js +28 -0
- package/dist/assert/match.js.map +1 -0
- package/dist/assert/rejects.cjs +49 -0
- package/dist/assert/rejects.cjs.map +1 -0
- package/dist/assert/rejects.d.cts +36 -0
- package/dist/assert/rejects.d.cts.map +1 -0
- package/dist/assert/rejects.d.ts +36 -0
- package/dist/assert/rejects.d.ts.map +1 -0
- package/dist/assert/rejects.js +46 -0
- package/dist/assert/rejects.js.map +1 -0
- package/dist/assert/round-to.cjs +54 -0
- package/dist/assert/round-to.cjs.map +1 -0
- package/dist/assert/round-to.d.cts +15 -0
- package/dist/assert/round-to.d.cts.map +1 -0
- package/dist/assert/round-to.d.ts +15 -0
- package/dist/assert/round-to.d.ts.map +1 -0
- package/dist/assert/round-to.js +51 -0
- package/dist/assert/round-to.js.map +1 -0
- package/dist/assert/starts-with.cjs +30 -0
- package/dist/assert/starts-with.cjs.map +1 -0
- package/dist/assert/starts-with.d.cts +14 -0
- package/dist/assert/starts-with.d.cts.map +1 -0
- package/dist/assert/starts-with.d.ts +14 -0
- package/dist/assert/starts-with.d.ts.map +1 -0
- package/dist/assert/starts-with.js +27 -0
- package/dist/assert/starts-with.js.map +1 -0
- package/dist/assert/throws.cjs +41 -0
- package/dist/assert/throws.cjs.map +1 -0
- package/dist/assert/throws.d.cts +36 -0
- package/dist/assert/throws.d.cts.map +1 -0
- package/dist/assert/throws.d.ts +36 -0
- package/dist/assert/throws.d.ts.map +1 -0
- package/dist/assert/throws.js +38 -0
- package/dist/assert/throws.js.map +1 -0
- package/dist/assert.cjs +143 -52
- package/dist/assert.cjs.map +1 -0
- package/dist/assert.d.cts +34 -2
- package/dist/assert.d.cts.map +1 -0
- package/dist/assert.d.ts +34 -2
- package/dist/assert.d.ts.map +1 -0
- package/dist/assert.js +87 -2
- package/dist/assert.js.map +1 -0
- package/dist/expect/after.cjs +15 -0
- package/dist/expect/after.cjs.map +1 -0
- package/dist/expect/after.js +16 -0
- package/dist/expect/after.js.map +1 -0
- package/dist/expect/ballpark.cjs +15 -0
- package/dist/expect/ballpark.cjs.map +1 -0
- package/dist/expect/ballpark.js +16 -0
- package/dist/expect/ballpark.js.map +1 -0
- package/dist/expect/before.cjs +15 -0
- package/dist/expect/before.cjs.map +1 -0
- package/dist/expect/before.js +16 -0
- package/dist/expect/before.js.map +1 -0
- package/dist/expect/between.cjs +15 -0
- package/dist/expect/between.cjs.map +1 -0
- package/dist/expect/between.js +16 -0
- package/dist/expect/between.js.map +1 -0
- package/dist/expect/empty.cjs +15 -0
- package/dist/expect/empty.cjs.map +1 -0
- package/dist/expect/empty.js +16 -0
- package/dist/expect/empty.js.map +1 -0
- package/dist/expect/end-with.cjs +15 -0
- package/dist/expect/end-with.cjs.map +1 -0
- package/dist/expect/end-with.js +16 -0
- package/dist/expect/end-with.js.map +1 -0
- package/dist/expect/eql.cjs +21 -0
- package/dist/expect/eql.cjs.map +1 -0
- package/dist/expect/eql.js +22 -0
- package/dist/expect/eql.js.map +1 -0
- package/dist/expect/equal-shorthand.cjs +34 -0
- package/dist/expect/equal-shorthand.cjs.map +1 -0
- package/dist/expect/equal-shorthand.js +33 -0
- package/dist/expect/equal-shorthand.js.map +1 -0
- package/dist/expect/equal.cjs +27 -0
- package/dist/expect/equal.cjs.map +1 -0
- package/dist/expect/equal.js +28 -0
- package/dist/expect/equal.js.map +1 -0
- package/dist/expect/excluding.cjs +19 -0
- package/dist/expect/excluding.cjs.map +1 -0
- package/dist/expect/excluding.js +18 -0
- package/dist/expect/excluding.js.map +1 -0
- package/dist/expect/greater-than-equal.cjs +25 -0
- package/dist/expect/greater-than-equal.cjs.map +1 -0
- package/dist/expect/greater-than-equal.js +26 -0
- package/dist/expect/greater-than-equal.js.map +1 -0
- package/dist/expect/greater-than.cjs +25 -0
- package/dist/expect/greater-than.cjs.map +1 -0
- package/dist/expect/greater-than.js +26 -0
- package/dist/expect/greater-than.js.map +1 -0
- package/dist/expect/has-property.cjs +20 -0
- package/dist/expect/has-property.cjs.map +1 -0
- package/dist/expect/has-property.js +21 -0
- package/dist/expect/has-property.js.map +1 -0
- package/dist/expect/include.cjs +21 -0
- package/dist/expect/include.cjs.map +1 -0
- package/dist/expect/include.js +22 -0
- package/dist/expect/include.js.map +1 -0
- package/dist/expect/instance-of-shorthand.cjs +24 -0
- package/dist/expect/instance-of-shorthand.cjs.map +1 -0
- package/dist/expect/instance-of-shorthand.js +25 -0
- package/dist/expect/instance-of-shorthand.js.map +1 -0
- package/dist/expect/instance-of.cjs +15 -0
- package/dist/expect/instance-of.cjs.map +1 -0
- package/dist/expect/instance-of.js +16 -0
- package/dist/expect/instance-of.js.map +1 -0
- package/dist/expect/keys.cjs +15 -0
- package/dist/expect/keys.cjs.map +1 -0
- package/dist/expect/keys.js +16 -0
- package/dist/expect/keys.js.map +1 -0
- package/dist/expect/length.cjs +21 -0
- package/dist/expect/length.cjs.map +1 -0
- package/dist/expect/length.js +22 -0
- package/dist/expect/length.js.map +1 -0
- package/dist/expect/less-than-equal.cjs +25 -0
- package/dist/expect/less-than-equal.cjs.map +1 -0
- package/dist/expect/less-than-equal.js +26 -0
- package/dist/expect/less-than-equal.js.map +1 -0
- package/dist/expect/less-than.cjs +25 -0
- package/dist/expect/less-than.cjs.map +1 -0
- package/dist/expect/less-than.js +26 -0
- package/dist/expect/less-than.js.map +1 -0
- package/dist/expect/match.cjs +15 -0
- package/dist/expect/match.cjs.map +1 -0
- package/dist/expect/match.js +16 -0
- package/dist/expect/match.js.map +1 -0
- package/dist/expect/members.cjs +41 -0
- package/dist/expect/members.cjs.map +1 -0
- package/dist/expect/members.js +42 -0
- package/dist/expect/members.js.map +1 -0
- package/dist/expect/reject.cjs +14 -0
- package/dist/expect/reject.cjs.map +1 -0
- package/dist/expect/reject.js +15 -0
- package/dist/expect/reject.js.map +1 -0
- package/dist/expect/round-to.cjs +15 -0
- package/dist/expect/round-to.cjs.map +1 -0
- package/dist/expect/round-to.js +16 -0
- package/dist/expect/round-to.js.map +1 -0
- package/dist/expect/start-with.cjs +15 -0
- package/dist/expect/start-with.cjs.map +1 -0
- package/dist/expect/start-with.js +16 -0
- package/dist/expect/start-with.js.map +1 -0
- package/dist/expect/throw.cjs +14 -0
- package/dist/expect/throw.cjs.map +1 -0
- package/dist/expect/throw.js +15 -0
- package/dist/expect/throw.js.map +1 -0
- package/dist/expect/type-shorthand.cjs +29 -0
- package/dist/expect/type-shorthand.cjs.map +1 -0
- package/dist/expect/type-shorthand.js +30 -0
- package/dist/expect/type-shorthand.js.map +1 -0
- package/dist/expect/type.cjs +15 -0
- package/dist/expect/type.cjs.map +1 -0
- package/dist/expect/type.js +16 -0
- package/dist/expect/type.js.map +1 -0
- package/dist/expect.cjs +144 -0
- package/dist/expect.cjs.map +1 -0
- package/dist/expect.d.cts +10 -0
- package/dist/expect.d.cts.map +1 -0
- package/dist/expect.d.ts +10 -0
- package/dist/expect.d.ts.map +1 -0
- package/dist/expect.js +141 -0
- package/dist/expect.js.map +1 -0
- package/dist/expect.types.d.cts +14 -404
- package/dist/expect.types.d.cts.map +1 -1
- package/dist/expect.types.d.ts +13 -405
- package/dist/expect.types.d.ts.map +1 -1
- package/dist/index.cjs +13 -582
- package/dist/index.d.cts +8 -469
- package/dist/index.d.ts +8 -469
- package/dist/index.js +8 -575
- package/dist/mixins.cjs +11 -0
- package/dist/mixins.cjs.map +1 -0
- package/dist/mixins.d.cts +28 -0
- package/dist/mixins.d.cts.map +1 -0
- package/dist/mixins.d.ts +28 -0
- package/dist/mixins.d.ts.map +1 -0
- package/dist/mixins.js +9 -0
- package/dist/mixins.js.map +1 -0
- package/dist/utils/chain.cjs +20 -0
- package/dist/utils/chain.cjs.map +1 -0
- package/dist/utils/chain.js +18 -0
- package/dist/utils/chain.js.map +1 -0
- package/dist/utils/fail.cjs +16 -0
- package/dist/utils/fail.cjs.map +1 -0
- package/dist/utils/fail.d.cts +9 -0
- package/dist/utils/fail.d.cts.map +1 -0
- package/dist/utils/fail.d.ts +9 -0
- package/dist/utils/fail.d.ts.map +1 -0
- package/dist/utils/fail.js +14 -0
- package/dist/utils/fail.js.map +1 -0
- package/dist/utils/get-size.cjs +17 -0
- package/dist/utils/get-size.cjs.map +1 -0
- package/dist/utils/get-size.js +15 -0
- package/dist/utils/get-size.js.map +1 -0
- package/dist/utils/get-type.cjs +12 -0
- package/dist/utils/get-type.cjs.map +1 -0
- package/dist/utils/get-type.d.cts +5 -0
- package/dist/utils/get-type.d.cts.map +1 -0
- package/dist/utils/get-type.d.ts +5 -0
- package/dist/utils/get-type.d.ts.map +1 -0
- package/dist/utils/get-type.js +11 -0
- package/dist/utils/get-type.js.map +1 -0
- package/dist/utils/match.cjs +118 -0
- package/dist/utils/match.cjs.map +1 -0
- package/dist/utils/match.d.cts +7 -0
- package/dist/utils/match.d.cts.map +1 -0
- package/dist/utils/match.d.ts +7 -0
- package/dist/utils/match.d.ts.map +1 -0
- package/dist/utils/match.js +114 -0
- package/dist/utils/match.js.map +1 -0
- package/dist/utils/process-error.cjs +86 -0
- package/dist/utils/process-error.cjs.map +1 -0
- package/dist/utils/process-error.d.cts +8 -0
- package/dist/utils/process-error.d.cts.map +1 -0
- package/dist/utils/process-error.d.ts +10 -0
- package/dist/utils/process-error.d.ts.map +1 -0
- package/dist/utils/process-error.js +85 -0
- package/dist/utils/process-error.js.map +1 -0
- package/dist/utils/validate-numeric-and-dates.cjs +20 -0
- package/dist/utils/validate-numeric-and-dates.cjs.map +1 -0
- package/dist/utils/validate-numeric-and-dates.js +18 -0
- package/dist/utils/validate-numeric-and-dates.js.map +1 -0
- package/dist/utils/xor.cjs +9 -0
- package/dist/utils/xor.cjs.map +1 -0
- package/dist/utils/xor.js +8 -0
- package/dist/utils/xor.js.map +1 -0
- package/package.json +1 -1
- package/dist/assert-CJsbhtgi.d.ts +0 -519
- package/dist/assert-CJsbhtgi.d.ts.map +0 -1
- package/dist/assert-DZjgWjOw.cjs +0 -1626
- package/dist/assert-DZjgWjOw.cjs.map +0 -1
- package/dist/assert-itrfuDRd.d.cts +0 -518
- package/dist/assert-itrfuDRd.d.cts.map +0 -1
- package/dist/assert-kFXp7i_B.js +0 -1260
- package/dist/assert-kFXp7i_B.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- /package/dist/{chunk-CTAAG5j7.js → _virtual/rolldown_runtime.js} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/assert/greater-than-equal.d.ts
|
|
2
|
+
interface GreaterThanEqual {
|
|
3
|
+
/**
|
|
4
|
+
* check for >=
|
|
5
|
+
*/
|
|
6
|
+
<T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;
|
|
7
|
+
}
|
|
8
|
+
declare const greaterThanEqual: GreaterThanEqual, notGreaterThanEqual: GreaterThanEqual;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { greaterThanEqual, notGreaterThanEqual };
|
|
11
|
+
//# sourceMappingURL=greater-than-equal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"greater-than-equal.d.ts","names":[],"sources":["../../src/assert/greater-than-equal.ts"],"sourcesContent":[],"mappings":";UAGU,gBAAA;EAAA;;;aAIqC,MAAA,GAAA,MAAA,GAAd,IAAc,CAAA,CAAA,MAAA,EAAA,CAAA,EAAA,QAAA,EAAa,CAAb,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAAc,cAG/C,gBAH+C,EAG/B,gBAH+B,EAAA,mBAAA,EAGV,gBAHU"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { validateNumericsAndDates } from "../utils/validate-numeric-and-dates.js";
|
|
2
|
+
import { createAssertion } from "hein-assertion-utils";
|
|
3
|
+
|
|
4
|
+
//#region src/assert/greater-than-equal.ts
|
|
5
|
+
const [greaterThanEqual, notGreaterThanEqual] = createAssertion({
|
|
6
|
+
messages: {
|
|
7
|
+
notGreaterThanEqual: "Expected {{= it.actual }} to not be greater than or equal to {{= it.expected }}",
|
|
8
|
+
not: "Expected {{= it.actual }} to not be greater than or equal to {{= it.expected }}"
|
|
9
|
+
},
|
|
10
|
+
test: (report) => (a, b, message) => {
|
|
11
|
+
validateNumericsAndDates(a, b);
|
|
12
|
+
if (a < b) return report({
|
|
13
|
+
status: "notok",
|
|
14
|
+
messageId: "notGreaterThanEqual",
|
|
15
|
+
actual: a,
|
|
16
|
+
expected: b,
|
|
17
|
+
message
|
|
18
|
+
});
|
|
19
|
+
return report({
|
|
20
|
+
status: "ok",
|
|
21
|
+
expected: a,
|
|
22
|
+
actual: b
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
export { greaterThanEqual, notGreaterThanEqual };
|
|
29
|
+
//# sourceMappingURL=greater-than-equal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"greater-than-equal.js","names":[],"sources":["../../src/assert/greater-than-equal.ts"],"sourcesContent":["import { createAssertion } from 'hein-assertion-utils';\nimport { validateNumericsAndDates } from '../utils/validate-numeric-and-dates.js';\n\ninterface GreaterThanEqual {\n /**\n * check for >=\n */\n <T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;\n}\n\nexport const [greaterThanEqual, notGreaterThanEqual] = createAssertion({\n messages: {\n notGreaterThanEqual: 'Expected {{= it.actual }} to not be greater than or equal to {{= it.expected }}',\n not: 'Expected {{= it.actual }} to not be greater than or equal to {{= it.expected }}'\n },\n test:\n (report): GreaterThanEqual =>\n (a: any, b: any, message?: string) => {\n validateNumericsAndDates(a, b);\n if (a < b) {\n return report({ status: 'notok', messageId: 'notGreaterThanEqual', actual: a, expected: b, message });\n }\n return report({ status: 'ok', expected: a, actual: b });\n }\n});\n"],"mappings":";;;;AAUA,MAAa,CAAC,kBAAkB,uBAAuB,gBAAgB;CACnE,UAAU;EACN,qBAAqB;EACrB,KAAK;EACR;CACD,OACK,YACA,GAAQ,GAAQ,YAAqB;AAClC,2BAAyB,GAAG,EAAE;AAC9B,MAAI,IAAI,EACJ,QAAO,OAAO;GAAE,QAAQ;GAAS,WAAW;GAAuB,QAAQ;GAAG,UAAU;GAAG;GAAS,CAAC;AAEzG,SAAO,OAAO;GAAE,QAAQ;GAAM,UAAU;GAAG,QAAQ;GAAG,CAAC;;CAElE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_validate_numeric_and_dates = require('../utils/validate-numeric-and-dates.cjs');
|
|
3
|
+
let hein_assertion_utils = require("hein-assertion-utils");
|
|
4
|
+
hein_assertion_utils = require_rolldown_runtime.__toESM(hein_assertion_utils);
|
|
5
|
+
|
|
6
|
+
//#region src/assert/greater-than.ts
|
|
7
|
+
const [greaterThan, notGreaterThan] = (0, hein_assertion_utils.createAssertion)({
|
|
8
|
+
messages: {
|
|
9
|
+
smaller: "Expected {{= it.actual }} to be greater than {{= it.expected }}",
|
|
10
|
+
not: "Expected {{= it.actual }} to not be greater than {{= it.expected }}"
|
|
11
|
+
},
|
|
12
|
+
test: (report) => (actual, expected) => {
|
|
13
|
+
require_validate_numeric_and_dates.validateNumericsAndDates(actual, expected);
|
|
14
|
+
if (actual > expected) return report({
|
|
15
|
+
status: "ok",
|
|
16
|
+
messageId: "not",
|
|
17
|
+
expected,
|
|
18
|
+
actual
|
|
19
|
+
});
|
|
20
|
+
return report({
|
|
21
|
+
status: "notok",
|
|
22
|
+
messageId: "smaller",
|
|
23
|
+
actual,
|
|
24
|
+
expected,
|
|
25
|
+
noStringify: true
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
exports.greaterThan = greaterThan;
|
|
32
|
+
exports.notGreaterThan = notGreaterThan;
|
|
33
|
+
//# sourceMappingURL=greater-than.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"greater-than.cjs","names":[],"sources":["../../src/assert/greater-than.ts"],"sourcesContent":["import { createAssertion } from 'hein-assertion-utils';\nimport { validateNumericsAndDates } from '../utils/validate-numeric-and-dates.js';\n\ninterface GreaterThan {\n /**\n * check for >\n */\n <T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;\n}\n\nexport const [greaterThan, notGreaterThan] = createAssertion({\n messages: {\n smaller: 'Expected {{= it.actual }} to be greater than {{= it.expected }}',\n not: 'Expected {{= it.actual }} to not be greater than {{= it.expected }}'\n },\n test:\n (report): GreaterThan =>\n (actual: any, expected: any) => {\n validateNumericsAndDates(actual, expected);\n if (actual > expected) {\n return report({ status: 'ok', messageId: 'not', expected, actual });\n }\n return report({ status: 'notok', messageId: 'smaller', actual, expected, noStringify: true });\n }\n});\n"],"mappings":";;;;;;AAUA,MAAa,CAAC,aAAa,4DAAkC;CACzD,UAAU;EACN,SAAS;EACT,KAAK;EACR;CACD,OACK,YACA,QAAa,aAAkB;AAC5B,8DAAyB,QAAQ,SAAS;AAC1C,MAAI,SAAS,SACT,QAAO,OAAO;GAAE,QAAQ;GAAM,WAAW;GAAO;GAAU;GAAQ,CAAC;AAEvE,SAAO,OAAO;GAAE,QAAQ;GAAS,WAAW;GAAW;GAAQ;GAAU,aAAa;GAAM,CAAC;;CAExG,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/assert/greater-than.d.ts
|
|
2
|
+
interface GreaterThan {
|
|
3
|
+
/**
|
|
4
|
+
* check for >
|
|
5
|
+
*/
|
|
6
|
+
<T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;
|
|
7
|
+
}
|
|
8
|
+
declare const greaterThan: GreaterThan, notGreaterThan: GreaterThan;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { greaterThan, notGreaterThan };
|
|
11
|
+
//# sourceMappingURL=greater-than.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"greater-than.d.cts","names":[],"sources":["../../src/assert/greater-than.ts"],"sourcesContent":[],"mappings":";UAGU,WAAA;EAAA;;;aAIqC,MAAA,GAAA,MAAA,GAAd,IAAc,CAAA,CAAA,MAAA,EAAA,CAAA,EAAA,QAAA,EAAa,CAAb,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAAc,cAG/C,WAH+C,EAGpC,WAHoC,EAAA,cAAA,EAGpB,WAHoB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/assert/greater-than.d.ts
|
|
2
|
+
interface GreaterThan {
|
|
3
|
+
/**
|
|
4
|
+
* check for >
|
|
5
|
+
*/
|
|
6
|
+
<T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;
|
|
7
|
+
}
|
|
8
|
+
declare const greaterThan: GreaterThan, notGreaterThan: GreaterThan;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { greaterThan, notGreaterThan };
|
|
11
|
+
//# sourceMappingURL=greater-than.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"greater-than.d.ts","names":[],"sources":["../../src/assert/greater-than.ts"],"sourcesContent":[],"mappings":";UAGU,WAAA;EAAA;;;aAIqC,MAAA,GAAA,MAAA,GAAd,IAAc,CAAA,CAAA,MAAA,EAAA,CAAA,EAAA,QAAA,EAAa,CAAb,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAAc,cAG/C,WAH+C,EAGpC,WAHoC,EAAA,cAAA,EAGpB,WAHoB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { validateNumericsAndDates } from "../utils/validate-numeric-and-dates.js";
|
|
2
|
+
import { createAssertion } from "hein-assertion-utils";
|
|
3
|
+
|
|
4
|
+
//#region src/assert/greater-than.ts
|
|
5
|
+
const [greaterThan, notGreaterThan] = createAssertion({
|
|
6
|
+
messages: {
|
|
7
|
+
smaller: "Expected {{= it.actual }} to be greater than {{= it.expected }}",
|
|
8
|
+
not: "Expected {{= it.actual }} to not be greater than {{= it.expected }}"
|
|
9
|
+
},
|
|
10
|
+
test: (report) => (actual, expected) => {
|
|
11
|
+
validateNumericsAndDates(actual, expected);
|
|
12
|
+
if (actual > expected) return report({
|
|
13
|
+
status: "ok",
|
|
14
|
+
messageId: "not",
|
|
15
|
+
expected,
|
|
16
|
+
actual
|
|
17
|
+
});
|
|
18
|
+
return report({
|
|
19
|
+
status: "notok",
|
|
20
|
+
messageId: "smaller",
|
|
21
|
+
actual,
|
|
22
|
+
expected,
|
|
23
|
+
noStringify: true
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { greaterThan, notGreaterThan };
|
|
30
|
+
//# sourceMappingURL=greater-than.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"greater-than.js","names":[],"sources":["../../src/assert/greater-than.ts"],"sourcesContent":["import { createAssertion } from 'hein-assertion-utils';\nimport { validateNumericsAndDates } from '../utils/validate-numeric-and-dates.js';\n\ninterface GreaterThan {\n /**\n * check for >\n */\n <T extends number | bigint | Date>(actual: T, expected: T, message?: string): void;\n}\n\nexport const [greaterThan, notGreaterThan] = createAssertion({\n messages: {\n smaller: 'Expected {{= it.actual }} to be greater than {{= it.expected }}',\n not: 'Expected {{= it.actual }} to not be greater than {{= it.expected }}'\n },\n test:\n (report): GreaterThan =>\n (actual: any, expected: any) => {\n validateNumericsAndDates(actual, expected);\n if (actual > expected) {\n return report({ status: 'ok', messageId: 'not', expected, actual });\n }\n return report({ status: 'notok', messageId: 'smaller', actual, expected, noStringify: true });\n }\n});\n"],"mappings":";;;;AAUA,MAAa,CAAC,aAAa,kBAAkB,gBAAgB;CACzD,UAAU;EACN,SAAS;EACT,KAAK;EACR;CACD,OACK,YACA,QAAa,aAAkB;AAC5B,2BAAyB,QAAQ,SAAS;AAC1C,MAAI,SAAS,SACT,QAAO,OAAO;GAAE,QAAQ;GAAM,WAAW;GAAO;GAAU;GAAQ,CAAC;AAEvE,SAAO,OAAO;GAAE,QAAQ;GAAS,WAAW;GAAW;GAAQ;GAAU,aAAa;GAAM,CAAC;;CAExG,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
let hein_assertion_utils = require("hein-assertion-utils");
|
|
3
|
+
hein_assertion_utils = require_rolldown_runtime.__toESM(hein_assertion_utils);
|
|
4
|
+
let lodash_castArray_js = require("lodash/castArray.js");
|
|
5
|
+
lodash_castArray_js = require_rolldown_runtime.__toESM(lodash_castArray_js);
|
|
6
|
+
|
|
7
|
+
//#region src/assert/has-keys.ts
|
|
8
|
+
const [hasKeys, notHasKeys] = (0, hein_assertion_utils.createAssertion)({
|
|
9
|
+
messages: {
|
|
10
|
+
noKey: "Expected {{= it.object }} to have keys {{= it.expected }}",
|
|
11
|
+
not: "Expected {{= it.object }} to not have keys {{= it.expected }}"
|
|
12
|
+
},
|
|
13
|
+
test: (report) => (object, keys, message) => {
|
|
14
|
+
const keysArray = (0, lodash_castArray_js.default)(keys);
|
|
15
|
+
if (object instanceof Map) {
|
|
16
|
+
for (const key of keysArray) if (!object.has(key)) {
|
|
17
|
+
report({
|
|
18
|
+
status: "notok",
|
|
19
|
+
message,
|
|
20
|
+
messageId: "noKey",
|
|
21
|
+
data: { object },
|
|
22
|
+
actual: [...object.keys()],
|
|
23
|
+
expected: keysArray
|
|
24
|
+
});
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
report({
|
|
28
|
+
status: "ok",
|
|
29
|
+
data: { object },
|
|
30
|
+
actual: [...object.keys()],
|
|
31
|
+
expected: keysArray
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
for (const key of keysArray) if (!(key in object)) {
|
|
36
|
+
report({
|
|
37
|
+
status: "notok",
|
|
38
|
+
message,
|
|
39
|
+
messageId: "noKey",
|
|
40
|
+
data: { object },
|
|
41
|
+
actual: object,
|
|
42
|
+
expected: keysArray
|
|
43
|
+
});
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
report({
|
|
47
|
+
status: "ok",
|
|
48
|
+
data: { object },
|
|
49
|
+
actual: Object.keys(object),
|
|
50
|
+
expected: keysArray
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
exports.hasKeys = hasKeys;
|
|
57
|
+
exports.notHasKeys = notHasKeys;
|
|
58
|
+
//# sourceMappingURL=has-keys.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-keys.cjs","names":[],"sources":["../../src/assert/has-keys.ts"],"sourcesContent":["import { createAssertion } from 'hein-assertion-utils';\nimport castArray from 'lodash/castArray.js';\n\ninterface HasKeys {\n /**\n * check if object has keys\n * @param object\n * @param keys a key or array of keys in the object.\n * @example hasKeys({a: 1}, 'a');\n * @example hasKeys({a: 1, b: 2}, ['a', 'b']);\n */\n <T extends Record<string, any>, K extends keyof T>(object: T, keys: K[] | K, message?: string): void;\n <K, T extends Map<K, any>>(object: T, keys: K[] | K, message?: string): void;\n}\n\nexport const [hasKeys, notHasKeys] = createAssertion({\n messages: {\n noKey: 'Expected {{= it.object }} to have keys {{= it.expected }}',\n not: 'Expected {{= it.object }} to not have keys {{= it.expected }}'\n },\n test:\n (report): HasKeys =>\n (object, keys, message) => {\n const keysArray = castArray(keys);\n if (object instanceof Map) {\n for (const key of keysArray) {\n if (!object.has(key)) {\n report({\n status: 'notok',\n message,\n messageId: 'noKey',\n data: { object },\n actual: [...object.keys()],\n expected: keysArray\n });\n return;\n }\n }\n report({ status: 'ok', data: { object }, actual: [...object.keys()], expected: keysArray });\n return;\n }\n for (const key of keysArray) {\n if (!(key in object)) {\n report({\n status: 'notok',\n message,\n messageId: 'noKey',\n data: { object },\n actual: object,\n expected: keysArray\n });\n return;\n }\n }\n report({ status: 'ok', data: { object }, actual: Object.keys(object), expected: keysArray });\n }\n});\n"],"mappings":";;;;;;;AAeA,MAAa,CAAC,SAAS,wDAA8B;CACjD,UAAU;EACN,OAAO;EACP,KAAK;EACR;CACD,OACK,YACA,QAAQ,MAAM,YAAY;EACvB,MAAM,6CAAsB,KAAK;AACjC,MAAI,kBAAkB,KAAK;AACvB,QAAK,MAAM,OAAO,UACd,KAAI,CAAC,OAAO,IAAI,IAAI,EAAE;AAClB,WAAO;KACH,QAAQ;KACR;KACA,WAAW;KACX,MAAM,EAAE,QAAQ;KAChB,QAAQ,CAAC,GAAG,OAAO,MAAM,CAAC;KAC1B,UAAU;KACb,CAAC;AACF;;AAGR,UAAO;IAAE,QAAQ;IAAM,MAAM,EAAE,QAAQ;IAAE,QAAQ,CAAC,GAAG,OAAO,MAAM,CAAC;IAAE,UAAU;IAAW,CAAC;AAC3F;;AAEJ,OAAK,MAAM,OAAO,UACd,KAAI,EAAE,OAAO,SAAS;AAClB,UAAO;IACH,QAAQ;IACR;IACA,WAAW;IACX,MAAM,EAAE,QAAQ;IAChB,QAAQ;IACR,UAAU;IACb,CAAC;AACF;;AAGR,SAAO;GAAE,QAAQ;GAAM,MAAM,EAAE,QAAQ;GAAE,QAAQ,OAAO,KAAK,OAAO;GAAE,UAAU;GAAW,CAAC;;CAEvG,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/assert/has-keys.d.ts
|
|
2
|
+
interface HasKeys {
|
|
3
|
+
/**
|
|
4
|
+
* check if object has keys
|
|
5
|
+
* @param object
|
|
6
|
+
* @param keys a key or array of keys in the object.
|
|
7
|
+
* @example hasKeys({a: 1}, 'a');
|
|
8
|
+
* @example hasKeys({a: 1, b: 2}, ['a', 'b']);
|
|
9
|
+
*/
|
|
10
|
+
<T extends Record<string, any>, K extends keyof T>(object: T, keys: K[] | K, message?: string): void;
|
|
11
|
+
<K, T extends Map<K, any>>(object: T, keys: K[] | K, message?: string): void;
|
|
12
|
+
}
|
|
13
|
+
declare const hasKeys: HasKeys, notHasKeys: HasKeys;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { hasKeys, notHasKeys };
|
|
16
|
+
//# sourceMappingURL=has-keys.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-keys.d.cts","names":[],"sources":["../../src/assert/has-keys.ts"],"sourcesContent":[],"mappings":";UAGU,OAAA;EAAA;;;;;;;aAQK,MACO,CAAA,MAAA,EAAA,GAAA,CAAA,EAAA,UAAA,MAD8B,CAC9B,CAAA,CAAA,MAAA,EADyC,CACzC,EAAA,IAAA,EADkD,CAClD,EAAA,GADwD,CACxD,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;MAAJ,UAAA,GAAA,CAAI,CAAJ,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,EAAqB,CAArB,EAAA,IAAA,EAA8B,CAA9B,EAAA,GAAoC,CAApC,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAA8B,cAGlC,OAHkC,EAG3B,OAH2B,EAAA,UAAA,EAGf,OAHe"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/assert/has-keys.d.ts
|
|
2
|
+
interface HasKeys {
|
|
3
|
+
/**
|
|
4
|
+
* check if object has keys
|
|
5
|
+
* @param object
|
|
6
|
+
* @param keys a key or array of keys in the object.
|
|
7
|
+
* @example hasKeys({a: 1}, 'a');
|
|
8
|
+
* @example hasKeys({a: 1, b: 2}, ['a', 'b']);
|
|
9
|
+
*/
|
|
10
|
+
<T extends Record<string, any>, K extends keyof T>(object: T, keys: K[] | K, message?: string): void;
|
|
11
|
+
<K, T extends Map<K, any>>(object: T, keys: K[] | K, message?: string): void;
|
|
12
|
+
}
|
|
13
|
+
declare const hasKeys: HasKeys, notHasKeys: HasKeys;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { hasKeys, notHasKeys };
|
|
16
|
+
//# sourceMappingURL=has-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-keys.d.ts","names":[],"sources":["../../src/assert/has-keys.ts"],"sourcesContent":[],"mappings":";UAGU,OAAA;EAAA;;;;;;;aAQK,MACO,CAAA,MAAA,EAAA,GAAA,CAAA,EAAA,UAAA,MAD8B,CAC9B,CAAA,CAAA,MAAA,EADyC,CACzC,EAAA,IAAA,EADkD,CAClD,EAAA,GADwD,CACxD,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;MAAJ,UAAA,GAAA,CAAI,CAAJ,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,EAAqB,CAArB,EAAA,IAAA,EAA8B,CAA9B,EAAA,GAAoC,CAApC,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAA8B,cAGlC,OAHkC,EAG3B,OAH2B,EAAA,UAAA,EAGf,OAHe"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { createAssertion } from "hein-assertion-utils";
|
|
2
|
+
import castArray from "lodash/castArray.js";
|
|
3
|
+
|
|
4
|
+
//#region src/assert/has-keys.ts
|
|
5
|
+
const [hasKeys, notHasKeys] = createAssertion({
|
|
6
|
+
messages: {
|
|
7
|
+
noKey: "Expected {{= it.object }} to have keys {{= it.expected }}",
|
|
8
|
+
not: "Expected {{= it.object }} to not have keys {{= it.expected }}"
|
|
9
|
+
},
|
|
10
|
+
test: (report) => (object, keys, message) => {
|
|
11
|
+
const keysArray = castArray(keys);
|
|
12
|
+
if (object instanceof Map) {
|
|
13
|
+
for (const key of keysArray) if (!object.has(key)) {
|
|
14
|
+
report({
|
|
15
|
+
status: "notok",
|
|
16
|
+
message,
|
|
17
|
+
messageId: "noKey",
|
|
18
|
+
data: { object },
|
|
19
|
+
actual: [...object.keys()],
|
|
20
|
+
expected: keysArray
|
|
21
|
+
});
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
report({
|
|
25
|
+
status: "ok",
|
|
26
|
+
data: { object },
|
|
27
|
+
actual: [...object.keys()],
|
|
28
|
+
expected: keysArray
|
|
29
|
+
});
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
for (const key of keysArray) if (!(key in object)) {
|
|
33
|
+
report({
|
|
34
|
+
status: "notok",
|
|
35
|
+
message,
|
|
36
|
+
messageId: "noKey",
|
|
37
|
+
data: { object },
|
|
38
|
+
actual: object,
|
|
39
|
+
expected: keysArray
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
report({
|
|
44
|
+
status: "ok",
|
|
45
|
+
data: { object },
|
|
46
|
+
actual: Object.keys(object),
|
|
47
|
+
expected: keysArray
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
export { hasKeys, notHasKeys };
|
|
54
|
+
//# sourceMappingURL=has-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-keys.js","names":[],"sources":["../../src/assert/has-keys.ts"],"sourcesContent":["import { createAssertion } from 'hein-assertion-utils';\nimport castArray from 'lodash/castArray.js';\n\ninterface HasKeys {\n /**\n * check if object has keys\n * @param object\n * @param keys a key or array of keys in the object.\n * @example hasKeys({a: 1}, 'a');\n * @example hasKeys({a: 1, b: 2}, ['a', 'b']);\n */\n <T extends Record<string, any>, K extends keyof T>(object: T, keys: K[] | K, message?: string): void;\n <K, T extends Map<K, any>>(object: T, keys: K[] | K, message?: string): void;\n}\n\nexport const [hasKeys, notHasKeys] = createAssertion({\n messages: {\n noKey: 'Expected {{= it.object }} to have keys {{= it.expected }}',\n not: 'Expected {{= it.object }} to not have keys {{= it.expected }}'\n },\n test:\n (report): HasKeys =>\n (object, keys, message) => {\n const keysArray = castArray(keys);\n if (object instanceof Map) {\n for (const key of keysArray) {\n if (!object.has(key)) {\n report({\n status: 'notok',\n message,\n messageId: 'noKey',\n data: { object },\n actual: [...object.keys()],\n expected: keysArray\n });\n return;\n }\n }\n report({ status: 'ok', data: { object }, actual: [...object.keys()], expected: keysArray });\n return;\n }\n for (const key of keysArray) {\n if (!(key in object)) {\n report({\n status: 'notok',\n message,\n messageId: 'noKey',\n data: { object },\n actual: object,\n expected: keysArray\n });\n return;\n }\n }\n report({ status: 'ok', data: { object }, actual: Object.keys(object), expected: keysArray });\n }\n});\n"],"mappings":";;;;AAeA,MAAa,CAAC,SAAS,cAAc,gBAAgB;CACjD,UAAU;EACN,OAAO;EACP,KAAK;EACR;CACD,OACK,YACA,QAAQ,MAAM,YAAY;EACvB,MAAM,YAAY,UAAU,KAAK;AACjC,MAAI,kBAAkB,KAAK;AACvB,QAAK,MAAM,OAAO,UACd,KAAI,CAAC,OAAO,IAAI,IAAI,EAAE;AAClB,WAAO;KACH,QAAQ;KACR;KACA,WAAW;KACX,MAAM,EAAE,QAAQ;KAChB,QAAQ,CAAC,GAAG,OAAO,MAAM,CAAC;KAC1B,UAAU;KACb,CAAC;AACF;;AAGR,UAAO;IAAE,QAAQ;IAAM,MAAM,EAAE,QAAQ;IAAE,QAAQ,CAAC,GAAG,OAAO,MAAM,CAAC;IAAE,UAAU;IAAW,CAAC;AAC3F;;AAEJ,OAAK,MAAM,OAAO,UACd,KAAI,EAAE,OAAO,SAAS;AAClB,UAAO;IACH,QAAQ;IACR;IACA,WAAW;IACX,MAAM,EAAE,QAAQ;IAChB,QAAQ;IACR,UAAU;IACb,CAAC;AACF;;AAGR,SAAO;GAAE,QAAQ;GAAM,MAAM,EAAE,QAAQ;GAAE,QAAQ,OAAO,KAAK,OAAO;GAAE,UAAU;GAAW,CAAC;;CAEvG,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_match = require('../utils/match.cjs');
|
|
3
|
+
let hein_assertion_utils = require("hein-assertion-utils");
|
|
4
|
+
hein_assertion_utils = require_rolldown_runtime.__toESM(hein_assertion_utils);
|
|
5
|
+
|
|
6
|
+
//#region src/assert/has-members.ts
|
|
7
|
+
const [hasMembers, notHasMembers] = (0, hein_assertion_utils.createAssertion)({
|
|
8
|
+
messages: {
|
|
9
|
+
hasMembers: "Expected {{= it.actual }} to have members {{= it.expected }}",
|
|
10
|
+
same: "Expected {{= it.actual }} to have same members as {{= it.expected }}",
|
|
11
|
+
order: "Expected {{= it.actual }} to have ordered members {{= it.expected }}",
|
|
12
|
+
not: "Expected {{= it.actual }} to not have members {{= it.expected }}",
|
|
13
|
+
notSame: "Expected {{= it.actual }} to not have same members as {{= it.expected }}"
|
|
14
|
+
},
|
|
15
|
+
test: (report) => (actual, expected, { deep = false, partial = false, ordered = false, same = false } = {}, message) => {
|
|
16
|
+
let lastIndex = -1;
|
|
17
|
+
for (const item of expected) if (deep || partial) {
|
|
18
|
+
const actualIndex = actual.findIndex((actualItem, index) => {
|
|
19
|
+
if (!ordered) return require_match.match(actualItem, item, { partial });
|
|
20
|
+
if (lastIndex >= index) return false;
|
|
21
|
+
return require_match.match(actualItem, item, { partial });
|
|
22
|
+
});
|
|
23
|
+
lastIndex = actualIndex;
|
|
24
|
+
if (actualIndex === -1) return report({
|
|
25
|
+
status: "notok",
|
|
26
|
+
messageId: ordered ? "order" : "hasMembers",
|
|
27
|
+
actual,
|
|
28
|
+
expected,
|
|
29
|
+
message
|
|
30
|
+
});
|
|
31
|
+
} else if (actual.includes(item)) {
|
|
32
|
+
if (ordered && lastIndex >= actual.indexOf(item, lastIndex + 1)) return report({
|
|
33
|
+
status: "notok",
|
|
34
|
+
messageId: "order",
|
|
35
|
+
actual,
|
|
36
|
+
expected,
|
|
37
|
+
message
|
|
38
|
+
});
|
|
39
|
+
lastIndex = actual.indexOf(item, lastIndex + 1);
|
|
40
|
+
} else return report({
|
|
41
|
+
status: "notok",
|
|
42
|
+
messageId: "hasMembers",
|
|
43
|
+
actual,
|
|
44
|
+
expected,
|
|
45
|
+
message
|
|
46
|
+
});
|
|
47
|
+
if (same && actual.length !== expected.length) return report({
|
|
48
|
+
status: "notok",
|
|
49
|
+
messageId: "same",
|
|
50
|
+
actual,
|
|
51
|
+
expected,
|
|
52
|
+
message
|
|
53
|
+
});
|
|
54
|
+
return report({
|
|
55
|
+
status: "ok",
|
|
56
|
+
messageId: same ? "notSame" : "not",
|
|
57
|
+
actual,
|
|
58
|
+
expected,
|
|
59
|
+
message
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
//#endregion
|
|
65
|
+
exports.hasMembers = hasMembers;
|
|
66
|
+
exports.notHasMembers = notHasMembers;
|
|
67
|
+
//# sourceMappingURL=has-members.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-members.cjs","names":["match"],"sources":["../../src/assert/has-members.ts"],"sourcesContent":["import { createAssertion } from 'hein-assertion-utils';\nimport { match } from '../utils/match.js';\n\ninterface HasMembersOptions {\n /**\n * check for deep equality (ie {a: 1} === {a: 1})\n * @default false\n * @example\n * hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });\n */\n deep?: boolean;\n /**\n * use partial matching (ie {a: 1, b: 2} === {a: 1})\n * implies deep\n * @default false\n * @example\n * hasMembers([{ a: 1, b: 2 }], [{ a: 1 }], { partial: true });\n */\n partial?: boolean;\n /**\n * check that all the members in the first array are present in the second one\n * @default false\n * @example\n * hasMembers([1, 2], [2, 1], { same: true });\n * notHasMembers([1, 2], [1], { same: true});\n */\n same?: boolean;\n /**\n * check that the members in the first array are in the same order as the second one\n * @default false\n * @example\n * hasMembers([1, 2], [1, 2], { ordered: true });\n * notHasMembers([1, 2], [2, 1], { ordered: true });\n */\n ordered?: boolean;\n}\n\ninterface HasMembers {\n /**\n * check that the members in second array are present in the first one\n * @example\n * hasMembers([1], [1]);\n * hasMembers([1, 2], [2, 1]);\n * hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });\n */\n <T>(actual: T[], expected: T[], options?: HasMembersOptions, message?: string): void;\n}\n\nexport const [hasMembers, notHasMembers] = createAssertion({\n messages: {\n hasMembers: 'Expected {{= it.actual }} to have members {{= it.expected }}',\n same: 'Expected {{= it.actual }} to have same members as {{= it.expected }}',\n order: 'Expected {{= it.actual }} to have ordered members {{= it.expected }}',\n not: 'Expected {{= it.actual }} to not have members {{= it.expected }}',\n notSame: 'Expected {{= it.actual }} to not have same members as {{= it.expected }}'\n },\n test:\n (report): HasMembers =>\n <T>(\n actual: T[],\n expected: T[],\n { deep = false, partial = false, ordered = false, same = false }: HasMembersOptions = {},\n message?: string\n ) => {\n let lastIndex = -1;\n for (const item of expected) {\n if (deep || partial) {\n const actualIndex = actual.findIndex((actualItem, index) => {\n if (!ordered) {\n return match(actualItem, item, { partial });\n }\n if (lastIndex >= index) {\n return false;\n }\n return match(actualItem, item, { partial });\n });\n lastIndex = actualIndex;\n if (actualIndex === -1) {\n return report({\n status: 'notok',\n messageId: ordered ? 'order' : 'hasMembers',\n actual,\n expected,\n message\n });\n }\n } else {\n if (actual.includes(item)) {\n if (ordered && lastIndex >= actual.indexOf(item, lastIndex + 1)) {\n return report({ status: 'notok', messageId: 'order', actual, expected, message });\n }\n lastIndex = actual.indexOf(item, lastIndex + 1);\n } else {\n return report({ status: 'notok', messageId: 'hasMembers', actual, expected, message });\n }\n }\n }\n if (same && actual.length !== expected.length) {\n return report({ status: 'notok', messageId: 'same', actual, expected, message });\n }\n return report({ status: 'ok', messageId: same ? 'notSame' : 'not', actual, expected, message });\n }\n});\n"],"mappings":";;;;;;AAgDA,MAAa,CAAC,YAAY,2DAAiC;CACvD,UAAU;EACN,YAAY;EACZ,MAAM;EACN,OAAO;EACP,KAAK;EACL,SAAS;EACZ;CACD,OACK,YAEG,QACA,UACA,EAAE,OAAO,OAAO,UAAU,OAAO,UAAU,OAAO,OAAO,UAA6B,EAAE,EACxF,YACC;EACD,IAAI,YAAY;AAChB,OAAK,MAAM,QAAQ,SACf,KAAI,QAAQ,SAAS;GACjB,MAAM,cAAc,OAAO,WAAW,YAAY,UAAU;AACxD,QAAI,CAAC,QACD,QAAOA,oBAAM,YAAY,MAAM,EAAE,SAAS,CAAC;AAE/C,QAAI,aAAa,MACb,QAAO;AAEX,WAAOA,oBAAM,YAAY,MAAM,EAAE,SAAS,CAAC;KAC7C;AACF,eAAY;AACZ,OAAI,gBAAgB,GAChB,QAAO,OAAO;IACV,QAAQ;IACR,WAAW,UAAU,UAAU;IAC/B;IACA;IACA;IACH,CAAC;aAGF,OAAO,SAAS,KAAK,EAAE;AACvB,OAAI,WAAW,aAAa,OAAO,QAAQ,MAAM,YAAY,EAAE,CAC3D,QAAO,OAAO;IAAE,QAAQ;IAAS,WAAW;IAAS;IAAQ;IAAU;IAAS,CAAC;AAErF,eAAY,OAAO,QAAQ,MAAM,YAAY,EAAE;QAE/C,QAAO,OAAO;GAAE,QAAQ;GAAS,WAAW;GAAc;GAAQ;GAAU;GAAS,CAAC;AAIlG,MAAI,QAAQ,OAAO,WAAW,SAAS,OACnC,QAAO,OAAO;GAAE,QAAQ;GAAS,WAAW;GAAQ;GAAQ;GAAU;GAAS,CAAC;AAEpF,SAAO,OAAO;GAAE,QAAQ;GAAM,WAAW,OAAO,YAAY;GAAO;GAAQ;GAAU;GAAS,CAAC;;CAE1G,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
//#region src/assert/has-members.d.ts
|
|
2
|
+
interface HasMembersOptions {
|
|
3
|
+
/**
|
|
4
|
+
* check for deep equality (ie {a: 1} === {a: 1})
|
|
5
|
+
* @default false
|
|
6
|
+
* @example
|
|
7
|
+
* hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });
|
|
8
|
+
*/
|
|
9
|
+
deep?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* use partial matching (ie {a: 1, b: 2} === {a: 1})
|
|
12
|
+
* implies deep
|
|
13
|
+
* @default false
|
|
14
|
+
* @example
|
|
15
|
+
* hasMembers([{ a: 1, b: 2 }], [{ a: 1 }], { partial: true });
|
|
16
|
+
*/
|
|
17
|
+
partial?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* check that all the members in the first array are present in the second one
|
|
20
|
+
* @default false
|
|
21
|
+
* @example
|
|
22
|
+
* hasMembers([1, 2], [2, 1], { same: true });
|
|
23
|
+
* notHasMembers([1, 2], [1], { same: true});
|
|
24
|
+
*/
|
|
25
|
+
same?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* check that the members in the first array are in the same order as the second one
|
|
28
|
+
* @default false
|
|
29
|
+
* @example
|
|
30
|
+
* hasMembers([1, 2], [1, 2], { ordered: true });
|
|
31
|
+
* notHasMembers([1, 2], [2, 1], { ordered: true });
|
|
32
|
+
*/
|
|
33
|
+
ordered?: boolean;
|
|
34
|
+
}
|
|
35
|
+
interface HasMembers {
|
|
36
|
+
/**
|
|
37
|
+
* check that the members in second array are present in the first one
|
|
38
|
+
* @example
|
|
39
|
+
* hasMembers([1], [1]);
|
|
40
|
+
* hasMembers([1, 2], [2, 1]);
|
|
41
|
+
* hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });
|
|
42
|
+
*/
|
|
43
|
+
<T>(actual: T[], expected: T[], options?: HasMembersOptions, message?: string): void;
|
|
44
|
+
}
|
|
45
|
+
declare const hasMembers: HasMembers, notHasMembers: HasMembers;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { hasMembers, notHasMembers };
|
|
48
|
+
//# sourceMappingURL=has-members.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-members.d.cts","names":[],"sources":["../../src/assert/has-members.ts"],"sourcesContent":[],"mappings":";UAGU,iBAAA;EAAA;AAAiB;;;;;EA0CoC,IAAA,CAAA,EAAA,OAAA;EAGjD;;;;;;;;;;;;;;;;;;;;;;;;;UAXJ,UAAA;;;;;;;;cAQM,eAAe,eAAe;;cAGhC,YAAU,2BAAe"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
//#region src/assert/has-members.d.ts
|
|
2
|
+
interface HasMembersOptions {
|
|
3
|
+
/**
|
|
4
|
+
* check for deep equality (ie {a: 1} === {a: 1})
|
|
5
|
+
* @default false
|
|
6
|
+
* @example
|
|
7
|
+
* hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });
|
|
8
|
+
*/
|
|
9
|
+
deep?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* use partial matching (ie {a: 1, b: 2} === {a: 1})
|
|
12
|
+
* implies deep
|
|
13
|
+
* @default false
|
|
14
|
+
* @example
|
|
15
|
+
* hasMembers([{ a: 1, b: 2 }], [{ a: 1 }], { partial: true });
|
|
16
|
+
*/
|
|
17
|
+
partial?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* check that all the members in the first array are present in the second one
|
|
20
|
+
* @default false
|
|
21
|
+
* @example
|
|
22
|
+
* hasMembers([1, 2], [2, 1], { same: true });
|
|
23
|
+
* notHasMembers([1, 2], [1], { same: true});
|
|
24
|
+
*/
|
|
25
|
+
same?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* check that the members in the first array are in the same order as the second one
|
|
28
|
+
* @default false
|
|
29
|
+
* @example
|
|
30
|
+
* hasMembers([1, 2], [1, 2], { ordered: true });
|
|
31
|
+
* notHasMembers([1, 2], [2, 1], { ordered: true });
|
|
32
|
+
*/
|
|
33
|
+
ordered?: boolean;
|
|
34
|
+
}
|
|
35
|
+
interface HasMembers {
|
|
36
|
+
/**
|
|
37
|
+
* check that the members in second array are present in the first one
|
|
38
|
+
* @example
|
|
39
|
+
* hasMembers([1], [1]);
|
|
40
|
+
* hasMembers([1, 2], [2, 1]);
|
|
41
|
+
* hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });
|
|
42
|
+
*/
|
|
43
|
+
<T>(actual: T[], expected: T[], options?: HasMembersOptions, message?: string): void;
|
|
44
|
+
}
|
|
45
|
+
declare const hasMembers: HasMembers, notHasMembers: HasMembers;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { hasMembers, notHasMembers };
|
|
48
|
+
//# sourceMappingURL=has-members.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-members.d.ts","names":[],"sources":["../../src/assert/has-members.ts"],"sourcesContent":[],"mappings":";UAGU,iBAAA;EAAA;AAAiB;;;;;EA0CoC,IAAA,CAAA,EAAA,OAAA;EAGjD;;;;;;;;;;;;;;;;;;;;;;;;;UAXJ,UAAA;;;;;;;;cAQM,eAAe,eAAe;;cAGhC,YAAU,2BAAe"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { match } from "../utils/match.js";
|
|
2
|
+
import { createAssertion } from "hein-assertion-utils";
|
|
3
|
+
|
|
4
|
+
//#region src/assert/has-members.ts
|
|
5
|
+
const [hasMembers, notHasMembers] = createAssertion({
|
|
6
|
+
messages: {
|
|
7
|
+
hasMembers: "Expected {{= it.actual }} to have members {{= it.expected }}",
|
|
8
|
+
same: "Expected {{= it.actual }} to have same members as {{= it.expected }}",
|
|
9
|
+
order: "Expected {{= it.actual }} to have ordered members {{= it.expected }}",
|
|
10
|
+
not: "Expected {{= it.actual }} to not have members {{= it.expected }}",
|
|
11
|
+
notSame: "Expected {{= it.actual }} to not have same members as {{= it.expected }}"
|
|
12
|
+
},
|
|
13
|
+
test: (report) => (actual, expected, { deep = false, partial = false, ordered = false, same = false } = {}, message) => {
|
|
14
|
+
let lastIndex = -1;
|
|
15
|
+
for (const item of expected) if (deep || partial) {
|
|
16
|
+
const actualIndex = actual.findIndex((actualItem, index) => {
|
|
17
|
+
if (!ordered) return match(actualItem, item, { partial });
|
|
18
|
+
if (lastIndex >= index) return false;
|
|
19
|
+
return match(actualItem, item, { partial });
|
|
20
|
+
});
|
|
21
|
+
lastIndex = actualIndex;
|
|
22
|
+
if (actualIndex === -1) return report({
|
|
23
|
+
status: "notok",
|
|
24
|
+
messageId: ordered ? "order" : "hasMembers",
|
|
25
|
+
actual,
|
|
26
|
+
expected,
|
|
27
|
+
message
|
|
28
|
+
});
|
|
29
|
+
} else if (actual.includes(item)) {
|
|
30
|
+
if (ordered && lastIndex >= actual.indexOf(item, lastIndex + 1)) return report({
|
|
31
|
+
status: "notok",
|
|
32
|
+
messageId: "order",
|
|
33
|
+
actual,
|
|
34
|
+
expected,
|
|
35
|
+
message
|
|
36
|
+
});
|
|
37
|
+
lastIndex = actual.indexOf(item, lastIndex + 1);
|
|
38
|
+
} else return report({
|
|
39
|
+
status: "notok",
|
|
40
|
+
messageId: "hasMembers",
|
|
41
|
+
actual,
|
|
42
|
+
expected,
|
|
43
|
+
message
|
|
44
|
+
});
|
|
45
|
+
if (same && actual.length !== expected.length) return report({
|
|
46
|
+
status: "notok",
|
|
47
|
+
messageId: "same",
|
|
48
|
+
actual,
|
|
49
|
+
expected,
|
|
50
|
+
message
|
|
51
|
+
});
|
|
52
|
+
return report({
|
|
53
|
+
status: "ok",
|
|
54
|
+
messageId: same ? "notSame" : "not",
|
|
55
|
+
actual,
|
|
56
|
+
expected,
|
|
57
|
+
message
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
//#endregion
|
|
63
|
+
export { hasMembers, notHasMembers };
|
|
64
|
+
//# sourceMappingURL=has-members.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-members.js","names":[],"sources":["../../src/assert/has-members.ts"],"sourcesContent":["import { createAssertion } from 'hein-assertion-utils';\nimport { match } from '../utils/match.js';\n\ninterface HasMembersOptions {\n /**\n * check for deep equality (ie {a: 1} === {a: 1})\n * @default false\n * @example\n * hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });\n */\n deep?: boolean;\n /**\n * use partial matching (ie {a: 1, b: 2} === {a: 1})\n * implies deep\n * @default false\n * @example\n * hasMembers([{ a: 1, b: 2 }], [{ a: 1 }], { partial: true });\n */\n partial?: boolean;\n /**\n * check that all the members in the first array are present in the second one\n * @default false\n * @example\n * hasMembers([1, 2], [2, 1], { same: true });\n * notHasMembers([1, 2], [1], { same: true});\n */\n same?: boolean;\n /**\n * check that the members in the first array are in the same order as the second one\n * @default false\n * @example\n * hasMembers([1, 2], [1, 2], { ordered: true });\n * notHasMembers([1, 2], [2, 1], { ordered: true });\n */\n ordered?: boolean;\n}\n\ninterface HasMembers {\n /**\n * check that the members in second array are present in the first one\n * @example\n * hasMembers([1], [1]);\n * hasMembers([1, 2], [2, 1]);\n * hasMembers([{ a: 1 }], [{ a: 1 }], { deep: true });\n */\n <T>(actual: T[], expected: T[], options?: HasMembersOptions, message?: string): void;\n}\n\nexport const [hasMembers, notHasMembers] = createAssertion({\n messages: {\n hasMembers: 'Expected {{= it.actual }} to have members {{= it.expected }}',\n same: 'Expected {{= it.actual }} to have same members as {{= it.expected }}',\n order: 'Expected {{= it.actual }} to have ordered members {{= it.expected }}',\n not: 'Expected {{= it.actual }} to not have members {{= it.expected }}',\n notSame: 'Expected {{= it.actual }} to not have same members as {{= it.expected }}'\n },\n test:\n (report): HasMembers =>\n <T>(\n actual: T[],\n expected: T[],\n { deep = false, partial = false, ordered = false, same = false }: HasMembersOptions = {},\n message?: string\n ) => {\n let lastIndex = -1;\n for (const item of expected) {\n if (deep || partial) {\n const actualIndex = actual.findIndex((actualItem, index) => {\n if (!ordered) {\n return match(actualItem, item, { partial });\n }\n if (lastIndex >= index) {\n return false;\n }\n return match(actualItem, item, { partial });\n });\n lastIndex = actualIndex;\n if (actualIndex === -1) {\n return report({\n status: 'notok',\n messageId: ordered ? 'order' : 'hasMembers',\n actual,\n expected,\n message\n });\n }\n } else {\n if (actual.includes(item)) {\n if (ordered && lastIndex >= actual.indexOf(item, lastIndex + 1)) {\n return report({ status: 'notok', messageId: 'order', actual, expected, message });\n }\n lastIndex = actual.indexOf(item, lastIndex + 1);\n } else {\n return report({ status: 'notok', messageId: 'hasMembers', actual, expected, message });\n }\n }\n }\n if (same && actual.length !== expected.length) {\n return report({ status: 'notok', messageId: 'same', actual, expected, message });\n }\n return report({ status: 'ok', messageId: same ? 'notSame' : 'not', actual, expected, message });\n }\n});\n"],"mappings":";;;;AAgDA,MAAa,CAAC,YAAY,iBAAiB,gBAAgB;CACvD,UAAU;EACN,YAAY;EACZ,MAAM;EACN,OAAO;EACP,KAAK;EACL,SAAS;EACZ;CACD,OACK,YAEG,QACA,UACA,EAAE,OAAO,OAAO,UAAU,OAAO,UAAU,OAAO,OAAO,UAA6B,EAAE,EACxF,YACC;EACD,IAAI,YAAY;AAChB,OAAK,MAAM,QAAQ,SACf,KAAI,QAAQ,SAAS;GACjB,MAAM,cAAc,OAAO,WAAW,YAAY,UAAU;AACxD,QAAI,CAAC,QACD,QAAO,MAAM,YAAY,MAAM,EAAE,SAAS,CAAC;AAE/C,QAAI,aAAa,MACb,QAAO;AAEX,WAAO,MAAM,YAAY,MAAM,EAAE,SAAS,CAAC;KAC7C;AACF,eAAY;AACZ,OAAI,gBAAgB,GAChB,QAAO,OAAO;IACV,QAAQ;IACR,WAAW,UAAU,UAAU;IAC/B;IACA;IACA;IACH,CAAC;aAGF,OAAO,SAAS,KAAK,EAAE;AACvB,OAAI,WAAW,aAAa,OAAO,QAAQ,MAAM,YAAY,EAAE,CAC3D,QAAO,OAAO;IAAE,QAAQ;IAAS,WAAW;IAAS;IAAQ;IAAU;IAAS,CAAC;AAErF,eAAY,OAAO,QAAQ,MAAM,YAAY,EAAE;QAE/C,QAAO,OAAO;GAAE,QAAQ;GAAS,WAAW;GAAc;GAAQ;GAAU;GAAS,CAAC;AAIlG,MAAI,QAAQ,OAAO,WAAW,SAAS,OACnC,QAAO,OAAO;GAAE,QAAQ;GAAS,WAAW;GAAQ;GAAQ;GAAU;GAAS,CAAC;AAEpF,SAAO,OAAO;GAAE,QAAQ;GAAM,WAAW,OAAO,YAAY;GAAO;GAAQ;GAAU;GAAS,CAAC;;CAE1G,CAAC"}
|