elasticdash-test 0.1.3 → 0.1.5

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.
@@ -1,21 +1,234 @@
1
1
  import { expect } from 'expect';
2
- // Export our patched expect so users can import it and get the correct type and runtime matchers
3
- export { expect };
2
+ /**
3
+ * Type guard: returns true only if `value` looks like a TraceHandle.
4
+ * Used to produce a clear error message when a non-trace value (e.g. a plain
5
+ * string) is passed to a trace-aware matcher.
6
+ */
7
+ function isTraceHandle(value) {
8
+ return (value !== null &&
9
+ typeof value === 'object' &&
10
+ typeof value.getLLMSteps === 'function' &&
11
+ typeof value.getToolCalls === 'function');
12
+ }
13
+ const defaultModels = {
14
+ openai: 'gpt-4.1',
15
+ claude: 'claude-3-opus-20240229',
16
+ gemini: 'gemini-1.5-pro',
17
+ grok: 'grok-beta',
18
+ };
19
+ // Helper: call an LLM provider (or SDK) and return the text content
20
+ async function callProviderLLM(prompt, options = {}, systemPrompt = 'You are an expert test judge.', maxTokens = 32, temperature = 0) {
21
+ const provider = options.provider ?? 'openai';
22
+ const sdk = options.sdk;
23
+ const resolvedModel = options.model ?? defaultModels[provider];
24
+ switch (provider) {
25
+ case 'openai': {
26
+ if (sdk && sdk.chat?.completions?.create) {
27
+ const resp = await sdk.chat.completions.create({
28
+ model: resolvedModel,
29
+ messages: [
30
+ { role: 'system', content: systemPrompt },
31
+ { role: 'user', content: prompt },
32
+ ],
33
+ max_tokens: maxTokens,
34
+ temperature,
35
+ });
36
+ return resp?.choices?.[0]?.message?.content?.trim() ?? '';
37
+ }
38
+ const apiKey = options.apiKey ?? process.env.OPENAI_API_KEY;
39
+ if (!apiKey)
40
+ throw new Error('Provide apiKey or set OPENAI_API_KEY for OpenAI-compatible endpoint.');
41
+ const baseURL = (options.baseURL ?? 'https://api.openai.com/v1').replace(/\/$/, '');
42
+ const response = await fetch(`${baseURL}/chat/completions`, {
43
+ method: 'POST',
44
+ headers: {
45
+ Authorization: `Bearer ${apiKey}`,
46
+ 'Content-Type': 'application/json',
47
+ },
48
+ body: JSON.stringify({
49
+ model: resolvedModel,
50
+ messages: [
51
+ { role: 'system', content: systemPrompt },
52
+ { role: 'user', content: prompt },
53
+ ],
54
+ max_tokens: maxTokens,
55
+ temperature,
56
+ }),
57
+ });
58
+ if (!response.ok) {
59
+ throw new Error(`OpenAI API error: ${response.status} ${response.statusText}`);
60
+ }
61
+ const data = await response.json();
62
+ return data.choices?.[0]?.message?.content?.trim() ?? '';
63
+ }
64
+ case 'claude': {
65
+ if (sdk && sdk.messages?.create) {
66
+ const resp = await sdk.messages.create({
67
+ model: resolvedModel,
68
+ max_tokens: maxTokens,
69
+ temperature,
70
+ messages: [{ role: 'user', content: `${systemPrompt}\n\n${prompt}` }],
71
+ });
72
+ return resp?.content?.[0]?.text?.trim() ?? '';
73
+ }
74
+ const apiKey = process.env.ANTHROPIC_API_KEY;
75
+ if (!apiKey)
76
+ throw new Error('ANTHROPIC_API_KEY is not set in environment.');
77
+ const response = await fetch('https://api.anthropic.com/v1/messages', {
78
+ method: 'POST',
79
+ headers: {
80
+ 'x-api-key': apiKey,
81
+ 'anthropic-version': '2023-06-01',
82
+ 'content-type': 'application/json',
83
+ },
84
+ body: JSON.stringify({
85
+ model: resolvedModel,
86
+ max_tokens: maxTokens,
87
+ temperature,
88
+ messages: [{ role: 'user', content: `${systemPrompt}\n\n${prompt}` }],
89
+ }),
90
+ });
91
+ if (!response.ok) {
92
+ throw new Error(`Claude API error: ${response.status} ${response.statusText}`);
93
+ }
94
+ const data = await response.json();
95
+ return data?.content?.[0]?.text?.trim() ?? '';
96
+ }
97
+ case 'gemini': {
98
+ if (sdk && sdk.models?.generateContent) {
99
+ const resp = await sdk.models.generateContent({
100
+ model: resolvedModel,
101
+ contents: [{ role: 'user', parts: [{ text: `${systemPrompt}\n\n${prompt}` }] }],
102
+ generationConfig: { temperature, maxOutputTokens: maxTokens },
103
+ });
104
+ return resp?.response?.candidates?.[0]?.content?.parts?.[0]?.text?.trim() ?? '';
105
+ }
106
+ const apiKey = process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY;
107
+ if (!apiKey)
108
+ throw new Error('GEMINI_API_KEY (or GOOGLE_API_KEY) is not set in environment.');
109
+ const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${resolvedModel}:generateContent?key=${apiKey}`, {
110
+ method: 'POST',
111
+ headers: { 'Content-Type': 'application/json' },
112
+ body: JSON.stringify({
113
+ contents: [{ role: 'user', parts: [{ text: `${systemPrompt}\n\n${prompt}` }] }],
114
+ generationConfig: { temperature, maxOutputTokens: maxTokens },
115
+ }),
116
+ });
117
+ if (!response.ok) {
118
+ throw new Error(`Gemini API error: ${response.status} ${response.statusText}`);
119
+ }
120
+ const data = await response.json();
121
+ return data?.candidates?.[0]?.content?.parts?.[0]?.text?.trim() ?? '';
122
+ }
123
+ case 'grok': {
124
+ if (sdk && sdk.chat?.completions?.create) {
125
+ const resp = await sdk.chat.completions.create({
126
+ model: resolvedModel,
127
+ messages: [
128
+ { role: 'system', content: systemPrompt },
129
+ { role: 'user', content: prompt },
130
+ ],
131
+ max_tokens: maxTokens,
132
+ temperature,
133
+ });
134
+ return resp?.choices?.[0]?.message?.content?.trim() ?? '';
135
+ }
136
+ const apiKey = process.env.GROK_API_KEY;
137
+ if (!apiKey)
138
+ throw new Error('GROK_API_KEY is not set in environment.');
139
+ const response = await fetch('https://api.x.ai/v1/chat/completions', {
140
+ method: 'POST',
141
+ headers: {
142
+ Authorization: `Bearer ${apiKey}`,
143
+ 'Content-Type': 'application/json',
144
+ },
145
+ body: JSON.stringify({
146
+ model: resolvedModel,
147
+ messages: [
148
+ { role: 'system', content: systemPrompt },
149
+ { role: 'user', content: prompt },
150
+ ],
151
+ max_tokens: maxTokens,
152
+ temperature,
153
+ }),
154
+ });
155
+ if (!response.ok) {
156
+ throw new Error(`Grok API error: ${response.status} ${response.statusText}`);
157
+ }
158
+ const data = await response.json();
159
+ return data.choices?.[0]?.message?.content?.trim() ?? '';
160
+ }
161
+ default:
162
+ throw new Error(`Unsupported provider: ${provider}`);
163
+ }
164
+ }
165
+ // Helper: Call an LLM (configurable provider/model/sdk) to judge semantic match
166
+ async function llmJudgeSemanticMatch(traceOutput, expected, options = {}) {
167
+ const prompt = `
168
+ You are an expert test judge. Given the following AI trace output and an expected semantic result, answer "YES" if the trace output semantically matches the expectation, otherwise answer "NO".
169
+
170
+ Trace Output:
171
+ ${traceOutput}
172
+
173
+ Expected:
174
+ ${expected}
175
+
176
+ Answer only "YES" or "NO".
177
+ `.trim();
178
+ const content = (await callProviderLLM(prompt, options, 'You are an expert test judge.', 8, 0)).trim().toUpperCase();
179
+ return content.startsWith('YES');
180
+ }
181
+ function parseFirstNumber(text) {
182
+ const match = text.match(/-?\d+(?:\.\d+)?/);
183
+ if (!match)
184
+ return null;
185
+ const num = Number.parseFloat(match[0]);
186
+ return Number.isFinite(num) ? num : null;
187
+ }
188
+ function resolveCondition(config) {
189
+ const entries = Object.entries(config || {}).filter(([, v]) => typeof v === 'number' && Number.isFinite(v));
190
+ if (entries.length === 0)
191
+ return { kind: 'atLeast', value: 0.7 };
192
+ if (entries.length > 1) {
193
+ throw new Error('Provide only one metric condition (greaterThan, lessThan, atLeast, atMost, equals).');
194
+ }
195
+ return { kind: entries[0][0], value: entries[0][1] };
196
+ }
197
+ function checkCondition(score, condition) {
198
+ switch (condition.kind) {
199
+ case 'greaterThan':
200
+ return score > condition.value;
201
+ case 'lessThan':
202
+ return score < condition.value;
203
+ case 'atLeast':
204
+ return score >= condition.value;
205
+ case 'atMost':
206
+ return score <= condition.value;
207
+ case 'equals':
208
+ return score === condition.value;
209
+ default:
210
+ return false;
211
+ }
212
+ }
4
213
  /**
5
214
  * Register all AI-specific custom matchers onto the `expect` instance.
6
215
  * Call this once on runner startup.
7
216
  */
8
217
  export function registerMatchers() {
9
218
  expect.extend({
10
- /**
11
- * Assert the trace contains at least one LLM step matching the config.
12
- * Usage: expect(trace).toHaveLLMStep({ model: "gpt-4", contains: "order confirmed" })
13
- */
14
219
  toHaveLLMStep(trace, config = {}) {
220
+ if (!isTraceHandle(trace)) {
221
+ return {
222
+ pass: false,
223
+ message: () => `Expected a TraceHandle (ctx.trace) but received ${typeof trace}.\nUse: expect(ctx.trace).toHaveLLMStep(...)`,
224
+ };
225
+ }
15
226
  const steps = trace.getLLMSteps();
16
227
  const matching = steps.filter((step) => {
17
228
  if (config.model && step.model !== config.model)
18
229
  return false;
230
+ if (config.provider && step.provider !== config.provider)
231
+ return false;
19
232
  if (config.contains) {
20
233
  const haystack = [step.completion, step.prompt, step.contains]
21
234
  .filter(Boolean)
@@ -24,9 +237,31 @@ export function registerMatchers() {
24
237
  if (!haystack.includes(config.contains.toLowerCase()))
25
238
  return false;
26
239
  }
240
+ if (config.promptContains) {
241
+ const promptHaystack = (step.prompt ?? '').toLowerCase();
242
+ if (!promptHaystack.includes(config.promptContains.toLowerCase()))
243
+ return false;
244
+ }
245
+ if (config.outputContains) {
246
+ const outputHaystack = (step.completion ?? '').toLowerCase();
247
+ if (!outputHaystack.includes(config.outputContains.toLowerCase()))
248
+ return false;
249
+ }
27
250
  return true;
28
251
  });
29
- const pass = matching.length > 0;
252
+ const count = matching.length;
253
+ let pass;
254
+ if (config.times !== undefined) {
255
+ pass = count === config.times;
256
+ }
257
+ else if (config.minTimes !== undefined || config.maxTimes !== undefined) {
258
+ const min = config.minTimes ?? 0;
259
+ const max = config.maxTimes ?? Infinity;
260
+ pass = count >= min && count <= max;
261
+ }
262
+ else {
263
+ pass = count > 0;
264
+ }
30
265
  return {
31
266
  pass,
32
267
  message: () => {
@@ -35,16 +270,18 @@ export function registerMatchers() {
35
270
  }
36
271
  const stepSummary = steps.length === 0
37
272
  ? 'no LLM steps were recorded'
38
- : `recorded steps: ${JSON.stringify(steps)}`;
273
+ : `${count} matching step(s) found; recorded steps: ${JSON.stringify(steps)}`;
39
274
  return `Expected trace to have LLM step matching ${JSON.stringify(config)}, but ${stepSummary}`;
40
275
  },
41
276
  };
42
277
  },
43
- /**
44
- * Assert the trace contains a tool call with the given name.
45
- * Usage: expect(trace).toCallTool("chargeCard")
46
- */
47
278
  toCallTool(trace, toolName) {
279
+ if (!isTraceHandle(trace)) {
280
+ return {
281
+ pass: false,
282
+ message: () => `Expected a TraceHandle (ctx.trace) but received ${typeof trace}.\nUse: expect(ctx.trace).toCallTool(...)`,
283
+ };
284
+ }
48
285
  const calls = trace.getToolCalls();
49
286
  const pass = calls.some((c) => c.name === toolName);
50
287
  return {
@@ -59,29 +296,291 @@ export function registerMatchers() {
59
296
  },
60
297
  };
61
298
  },
62
- /**
63
- * Assert the trace output semantically matches an expected string.
64
- * For MP: simple substring/case-insensitive match.
65
- * Later: can swap in embedding-based similarity.
66
- * Usage: expect(trace).toMatchSemanticOutput("order confirmed")
67
- */
68
- toMatchSemanticOutput(trace, expected) {
299
+ async toMatchSemanticOutput(trace, expected, options) {
300
+ if (!isTraceHandle(trace)) {
301
+ return {
302
+ pass: false,
303
+ message: () => `Expected a TraceHandle (ctx.trace) but received ${typeof trace}.\nUse: expect(ctx.trace).toMatchSemanticOutput(...)`,
304
+ };
305
+ }
69
306
  const steps = trace.getLLMSteps();
70
307
  const fullOutput = steps
71
308
  .map((s) => [s.completion, s.contains].filter(Boolean).join(' '))
72
309
  .join(' ')
73
- .toLowerCase();
74
- const pass = fullOutput.includes(expected.toLowerCase());
310
+ .trim();
311
+ try {
312
+ const pass = await llmJudgeSemanticMatch(fullOutput, expected, options);
313
+ return {
314
+ pass,
315
+ message: () => {
316
+ if (pass) {
317
+ return `Expected trace output NOT to semantically match "${expected}" (LLM judged YES)`;
318
+ }
319
+ return `Expected trace output to semantically match "${expected}", but LLM judged NO. Trace output: "${fullOutput || '(empty)'}"`;
320
+ },
321
+ };
322
+ }
323
+ catch (err) {
324
+ return {
325
+ pass: false,
326
+ message: () => `LLM semantic match failed: ${err.message}`,
327
+ };
328
+ }
329
+ },
330
+ async toEvaluateOutputMetric(trace, config) {
331
+ if (!isTraceHandle(trace)) {
332
+ return {
333
+ pass: false,
334
+ message: () => `Expected a TraceHandle (ctx.trace) but received ${typeof trace}.
335
+ Use: expect(ctx.trace).toEvaluateOutputMetric(...)`,
336
+ };
337
+ }
338
+ if (!config || !config.evaluationPrompt) {
339
+ return {
340
+ pass: false,
341
+ message: () => 'toEvaluateOutputMetric requires evaluationPrompt',
342
+ };
343
+ }
344
+ const steps = trace.getLLMSteps();
345
+ if (steps.length === 0) {
346
+ return {
347
+ pass: false,
348
+ message: () => 'No LLM steps recorded; cannot evaluate output metric.',
349
+ };
350
+ }
351
+ const targetIdx = config.index ?? (config.nth !== undefined ? config.nth - 1 : steps.length - 1);
352
+ if (targetIdx < 0 || targetIdx >= steps.length) {
353
+ return {
354
+ pass: false,
355
+ message: () => `LLM steps length ${steps.length}, but index/nth points to ${targetIdx}.`,
356
+ };
357
+ }
358
+ const targetStep = steps[targetIdx];
359
+ const targetField = config.target ?? 'result';
360
+ const targetText = targetField === 'prompt' ? targetStep.prompt ?? '' : targetStep.completion ?? '';
361
+ if (!targetText) {
362
+ return {
363
+ pass: false,
364
+ message: () => `Selected LLM step has empty ${targetField}; cannot evaluate.`,
365
+ };
366
+ }
367
+ const condition = (() => {
368
+ try {
369
+ return resolveCondition(config.condition);
370
+ }
371
+ catch (err) {
372
+ return err;
373
+ }
374
+ })();
375
+ if (condition instanceof Error) {
376
+ return {
377
+ pass: false,
378
+ message: () => condition.message,
379
+ };
380
+ }
381
+ const evalPrompt = `
382
+ Evaluation prompt (from user):
383
+ ${config.evaluationPrompt}
384
+
385
+ Score the following text strictly between 0 and 1 (inclusive). Respond with only the number.
386
+
387
+ Text:
388
+ ${targetText}
389
+ `.trim();
390
+ try {
391
+ const raw = await callProviderLLM(evalPrompt, { provider: config.provider, model: config.model, sdk: config.sdk, apiKey: config.apiKey, baseURL: config.baseURL }, 'You are an evaluation assistant. Return only a number between 0 and 1.', 16, 0);
392
+ const score = parseFirstNumber(raw);
393
+ if (score === null) {
394
+ return {
395
+ pass: false,
396
+ message: () => `Could not parse numeric metric from model response: "${raw}"`,
397
+ };
398
+ }
399
+ if (score < 0 || score > 1) {
400
+ return {
401
+ pass: false,
402
+ message: () => `Metric ${score} is out of allowed range 0.0–1.0 (raw: "${raw}")`,
403
+ };
404
+ }
405
+ const pass = checkCondition(score, condition);
406
+ return {
407
+ pass,
408
+ message: () => {
409
+ if (pass) {
410
+ return `Expected metric NOT to satisfy ${condition.kind} ${condition.value} (score ${score})`;
411
+ }
412
+ return `Metric check failed: score ${score} did not satisfy ${condition.kind} ${condition.value}. Raw response: "${raw}"`;
413
+ },
414
+ };
415
+ }
416
+ catch (err) {
417
+ return {
418
+ pass: false,
419
+ message: () => `LLM evaluation failed: ${err.message}`,
420
+ };
421
+ }
422
+ },
423
+ toHaveCustomStep(trace, config = {}) {
424
+ if (!isTraceHandle(trace) || typeof trace.getCustomSteps !== 'function') {
425
+ return {
426
+ pass: false,
427
+ message: () => `Expected a TraceHandle (ctx.trace with getCustomSteps) but received ${typeof trace}.\nUse: expect(ctx.trace).toHaveCustomStep(...)`,
428
+ };
429
+ }
430
+ const steps = trace.getCustomSteps();
431
+ const matchString = (val) => {
432
+ if (val === undefined || val === null)
433
+ return '';
434
+ if (typeof val === 'string')
435
+ return val;
436
+ try {
437
+ return JSON.stringify(val);
438
+ }
439
+ catch {
440
+ return String(val);
441
+ }
442
+ };
443
+ const matching = steps.filter((step) => {
444
+ if (config.kind && step.kind !== config.kind)
445
+ return false;
446
+ if (config.name && step.name !== config.name)
447
+ return false;
448
+ if (config.tag && !(step.tags || []).includes(config.tag))
449
+ return false;
450
+ const payloadStr = matchString(step.payload).toLowerCase();
451
+ const resultStr = matchString(step.result).toLowerCase();
452
+ const metaStr = matchString(step.metadata).toLowerCase();
453
+ const combined = [payloadStr, resultStr, metaStr].filter(Boolean).join(' ');
454
+ if (config.contains && !combined.includes(config.contains.toLowerCase()))
455
+ return false;
456
+ if (config.payloadContains && !payloadStr.includes(config.payloadContains.toLowerCase()))
457
+ return false;
458
+ if (config.resultContains && !resultStr.includes(config.resultContains.toLowerCase()))
459
+ return false;
460
+ if (config.metadataContains && !metaStr.includes(config.metadataContains.toLowerCase()))
461
+ return false;
462
+ return true;
463
+ });
464
+ const count = matching.length;
465
+ let pass;
466
+ if (config.times !== undefined) {
467
+ pass = count === config.times;
468
+ }
469
+ else if (config.minTimes !== undefined || config.maxTimes !== undefined) {
470
+ const min = config.minTimes ?? 0;
471
+ const max = config.maxTimes ?? Infinity;
472
+ pass = count >= min && count <= max;
473
+ }
474
+ else {
475
+ pass = count > 0;
476
+ }
75
477
  return {
76
478
  pass,
77
479
  message: () => {
78
480
  if (pass) {
79
- return `Expected trace output NOT to semantically match "${expected}"`;
481
+ return `Expected trace NOT to have custom step matching ${JSON.stringify(config)}`;
80
482
  }
81
- return `Expected trace output to semantically match "${expected}", but got: "${fullOutput || '(empty)'}"`;
483
+ const stepSummary = steps.length === 0
484
+ ? 'no custom steps were recorded'
485
+ : `${count} matching step(s) found; recorded custom steps: ${JSON.stringify(steps)}`;
486
+ return `Expected trace to have custom step matching ${JSON.stringify(config)}, but ${stepSummary}`;
487
+ },
488
+ };
489
+ },
490
+ toHavePromptWhere(trace, config) {
491
+ if (!isTraceHandle(trace)) {
492
+ return {
493
+ pass: false,
494
+ message: () => `Expected a TraceHandle (ctx.trace) but received ${typeof trace}.\nUse: expect(ctx.trace).toHavePromptWhere(...)`,
495
+ };
496
+ }
497
+ if (!config || !config.filterContains) {
498
+ return {
499
+ pass: false,
500
+ message: () => 'toHavePromptWhere requires filterContains',
501
+ };
502
+ }
503
+ const filterNeedle = config.filterContains.toLowerCase();
504
+ const requireNeedle = config.requireContains?.toLowerCase();
505
+ const forbidNeedle = config.requireNotContains?.toLowerCase();
506
+ const prompts = trace.getLLMSteps().map((s) => s.prompt ?? '');
507
+ const filtered = prompts.filter((p) => p.toLowerCase().includes(filterNeedle));
508
+ // Optional positional check (index or nth)
509
+ const targetIdx = config.index ?? (config.nth !== undefined ? config.nth - 1 : undefined);
510
+ let checked = [];
511
+ let count = 0;
512
+ let pass = true;
513
+ if (targetIdx !== undefined) {
514
+ if (targetIdx < 0 || targetIdx >= filtered.length) {
515
+ return {
516
+ pass: false,
517
+ message: () => `Filtered prompts length ${filtered.length}, but index/nth points to ${targetIdx}. Config: ${JSON.stringify(config)}`,
518
+ };
519
+ }
520
+ const p = filtered[targetIdx];
521
+ const lower = p.toLowerCase();
522
+ const okRequire = requireNeedle ? lower.includes(requireNeedle) : true;
523
+ const okForbid = forbidNeedle ? !lower.includes(forbidNeedle) : true;
524
+ pass = okRequire && okForbid;
525
+ checked = okRequire && okForbid ? [p] : [];
526
+ count = checked.length;
527
+ }
528
+ else {
529
+ checked = filtered.filter((p) => {
530
+ const lower = p.toLowerCase();
531
+ if (requireNeedle && !lower.includes(requireNeedle))
532
+ return false;
533
+ if (forbidNeedle && lower.includes(forbidNeedle))
534
+ return false;
535
+ return true;
536
+ });
537
+ count = checked.length;
538
+ if (config.times !== undefined) {
539
+ pass = count === config.times;
540
+ }
541
+ else {
542
+ const min = config.minTimes ?? 0;
543
+ const max = config.maxTimes ?? Infinity;
544
+ pass = count >= min && count <= max;
545
+ }
546
+ // Also ensure that if requireContains is set, no filtered prompt violates it
547
+ if (requireNeedle) {
548
+ const violating = filtered.filter((p) => !p.toLowerCase().includes(requireNeedle));
549
+ if (violating.length > 0)
550
+ pass = false;
551
+ }
552
+ if (forbidNeedle) {
553
+ const violating = filtered.filter((p) => p.toLowerCase().includes(forbidNeedle));
554
+ if (violating.length > 0)
555
+ pass = false;
556
+ }
557
+ }
558
+ return {
559
+ pass,
560
+ message: () => {
561
+ if (pass) {
562
+ return `Expected prompts NOT to satisfy filter/require combo: ${JSON.stringify(config)}`;
563
+ }
564
+ const base = [`Expected prompts filtered by "${config.filterContains}" to satisfy requirements`];
565
+ if (config.requireContains)
566
+ base.push(`requireContains: "${config.requireContains}"`);
567
+ if (config.requireNotContains)
568
+ base.push(`requireNotContains: "${config.requireNotContains}"`);
569
+ if (targetIdx !== undefined) {
570
+ base.push(`checked index: ${targetIdx}`, `filtered count: ${filtered.length}`);
571
+ }
572
+ else {
573
+ base.push(`filtered count: ${filtered.length}, passing count: ${checked.length}`);
574
+ base.push(config.times !== undefined
575
+ ? `expected exactly ${config.times}`
576
+ : `expected between ${config.minTimes ?? 0} and ${config.maxTimes ?? Infinity}`);
577
+ }
578
+ return base.filter(Boolean).join('; ');
82
579
  },
83
580
  };
84
581
  },
85
582
  });
86
583
  }
584
+ // Export our patched expect so users can import it and get the correct type and runtime matchers
585
+ export { expect };
87
586
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/matchers/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/matchers/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,UAAU,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CASlG"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAI7D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,UAAU,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CASlG"}