llm-testrunner-components 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +113 -10
  2. package/dist/cjs/app-globals-CbbEbofA.js +14 -0
  3. package/dist/cjs/app-globals-CbbEbofA.js.map +1 -0
  4. package/dist/cjs/{index-CY2lQip_.js → index-D-FySkoV.js} +25 -5
  5. package/dist/cjs/index-D-FySkoV.js.map +1 -0
  6. package/dist/cjs/index.cjs.js +159 -66
  7. package/dist/cjs/index.cjs.js.map +1 -1
  8. package/dist/cjs/llm-test-runner.cjs.entry.js +1 -1
  9. package/dist/cjs/llm-testrunner.cjs.js +4 -4
  10. package/dist/cjs/llm-testrunner.cjs.js.map +1 -1
  11. package/dist/cjs/loader.cjs.js +3 -3
  12. package/dist/collection/collection-manifest.json +3 -2
  13. package/dist/collection/components/llm-test-runner/llm-test-runner.js +152 -72
  14. package/dist/collection/components/llm-test-runner/llm-test-runner.js.map +1 -1
  15. package/dist/collection/global/env.js +6 -0
  16. package/dist/collection/global/env.js.map +1 -0
  17. package/dist/collection/lib/rate-limited-fetcher/rate-limited-fetcher.js +39 -0
  18. package/dist/collection/lib/rate-limited-fetcher/rate-limited-fetcher.js.map +1 -0
  19. package/dist/components/index.js +6 -1650
  20. package/dist/components/index.js.map +1 -1
  21. package/dist/components/llm-test-runner.js +1 -1
  22. package/dist/components/p-CYUbsbxt.js +1770 -0
  23. package/dist/components/p-CYUbsbxt.js.map +1 -0
  24. package/dist/esm/app-globals-BOQOUavG.js +12 -0
  25. package/dist/esm/app-globals-BOQOUavG.js.map +1 -0
  26. package/dist/esm/{index-DBp-rMPb.js → index-cncubhtM.js} +25 -6
  27. package/dist/esm/index-cncubhtM.js.map +1 -0
  28. package/dist/esm/index.js +159 -66
  29. package/dist/esm/index.js.map +1 -1
  30. package/dist/esm/llm-test-runner.entry.js +1 -1
  31. package/dist/esm/llm-testrunner.js +5 -5
  32. package/dist/esm/llm-testrunner.js.map +1 -1
  33. package/dist/esm/loader.js +4 -4
  34. package/dist/llm-testrunner/index.esm.js +1 -1
  35. package/dist/llm-testrunner/index.esm.js.map +1 -1
  36. package/dist/llm-testrunner/llm-testrunner.esm.js +1 -1
  37. package/dist/llm-testrunner/llm-testrunner.esm.js.map +1 -1
  38. package/dist/llm-testrunner/p-BOQOUavG.js +2 -0
  39. package/dist/llm-testrunner/p-BOQOUavG.js.map +1 -0
  40. package/dist/llm-testrunner/p-cncubhtM.js +3 -0
  41. package/dist/llm-testrunner/p-cncubhtM.js.map +1 -0
  42. package/dist/llm-testrunner/p-f68fd660.entry.js +2 -0
  43. package/dist/react/components.d.ts +6 -3
  44. package/dist/react/components.d.ts.map +1 -1
  45. package/dist/react/components.js +2 -2
  46. package/dist/types/components/llm-test-runner/llm-test-runner.d.ts +13 -4
  47. package/dist/types/components.d.ts +26 -2
  48. package/dist/types/global/env.d.ts +8 -0
  49. package/dist/types/lib/rate-limited-fetcher/rate-limited-fetcher.d.ts +10 -0
  50. package/dist/types/stencil-public-runtime.d.ts +19 -10
  51. package/package.json +6 -4
  52. package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -8
  53. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
  54. package/dist/cjs/index-CY2lQip_.js.map +0 -1
  55. package/dist/esm/app-globals-DQuL1Twl.js +0 -6
  56. package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
  57. package/dist/esm/index-DBp-rMPb.js.map +0 -1
  58. package/dist/llm-testrunner/p-DBp-rMPb.js +0 -3
  59. package/dist/llm-testrunner/p-DBp-rMPb.js.map +0 -1
  60. package/dist/llm-testrunner/p-DQuL1Twl.js +0 -2
  61. package/dist/llm-testrunner/p-DQuL1Twl.js.map +0 -1
  62. package/dist/llm-testrunner/p-ed2ea423.entry.js +0 -2
  63. /package/dist/llm-testrunner/{p-ed2ea423.entry.js.map → p-f68fd660.entry.js.map} +0 -0
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
  import { createComponent } from '@stencil/react-output-target/runtime';
3
- import { LlmTestRunner as LlmTestRunnerElement, defineCustomElement as defineLlmTestRunner } from "llm-testrunner-components/dist/components/llm-test-runner.js";
4
3
  import React from 'react';
4
+ import { LlmTestRunner as LlmTestRunnerElement, defineCustomElement as defineLlmTestRunner } from "../.././dist/components/llm-test-runner.js";
5
5
  export const LlmTestRunner = /*@__PURE__*/ createComponent({
6
6
  tagName: 'llm-test-runner',
7
7
  elementClass: LlmTestRunnerElement,
8
8
  // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
9
9
  react: React,
10
- events: {},
10
+ events: { onLlmRequest: 'llmRequest' },
11
11
  defineCustomElement: defineLlmTestRunner
12
12
  });
@@ -1,3 +1,4 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
1
2
  import { EvaluationResult } from '../../lib/evaluation/types';
2
3
  export interface TestCase {
3
4
  id: string;
@@ -8,17 +9,24 @@ export interface TestCase {
8
9
  isRunning?: boolean;
9
10
  error?: string;
10
11
  evaluationResult?: EvaluationResult;
12
+ responseTime?: number;
13
+ }
14
+ export interface LLMRequestPayload {
15
+ prompt: string;
16
+ resolve: (result: string) => void;
17
+ reject: (err: any) => void;
11
18
  }
12
19
  export declare class LLMTestRunner {
13
- apiKey: string;
20
+ llmRequest: EventEmitter<LLMRequestPayload>;
21
+ delayMs?: number;
14
22
  testCases: TestCase[];
15
23
  isRunningAll: boolean;
16
24
  error: string;
17
25
  private fileInput;
18
26
  isExportingTestSuite: boolean;
27
+ isExportingTestResults: boolean;
19
28
  private evaluationEngine;
20
- private apiUrl;
21
- componentWillLoad(): Promise<void>;
29
+ componentWillLoad(): void;
22
30
  componentDidLoad(): void;
23
31
  disconnectedCallback(): void;
24
32
  private addNewTestCase;
@@ -29,7 +37,6 @@ export declare class LLMTestRunner {
29
37
  private removeKeyword;
30
38
  private addSourceLink;
31
39
  private removeSourceLink;
32
- private callGeminiAPI;
33
40
  private evaluateResponse;
34
41
  private runAllTests;
35
42
  private generateId;
@@ -38,5 +45,7 @@ export declare class LLMTestRunner {
38
45
  private readFileAsync;
39
46
  private downloadFile;
40
47
  private handleExportTestSuite;
48
+ private handleExportTestResults;
49
+ private escapeCsvField;
41
50
  render(): any;
42
51
  }
@@ -5,13 +5,33 @@
5
5
  * It contains typing information for all components that exist in this project.
6
6
  */
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
+ import { LLMRequestPayload } from "./components/llm-test-runner/llm-test-runner";
9
+ export { LLMRequestPayload } from "./components/llm-test-runner/llm-test-runner";
8
10
  export namespace Components {
9
11
  interface LlmTestRunner {
10
- "apiKey": string;
12
+ /**
13
+ * @default 500
14
+ */
15
+ "delayMs"?: number;
11
16
  }
12
17
  }
18
+ export interface LlmTestRunnerCustomEvent<T> extends CustomEvent<T> {
19
+ detail: T;
20
+ target: HTMLLlmTestRunnerElement;
21
+ }
13
22
  declare global {
23
+ interface HTMLLlmTestRunnerElementEventMap {
24
+ "llmRequest": LLMRequestPayload;
25
+ }
14
26
  interface HTMLLlmTestRunnerElement extends Components.LlmTestRunner, HTMLStencilElement {
27
+ addEventListener<K extends keyof HTMLLlmTestRunnerElementEventMap>(type: K, listener: (this: HTMLLlmTestRunnerElement, ev: LlmTestRunnerCustomEvent<HTMLLlmTestRunnerElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
28
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
29
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
30
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
31
+ removeEventListener<K extends keyof HTMLLlmTestRunnerElementEventMap>(type: K, listener: (this: HTMLLlmTestRunnerElement, ev: LlmTestRunnerCustomEvent<HTMLLlmTestRunnerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
32
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
33
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
34
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
15
35
  }
16
36
  var HTMLLlmTestRunnerElement: {
17
37
  prototype: HTMLLlmTestRunnerElement;
@@ -23,7 +43,11 @@ declare global {
23
43
  }
24
44
  declare namespace LocalJSX {
25
45
  interface LlmTestRunner {
26
- "apiKey"?: string;
46
+ /**
47
+ * @default 500
48
+ */
49
+ "delayMs"?: number;
50
+ "onLlmRequest"?: (event: LlmTestRunnerCustomEvent<LLMRequestPayload>) => void;
27
51
  }
28
52
  interface IntrinsicElements {
29
53
  "llm-test-runner": LlmTestRunner;
@@ -0,0 +1,8 @@
1
+ declare global {
2
+ interface Window {
3
+ env: {
4
+ API_KEY: string;
5
+ };
6
+ }
7
+ }
8
+ export default function (): void;
@@ -0,0 +1,10 @@
1
+ export declare class RateLimitedFetcher {
2
+ private queue;
3
+ private delay;
4
+ private intervalId?;
5
+ constructor(delayMs: number);
6
+ private startQueue;
7
+ schedule<T>(task: () => Promise<T>): Promise<T>;
8
+ stop(): void;
9
+ runAll<T>(tasks: Array<() => Promise<T>>): Promise<T[]>;
10
+ }
@@ -1,5 +1,6 @@
1
1
  type CustomMethodDecorator<T> = (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;
2
- type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
2
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
3
+ type MixinInstance<F> = F extends (base: MixedInCtor) => MixedInCtor<infer I> ? I : never;
3
4
  export interface ComponentDecorator {
4
5
  (opts?: ComponentOptions): ClassDecorator;
5
6
  }
@@ -340,7 +341,6 @@ export declare function forceUpdate(ref: any): void;
340
341
  export declare function getRenderingRef(): any;
341
342
  export interface HTMLStencilElement extends Omit<HTMLElement, 'autocorrect'> {
342
343
  componentOnReady(): Promise<this>;
343
- autocorrect: 'on' | 'off';
344
344
  }
345
345
  /**
346
346
  * Schedules a DOM-write task. The provided callback will be executed
@@ -365,18 +365,27 @@ export declare function readTask(task: RafCallback): void;
365
365
  * Unhandled exception raised while rendering, during event handling, or lifecycles will trigger the custom event handler.
366
366
  */
367
367
  export declare const setErrorHandler: (handler: ErrorHandler) => void;
368
- export type MixinFactory = <TBase extends new (...args: any[]) => any>(base: TBase) => abstract new (...args: ConstructorParameters<TBase>) => any;
368
+ /**
369
+ * @deprecated - Use `MixedInCtor` instead:
370
+ * ```ts
371
+ * import { MixedInCtor } from '@stencil/core';
372
+ *
373
+ * const AFactoryFn = <B extends MixedInCtor>(Base: B) => {class A extends Base { propA = A }; return A;}
374
+ * ```
375
+ */
376
+ export type MixinFactory = (base: MixedInCtor) => MixedInCtor;
377
+ export type MixedInCtor<T = {}> = new (...args: any[]) => T;
369
378
  /**
370
379
  * Compose multiple mixin classes into a single constructor.
371
380
  * The resulting class has the combined instance types of all mixed-in classes.
372
381
  *
373
382
  * Example:
374
- * ```
375
- * import { Mixin, MixinFactory } from '@stencil/core';
383
+ * ```ts
384
+ * import { Mixin, MixedInCtor } from '@stencil/core';
376
385
  *
377
- * const AWrap: MixinFactory = (Base) => {class A extends Base { propA = A }; return A;}
378
- * const BWrap: MixinFactory = (Base) => {class B extends Base { propB = B }; return B;}
379
- * const CWrap: MixinFactory = (Base) => {class C extends Base { propC = C }; return C;}
386
+ * const AWrap = <B extends MixedInCtor>(Base: B) => {class A extends Base { propA = A }; return A;}
387
+ * const BWrap = <B extends MixedInCtor>(Base: B) => {class B extends Base { propB = B }; return B;}
388
+ * const CWrap = <B extends MixedInCtor>(Base: B) => {class C extends Base { propC = C }; return C;}
380
389
  *
381
390
  * class X extends Mixin(AWrap, BWrap, CWrap) {
382
391
  * render() { return <div>{this.propA} {this.propB} {this.propC}</div>; }
@@ -384,9 +393,9 @@ export type MixinFactory = <TBase extends new (...args: any[]) => any>(base: TBa
384
393
  * ```
385
394
  *
386
395
  * @param mixinFactories mixin factory functions that return a class which extends from the provided class.
387
- * @returns a class that that is composed from extending each of the provided classes in the order they were provided.
396
+ * @returns a class that is composed from extending each of the provided classes in the order they were provided.
388
397
  */
389
- export declare function Mixin<TMixins extends readonly MixinFactory[]>(...mixinFactories: TMixins): abstract new (...args: any[]) => UnionToIntersection<InstanceType<ReturnType<TMixins[number]>>>;
398
+ export declare function Mixin<const TMixins extends readonly MixinFactory[]>(...mixinFactories: TMixins): abstract new (...args: any[]) => UnionToIntersection<MixinInstance<TMixins[number]>>;
390
399
  /**
391
400
  * This file gets copied to all distributions of stencil component collections.
392
401
  * - no imports
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "llm-testrunner-components",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "A Stencil web component library for LLM test runner functionality",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -10,9 +10,9 @@
10
10
  "unpkg": "dist/llm-testrunner-components/llm-testrunner-components.esm.js",
11
11
  "exports": {
12
12
  "./react": {
13
- "import": "./dist/react/index.js",
14
- "require": "./dist/react/index.js",
15
- "types": "./dist/react/index.d.ts"
13
+ "import": "./dist/react/components.js",
14
+ "require": "./dist/react/components.js",
15
+ "types": "./dist/react/components.d.ts"
16
16
  },
17
17
  "./loader": {
18
18
  "import": "./loader/index.js",
@@ -48,10 +48,12 @@
48
48
  "uuid": "^10.0.0"
49
49
  },
50
50
  "devDependencies": {
51
+ "@rollup/plugin-replace": "^6.0.2",
51
52
  "@stencil/core": "^4.27.1",
52
53
  "@stencil/react-output-target": "^1.2.0",
53
54
  "@types/jest": "^29.5.14",
54
55
  "@types/node": "^22.13.5",
56
+ "dotenv": "^17.2.3",
55
57
  "jest": "^29.7.0",
56
58
  "jest-cli": "^29.7.0",
57
59
  "puppeteer": "^24.3.0"
@@ -1,8 +0,0 @@
1
- 'use strict';
2
-
3
- const globalScripts = () => {};
4
-
5
- exports.globalScripts = globalScripts;
6
- //# sourceMappingURL=app-globals-V2Kpy_OQ.js.map
7
-
8
- //# sourceMappingURL=app-globals-V2Kpy_OQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-globals-V2Kpy_OQ.js","sources":["@stencil/core/internal/app-globals"],"sourcesContent":["export const globalScripts = () => {};\nexport const globalStyles = \"\";\n"],"names":[],"mappings":";;AAAY,MAAC,aAAa,GAAG,MAAM;;;;"}