hein 2.0.0-alpha.1 → 2.0.0-alpha.2

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/index.d.cts CHANGED
@@ -1,10 +1,464 @@
1
- import { assert_d_exports } from "./assert-ChQPKP5C.cjs";
2
- import { ErrorPredicate, ValueType } from "./throws-CYLYG7gu.cjs";
3
- import { Alias, Expect, Method, Property, State, fail, use } from "./expect.types-CHYPdbCW.cjs";
1
+ import { Constructor, ErrorPredicate, ThrowsCallback, ValueType, assert_d_exports } from "./assert-itrfuDRd.cjs";
4
2
  import { AssertionError } from "hein-assertion-utils";
5
3
 
4
+ //#region src/mixins.d.ts
5
+ interface State<T> {
6
+ inverted?: boolean;
7
+ value?: T;
8
+ getProperty?: (value: T) => any;
9
+ deep?: boolean;
10
+ same?: boolean;
11
+ ordered?: boolean;
12
+ partial?: boolean;
13
+ every?: boolean;
14
+ }
15
+ interface Property {
16
+ type: 'property';
17
+ value: (state: State<any>) => Partial<State<any>> | null;
18
+ }
19
+ type MethodCallback = (state: State<any>) => (...args: any[]) => void;
20
+ interface Method {
21
+ type: 'method';
22
+ value: MethodCallback;
23
+ }
24
+ interface Alias {
25
+ type: 'alias';
26
+ value: string;
27
+ }
28
+ declare const use: (plugins: Record<string, Property | Method | Alias>) => void;
29
+ //#endregion
30
+ //#region src/utils/fail.d.ts
31
+ /**
32
+ * Throw an AssertionError
33
+ * @param {string} message - The message to pass to the AssertionError
34
+ */
35
+ declare const fail: (message?: string) => never;
36
+ //#endregion
37
+ //#region src/utils/types.d.ts
38
+ type DeepPartial<T> = { [P in keyof T]?: T[P] | (T[P] extends Array<infer U> ? Array<DeepPartial<U>> : DeepPartial<T[P]>) };
39
+ //#endregion
40
+ //#region src/expect.types.d.ts
41
+ interface ValueExpect<T> {
42
+ to: this;
43
+ be: this;
44
+ a: this;
45
+ an: this;
46
+ not: this;
47
+ and: this;
48
+ have: this;
49
+ in: this;
50
+ of: this;
51
+ /**
52
+ * Use deep equality for object checks
53
+ */
54
+ deep: this;
55
+ /**
56
+ * check for deep equality
57
+ */
58
+ eql(value: T, message?: string): this;
59
+ partially: ValueExpect<DeepPartial<T>>;
60
+ /**
61
+ * check for === equality, NaN is considered equal to NaN
62
+ */
63
+ equal(value: T, message?: string): this;
64
+ /**
65
+ * check for === equality, NaN is considered equal to NaN
66
+ */
67
+ eq(value: T, message?: string): this;
68
+ /**
69
+ * check if value has a property
70
+ * @param property a property in the object. When combined with .deep. can be a path like 'a.b.c'
71
+ * @example expect({a: {b: {c: 1}}}).to.have.property('a.b.c');
72
+ * @example expect({a: {b: {c: 1}}}).to.have.deep.property('[0].a.b.c');
73
+ */
74
+ property<K extends keyof T>(property: K): this;
75
+ /**
76
+ * check if value has a property
77
+ * @param property a property in the object. When combined with .deep. can be a path like 'a.b.c'
78
+ * @example expect({a: {b: {c: 1}}}).to.have.property('a.b.c');
79
+ * @example expect({a: {b: {c: 1}}}).to.have.deep.property('[0].a.b.c');
80
+ */
81
+ property(property: string): this;
82
+ /**
83
+ * check if value has a property
84
+ * @param property a property in the object. When combined with .deep. can be a path like 'a.b.c'
85
+ * @param value
86
+ * @example expect({a: {b: {c: 1}}}).to.have.property('a.b.c');
87
+ * @example expect({a: {b: {c: 1}}}).to.have.deep.property('[0].a.b.c');
88
+ */
89
+ property<K extends keyof T>(property: K, value?: any): this;
90
+ /**
91
+ * check if value has a property
92
+ * @param property a property in the object. When combined with .deep. can be a path like 'a.b.c'
93
+ * @param value
94
+ * @example expect({a: {b: {c: 1}}}).to.have.property('a.b.c');
95
+ * @example expect({a: {b: {c: 1}}}).to.have.deep.property('[0].a.b.c');
96
+ */
97
+ property(property: string, value?: any): this;
98
+ /**
99
+ * check if instance of value
100
+ * @param constructor - The constructor function to check against
101
+ */
102
+ instanceOf(constructor: Constructor): this;
103
+ /**
104
+ * check if value is null
105
+ */
106
+ null(): this;
107
+ /**
108
+ * check if value is undefined
109
+ */
110
+ undefined(): this;
111
+ /**
112
+ * check if value is of certain type
113
+ */
114
+ type(type: ValueType): this;
115
+ }
116
+ type ArrayType<T, DT = never> = T extends (infer U)[] ? U : DT;
117
+ interface ArrayExpect<T> extends ValueExpect<T>, ObjectExpect<T> {
118
+ length: NumberExpect<number> & this;
119
+ array(): this;
120
+ every: GetExpectType<ArrayType<T>>;
121
+ /**
122
+ * check if array includes element(s)
123
+ */
124
+ include(...elements: ArrayType<T>[]): this;
125
+ /**
126
+ * check if array includes element(s)
127
+ */
128
+ contain(...elements: ArrayType<T>[]): this;
129
+ /**
130
+ * check for array length
131
+ */
132
+ lengthOf(length: number, message?: string): this;
133
+ /**
134
+ * check that the members in second array are present in the first one
135
+ */
136
+ members(value: ArrayType<T, any>[], message?: string): this;
137
+ same: ArrayExpect<T>;
138
+ ordered: ArrayExpect<T>;
139
+ /**
140
+ * Use partial matching for objects
141
+ * @example
142
+ * expect({ a: 1, b: 2 }).to.partially.eql({ a: 1 });
143
+ */
144
+ partially: ArrayExpect<DeepPartial<T>>;
145
+ /**
146
+ * check if value is an array
147
+ */
148
+ array(): this;
149
+ }
150
+ interface BigIntExpect<T = bigint> extends NumberExpect<T> {
151
+ /**
152
+ * check if value is a bigint
153
+ */
154
+ bigint(): this;
155
+ }
156
+ interface BooleanExpect<T = boolean> extends ValueExpect<T> {
157
+ /**
158
+ * check if value is a boolean
159
+ */
160
+ boolean(): this;
161
+ /**
162
+ * check if value is true
163
+ */
164
+ true(): this;
165
+ /**
166
+ * check if value is false
167
+ */
168
+ false(): this;
169
+ }
170
+ interface DateExpect<T = Date> extends ValueExpect<T>, ObjectExpect<T> {
171
+ /**
172
+ * check if date is after other date
173
+ * @param date
174
+ */
175
+ after(date: Date): this;
176
+ /**
177
+ * check if date is before other date
178
+ * @param date
179
+ */
180
+ before(date: Date): this;
181
+ /**
182
+ * check if date is between other dates
183
+ * @param start
184
+ * @param end
185
+ */
186
+ between(start: Date, end: Date, inclusive?: boolean): this;
187
+ /**
188
+ * check if actual is greater than or equal to expected
189
+ */
190
+ greaterThanOrEqual(value: T): this;
191
+ /**
192
+ * check if actual is greater than or equal to expected
193
+ */
194
+ gte(value: T): this;
195
+ /**
196
+ * check if actual is greater than or equal to expected
197
+ */
198
+ atLeast(value: T): this;
199
+ /**
200
+ * check if actual is greater than expected
201
+ */
202
+ greaterThan(value: T): this;
203
+ /**
204
+ * check if actual is greater than expected
205
+ */
206
+ gt(value: T): this;
207
+ /**
208
+ * check if actual is greater than expected
209
+ */
210
+ above(value: T): this;
211
+ /**
212
+ * check if value is an instance of Date
213
+ */
214
+ Date(): this;
215
+ /**
216
+ * check if actual is less than or equal to expected
217
+ */
218
+ lessThanOrEqual(value: T): this;
219
+ /**
220
+ * check if actual is less than or equal to expected
221
+ */
222
+ lte(value: T): this;
223
+ /**
224
+ * check if actual is less than or equal to expected
225
+ */
226
+ atMost(value: T): this;
227
+ /**
228
+ * check if actual is less than expected
229
+ */
230
+ lessThan(value: T): this;
231
+ /**
232
+ * check if actual is less than expected
233
+ */
234
+ lt(value: T): this;
235
+ /**
236
+ * check if actual is less than expected
237
+ */
238
+ below(value: T): this;
239
+ }
240
+ interface FunctionExpect<T> extends ValueExpect<T> {
241
+ /**
242
+ * check if function throws
243
+ * @param message
244
+ */
245
+ throw(message?: string): this;
246
+ throw(matcher: RegExp | Constructor<Error> | ErrorPredicate, message?: string): this;
247
+ /**
248
+ * check if value is a function
249
+ */
250
+ function(): this;
251
+ }
252
+ interface NumberExpect<T = number> extends ValueExpect<T> {
253
+ /**
254
+ * check if number close enough (default 10%)
255
+ * @param ballpark
256
+ * @param [multiplier=10] - a number between 0 and 1 (exclusive). 0.1 (default) means 10% difference is allowed.
257
+ */
258
+ ballpark(ballpark: number, multiplier?: number): this;
259
+ /**
260
+ * check if number is between other numbers
261
+ * @param start
262
+ * @param end
263
+ * @param inclusive
264
+ */
265
+ between(start: number, end: number, inclusive?: boolean): this;
266
+ /**
267
+ * check if actual is greater than or equal to expected
268
+ */
269
+ greaterThanOrEqual(value: T): this;
270
+ /**
271
+ * check if actual is greater than or equal to expected
272
+ */
273
+ gte(value: T): this;
274
+ /**
275
+ * check if actual is greater than or equal to expected
276
+ */
277
+ atLeast(value: T): this;
278
+ /**
279
+ * check if actual is greater than expected
280
+ */
281
+ greaterThan(value: T): this;
282
+ /**
283
+ * check if actual is greater than expected
284
+ */
285
+ gt(value: T): this;
286
+ /**
287
+ * check if actual is greater than expected
288
+ */
289
+ above(value: T): this;
290
+ /**
291
+ * check if actual is less than or equal to expected
292
+ */
293
+ lessThanOrEqual(value: T): this;
294
+ /**
295
+ * check if actual is less than or equal to expected
296
+ */
297
+ lte(value: T): this;
298
+ /**
299
+ * check if actual is less than or equal to expected
300
+ */
301
+ atMost(value: T): this;
302
+ /**
303
+ * check if actual is less than expected
304
+ */
305
+ lessThan(value: T): this;
306
+ /**
307
+ * check if actual is less than expected
308
+ */
309
+ lt(value: T): this;
310
+ /**
311
+ * check if actual is less than expected
312
+ */
313
+ below(value: T): this;
314
+ /**
315
+ * check if number close enough (default 10%)
316
+ * @param target
317
+ * @param decimal defaults to 0, can be negative if trying to round down to nearest 10, 100, etc
318
+ */
319
+ roundTo(target: number, decimal?: number): this;
320
+ /**
321
+ * check if value is a number
322
+ */
323
+ number(): this;
324
+ /**
325
+ * check if value is a NaN
326
+ */
327
+ NaN(): this;
328
+ }
329
+ type InferMapKeys<T> = T extends Map<infer K, any> ? K : never;
330
+ interface MapExpect<T> extends ValueExpect<T> {
331
+ size: NumberExpect<number>;
332
+ /**
333
+ * check if Map is empty
334
+ */
335
+ empty(message?: string): this;
336
+ /**
337
+ * check if value is an instance of Map
338
+ */
339
+ Map(): this;
340
+ /**
341
+ * Check if value has keys
342
+ */
343
+ keys<K extends InferMapKeys<T>>(keys: K[] | K): this;
344
+ /**
345
+ * check for Map to have a certain size
346
+ */
347
+ sizeOf(size: number, message?: string): this;
348
+ }
349
+ interface ObjectExpect<T> extends ValueExpect<T> {
350
+ size: NumberExpect<number>;
351
+ /**
352
+ * check if object/array/Map/Set is empty
353
+ */
354
+ empty(message?: string): this;
355
+ /**
356
+ * exclude keys from object to be compared further down the chain
357
+ * @param keys
358
+ */
359
+ excluding<K extends keyof T>(...keys: K[]): ObjectExpect<Omit<T, K>>;
360
+ /**
361
+ * check if value is an instance of Map
362
+ */
363
+ Map(): this;
364
+ /**
365
+ * check if value is an instance of Set
366
+ */
367
+ Set(): this;
368
+ /**
369
+ * check if value is an instance of WeakMap
370
+ */
371
+ WeakMap(): this;
372
+ /**
373
+ * check if value is an instance of WeakSet
374
+ */
375
+ WeakSet(): this;
376
+ /**
377
+ * Check if value has keys
378
+ */
379
+ keys<K extends keyof T>(keys: K[] | K): this;
380
+ /**
381
+ * check for object/array/Map/Set/string to have a certain size
382
+ */
383
+ sizeOf(size: number, message?: string): this;
384
+ /**
385
+ * check if value is a plain object
386
+ */
387
+ object(): this;
388
+ }
389
+ interface PromiseExpect<T> extends ValueExpect<T> {
390
+ /**
391
+ * check if promise rejects
392
+ * @param message
393
+ */
394
+ reject(message?: string): Promise<void>;
395
+ reject(matcher: RegExp | Constructor<Error> | ErrorPredicate): Promise<void>;
396
+ }
397
+ interface StringExpect<T = string> extends ValueExpect<T> {
398
+ /**
399
+ * check if string ends with other string
400
+ * @param start
401
+ * @example endsWith('foo', 'o');
402
+ */
403
+ endWith(end: string): this;
404
+ /**
405
+ * check if string includes substring(s)
406
+ */
407
+ include(...substrings: string[]): this;
408
+ /**
409
+ * check if string includes substring(s)
410
+ */
411
+ contain(...substrings: string[]): this;
412
+ /**
413
+ * check for string to have a certain size
414
+ */
415
+ lengthOf(length: number, message?: string): this;
416
+ /**
417
+ * check if string matches regex
418
+ */
419
+ match(regex: RegExp): this;
420
+ /**
421
+ * check if string starts with other string
422
+ * @param start
423
+ * @example startsWith('foo', 'f');
424
+ */
425
+ startWith(start: string): this;
426
+ /**
427
+ * check if value is a string
428
+ */
429
+ string(): this;
430
+ }
431
+ interface SymbolExpect<T> extends ValueExpect<T> {
432
+ /**
433
+ * check if value is a symbol
434
+ */
435
+ symbol(): this;
436
+ }
437
+ declare const LooseSymbol: unique symbol;
438
+ interface Loose {
439
+ [LooseSymbol]: true;
440
+ }
441
+ type AllExpects<T> = ArrayExpect<T> & BigIntExpect<T> & BooleanExpect<T> & DateExpect<T> & FunctionExpect<T> & NumberExpect<T> & MapExpect<T> & ObjectExpect<T> & PromiseExpect<T> & StringExpect<T> & SymbolExpect<T> & ValueExpect<T>;
442
+ interface Expect {
443
+ <T extends Loose>(actual: T): AllExpects<T>;
444
+ <T extends ThrowsCallback>(actual: T): FunctionExpect<T>;
445
+ <T extends Promise<any>>(actual: T): PromiseExpect<T>;
446
+ <T extends any[]>(actual: T): ArrayExpect<T>;
447
+ <T extends Date>(actual: T): DateExpect<T>;
448
+ <T extends Map<any, any>>(actual: T): MapExpect<T>;
449
+ <T extends Record<string, any>>(actual: T): ObjectExpect<T>;
450
+ <T extends number>(actual: T): NumberExpect;
451
+ <T extends bigint>(actual: T): BigIntExpect;
452
+ <T extends boolean>(actual: T): BooleanExpect;
453
+ <T extends string>(actual: T): StringExpect;
454
+ <T extends symbol>(actual: T): SymbolExpect<T>;
455
+ <T>(actual: T): ValueExpect<T>;
456
+ fail: typeof fail;
457
+ }
458
+ type GetExpectType<T> = T extends number ? NumberExpect<T> : AllExpects<T>;
459
+ //# sourceMappingURL=expect.types.d.ts.map
460
+ //#endregion
6
461
  //#region src/expect.d.ts
7
-
8
462
  declare const expectChain: <T>(state: State<T>) => any;
9
463
  declare const expect: Expect;
10
464
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/expect.ts","../src/utils/match.ts"],"sourcesContent":[],"mappings":";;;;;;;cA0Da,wBAAyB,MAAM;cA8B/B,QAEP;;;cChFO;ADgDA,cCxCA,GDoEZ,EAAA,GAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/mixins.ts","../src/utils/fail.ts","../src/utils/types.ts","../src/expect.types.ts","../src/expect.ts","../src/utils/match.ts"],"sourcesContent":[],"mappings":"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"}