peerbench 0.0.2-alpha.0 → 0.0.2-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/README.md +123 -99
- package/dist/aggregators/index.d.ts +67 -0
- package/dist/aggregators/index.js +46 -0
- package/dist/aggregators/index.js.map +1 -0
- package/dist/benchmarks/index.d.ts +615 -1271
- package/dist/benchmarks/index.js +358 -805
- package/dist/benchmarks/index.js.map +1 -1
- package/dist/{chunk-DUBKY73H.js → chunk-4UBK6452.js} +13 -13
- package/dist/chunk-4UBK6452.js.map +1 -0
- package/dist/chunk-ERALDEZY.js +112 -0
- package/dist/chunk-ERALDEZY.js.map +1 -0
- package/dist/{chunk-ZJWSK4VO.js → chunk-HMQYGCKI.js} +1 -1
- package/dist/chunk-HMQYGCKI.js.map +1 -0
- package/dist/chunk-NUEOE3K5.js +8 -0
- package/dist/chunk-NUEOE3K5.js.map +1 -0
- package/dist/chunk-OQE6TQXZ.js +42 -0
- package/dist/chunk-OQE6TQXZ.js.map +1 -0
- package/dist/chunk-QY5MPNNB.js +28 -0
- package/dist/chunk-QY5MPNNB.js.map +1 -0
- package/dist/chunk-R76XA2K6.js +229 -0
- package/dist/chunk-R76XA2K6.js.map +1 -0
- package/dist/chunk-TRNCF2BG.js +35 -0
- package/dist/chunk-TRNCF2BG.js.map +1 -0
- package/dist/chunk-UHHHSYVE.js +11 -0
- package/dist/chunk-UHHHSYVE.js.map +1 -0
- package/dist/{chunk-232PY7K3.js → chunk-YY33MNMV.js} +29 -14
- package/dist/chunk-YY33MNMV.js.map +1 -0
- package/dist/chunk-ZEWI24CV.js +365 -0
- package/dist/chunk-ZEWI24CV.js.map +1 -0
- package/dist/chunk-ZXTQJFGL.js +44 -0
- package/dist/chunk-ZXTQJFGL.js.map +1 -0
- package/dist/index-BAioQhp2.d.ts +27 -0
- package/dist/index.d.ts +51 -26
- package/dist/index.js +28 -25
- package/dist/index.js.map +1 -1
- package/dist/json-file-ZwzLUbje.d.ts +73 -0
- package/dist/llm-judge-QThCZ9TQ.d.ts +67 -0
- package/dist/providers/index.d.ts +16 -19
- package/dist/providers/index.js +8 -253
- package/dist/providers/index.js.map +1 -1
- package/dist/schemas/extensions/index.d.ts +16 -2
- package/dist/schemas/extensions/index.js +9 -3
- package/dist/schemas/extensions/index.js.map +1 -1
- package/dist/schemas/index.d.ts +108 -141
- package/dist/schemas/index.js +7 -10
- package/dist/schemas/llm/index.d.ts +100 -82
- package/dist/schemas/llm/index.js +7 -29
- package/dist/schemas/llm/index.js.map +1 -1
- package/dist/scorers/index.d.ts +3 -2
- package/dist/scorers/index.js +8 -486
- package/dist/scorers/index.js.map +1 -1
- package/dist/storages/index.d.ts +69 -0
- package/dist/storages/index.js +98 -0
- package/dist/storages/index.js.map +1 -0
- package/package.json +12 -6
- package/dist/catalogs/index.d.ts +0 -75
- package/dist/catalogs/index.js +0 -88
- package/dist/catalogs/index.js.map +0 -1
- package/dist/chunk-22HU24QF.js +0 -8
- package/dist/chunk-22HU24QF.js.map +0 -1
- package/dist/chunk-232PY7K3.js.map +0 -1
- package/dist/chunk-7TREBPSJ.js +0 -26
- package/dist/chunk-7TREBPSJ.js.map +0 -1
- package/dist/chunk-DUBKY73H.js.map +0 -1
- package/dist/chunk-GVF4YZF3.js +0 -15
- package/dist/chunk-GVF4YZF3.js.map +0 -1
- package/dist/chunk-HJH3SW3L.js +0 -103
- package/dist/chunk-HJH3SW3L.js.map +0 -1
- package/dist/chunk-IUN2IUCS.js +0 -58
- package/dist/chunk-IUN2IUCS.js.map +0 -1
- package/dist/chunk-VBOM2YEG.js +0 -47
- package/dist/chunk-VBOM2YEG.js.map +0 -1
- package/dist/chunk-ZJWSK4VO.js.map +0 -1
- package/dist/data-BmN5WjZ4.d.ts +0 -57
- package/dist/generic-array-DLHWSvf1.d.ts +0 -22
- package/dist/index-WiPjF2AL.d.ts +0 -15
- package/dist/llm-judge-DIG1f1Az.d.ts +0 -67
- package/dist/simple-system-prompt-CzPYuvo0.d.ts +0 -49
- package/dist/system-prompt--0FdPWqK.d.ts +0 -58
- package/dist/utilities-BrRH32rD.d.ts +0 -30
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AbstractFileStorageCodec,
|
|
3
|
+
AbstractStorage,
|
|
4
|
+
FileStorage,
|
|
5
|
+
JSONFileStorage,
|
|
6
|
+
JSONFileStorageCodec
|
|
7
|
+
} from "../chunk-ERALDEZY.js";
|
|
8
|
+
import "../chunk-4UBK6452.js";
|
|
9
|
+
import "../chunk-PZ5AY32C.js";
|
|
10
|
+
|
|
11
|
+
// src/storages/http.ts
|
|
12
|
+
var HttpStorage = class extends AbstractStorage {
|
|
13
|
+
url;
|
|
14
|
+
codec;
|
|
15
|
+
fetchFn;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
super();
|
|
18
|
+
this.url = config.url;
|
|
19
|
+
this.codec = config.codec;
|
|
20
|
+
this.fetchFn = config.fetchFn ?? fetch;
|
|
21
|
+
}
|
|
22
|
+
async init(_params) {
|
|
23
|
+
}
|
|
24
|
+
async read(_key, _params) {
|
|
25
|
+
throw new Error("Not implemented");
|
|
26
|
+
}
|
|
27
|
+
async readAll(params) {
|
|
28
|
+
const response = await this.fetchFn(this.url, {
|
|
29
|
+
method: "GET",
|
|
30
|
+
headers: {
|
|
31
|
+
Accept: "application/json, text/plain, */*"
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
throw new Error(
|
|
36
|
+
`HTTP storage request failed: ${response.status} ${response.statusText}`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
return await this.codec.readAll({ url: this.url, response, params });
|
|
40
|
+
}
|
|
41
|
+
async write(_key, _value, _params) {
|
|
42
|
+
throw new Error("Not implemented");
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
var AbstractHttpStorageCodec = class {
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// src/storages/sqlite.ts
|
|
49
|
+
import Database from "better-sqlite3";
|
|
50
|
+
var SQLiteStorage = class extends AbstractStorage {
|
|
51
|
+
path;
|
|
52
|
+
codec;
|
|
53
|
+
db;
|
|
54
|
+
constructor(config) {
|
|
55
|
+
super();
|
|
56
|
+
this.path = config.path;
|
|
57
|
+
this.codec = config.codec;
|
|
58
|
+
}
|
|
59
|
+
async init(params) {
|
|
60
|
+
this.db = new Database(this.path);
|
|
61
|
+
await this.codec.init?.({ db: this.db, params });
|
|
62
|
+
}
|
|
63
|
+
async read(key, params) {
|
|
64
|
+
this.assertInitialized();
|
|
65
|
+
return await this.codec.read({ db: this.db, key, params });
|
|
66
|
+
}
|
|
67
|
+
async readAll(params) {
|
|
68
|
+
this.assertInitialized();
|
|
69
|
+
return await this.codec.readAll({ db: this.db, params });
|
|
70
|
+
}
|
|
71
|
+
async write(key, value, params) {
|
|
72
|
+
this.assertInitialized();
|
|
73
|
+
return await this.codec.write({ db: this.db, key, value, params });
|
|
74
|
+
}
|
|
75
|
+
close() {
|
|
76
|
+
this.db?.close();
|
|
77
|
+
this.db = void 0;
|
|
78
|
+
}
|
|
79
|
+
assertInitialized() {
|
|
80
|
+
if (!this.db) {
|
|
81
|
+
throw new Error("SQLite database is not initialized");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
var AbstractSQLiteStorageCodec = class {
|
|
86
|
+
};
|
|
87
|
+
export {
|
|
88
|
+
AbstractFileStorageCodec,
|
|
89
|
+
AbstractHttpStorageCodec,
|
|
90
|
+
AbstractSQLiteStorageCodec,
|
|
91
|
+
AbstractStorage,
|
|
92
|
+
FileStorage,
|
|
93
|
+
HttpStorage,
|
|
94
|
+
JSONFileStorage,
|
|
95
|
+
JSONFileStorageCodec,
|
|
96
|
+
SQLiteStorage
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/storages/http.ts","../../src/storages/sqlite.ts"],"sourcesContent":["import { AbstractStorage } from \"@/storages/abstract\";\n\nexport class HttpStorage<TObject> extends AbstractStorage<TObject> {\n protected readonly url: string;\n protected readonly codec: AbstractHttpStorageCodec<TObject>;\n protected readonly fetchFn: typeof fetch;\n\n constructor(config: {\n url: string;\n codec: AbstractHttpStorageCodec<TObject>;\n fetchFn?: typeof fetch;\n }) {\n super();\n this.url = config.url;\n this.codec = config.codec;\n this.fetchFn = config.fetchFn ?? fetch;\n }\n\n override async init(_params?: unknown): Promise<void> {\n // Nothing to do here\n }\n\n override async read(\n _key: string,\n _params?: unknown\n ): Promise<TObject | null> {\n // TODO: Implement `read(key)` with codec support (e.g. query params / path templating).\n throw new Error(\"Not implemented\");\n }\n\n override async readAll(params?: unknown): Promise<TObject[]> {\n const response = await this.fetchFn(this.url, {\n method: \"GET\",\n headers: {\n Accept: \"application/json, text/plain, */*\",\n },\n });\n\n if (!response.ok) {\n throw new Error(\n `HTTP storage request failed: ${response.status} ${response.statusText}`\n );\n }\n\n return await this.codec.readAll({ url: this.url, response, params });\n }\n\n override async write(\n _key: string,\n _value: TObject,\n _params?: unknown\n ): Promise<unknown> {\n // TODO: Implement `write(key, value)` for HTTP storage if needed (PUT/POST/PATCH).\n throw new Error(\"Not implemented\");\n }\n}\n\nexport abstract class AbstractHttpStorageCodec<TObject> {\n abstract readAll(params: {\n url: string;\n response: Response;\n params?: unknown;\n }): Promise<TObject[]>;\n}\n","import Database from \"better-sqlite3\";\nimport { AbstractStorage } from \"@/storages/abstract\";\n\nexport class SQLiteStorage<TObject> extends AbstractStorage<TObject> {\n protected readonly path: string;\n protected readonly codec: AbstractSQLiteStorageCodec<TObject>;\n\n protected db: SQLiteDatabase | undefined;\n\n constructor(config: {\n path: string;\n codec: AbstractSQLiteStorageCodec<TObject>;\n }) {\n super();\n this.path = config.path;\n this.codec = config.codec;\n }\n\n async init(params?: unknown): Promise<void> {\n this.db = new Database(this.path);\n await this.codec.init?.({ db: this.db, params });\n }\n\n override async read(key: string, params?: unknown): Promise<TObject | null> {\n this.assertInitialized();\n return await this.codec.read({ db: this.db, key, params });\n }\n\n override async readAll(params?: unknown): Promise<TObject[]> {\n this.assertInitialized();\n return await this.codec.readAll({ db: this.db, params });\n }\n\n override async write(\n key: string,\n value: TObject,\n params?: unknown\n ): Promise<unknown> {\n this.assertInitialized();\n return await this.codec.write({ db: this.db, key, value, params });\n }\n\n close(): void {\n this.db?.close();\n this.db = undefined;\n }\n\n protected assertInitialized(): asserts this is this & { db: SQLiteDatabase } {\n if (!this.db) {\n throw new Error(\"SQLite database is not initialized\");\n }\n }\n}\n\nexport abstract class AbstractSQLiteStorageCodec<TObject> {\n init?(params: { db: SQLiteDatabase; params?: unknown }): Promise<void> | void;\n\n abstract read(params: {\n db: SQLiteDatabase;\n key: string;\n params?: unknown;\n }): Promise<TObject | null>;\n\n abstract readAll(params: {\n db: SQLiteDatabase;\n params?: unknown;\n }): Promise<TObject[]>;\n\n abstract write(params: {\n db: SQLiteDatabase;\n key: string;\n value: TObject;\n params?: unknown;\n }): Promise<unknown>;\n}\n\ntype SQLiteDatabase = import(\"better-sqlite3\").Database;\n"],"mappings":";;;;;;;;;;;AAEO,IAAM,cAAN,cAAmC,gBAAyB;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EAEnB,YAAY,QAIT;AACD,UAAM;AACN,SAAK,MAAM,OAAO;AAClB,SAAK,QAAQ,OAAO;AACpB,SAAK,UAAU,OAAO,WAAW;AAAA,EACnC;AAAA,EAEA,MAAe,KAAK,SAAkC;AAAA,EAEtD;AAAA,EAEA,MAAe,KACb,MACA,SACyB;AAEzB,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AAAA,EAEA,MAAe,QAAQ,QAAsC;AAC3D,UAAM,WAAW,MAAM,KAAK,QAAQ,KAAK,KAAK;AAAA,MAC5C,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,gCAAgC,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,MACxE;AAAA,IACF;AAEA,WAAO,MAAM,KAAK,MAAM,QAAQ,EAAE,KAAK,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,EACrE;AAAA,EAEA,MAAe,MACb,MACA,QACA,SACkB;AAElB,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;AAEO,IAAe,2BAAf,MAAiD;AAMxD;;;AC/DA,OAAO,cAAc;AAGd,IAAM,gBAAN,cAAqC,gBAAyB;AAAA,EAChD;AAAA,EACA;AAAA,EAET;AAAA,EAEV,YAAY,QAGT;AACD,UAAM;AACN,SAAK,OAAO,OAAO;AACnB,SAAK,QAAQ,OAAO;AAAA,EACtB;AAAA,EAEA,MAAM,KAAK,QAAiC;AAC1C,SAAK,KAAK,IAAI,SAAS,KAAK,IAAI;AAChC,UAAM,KAAK,MAAM,OAAO,EAAE,IAAI,KAAK,IAAI,OAAO,CAAC;AAAA,EACjD;AAAA,EAEA,MAAe,KAAK,KAAa,QAA2C;AAC1E,SAAK,kBAAkB;AACvB,WAAO,MAAM,KAAK,MAAM,KAAK,EAAE,IAAI,KAAK,IAAI,KAAK,OAAO,CAAC;AAAA,EAC3D;AAAA,EAEA,MAAe,QAAQ,QAAsC;AAC3D,SAAK,kBAAkB;AACvB,WAAO,MAAM,KAAK,MAAM,QAAQ,EAAE,IAAI,KAAK,IAAI,OAAO,CAAC;AAAA,EACzD;AAAA,EAEA,MAAe,MACb,KACA,OACA,QACkB;AAClB,SAAK,kBAAkB;AACvB,WAAO,MAAM,KAAK,MAAM,MAAM,EAAE,IAAI,KAAK,IAAI,KAAK,OAAO,OAAO,CAAC;AAAA,EACnE;AAAA,EAEA,QAAc;AACZ,SAAK,IAAI,MAAM;AACf,SAAK,KAAK;AAAA,EACZ;AAAA,EAEU,oBAAmE;AAC3E,QAAI,CAAC,KAAK,IAAI;AACZ,YAAM,IAAI,MAAM,oCAAoC;AAAA,IACtD;AAAA,EACF;AACF;AAEO,IAAe,6BAAf,MAAmD;AAoB1D;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "peerbench",
|
|
3
|
-
"version": "0.0.2-alpha.
|
|
3
|
+
"version": "0.0.2-alpha.2",
|
|
4
4
|
"description": "Tooling help work with AI benchmarking data and create trustworthy AI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"types": "./dist/schemas/llm/index.d.ts",
|
|
46
46
|
"import": "./dist/schemas/llm/index.js"
|
|
47
47
|
},
|
|
48
|
-
"./extensions": {
|
|
48
|
+
"./schemas/extensions": {
|
|
49
49
|
"types": "./dist/schemas/extensions/index.d.ts",
|
|
50
50
|
"import": "./dist/schemas/extensions/index.js"
|
|
51
51
|
},
|
|
@@ -53,9 +53,13 @@
|
|
|
53
53
|
"types": "./dist/scorers/index.d.ts",
|
|
54
54
|
"import": "./dist/scorers/index.js"
|
|
55
55
|
},
|
|
56
|
-
"./
|
|
57
|
-
"types": "./dist/
|
|
58
|
-
"import": "./dist/
|
|
56
|
+
"./storages": {
|
|
57
|
+
"types": "./dist/storages/index.d.ts",
|
|
58
|
+
"import": "./dist/storages/index.js"
|
|
59
|
+
},
|
|
60
|
+
"./aggregators": {
|
|
61
|
+
"types": "./dist/aggregators/index.d.ts",
|
|
62
|
+
"import": "./dist/aggregators/index.js"
|
|
59
63
|
}
|
|
60
64
|
},
|
|
61
65
|
"files": [
|
|
@@ -71,10 +75,11 @@
|
|
|
71
75
|
"dependencies": {
|
|
72
76
|
"@mastra/client-js": "^0.17.2",
|
|
73
77
|
"axios": "^1.11.0",
|
|
78
|
+
"better-sqlite3": "^12.6.0",
|
|
74
79
|
"cheerio": "^1.1.2",
|
|
75
80
|
"decimal.js": "^10.6.0",
|
|
81
|
+
"handlebars": "^4.7.8",
|
|
76
82
|
"hyparquet": "^1.11.0",
|
|
77
|
-
"json-stable-stringify": "^1.3.0",
|
|
78
83
|
"jsonrepair": "^3.13.0",
|
|
79
84
|
"multiformats": "^13.3.2",
|
|
80
85
|
"openai": "^6.15.0",
|
|
@@ -85,6 +90,7 @@
|
|
|
85
90
|
"devDependencies": {
|
|
86
91
|
"@dotenvx/dotenvx": "^1.49.0",
|
|
87
92
|
"@eslint/js": "^9.24.0",
|
|
93
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
88
94
|
"@types/node": "^22.14.0",
|
|
89
95
|
"eslint": "^9.24.0",
|
|
90
96
|
"prettier": "^3.7.1",
|
package/dist/catalogs/index.d.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { C as ClassConstructor, A as AbstractFileLoader, a as AbstractHttpLoader } from '../utilities-BrRH32rD.js';
|
|
2
|
-
import { A as AbstractProvider } from '../provider-BDjGp2y-.js';
|
|
3
|
-
import { A as AbstractScorer } from '../abstract-Dec9Sc5O.js';
|
|
4
|
-
import { A as AbstractDataLoader, a as AbstractLoader, L as LoaderResult, R as Runner, b as RunnerParams } from '../data-BmN5WjZ4.js';
|
|
5
|
-
import { BaseResponseV1, BaseScoreV1 } from '../schemas/index.js';
|
|
6
|
-
import '../index-WiPjF2AL.js';
|
|
7
|
-
import 'zod';
|
|
8
|
-
import 'node:fs';
|
|
9
|
-
import '../system-prompt--0FdPWqK.js';
|
|
10
|
-
|
|
11
|
-
declare class BaseCatalog<T> {
|
|
12
|
-
protected items: Record<string, T>;
|
|
13
|
-
register(kind: string, item: T): void;
|
|
14
|
-
deregister(kind: string): void;
|
|
15
|
-
get<K extends T>(kind: string, throwIfNotFound?: boolean): K;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
type ClassCatalogItem<T extends ClassConstructor<unknown>> = {
|
|
19
|
-
constructor: T;
|
|
20
|
-
instantiate: (...args: any[]) => InstanceType<T>;
|
|
21
|
-
};
|
|
22
|
-
declare class ClassCatalog<T extends ClassConstructor<unknown>> extends BaseCatalog<ClassCatalogItem<T>> {
|
|
23
|
-
register(kind: string, item: ClassCatalogItem<T>): void;
|
|
24
|
-
instantiate(kind: string, ...args: any[]): InstanceType<T>;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
declare class ProviderCatalog extends ClassCatalog<ClassConstructor<AbstractProvider>> {
|
|
28
|
-
}
|
|
29
|
-
declare class ProviderInstanceCatalog extends BaseCatalog<AbstractProvider> {
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
declare class ScorerCatalog extends ClassCatalog<ClassConstructor<AbstractScorer>> {
|
|
33
|
-
}
|
|
34
|
-
declare class ScorerInstanceCatalog extends BaseCatalog<AbstractScorer> {
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
declare class LoaderCatalog<T extends AbstractDataLoader | AbstractFileLoader | AbstractHttpLoader | AbstractLoader = AbstractLoader> extends BaseCatalog<T> {
|
|
38
|
-
register(kind: string, loader: T): void;
|
|
39
|
-
/**
|
|
40
|
-
* Executes all the registered loaders with the given params until one succeeds.
|
|
41
|
-
*/
|
|
42
|
-
tryLoad(params: Parameters<T["loadData"]>[0]): Promise<LoaderResult<{
|
|
43
|
-
id: string;
|
|
44
|
-
kind: string;
|
|
45
|
-
schemaVersion: number;
|
|
46
|
-
metadata?: Record<string, unknown> | undefined;
|
|
47
|
-
}, {
|
|
48
|
-
id: string;
|
|
49
|
-
kind: string;
|
|
50
|
-
schemaVersion: number;
|
|
51
|
-
startedAt: number;
|
|
52
|
-
completedAt: number;
|
|
53
|
-
testCaseId: string;
|
|
54
|
-
metadata?: Record<string, unknown> | undefined;
|
|
55
|
-
}, {
|
|
56
|
-
id: string;
|
|
57
|
-
kind: string;
|
|
58
|
-
schemaVersion: number;
|
|
59
|
-
value: number;
|
|
60
|
-
responseId: string;
|
|
61
|
-
scoringMethod: "ai" | "human" | "algo";
|
|
62
|
-
explanation?: string | undefined;
|
|
63
|
-
metadata?: Record<string, unknown> | undefined;
|
|
64
|
-
}, {
|
|
65
|
-
kind: string;
|
|
66
|
-
schemaVersion: number;
|
|
67
|
-
metadata?: Record<string, unknown> | undefined;
|
|
68
|
-
}>>;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
declare class RunnerCatalog<TRunner extends Runner = Runner> extends BaseCatalog<TRunner> {
|
|
72
|
-
register<TResponse extends BaseResponseV1 = BaseResponseV1, TScore extends BaseScoreV1 = BaseScoreV1, TParams extends RunnerParams = RunnerParams>(kind: string, runner: Runner<TResponse, TScore, TParams>): void;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export { BaseCatalog, ClassCatalog, type ClassCatalogItem, LoaderCatalog, ProviderCatalog, ProviderInstanceCatalog, RunnerCatalog, ScorerCatalog, ScorerInstanceCatalog };
|
package/dist/catalogs/index.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CatalogItemNotFoundError
|
|
3
|
-
} from "../chunk-VBOM2YEG.js";
|
|
4
|
-
import "../chunk-PZ5AY32C.js";
|
|
5
|
-
|
|
6
|
-
// src/catalogs/base.ts
|
|
7
|
-
var BaseCatalog = class {
|
|
8
|
-
items = {};
|
|
9
|
-
register(kind, item) {
|
|
10
|
-
this.items[kind] = item;
|
|
11
|
-
}
|
|
12
|
-
deregister(kind) {
|
|
13
|
-
delete this.items[kind];
|
|
14
|
-
}
|
|
15
|
-
get(kind, throwIfNotFound = true) {
|
|
16
|
-
const item = this.items[kind];
|
|
17
|
-
if (throwIfNotFound && !item) {
|
|
18
|
-
throw new CatalogItemNotFoundError(kind);
|
|
19
|
-
}
|
|
20
|
-
return item;
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// src/catalogs/class.ts
|
|
25
|
-
var ClassCatalog = class extends BaseCatalog {
|
|
26
|
-
register(kind, item) {
|
|
27
|
-
super.register(kind, item);
|
|
28
|
-
}
|
|
29
|
-
instantiate(kind, ...args) {
|
|
30
|
-
const item = this.get(kind);
|
|
31
|
-
if (!item) {
|
|
32
|
-
throw new CatalogItemNotFoundError(kind);
|
|
33
|
-
}
|
|
34
|
-
return item.instantiate(...args);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
// src/catalogs/provider.ts
|
|
39
|
-
var ProviderCatalog = class extends ClassCatalog {
|
|
40
|
-
};
|
|
41
|
-
var ProviderInstanceCatalog = class extends BaseCatalog {
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
// src/catalogs/scorer.ts
|
|
45
|
-
var ScorerCatalog = class extends ClassCatalog {
|
|
46
|
-
};
|
|
47
|
-
var ScorerInstanceCatalog = class extends BaseCatalog {
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
// src/catalogs/loader.ts
|
|
51
|
-
var LoaderCatalog = class extends BaseCatalog {
|
|
52
|
-
register(kind, loader) {
|
|
53
|
-
super.register(kind, loader);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Executes all the registered loaders with the given params until one succeeds.
|
|
57
|
-
*/
|
|
58
|
-
async tryLoad(params) {
|
|
59
|
-
for (const [, loader] of Object.entries(this.items)) {
|
|
60
|
-
try {
|
|
61
|
-
return await loader.loadData(params);
|
|
62
|
-
} catch {
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
throw new CatalogItemNotFoundError({
|
|
67
|
-
message: "No compatible loader found"
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
// src/catalogs/runner.ts
|
|
73
|
-
var RunnerCatalog = class extends BaseCatalog {
|
|
74
|
-
register(kind, runner) {
|
|
75
|
-
super.register(kind, runner);
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
export {
|
|
79
|
-
BaseCatalog,
|
|
80
|
-
ClassCatalog,
|
|
81
|
-
LoaderCatalog,
|
|
82
|
-
ProviderCatalog,
|
|
83
|
-
ProviderInstanceCatalog,
|
|
84
|
-
RunnerCatalog,
|
|
85
|
-
ScorerCatalog,
|
|
86
|
-
ScorerInstanceCatalog
|
|
87
|
-
};
|
|
88
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/catalogs/base.ts","../../src/catalogs/class.ts","../../src/catalogs/provider.ts","../../src/catalogs/scorer.ts","../../src/catalogs/loader.ts","../../src/catalogs/runner.ts"],"sourcesContent":["import { CatalogItemNotFoundError } from \"@/errors/catalog\";\n\nexport class BaseCatalog<T> {\n protected items: Record<string, T> = {};\n\n register(kind: string, item: T) {\n this.items[kind] = item;\n }\n\n deregister(kind: string) {\n delete this.items[kind];\n }\n\n get<K extends T>(kind: string, throwIfNotFound: boolean = true) {\n const item = this.items[kind];\n\n if (throwIfNotFound && !item) {\n throw new CatalogItemNotFoundError(kind);\n }\n\n return item as K;\n }\n}\n","import { CatalogItemNotFoundError } from \"@/errors/catalog\";\nimport { ClassConstructor } from \"@/utilities\";\nimport { BaseCatalog } from \"./base\";\n\nexport type ClassCatalogItem<T extends ClassConstructor<unknown>> = {\n constructor: T;\n instantiate: (...args: any[]) => InstanceType<T>;\n};\n\nexport class ClassCatalog<\n T extends ClassConstructor<unknown>,\n> extends BaseCatalog<ClassCatalogItem<T>> {\n override register(kind: string, item: ClassCatalogItem<T>) {\n super.register(kind, item);\n }\n\n instantiate(kind: string, ...args: any[]) {\n const item = this.get(kind);\n\n if (!item) {\n throw new CatalogItemNotFoundError(kind);\n }\n\n return item.instantiate(...args);\n }\n}\n","import { ClassCatalog } from \"./class\";\nimport { ClassConstructor } from \"@/utilities\";\nimport { AbstractProvider } from \"@/providers/abstract/provider\";\nimport { BaseCatalog } from \"./base\";\n\nexport class ProviderCatalog extends ClassCatalog<\n ClassConstructor<AbstractProvider>\n> {}\nexport class ProviderInstanceCatalog extends BaseCatalog<AbstractProvider> {}\n","import { ClassCatalog } from \"./class\";\nimport { ClassConstructor } from \"@/utilities\";\nimport { AbstractScorer } from \"@/scorers/abstract\";\nimport { BaseCatalog } from \"./base\";\n\nexport class ScorerCatalog extends ClassCatalog<\n ClassConstructor<AbstractScorer>\n> {}\nexport class ScorerInstanceCatalog extends BaseCatalog<AbstractScorer> {}\n","import { CatalogItemNotFoundError } from \"@/errors/catalog\";\nimport { BaseCatalog } from \"./base\";\nimport {\n AbstractDataLoader,\n AbstractFileLoader,\n AbstractHttpLoader,\n AbstractLoader,\n} from \"@/loaders\";\n\nexport class LoaderCatalog<\n T extends\n | AbstractDataLoader\n | AbstractFileLoader\n | AbstractHttpLoader\n | AbstractLoader = AbstractLoader,\n> extends BaseCatalog<T> {\n override register(kind: string, loader: T) {\n super.register(kind, loader);\n }\n\n /**\n * Executes all the registered loaders with the given params until one succeeds.\n */\n async tryLoad(params: Parameters<T[\"loadData\"]>[0]) {\n for (const [, loader] of Object.entries(this.items)) {\n try {\n return await loader.loadData(params as any);\n } catch {\n continue;\n }\n }\n\n throw new CatalogItemNotFoundError({\n message: \"No compatible loader found\",\n });\n }\n}\n","import { Runner, RunnerParams } from \"@/types\";\nimport { BaseCatalog } from \"./base\";\nimport { BaseResponseV1, BaseScoreV1 } from \"@/schemas\";\n\nexport class RunnerCatalog<\n TRunner extends Runner = Runner,\n> extends BaseCatalog<TRunner> {\n override register<\n TResponse extends BaseResponseV1 = BaseResponseV1,\n TScore extends BaseScoreV1 = BaseScoreV1,\n TParams extends RunnerParams = RunnerParams,\n >(kind: string, runner: Runner<TResponse, TScore, TParams>) {\n super.register(kind, runner as unknown as TRunner);\n }\n}\n"],"mappings":";;;;;;AAEO,IAAM,cAAN,MAAqB;AAAA,EAChB,QAA2B,CAAC;AAAA,EAEtC,SAAS,MAAc,MAAS;AAC9B,SAAK,MAAM,IAAI,IAAI;AAAA,EACrB;AAAA,EAEA,WAAW,MAAc;AACvB,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAAA,EAEA,IAAiB,MAAc,kBAA2B,MAAM;AAC9D,UAAM,OAAO,KAAK,MAAM,IAAI;AAE5B,QAAI,mBAAmB,CAAC,MAAM;AAC5B,YAAM,IAAI,yBAAyB,IAAI;AAAA,IACzC;AAEA,WAAO;AAAA,EACT;AACF;;;ACbO,IAAM,eAAN,cAEG,YAAiC;AAAA,EAChC,SAAS,MAAc,MAA2B;AACzD,UAAM,SAAS,MAAM,IAAI;AAAA,EAC3B;AAAA,EAEA,YAAY,SAAiB,MAAa;AACxC,UAAM,OAAO,KAAK,IAAI,IAAI;AAE1B,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,yBAAyB,IAAI;AAAA,IACzC;AAEA,WAAO,KAAK,YAAY,GAAG,IAAI;AAAA,EACjC;AACF;;;ACpBO,IAAM,kBAAN,cAA8B,aAEnC;AAAC;AACI,IAAM,0BAAN,cAAsC,YAA8B;AAAC;;;ACHrE,IAAM,gBAAN,cAA4B,aAEjC;AAAC;AACI,IAAM,wBAAN,cAAoC,YAA4B;AAAC;;;ACCjE,IAAM,gBAAN,cAMG,YAAe;AAAA,EACd,SAAS,MAAc,QAAW;AACzC,UAAM,SAAS,MAAM,MAAM;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ,QAAsC;AAClD,eAAW,CAAC,EAAE,MAAM,KAAK,OAAO,QAAQ,KAAK,KAAK,GAAG;AACnD,UAAI;AACF,eAAO,MAAM,OAAO,SAAS,MAAa;AAAA,MAC5C,QAAQ;AACN;AAAA,MACF;AAAA,IACF;AAEA,UAAM,IAAI,yBAAyB;AAAA,MACjC,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACF;;;AChCO,IAAM,gBAAN,cAEG,YAAqB;AAAA,EACpB,SAIP,MAAc,QAA4C;AAC1D,UAAM,SAAS,MAAM,MAA4B;AAAA,EACnD;AACF;","names":[]}
|
package/dist/chunk-22HU24QF.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scorers/abstract.ts"],"sourcesContent":["export abstract class AbstractScorer {\n abstract readonly kind: string;\n\n abstract score(params: any): Promise<BaseScorerResult | null>;\n}\n\nexport type BaseScorerResult = {\n value: number;\n explanation?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n};\n"],"mappings":";AAAO,IAAe,iBAAf,MAA8B;AAIrC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/benchmark-spec.ts","../src/schemas/test-case.ts","../src/schemas/score.ts"],"sourcesContent":["import z from \"zod\";\nimport { buildSchemaDefiner } from \"./schema-definer\";\n\nexport const BaseBenchmarkSpecSchemaV1 = z.object({\n kind: z.string(),\n schemaVersion: z.number(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\nexport type BaseBenchmarkSpecV1 = z.infer<typeof BaseBenchmarkSpecSchemaV1>;\n\nexport const defineBenchmarkSpecSchema =\n buildSchemaDefiner<typeof BaseBenchmarkSpecSchemaV1.shape>();\n","import { IdSchema } from \"./id\";\nimport { z } from \"zod\";\nimport { buildSchemaDefiner } from \"./schema-definer\";\n\nexport const BaseTestCaseSchemaV1 = z.object({\n id: IdSchema,\n kind: z.string(),\n schemaVersion: z.number(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\nexport type BaseTestCaseV1 = z.infer<typeof BaseTestCaseSchemaV1>;\n\nexport const defineTestCaseSchema =\n buildSchemaDefiner<typeof BaseTestCaseSchemaV1.shape>();\n","import { IdSchema } from \"./id\";\nimport { ScoringMethod } from \"@/types\";\nimport { buildSchemaDefiner } from \"./schema-definer\";\nimport z from \"zod\";\n\nexport const BaseScoreSchemaV1 = z.object({\n id: IdSchema,\n kind: z.string(),\n schemaVersion: z.number(),\n\n value: z.number(),\n responseId: IdSchema,\n explanation: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n scoringMethod: z.enum(ScoringMethod),\n});\nexport type BaseScoreV1 = z.infer<typeof BaseScoreSchemaV1>;\n\nexport const defineScoreSchema =\n buildSchemaDefiner<typeof BaseScoreSchemaV1.shape>();\n"],"mappings":";;;;;;;;;AAAA,OAAO,OAAO;AAGP,IAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,MAAM,EAAE,OAAO;AAAA,EACf,eAAe,EAAE,OAAO;AAAA,EACxB,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AACvD,CAAC;AAGM,IAAM,4BACX,mBAA2D;;;ACV7D,SAAS,KAAAA,UAAS;AAGX,IAAM,uBAAuBC,GAAE,OAAO;AAAA,EAC3C,IAAI;AAAA,EACJ,MAAMA,GAAE,OAAO;AAAA,EACf,eAAeA,GAAE,OAAO;AAAA,EACxB,UAAUA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC,EAAE,SAAS;AACvD,CAAC;AAGM,IAAM,uBACX,mBAAsD;;;ACVxD,OAAOC,QAAO;AAEP,IAAM,oBAAoBA,GAAE,OAAO;AAAA,EACxC,IAAI;AAAA,EACJ,MAAMA,GAAE,OAAO;AAAA,EACf,eAAeA,GAAE,OAAO;AAAA,EAExB,OAAOA,GAAE,OAAO;AAAA,EAChB,YAAY;AAAA,EACZ,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAUA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACrD,eAAeA,GAAE,KAAK,aAAa;AACrC,CAAC;AAGM,IAAM,oBACX,mBAAmD;","names":["z","z","z"]}
|
package/dist/chunk-7TREBPSJ.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BaseResponseSchemaV1,
|
|
3
|
-
IdSchema,
|
|
4
|
-
defineResponseSchema
|
|
5
|
-
} from "./chunk-IUN2IUCS.js";
|
|
6
|
-
|
|
7
|
-
// src/schemas/llm/response.ts
|
|
8
|
-
import z from "zod";
|
|
9
|
-
var BaseLLMChatResponseSchemaV1 = defineResponseSchema({
|
|
10
|
-
baseSchema: BaseResponseSchemaV1,
|
|
11
|
-
fields: {
|
|
12
|
-
data: z.string(),
|
|
13
|
-
modelSlug: z.string(),
|
|
14
|
-
provider: z.string(),
|
|
15
|
-
systemPromptId: IdSchema.optional(),
|
|
16
|
-
inputTokensUsed: z.number().optional(),
|
|
17
|
-
outputTokensUsed: z.number().optional(),
|
|
18
|
-
inputCost: z.string().optional(),
|
|
19
|
-
outputCost: z.string().optional()
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
export {
|
|
24
|
-
BaseLLMChatResponseSchemaV1
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=chunk-7TREBPSJ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/llm/response.ts"],"sourcesContent":["import { IdSchema } from \"../id\";\nimport { BaseResponseSchemaV1, defineResponseSchema } from \"../response\";\nimport z from \"zod\";\n\n/**\n * Base response schema specialized for LLM chat responses.\n */\nexport const BaseLLMChatResponseSchemaV1 = defineResponseSchema({\n baseSchema: BaseResponseSchemaV1,\n fields: {\n data: z.string(),\n modelSlug: z.string(),\n provider: z.string(),\n systemPromptId: IdSchema.optional(),\n\n inputTokensUsed: z.number().optional(),\n outputTokensUsed: z.number().optional(),\n inputCost: z.string().optional(),\n outputCost: z.string().optional(),\n },\n});\n"],"mappings":";;;;;;;AAEA,OAAO,OAAO;AAKP,IAAM,8BAA8B,qBAAqB;AAAA,EAC9D,YAAY;AAAA,EACZ,QAAQ;AAAA,IACN,MAAM,EAAE,OAAO;AAAA,IACf,WAAW,EAAE,OAAO;AAAA,IACpB,UAAU,EAAE,OAAO;AAAA,IACnB,gBAAgB,SAAS,SAAS;AAAA,IAElC,iBAAiB,EAAE,OAAO,EAAE,SAAS;AAAA,IACrC,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,IACtC,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC;AACF,CAAC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/string.ts","../src/utils/sleep.ts","../src/utils/llm.ts","../src/utils/rate-limiter.ts","../src/utils/id-generator.ts"],"sourcesContent":["/**\n * Converts the given byte array to a string\n */\nexport function bufferToString(buffer: Uint8Array): string {\n const decoder = new TextDecoder();\n return decoder.decode(buffer);\n}\n\n/**\n * Converts the given string to a byte array\n */\nexport function stringToBuffer(str: string): Uint8Array {\n const encoder = new TextEncoder();\n return encoder.encode(str);\n}\n","export async function sleep(ms: number, signal?: AbortSignal) {\n return new Promise<void>((resolve, reject) => {\n if (signal?.aborted) {\n return reject(new Error(\"Aborted\"));\n }\n\n const timeout = setTimeout(() => {\n cleanup();\n resolve();\n }, ms);\n\n const onAbort = () => {\n cleanup();\n reject(new Error(\"Aborted\"));\n };\n\n const cleanup = () => {\n clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", onAbort);\n };\n\n signal?.addEventListener(\"abort\", onAbort);\n });\n}\n","import { jsonrepair } from \"jsonrepair\";\n\n/**\n * Tries to repair and parse LLM response as a JSON object. LLM must\n * be configured to return a JSON object. This function only helps to\n * get rid out of some additional formatting (e.g. ```json) and repair\n * the JSON syntax (e.g missing comma, single quotes instead double).\n */\nexport function parseResponseAsJSON<T>(response: string) {\n try {\n return JSON.parse(jsonrepair(response)) as T;\n } catch (e) {\n if (process?.env?.PB_SDK_DEBUG) {\n console.log(\"Original response\", JSON.stringify(response));\n console.error(\"Error parsing response as JSON\", e);\n }\n }\n}\n","import { sleep } from \"./sleep\";\n\nexport interface RateLimiterOptions {\n /**\n * Maximum weight of calls allowed within a time window. Each call has a weight of 1 by default.\n * Rate limiting is disabled when this is 0 or negative.\n * @default 25\n */\n maxWeight?: number;\n\n /**\n * Time window in milliseconds for rate limiting\n * @default 1000\n */\n timeWindow?: number;\n}\n\nexport interface RateLimiterCallOptions {\n /**\n * Weight of the call. Rate limiting is applied based on the total weight of the calls.\n * @default 1\n */\n weight?: number;\n\n /**\n * Abort signal for cancellation\n */\n signal?: AbortSignal;\n}\n\n/**\n * Generic rate limiter. It can be used to limit async function calls\n * by a given number of calls within a time window.\n */\nexport class RateLimiter {\n maxWeight: number;\n timeWindow: number;\n\n private timestamps: number[] = [];\n\n constructor(options: RateLimiterOptions = {}) {\n this.maxWeight = options.maxWeight ?? 25;\n this.timeWindow = options.timeWindow ?? 1000;\n }\n\n /**\n * Checks if rate limiting is disabled\n */\n isDisabled(): boolean {\n return this.maxWeight <= 0;\n }\n\n /**\n * Disables rate limiting. Set `maxWeight` to re-enable it.\n */\n disable() {\n this.maxWeight = 0;\n }\n\n /**\n * Returns how many weight of calls are there in the current time window\n */\n getCurrentCalls(): number {\n const now = Date.now();\n this.timestamps = this.timestamps.filter(\n (ts) => now - ts < this.timeWindow\n );\n return this.timestamps.length;\n }\n\n /**\n * Executes the given function with rate limiting applied\n */\n async execute<T = unknown>(\n func: () => Promise<T>,\n { weight = 1, signal }: RateLimiterCallOptions = {}\n ): Promise<T> {\n // If maxWeight is zero/negative, execute immediately (no rate limiting)\n if (this.maxWeight <= 0) {\n return await func();\n }\n\n await this.waitForRateLimit(weight, signal);\n return await func();\n }\n\n /**\n * Waits until rate limit allows the specified weight of calls\n */\n private async waitForRateLimit(\n weight: number,\n signal?: AbortSignal\n ): Promise<void> {\n const now = Date.now();\n\n // Clear timestamps from the old time period\n this.timestamps = this.timestamps.filter(\n (ts) => now - ts < this.timeWindow\n );\n\n // Check if there are empty slots for the requests\n if (this.timestamps.length + weight <= this.maxWeight) {\n for (let i = 0; i < weight; i++) {\n this.timestamps.push(now);\n }\n return;\n }\n\n // Calculate how much time to wait for the next time window\n const earliest = this.timestamps[0];\n const waitTime = this.timeWindow - (now - (earliest ?? 0));\n\n await sleep(waitTime, signal);\n\n // Retry after waiting\n return this.waitForRateLimit(weight, signal);\n }\n\n /**\n * Resets the rate limited weight of calls\n */\n reset(): void {\n this.timestamps = [];\n }\n}\n","import { IdGenerator } from \"@/types\";\nimport { v7 as uuidv7 } from \"uuid\";\n\nexport const idGeneratorUUIDv7: IdGenerator = () => {\n return uuidv7();\n};\n"],"mappings":";AAGO,SAAS,eAAe,QAA4B;AACzD,QAAM,UAAU,IAAI,YAAY;AAChC,SAAO,QAAQ,OAAO,MAAM;AAC9B;AAKO,SAAS,eAAe,KAAyB;AACtD,QAAM,UAAU,IAAI,YAAY;AAChC,SAAO,QAAQ,OAAO,GAAG;AAC3B;;;ACdA,eAAsB,MAAM,IAAY,QAAsB;AAC5D,SAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,QAAI,QAAQ,SAAS;AACnB,aAAO,OAAO,IAAI,MAAM,SAAS,CAAC;AAAA,IACpC;AAEA,UAAM,UAAU,WAAW,MAAM;AAC/B,cAAQ;AACR,cAAQ;AAAA,IACV,GAAG,EAAE;AAEL,UAAM,UAAU,MAAM;AACpB,cAAQ;AACR,aAAO,IAAI,MAAM,SAAS,CAAC;AAAA,IAC7B;AAEA,UAAM,UAAU,MAAM;AACpB,mBAAa,OAAO;AACpB,cAAQ,oBAAoB,SAAS,OAAO;AAAA,IAC9C;AAEA,YAAQ,iBAAiB,SAAS,OAAO;AAAA,EAC3C,CAAC;AACH;;;ACvBA,SAAS,kBAAkB;AAQpB,SAAS,oBAAuB,UAAkB;AACvD,MAAI;AACF,WAAO,KAAK,MAAM,WAAW,QAAQ,CAAC;AAAA,EACxC,SAAS,GAAG;AACV,QAAI,SAAS,KAAK,cAAc;AAC9B,cAAQ,IAAI,qBAAqB,KAAK,UAAU,QAAQ,CAAC;AACzD,cAAQ,MAAM,kCAAkC,CAAC;AAAA,IACnD;AAAA,EACF;AACF;;;ACiBO,IAAM,cAAN,MAAkB;AAAA,EACvB;AAAA,EACA;AAAA,EAEQ,aAAuB,CAAC;AAAA,EAEhC,YAAY,UAA8B,CAAC,GAAG;AAC5C,SAAK,YAAY,QAAQ,aAAa;AACtC,SAAK,aAAa,QAAQ,cAAc;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,aAAsB;AACpB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,kBAA0B;AACxB,UAAM,MAAM,KAAK,IAAI;AACrB,SAAK,aAAa,KAAK,WAAW;AAAA,MAChC,CAAC,OAAO,MAAM,KAAK,KAAK;AAAA,IAC1B;AACA,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QACJ,MACA,EAAE,SAAS,GAAG,OAAO,IAA4B,CAAC,GACtC;AAEZ,QAAI,KAAK,aAAa,GAAG;AACvB,aAAO,MAAM,KAAK;AAAA,IACpB;AAEA,UAAM,KAAK,iBAAiB,QAAQ,MAAM;AAC1C,WAAO,MAAM,KAAK;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,iBACZ,QACA,QACe;AACf,UAAM,MAAM,KAAK,IAAI;AAGrB,SAAK,aAAa,KAAK,WAAW;AAAA,MAChC,CAAC,OAAO,MAAM,KAAK,KAAK;AAAA,IAC1B;AAGA,QAAI,KAAK,WAAW,SAAS,UAAU,KAAK,WAAW;AACrD,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,aAAK,WAAW,KAAK,GAAG;AAAA,MAC1B;AACA;AAAA,IACF;AAGA,UAAM,WAAW,KAAK,WAAW,CAAC;AAClC,UAAM,WAAW,KAAK,cAAc,OAAO,YAAY;AAEvD,UAAM,MAAM,UAAU,MAAM;AAG5B,WAAO,KAAK,iBAAiB,QAAQ,MAAM;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACZ,SAAK,aAAa,CAAC;AAAA,EACrB;AACF;;;AC3HA,SAAS,MAAM,cAAc;AAEtB,IAAM,oBAAiC,MAAM;AAClD,SAAO,OAAO;AAChB;","names":[]}
|
package/dist/chunk-GVF4YZF3.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// src/schemas/extensions/score/llm-as-a-judge-scorer.ts
|
|
2
|
-
import z from "zod";
|
|
3
|
-
var ExtensionLLMAsAJudgeScorerFieldsV1 = {
|
|
4
|
-
scorerAIProvider: z.string().optional(),
|
|
5
|
-
scorerAIModelSlug: z.string().optional(),
|
|
6
|
-
scorerAIInputTokensUsed: z.number().optional(),
|
|
7
|
-
scorerAIOutputTokensUsed: z.number().optional(),
|
|
8
|
-
scorerAIInputCost: z.string().optional(),
|
|
9
|
-
scorerAIOutputCost: z.string().optional()
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
ExtensionLLMAsAJudgeScorerFieldsV1
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=chunk-GVF4YZF3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/extensions/score/llm-as-a-judge-scorer.ts"],"sourcesContent":["import z from \"zod\";\n\n/**\n * Provides a set of fields that holds information about the LLM model\n * that was used to judge the response.\n */\nexport const ExtensionLLMAsAJudgeScorerFieldsV1 = {\n scorerAIProvider: z.string().optional(),\n scorerAIModelSlug: z.string().optional(),\n scorerAIInputTokensUsed: z.number().optional(),\n scorerAIOutputTokensUsed: z.number().optional(),\n scorerAIInputCost: z.string().optional(),\n scorerAIOutputCost: z.string().optional(),\n};\n"],"mappings":";AAAA,OAAO,OAAO;AAMP,IAAM,qCAAqC;AAAA,EAChD,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,EACtC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACvC,yBAAyB,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7C,0BAA0B,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACvC,oBAAoB,EAAE,OAAO,EAAE,SAAS;AAC1C;","names":[]}
|
package/dist/chunk-HJH3SW3L.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
bufferToString
|
|
3
|
-
} from "./chunk-DUBKY73H.js";
|
|
4
|
-
|
|
5
|
-
// src/loaders/abstract/loader.ts
|
|
6
|
-
var AbstractLoader = class {
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
// src/loaders/abstract/data.ts
|
|
10
|
-
var AbstractDataLoader = class extends AbstractLoader {
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
// src/utils/json.ts
|
|
14
|
-
import { stringify } from "safe-stable-stringify";
|
|
15
|
-
function parseJSONL(str, options) {
|
|
16
|
-
return str.split("\n").filter((line) => line.trim() !== "").map((line) => {
|
|
17
|
-
const obj = tryParseJson(line);
|
|
18
|
-
if (options?.errorOnInvalid && !obj) {
|
|
19
|
-
throw new Error(`Invalid JSON line: ${line}`);
|
|
20
|
-
}
|
|
21
|
-
return obj;
|
|
22
|
-
}).filter((obj) => obj !== void 0);
|
|
23
|
-
}
|
|
24
|
-
function tryParseJson(content) {
|
|
25
|
-
try {
|
|
26
|
-
return JSON.parse(content);
|
|
27
|
-
} catch {
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function stableStringify(value) {
|
|
31
|
-
return stringify(value);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// src/loaders/generic-array.ts
|
|
35
|
-
var GenericJSONArrayDataLoader = class extends AbstractDataLoader {
|
|
36
|
-
async responseBuilder(data, context) {
|
|
37
|
-
return void 0;
|
|
38
|
-
}
|
|
39
|
-
async scoreBuilder(data, context) {
|
|
40
|
-
return void 0;
|
|
41
|
-
}
|
|
42
|
-
async loadData(params) {
|
|
43
|
-
const contentStr = bufferToString(params.content);
|
|
44
|
-
let data = tryParseJson(contentStr);
|
|
45
|
-
if (!data) {
|
|
46
|
-
data = parseJSONL(contentStr);
|
|
47
|
-
}
|
|
48
|
-
if (!data || !Array.isArray(data) || data.length === 0) {
|
|
49
|
-
throw new Error(
|
|
50
|
-
"Invalid data: content must be a non-empty JSON or JSONL array"
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
return this.transformArrayToResult(data);
|
|
54
|
-
}
|
|
55
|
-
async transformArrayToResult(data) {
|
|
56
|
-
const includedTestCaseIds = /* @__PURE__ */ new Set();
|
|
57
|
-
const includedResponseIds = /* @__PURE__ */ new Set();
|
|
58
|
-
const includedScoreIds = /* @__PURE__ */ new Set();
|
|
59
|
-
const result = {
|
|
60
|
-
testCases: [],
|
|
61
|
-
responses: [],
|
|
62
|
-
scores: []
|
|
63
|
-
};
|
|
64
|
-
for (const item of data) {
|
|
65
|
-
const testCase = await this.testCaseBuilder(item, { result });
|
|
66
|
-
const response = await this.responseBuilder(item, { result });
|
|
67
|
-
const score = await this.scoreBuilder(item, { result });
|
|
68
|
-
if (testCase) {
|
|
69
|
-
const testCaseIdStr = String(testCase.id);
|
|
70
|
-
if (!includedTestCaseIds.has(testCaseIdStr)) {
|
|
71
|
-
includedTestCaseIds.add(testCaseIdStr);
|
|
72
|
-
result.testCases.push(testCase);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (response) {
|
|
76
|
-
const responseIdStr = String(response.id);
|
|
77
|
-
if (!includedResponseIds.has(responseIdStr)) {
|
|
78
|
-
includedResponseIds.add(responseIdStr);
|
|
79
|
-
result.responses.push(response);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
if (score) {
|
|
83
|
-
const scoreIdStr = String(score.id);
|
|
84
|
-
if (!includedScoreIds.has(scoreIdStr)) {
|
|
85
|
-
includedScoreIds.add(scoreIdStr);
|
|
86
|
-
result.scores.push(score);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (!testCase && !response && !score) {
|
|
90
|
-
throw new Error("Incompatible object format");
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return result;
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
export {
|
|
98
|
-
AbstractLoader,
|
|
99
|
-
AbstractDataLoader,
|
|
100
|
-
stableStringify,
|
|
101
|
-
GenericJSONArrayDataLoader
|
|
102
|
-
};
|
|
103
|
-
//# sourceMappingURL=chunk-HJH3SW3L.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/loaders/abstract/loader.ts","../src/loaders/abstract/data.ts","../src/utils/json.ts","../src/loaders/generic-array.ts"],"sourcesContent":["import { BaseResponseV1, BaseScoreV1, BaseTestCaseV1 } from \"@/schemas\";\nimport { BaseBenchmarkSpecV1 } from \"@/schemas/benchmark-spec\";\nimport { MaybePromise } from \"@/types\";\n\nexport type LoaderResult<\n TTestCase extends BaseTestCaseV1 = BaseTestCaseV1,\n TResponse extends BaseResponseV1 = BaseResponseV1,\n TScore extends BaseScoreV1 = BaseScoreV1,\n TBenchmarkSpec extends BaseBenchmarkSpecV1 = BaseBenchmarkSpecV1,\n> = {\n testCases: TTestCase[];\n responses: TResponse[];\n scores: TScore[];\n\n benchmarkSpec?: TBenchmarkSpec;\n};\n\nexport abstract class AbstractLoader {\n abstract readonly kind: string;\n\n abstract loadData(params: unknown): MaybePromise<LoaderResult>;\n abstract loadBenchmarkSpec(\n params: unknown\n ): MaybePromise<BaseBenchmarkSpecV1>;\n}\n","import { MaybePromise } from \"@/types\";\nimport { AbstractLoader, LoaderResult } from \"./loader\";\nimport { BaseBenchmarkSpecV1 } from \"@/schemas/benchmark-spec\";\n\nexport abstract class AbstractDataLoader extends AbstractLoader {\n abstract loadData(params: {\n content: Uint8Array;\n }): MaybePromise<LoaderResult>;\n\n abstract loadBenchmarkSpec(params: {\n content: Uint8Array;\n }): MaybePromise<BaseBenchmarkSpecV1>;\n}\n","import { stringify } from \"safe-stable-stringify\";\n\n/**\n * Parses JSONL formatted string into an array\n * @returns An array of parsed JSON lines\n */\nexport function parseJSONL<T>(\n str: string,\n options?: { errorOnInvalid?: boolean }\n): T[] {\n return str\n .split(\"\\n\") // Split per line\n .filter((line) => line.trim() !== \"\") // Filter empty lines\n .map((line) => {\n const obj = tryParseJson(line);\n if (options?.errorOnInvalid && !obj) {\n throw new Error(`Invalid JSON line: ${line}`);\n }\n return obj;\n }) // Parse line (parse as undefined if it is invalid)\n .filter((obj) => obj !== undefined); // Filter invalid lines\n}\n\n/**\n * Tries to parse the given string as JSON.\n * Returns `undefined` if it is not a valid JSON entity.\n */\nexport function tryParseJson<T = any>(content: string): T | undefined {\n try {\n return JSON.parse(content);\n } catch {\n // Invalid JSON\n }\n}\n\n/**\n * Stringifies the given JSON value using `safe-stable-stringify` in a stable manner.\n * This stable method generates the same string output for the same input value (including objects).\n */\nexport function stableStringify(value: any) {\n return stringify(value);\n}\n","import { BaseTestCaseV1 } from \"@/schemas/test-case\";\nimport { BaseResponseV1 } from \"@/schemas/response\";\nimport { BaseScoreV1 } from \"@/schemas/score\";\nimport { MaybePromise } from \"@/types\";\nimport { AbstractDataLoader } from \"@/loaders/abstract/data\";\nimport { LoaderResult } from \"@/loaders/abstract/loader\";\nimport { tryParseJson, parseJSONL } from \"@/utils/json\";\nimport { bufferToString } from \"@/utils/string\";\n\nexport type GenericJSONArrayLoaderResult<\n TTestCase extends BaseTestCaseV1 = BaseTestCaseV1,\n TResponse extends BaseResponseV1 = BaseResponseV1,\n TScore extends BaseScoreV1 = BaseScoreV1,\n> = LoaderResult<TTestCase, TResponse, TScore>;\n\nexport abstract class GenericJSONArrayDataLoader<\n TTestCase extends BaseTestCaseV1 = BaseTestCaseV1,\n TResponse extends BaseResponseV1 = BaseResponseV1,\n TScore extends BaseScoreV1 = BaseScoreV1,\n> extends AbstractDataLoader {\n protected abstract testCaseBuilder(\n data: any,\n context: {\n result: GenericJSONArrayLoaderResult<TTestCase, TResponse, TScore>;\n }\n ): MaybePromise<TTestCase | undefined>;\n\n protected async responseBuilder(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n data: any,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n context: {\n result: GenericJSONArrayLoaderResult<TTestCase, TResponse, TScore>;\n }\n ): Promise<TResponse | undefined> {\n return undefined;\n }\n\n protected async scoreBuilder(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n data: any,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n context: {\n result: GenericJSONArrayLoaderResult<TTestCase, TResponse, TScore>;\n }\n ): Promise<TScore | undefined> {\n return undefined;\n }\n\n async loadData(params: {\n content: Uint8Array;\n }): Promise<GenericJSONArrayLoaderResult<TTestCase, TResponse, TScore>> {\n const contentStr = bufferToString(params.content);\n let data: unknown[] | undefined = tryParseJson<unknown[]>(contentStr);\n\n if (!data) {\n data = parseJSONL<unknown>(contentStr);\n }\n\n if (!data || !Array.isArray(data) || data.length === 0) {\n throw new Error(\n \"Invalid data: content must be a non-empty JSON or JSONL array\"\n );\n }\n\n return this.transformArrayToResult(data);\n }\n\n private async transformArrayToResult(\n data: unknown[]\n ): Promise<GenericJSONArrayLoaderResult<TTestCase, TResponse, TScore>> {\n const includedTestCaseIds: Set<string> = new Set();\n const includedResponseIds: Set<string> = new Set();\n const includedScoreIds: Set<string> = new Set();\n const result: GenericJSONArrayLoaderResult<TTestCase, TResponse, TScore> = {\n testCases: [],\n responses: [],\n scores: [],\n };\n\n for (const item of data) {\n const testCase = await this.testCaseBuilder(item, { result });\n const response = await this.responseBuilder(item, { result });\n const score = await this.scoreBuilder(item, { result });\n\n if (testCase) {\n const testCaseIdStr = String(testCase.id);\n if (!includedTestCaseIds.has(testCaseIdStr)) {\n includedTestCaseIds.add(testCaseIdStr);\n result.testCases.push(testCase);\n }\n }\n\n if (response) {\n const responseIdStr = String(response.id);\n if (!includedResponseIds.has(responseIdStr)) {\n includedResponseIds.add(responseIdStr);\n result.responses.push(response);\n }\n }\n\n if (score) {\n const scoreIdStr = String(score.id);\n if (!includedScoreIds.has(scoreIdStr)) {\n includedScoreIds.add(scoreIdStr);\n result.scores.push(score);\n }\n }\n\n if (!testCase && !response && !score) {\n throw new Error(\"Incompatible object format\");\n }\n }\n\n return result;\n }\n}\n"],"mappings":";;;;;AAiBO,IAAe,iBAAf,MAA8B;AAOrC;;;ACpBO,IAAe,qBAAf,cAA0C,eAAe;AAQhE;;;ACZA,SAAS,iBAAiB;AAMnB,SAAS,WACd,KACA,SACK;AACL,SAAO,IACJ,MAAM,IAAI,EACV,OAAO,CAAC,SAAS,KAAK,KAAK,MAAM,EAAE,EACnC,IAAI,CAAC,SAAS;AACb,UAAM,MAAM,aAAa,IAAI;AAC7B,QAAI,SAAS,kBAAkB,CAAC,KAAK;AACnC,YAAM,IAAI,MAAM,sBAAsB,IAAI,EAAE;AAAA,IAC9C;AACA,WAAO;AAAA,EACT,CAAC,EACA,OAAO,CAAC,QAAQ,QAAQ,MAAS;AACtC;AAMO,SAAS,aAAsB,SAAgC;AACpE,MAAI;AACF,WAAO,KAAK,MAAM,OAAO;AAAA,EAC3B,QAAQ;AAAA,EAER;AACF;AAMO,SAAS,gBAAgB,OAAY;AAC1C,SAAO,UAAU,KAAK;AACxB;;;AC1BO,IAAe,6BAAf,cAIG,mBAAmB;AAAA,EAQ3B,MAAgB,gBAEd,MAEA,SAGgC;AAChC,WAAO;AAAA,EACT;AAAA,EAEA,MAAgB,aAEd,MAEA,SAG6B;AAC7B,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAS,QAEyD;AACtE,UAAM,aAAa,eAAe,OAAO,OAAO;AAChD,QAAI,OAA8B,aAAwB,UAAU;AAEpE,QAAI,CAAC,MAAM;AACT,aAAO,WAAoB,UAAU;AAAA,IACvC;AAEA,QAAI,CAAC,QAAQ,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AACtD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,uBAAuB,IAAI;AAAA,EACzC;AAAA,EAEA,MAAc,uBACZ,MACqE;AACrE,UAAM,sBAAmC,oBAAI,IAAI;AACjD,UAAM,sBAAmC,oBAAI,IAAI;AACjD,UAAM,mBAAgC,oBAAI,IAAI;AAC9C,UAAM,SAAqE;AAAA,MACzE,WAAW,CAAC;AAAA,MACZ,WAAW,CAAC;AAAA,MACZ,QAAQ,CAAC;AAAA,IACX;AAEA,eAAW,QAAQ,MAAM;AACvB,YAAM,WAAW,MAAM,KAAK,gBAAgB,MAAM,EAAE,OAAO,CAAC;AAC5D,YAAM,WAAW,MAAM,KAAK,gBAAgB,MAAM,EAAE,OAAO,CAAC;AAC5D,YAAM,QAAQ,MAAM,KAAK,aAAa,MAAM,EAAE,OAAO,CAAC;AAEtD,UAAI,UAAU;AACZ,cAAM,gBAAgB,OAAO,SAAS,EAAE;AACxC,YAAI,CAAC,oBAAoB,IAAI,aAAa,GAAG;AAC3C,8BAAoB,IAAI,aAAa;AACrC,iBAAO,UAAU,KAAK,QAAQ;AAAA,QAChC;AAAA,MACF;AAEA,UAAI,UAAU;AACZ,cAAM,gBAAgB,OAAO,SAAS,EAAE;AACxC,YAAI,CAAC,oBAAoB,IAAI,aAAa,GAAG;AAC3C,8BAAoB,IAAI,aAAa;AACrC,iBAAO,UAAU,KAAK,QAAQ;AAAA,QAChC;AAAA,MACF;AAEA,UAAI,OAAO;AACT,cAAM,aAAa,OAAO,MAAM,EAAE;AAClC,YAAI,CAAC,iBAAiB,IAAI,UAAU,GAAG;AACrC,2BAAiB,IAAI,UAAU;AAC/B,iBAAO,OAAO,KAAK,KAAK;AAAA,QAC1B;AAAA,MACF;AAEA,UAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO;AACpC,cAAM,IAAI,MAAM,4BAA4B;AAAA,MAC9C;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
|
package/dist/chunk-IUN2IUCS.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
// src/schemas/id.ts
|
|
2
|
-
import z from "zod";
|
|
3
|
-
var IdSchema = z.string();
|
|
4
|
-
|
|
5
|
-
// src/schemas/schema-definer.ts
|
|
6
|
-
import z2 from "zod";
|
|
7
|
-
function buildSchemaDefiner() {
|
|
8
|
-
return function(config) {
|
|
9
|
-
const schema = config.baseSchema.omit({ kind: true, schemaVersion: true }).extend({
|
|
10
|
-
...config.fields ?? {},
|
|
11
|
-
kind: config.kind !== void 0 ? z2.literal(config.kind) : config.baseSchema.shape.kind,
|
|
12
|
-
schemaVersion: config.schemaVersion !== void 0 ? z2.literal(config.schemaVersion) : config.baseSchema.shape.schemaVersion
|
|
13
|
-
});
|
|
14
|
-
return Object.assign(schema, {
|
|
15
|
-
new(input) {
|
|
16
|
-
return schema.parse({
|
|
17
|
-
...input,
|
|
18
|
-
kind: config.kind,
|
|
19
|
-
schemaVersion: config.schemaVersion
|
|
20
|
-
});
|
|
21
|
-
},
|
|
22
|
-
async newWithId(input, generator) {
|
|
23
|
-
const obj = schema.parse({
|
|
24
|
-
...input,
|
|
25
|
-
id: "",
|
|
26
|
-
kind: config.kind,
|
|
27
|
-
schemaVersion: config.schemaVersion
|
|
28
|
-
});
|
|
29
|
-
const id = await generator(obj);
|
|
30
|
-
return {
|
|
31
|
-
...obj,
|
|
32
|
-
id
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// src/schemas/response.ts
|
|
40
|
-
import z3 from "zod";
|
|
41
|
-
var BaseResponseSchemaV1 = z3.object({
|
|
42
|
-
id: IdSchema,
|
|
43
|
-
kind: z3.string(),
|
|
44
|
-
schemaVersion: z3.number(),
|
|
45
|
-
startedAt: z3.number(),
|
|
46
|
-
completedAt: z3.number(),
|
|
47
|
-
testCaseId: IdSchema,
|
|
48
|
-
metadata: z3.record(z3.string(), z3.unknown()).optional()
|
|
49
|
-
});
|
|
50
|
-
var defineResponseSchema = buildSchemaDefiner();
|
|
51
|
-
|
|
52
|
-
export {
|
|
53
|
-
buildSchemaDefiner,
|
|
54
|
-
IdSchema,
|
|
55
|
-
BaseResponseSchemaV1,
|
|
56
|
-
defineResponseSchema
|
|
57
|
-
};
|
|
58
|
-
//# sourceMappingURL=chunk-IUN2IUCS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/id.ts","../src/schemas/schema-definer.ts","../src/schemas/response.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const IdSchema = z.string();\n","import { IdGenerator } from \"@/types\";\nimport z from \"zod\";\n\nexport function buildSchemaDefiner<\n TBaseShape extends {\n kind: z.ZodType;\n schemaVersion: z.ZodType;\n [key: string]: z.ZodType;\n },\n>() {\n return function <\n TBaseSchema extends z.ZodObject<\n Omit<TBaseShape, \"kind\" | \"schemaVersion\"> & {\n kind: z.ZodString | z.ZodLiteral<string>;\n schemaVersion: z.ZodNumber | z.ZodLiteral<number>;\n }\n >,\n TKind extends string | undefined = undefined,\n TSchemaVersion extends number | undefined = undefined,\n TFields extends z.ZodRawShape = {},\n >(config: {\n baseSchema: TBaseSchema;\n kind?: TKind;\n schemaVersion?: TSchemaVersion;\n fields?: TFields;\n }) {\n const schema = config.baseSchema\n .omit({ kind: true, schemaVersion: true })\n .extend({\n ...((config.fields ?? {}) as TFields),\n kind: (config.kind !== undefined\n ? z.literal(config.kind)\n : config.baseSchema.shape.kind) as TKind extends undefined\n ? TBaseSchema[\"shape\"][\"kind\"]\n : z.ZodLiteral<TKind>,\n schemaVersion: (config.schemaVersion !== undefined\n ? z.literal(config.schemaVersion)\n : config.baseSchema.shape\n .schemaVersion) as TSchemaVersion extends undefined\n ? TBaseSchema[\"shape\"][\"schemaVersion\"]\n : z.ZodLiteral<TSchemaVersion>,\n });\n\n type SchemaType =\n TBaseSchema extends z.ZodObject<infer U>\n ? z.ZodObject<\n Omit<U, \"kind\" | \"schemaVersion\"> &\n TFields & {\n kind: TKind extends undefined ? U[\"kind\"] : z.ZodLiteral<TKind>;\n schemaVersion: TSchemaVersion extends undefined\n ? U[\"schemaVersion\"]\n : z.ZodLiteral<TSchemaVersion>;\n }\n >\n : never;\n\n return Object.assign(schema, {\n new(input: Omit<z.infer<typeof schema>, \"kind\" | \"schemaVersion\">) {\n return schema.parse({\n ...input,\n kind: config.kind,\n schemaVersion: config.schemaVersion,\n });\n },\n async newWithId(\n input: Omit<z.infer<typeof schema>, \"kind\" | \"schemaVersion\" | \"id\">,\n generator: IdGenerator\n ) {\n const obj = schema.parse({\n ...input,\n id: \"\",\n kind: config.kind,\n schemaVersion: config.schemaVersion,\n });\n const id = await generator(obj);\n\n return {\n ...obj,\n id,\n };\n },\n }) as unknown as SchemaType & {\n /**\n * Creates a new object with the given input. Uses the `kind` and\n * `schemaVersion` from the schema config. Although the `input` is already typed,\n * it still uses `.parse()` to validate it.\n * @param input\n * @returns The object that follows the schema\n */\n new: (\n input: Omit<z.infer<SchemaType>, \"kind\" | \"schemaVersion\">\n ) => z.infer<SchemaType>;\n\n newWithId(\n input: Omit<z.infer<SchemaType>, \"id\" | \"kind\" | \"schemaVersion\">,\n generator: IdGenerator\n ): Promise<z.infer<SchemaType>>;\n };\n };\n}\n","import { IdSchema } from \"./id\";\nimport { buildSchemaDefiner } from \"./schema-definer\";\nimport z from \"zod\";\n\nexport const BaseResponseSchemaV1 = z.object({\n id: IdSchema,\n kind: z.string(),\n schemaVersion: z.number(),\n\n startedAt: z.number(),\n completedAt: z.number(),\n testCaseId: IdSchema,\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\nexport type BaseResponseV1 = z.infer<typeof BaseResponseSchemaV1>;\n\nexport const defineResponseSchema =\n buildSchemaDefiner<typeof BaseResponseSchemaV1.shape>();\n"],"mappings":";AAAA,OAAO,OAAO;AAEP,IAAM,WAAW,EAAE,OAAO;;;ACDjC,OAAOA,QAAO;AAEP,SAAS,qBAMZ;AACF,SAAO,SAUL,QAKC;AACD,UAAM,SAAS,OAAO,WACnB,KAAK,EAAE,MAAM,MAAM,eAAe,KAAK,CAAC,EACxC,OAAO;AAAA,MACN,GAAK,OAAO,UAAU,CAAC;AAAA,MACvB,MAAO,OAAO,SAAS,SACnBA,GAAE,QAAQ,OAAO,IAAI,IACrB,OAAO,WAAW,MAAM;AAAA,MAG5B,eAAgB,OAAO,kBAAkB,SACrCA,GAAE,QAAQ,OAAO,aAAa,IAC9B,OAAO,WAAW,MACf;AAAA,IAGT,CAAC;AAeH,WAAO,OAAO,OAAO,QAAQ;AAAA,MAC3B,IAAI,OAA+D;AACjE,eAAO,OAAO,MAAM;AAAA,UAClB,GAAG;AAAA,UACH,MAAM,OAAO;AAAA,UACb,eAAe,OAAO;AAAA,QACxB,CAAC;AAAA,MACH;AAAA,MACA,MAAM,UACJ,OACA,WACA;AACA,cAAM,MAAM,OAAO,MAAM;AAAA,UACvB,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,MAAM,OAAO;AAAA,UACb,eAAe,OAAO;AAAA,QACxB,CAAC;AACD,cAAM,KAAK,MAAM,UAAU,GAAG;AAE9B,eAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EAiBH;AACF;;;ACjGA,OAAOC,QAAO;AAEP,IAAM,uBAAuBA,GAAE,OAAO;AAAA,EAC3C,IAAI;AAAA,EACJ,MAAMA,GAAE,OAAO;AAAA,EACf,eAAeA,GAAE,OAAO;AAAA,EAExB,WAAWA,GAAE,OAAO;AAAA,EACpB,aAAaA,GAAE,OAAO;AAAA,EACtB,YAAY;AAAA,EACZ,UAAUA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC,EAAE,SAAS;AACvD,CAAC;AAGM,IAAM,uBACX,mBAAsD;","names":["z","z"]}
|