ppef 1.0.0 → 1.0.1
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 +172 -0
- package/dist/__tests__/framework-pipeline.integration.test.d.ts +7 -0
- package/dist/__tests__/framework-pipeline.integration.test.d.ts.map +1 -0
- package/dist/__tests__/framework-pipeline.integration.test.js +413 -0
- package/dist/__tests__/framework-pipeline.integration.test.js.map +1 -0
- package/dist/__tests__/registry-executor.integration.test.d.ts +5 -0
- package/dist/__tests__/registry-executor.integration.test.d.ts.map +1 -0
- package/dist/__tests__/registry-executor.integration.test.js +349 -0
- package/dist/__tests__/registry-executor.integration.test.js.map +1 -0
- package/dist/__tests__/test-helpers.d.ts +94 -0
- package/dist/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/__tests__/test-helpers.js +271 -0
- package/dist/__tests__/test-helpers.js.map +1 -0
- package/dist/aggregation/aggregators.d.ts +54 -0
- package/dist/aggregation/aggregators.d.ts.map +1 -0
- package/dist/aggregation/aggregators.js +228 -0
- package/dist/aggregation/aggregators.js.map +1 -0
- package/dist/aggregation/index.d.ts +8 -0
- package/dist/aggregation/index.d.ts.map +1 -0
- package/dist/aggregation/index.js +8 -0
- package/dist/aggregation/index.js.map +1 -0
- package/dist/aggregation/pipeline.d.ts +38 -0
- package/dist/aggregation/pipeline.d.ts.map +1 -0
- package/dist/aggregation/pipeline.js +198 -0
- package/dist/aggregation/pipeline.js.map +1 -0
- package/dist/claims/evaluator.d.ts +33 -0
- package/dist/claims/evaluator.d.ts.map +1 -0
- package/dist/claims/evaluator.js +174 -0
- package/dist/claims/evaluator.js.map +1 -0
- package/dist/claims/index.d.ts +7 -0
- package/dist/claims/index.d.ts.map +1 -0
- package/dist/claims/index.js +7 -0
- package/dist/claims/index.js.map +1 -0
- package/dist/collector/index.d.ts +8 -0
- package/dist/collector/index.d.ts.map +1 -0
- package/dist/collector/index.js +8 -0
- package/dist/collector/index.js.map +1 -0
- package/dist/collector/result-collector.d.ts +159 -0
- package/dist/collector/result-collector.d.ts.map +1 -0
- package/dist/collector/result-collector.js +213 -0
- package/dist/collector/result-collector.js.map +1 -0
- package/dist/collector/schema.d.ts +34 -0
- package/dist/collector/schema.d.ts.map +1 -0
- package/dist/collector/schema.js +145 -0
- package/dist/collector/schema.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts +10 -0
- package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js +122 -0
- package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts +7 -0
- package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-manager.integration.test.js +330 -0
- package/dist/executor/__tests__/checkpoint-manager.integration.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.js +449 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts +11 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js +224 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts +8 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js +164 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-storage.unit.test.js +386 -0
- package/dist/executor/__tests__/checkpoint-storage.unit.test.js.map +1 -0
- package/dist/executor/__tests__/executor.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/executor.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/executor.unit.test.js +134 -0
- package/dist/executor/__tests__/executor.unit.test.js.map +1 -0
- package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts +12 -0
- package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts.map +1 -0
- package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js +196 -0
- package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js.map +1 -0
- package/dist/executor/__tests__/parallel-executor.integration.test.d.ts +7 -0
- package/dist/executor/__tests__/parallel-executor.integration.test.d.ts.map +1 -0
- package/dist/executor/__tests__/parallel-executor.integration.test.js +249 -0
- package/dist/executor/__tests__/parallel-executor.integration.test.js.map +1 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.js +203 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.js.map +1 -0
- package/dist/executor/checkpoint-manager.d.ts +231 -0
- package/dist/executor/checkpoint-manager.d.ts.map +1 -0
- package/dist/executor/checkpoint-manager.js +395 -0
- package/dist/executor/checkpoint-manager.js.map +1 -0
- package/dist/executor/checkpoint-storage.d.ts +230 -0
- package/dist/executor/checkpoint-storage.d.ts.map +1 -0
- package/dist/executor/checkpoint-storage.js +370 -0
- package/dist/executor/checkpoint-storage.js.map +1 -0
- package/dist/executor/checkpoint-types.d.ts +48 -0
- package/dist/executor/checkpoint-types.d.ts.map +1 -0
- package/dist/executor/checkpoint-types.js +8 -0
- package/dist/executor/checkpoint-types.js.map +1 -0
- package/dist/executor/executor.d.ts +164 -0
- package/dist/executor/executor.d.ts.map +1 -0
- package/dist/executor/executor.js +408 -0
- package/dist/executor/executor.js.map +1 -0
- package/dist/executor/index.d.ts +11 -0
- package/dist/executor/index.d.ts.map +1 -0
- package/dist/executor/index.js +11 -0
- package/dist/executor/index.js.map +1 -0
- package/dist/executor/memory-monitor.d.ts +115 -0
- package/dist/executor/memory-monitor.d.ts.map +1 -0
- package/dist/executor/memory-monitor.js +168 -0
- package/dist/executor/memory-monitor.js.map +1 -0
- package/dist/executor/parallel-executor.d.ts +53 -0
- package/dist/executor/parallel-executor.d.ts.map +1 -0
- package/dist/executor/parallel-executor.js +194 -0
- package/dist/executor/parallel-executor.js.map +1 -0
- package/dist/executor/run-id.d.ts +71 -0
- package/dist/executor/run-id.d.ts.map +1 -0
- package/dist/executor/run-id.js +67 -0
- package/dist/executor/run-id.js.map +1 -0
- package/dist/executor/worker-entry.d.ts +8 -0
- package/dist/executor/worker-entry.d.ts.map +1 -0
- package/dist/executor/worker-entry.js +67 -0
- package/dist/executor/worker-entry.js.map +1 -0
- package/dist/index.cjs +11 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/registry/case-registry.d.ts +113 -0
- package/dist/registry/case-registry.d.ts.map +1 -0
- package/dist/registry/case-registry.js +160 -0
- package/dist/registry/case-registry.js.map +1 -0
- package/dist/registry/index.d.ts +8 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +8 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/sut-registry.d.ts +96 -0
- package/dist/registry/sut-registry.d.ts.map +1 -0
- package/dist/registry/sut-registry.js +126 -0
- package/dist/registry/sut-registry.js.map +1 -0
- package/dist/renderers/index.d.ts +10 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +9 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/latex-renderer.d.ts +84 -0
- package/dist/renderers/latex-renderer.d.ts.map +1 -0
- package/dist/renderers/latex-renderer.js +208 -0
- package/dist/renderers/latex-renderer.js.map +1 -0
- package/dist/renderers/types.d.ts +106 -0
- package/dist/renderers/types.d.ts.map +1 -0
- package/dist/renderers/types.js +23 -0
- package/dist/renderers/types.js.map +1 -0
- package/dist/robustness/analyzer.d.ts +61 -0
- package/dist/robustness/analyzer.d.ts.map +1 -0
- package/dist/robustness/analyzer.js +191 -0
- package/dist/robustness/analyzer.js.map +1 -0
- package/dist/robustness/index.d.ts +8 -0
- package/dist/robustness/index.d.ts.map +1 -0
- package/dist/robustness/index.js +8 -0
- package/dist/robustness/index.js.map +1 -0
- package/dist/robustness/perturbations.d.ts +46 -0
- package/dist/robustness/perturbations.d.ts.map +1 -0
- package/dist/robustness/perturbations.js +184 -0
- package/dist/robustness/perturbations.js.map +1 -0
- package/dist/statistical/index.d.ts +8 -0
- package/dist/statistical/index.d.ts.map +1 -0
- package/dist/statistical/index.js +8 -0
- package/dist/statistical/index.js.map +1 -0
- package/dist/statistical/mann-whitney-u.d.ts +62 -0
- package/dist/statistical/mann-whitney-u.d.ts.map +1 -0
- package/dist/statistical/mann-whitney-u.js +127 -0
- package/dist/statistical/mann-whitney-u.js.map +1 -0
- package/dist/types/aggregate.d.ts +124 -0
- package/dist/types/aggregate.d.ts.map +1 -0
- package/dist/types/aggregate.js +9 -0
- package/dist/types/aggregate.js.map +1 -0
- package/dist/types/case.d.ts +105 -0
- package/dist/types/case.d.ts.map +1 -0
- package/dist/types/case.js +10 -0
- package/dist/types/case.js.map +1 -0
- package/dist/types/claims.d.ts +122 -0
- package/dist/types/claims.d.ts.map +1 -0
- package/dist/types/claims.js +14 -0
- package/dist/types/claims.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/perturbation.d.ts +105 -0
- package/dist/types/perturbation.d.ts.map +1 -0
- package/dist/types/perturbation.js +9 -0
- package/dist/types/perturbation.js.map +1 -0
- package/dist/types/result.d.ts +150 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +12 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/sut.d.ts +128 -0
- package/dist/types/sut.d.ts.map +1 -0
- package/dist/types/sut.js +12 -0
- package/dist/types/sut.js.map +1 -0
- package/package.json +283 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-entry.js","sourceRoot":"","sources":["../../src/executor/worker-entry.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Auto-generated CJS wrapper for ESM module
|
|
2
|
+
// Load the ESM module dynamically for require() callers
|
|
3
|
+
// Generated by scripts/generate-cjs-wrapper.mjs
|
|
4
|
+
|
|
5
|
+
async function loadModule() {
|
|
6
|
+
return await import('./index.js');
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// Synchronous export of a function that returns a promise
|
|
10
|
+
// This is the standard pattern for CJS wrappers around ESM
|
|
11
|
+
module.exports = loadModule();
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portable Programmatic Evaluation Framework
|
|
3
|
+
*
|
|
4
|
+
* A claim-driven, deterministic evaluation framework for experiments.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./types/index.js";
|
|
7
|
+
export * from "./registry/index.js";
|
|
8
|
+
export * from "./executor/index.js";
|
|
9
|
+
export * from "./collector/index.js";
|
|
10
|
+
export * from "./statistical/index.js";
|
|
11
|
+
export * from "./aggregation/index.js";
|
|
12
|
+
export * from "./claims/index.js";
|
|
13
|
+
export * from "./robustness/index.js";
|
|
14
|
+
export * from "./renderers/index.js";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portable Programmatic Evaluation Framework
|
|
3
|
+
*
|
|
4
|
+
* A claim-driven, deterministic evaluation framework for experiments.
|
|
5
|
+
*/
|
|
6
|
+
// Types
|
|
7
|
+
export * from "./types/index.js";
|
|
8
|
+
// Registry
|
|
9
|
+
export * from "./registry/index.js";
|
|
10
|
+
// Executor
|
|
11
|
+
export * from "./executor/index.js";
|
|
12
|
+
// Collector
|
|
13
|
+
export * from "./collector/index.js";
|
|
14
|
+
// Statistical
|
|
15
|
+
export * from "./statistical/index.js";
|
|
16
|
+
// Aggregation
|
|
17
|
+
export * from "./aggregation/index.js";
|
|
18
|
+
// Claims
|
|
19
|
+
export * from "./claims/index.js";
|
|
20
|
+
// Robustness
|
|
21
|
+
export * from "./robustness/index.js";
|
|
22
|
+
// Renderers
|
|
23
|
+
export * from "./renderers/index.js";
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,WAAW;AACX,cAAc,qBAAqB,CAAC;AAEpC,WAAW;AACX,cAAc,qBAAqB,CAAC;AAEpC,YAAY;AACZ,cAAc,sBAAsB,CAAC;AAErC,cAAc;AACd,cAAc,wBAAwB,CAAC;AAEvC,cAAc;AACd,cAAc,wBAAwB,CAAC;AAEvC,SAAS;AACT,cAAc,mBAAmB,CAAC;AAElC,aAAa;AACb,cAAc,uBAAuB,CAAC;AAEtC,YAAY;AACZ,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Case Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for evaluation case definitions. Cases are registered
|
|
5
|
+
* with their factories, enabling lazy loading of resources during
|
|
6
|
+
* experiment execution.
|
|
7
|
+
*/
|
|
8
|
+
import type { CaseDefinition, EvaluationCase } from "../types/case.js";
|
|
9
|
+
/**
|
|
10
|
+
* Registry for evaluation case definitions.
|
|
11
|
+
*
|
|
12
|
+
* @template TInput - The resource type (e.g., Graph, Dataset)
|
|
13
|
+
* @template TInputs - The algorithm inputs type
|
|
14
|
+
*/
|
|
15
|
+
export declare class CaseRegistry<TInput = unknown, TInputs = unknown> {
|
|
16
|
+
private readonly definitions;
|
|
17
|
+
/**
|
|
18
|
+
* Register a new case.
|
|
19
|
+
*
|
|
20
|
+
* @param definition - Case definition including metadata and factories
|
|
21
|
+
* @throws Error if case with same ID already registered
|
|
22
|
+
*/
|
|
23
|
+
register(definition: CaseDefinition<TInput, TInputs>): this;
|
|
24
|
+
/**
|
|
25
|
+
* Register multiple cases at once.
|
|
26
|
+
*
|
|
27
|
+
* @param definitions - Array of case definitions
|
|
28
|
+
*/
|
|
29
|
+
registerAll(definitions: CaseDefinition<TInput, TInputs>[]): this;
|
|
30
|
+
/**
|
|
31
|
+
* Get a case definition by ID.
|
|
32
|
+
*
|
|
33
|
+
* @param caseId - Case identifier
|
|
34
|
+
* @returns Case definition or undefined
|
|
35
|
+
*/
|
|
36
|
+
get(caseId: string): CaseDefinition<TInput, TInputs> | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Get a case definition by ID, throwing if not found.
|
|
39
|
+
*
|
|
40
|
+
* @param caseId - Case identifier
|
|
41
|
+
* @returns Case definition
|
|
42
|
+
* @throws Error if case not found
|
|
43
|
+
*/
|
|
44
|
+
getOrThrow(caseId: string): CaseDefinition<TInput, TInputs>;
|
|
45
|
+
/**
|
|
46
|
+
* Get all cases with a specific class.
|
|
47
|
+
*
|
|
48
|
+
* @param caseClass - Class to filter by
|
|
49
|
+
* @returns Array of matching case definitions
|
|
50
|
+
*/
|
|
51
|
+
getByClass(caseClass: string): CaseDefinition<TInput, TInputs>[];
|
|
52
|
+
/**
|
|
53
|
+
* Get all cases with a specific tag.
|
|
54
|
+
*
|
|
55
|
+
* @param tag - Tag to filter by
|
|
56
|
+
* @returns Array of matching case definitions
|
|
57
|
+
*/
|
|
58
|
+
getByTag(tag: string): CaseDefinition<TInput, TInputs>[];
|
|
59
|
+
/**
|
|
60
|
+
* List all registered case IDs.
|
|
61
|
+
*
|
|
62
|
+
* @returns Array of case identifiers
|
|
63
|
+
*/
|
|
64
|
+
list(): string[];
|
|
65
|
+
/**
|
|
66
|
+
* List all registered case specifications.
|
|
67
|
+
*
|
|
68
|
+
* @returns Array of case specifications
|
|
69
|
+
*/
|
|
70
|
+
listCases(): EvaluationCase[];
|
|
71
|
+
/**
|
|
72
|
+
* List all unique case classes.
|
|
73
|
+
*
|
|
74
|
+
* @returns Array of case class names
|
|
75
|
+
*/
|
|
76
|
+
listClasses(): string[];
|
|
77
|
+
/**
|
|
78
|
+
* Check if a case is registered.
|
|
79
|
+
*
|
|
80
|
+
* @param caseId - Case identifier
|
|
81
|
+
* @returns true if registered
|
|
82
|
+
*/
|
|
83
|
+
has(caseId: string): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Get the number of registered cases.
|
|
86
|
+
*/
|
|
87
|
+
get size(): number;
|
|
88
|
+
/**
|
|
89
|
+
* Clear all registrations.
|
|
90
|
+
*/
|
|
91
|
+
clear(): void;
|
|
92
|
+
/**
|
|
93
|
+
* Load the input resource for a case.
|
|
94
|
+
*
|
|
95
|
+
* @param caseId - Case identifier
|
|
96
|
+
* @returns Promise resolving to the input resource
|
|
97
|
+
*/
|
|
98
|
+
getInput(caseId: string): Promise<TInput>;
|
|
99
|
+
/**
|
|
100
|
+
* Get the algorithm inputs for a case.
|
|
101
|
+
*
|
|
102
|
+
* @param caseId - Case identifier
|
|
103
|
+
* @returns Algorithm inputs
|
|
104
|
+
*/
|
|
105
|
+
getInputs(caseId: string): TInputs;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Global case registry instance.
|
|
109
|
+
*
|
|
110
|
+
* Use this for standard registration, or create instances for isolation.
|
|
111
|
+
*/
|
|
112
|
+
export declare const caseRegistry: CaseRegistry<unknown, unknown>;
|
|
113
|
+
//# sourceMappingURL=case-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-registry.d.ts","sourceRoot":"","sources":["../../src/registry/case-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,qBAAa,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsD;IAElF;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU3D;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI;IAOjE;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAIhE;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC;IAQ3D;;;;;OAKG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAIhE;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAIxD;;;;OAIG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;;;OAIG;IACH,SAAS,IAAI,cAAc,EAAE;IAI7B;;;;OAIG;IACH,WAAW,IAAI,MAAM,EAAE;IAUvB;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAIlC;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,gCAAqB,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Case Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for evaluation case definitions. Cases are registered
|
|
5
|
+
* with their factories, enabling lazy loading of resources during
|
|
6
|
+
* experiment execution.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Registry for evaluation case definitions.
|
|
10
|
+
*
|
|
11
|
+
* @template TInput - The resource type (e.g., Graph, Dataset)
|
|
12
|
+
* @template TInputs - The algorithm inputs type
|
|
13
|
+
*/
|
|
14
|
+
export class CaseRegistry {
|
|
15
|
+
definitions = new Map();
|
|
16
|
+
/**
|
|
17
|
+
* Register a new case.
|
|
18
|
+
*
|
|
19
|
+
* @param definition - Case definition including metadata and factories
|
|
20
|
+
* @throws Error if case with same ID already registered
|
|
21
|
+
*/
|
|
22
|
+
register(definition) {
|
|
23
|
+
const caseId = definition.case.caseId;
|
|
24
|
+
if (this.definitions.has(caseId)) {
|
|
25
|
+
throw new Error(`Case already registered: ${caseId}`);
|
|
26
|
+
}
|
|
27
|
+
this.definitions.set(caseId, definition);
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Register multiple cases at once.
|
|
32
|
+
*
|
|
33
|
+
* @param definitions - Array of case definitions
|
|
34
|
+
*/
|
|
35
|
+
registerAll(definitions) {
|
|
36
|
+
for (const definition of definitions) {
|
|
37
|
+
this.register(definition);
|
|
38
|
+
}
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get a case definition by ID.
|
|
43
|
+
*
|
|
44
|
+
* @param caseId - Case identifier
|
|
45
|
+
* @returns Case definition or undefined
|
|
46
|
+
*/
|
|
47
|
+
get(caseId) {
|
|
48
|
+
return this.definitions.get(caseId);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get a case definition by ID, throwing if not found.
|
|
52
|
+
*
|
|
53
|
+
* @param caseId - Case identifier
|
|
54
|
+
* @returns Case definition
|
|
55
|
+
* @throws Error if case not found
|
|
56
|
+
*/
|
|
57
|
+
getOrThrow(caseId) {
|
|
58
|
+
const definition = this.definitions.get(caseId);
|
|
59
|
+
if (!definition) {
|
|
60
|
+
throw new Error(`Case not found: ${caseId}`);
|
|
61
|
+
}
|
|
62
|
+
return definition;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get all cases with a specific class.
|
|
66
|
+
*
|
|
67
|
+
* @param caseClass - Class to filter by
|
|
68
|
+
* @returns Array of matching case definitions
|
|
69
|
+
*/
|
|
70
|
+
getByClass(caseClass) {
|
|
71
|
+
return [...this.definitions.values()].filter((d) => d.case.caseClass === caseClass);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get all cases with a specific tag.
|
|
75
|
+
*
|
|
76
|
+
* @param tag - Tag to filter by
|
|
77
|
+
* @returns Array of matching case definitions
|
|
78
|
+
*/
|
|
79
|
+
getByTag(tag) {
|
|
80
|
+
return [...this.definitions.values()].filter((d) => d.case.tags?.includes(tag));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* List all registered case IDs.
|
|
84
|
+
*
|
|
85
|
+
* @returns Array of case identifiers
|
|
86
|
+
*/
|
|
87
|
+
list() {
|
|
88
|
+
return [...this.definitions.keys()];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* List all registered case specifications.
|
|
92
|
+
*
|
|
93
|
+
* @returns Array of case specifications
|
|
94
|
+
*/
|
|
95
|
+
listCases() {
|
|
96
|
+
return [...this.definitions.values()].map((d) => d.case);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* List all unique case classes.
|
|
100
|
+
*
|
|
101
|
+
* @returns Array of case class names
|
|
102
|
+
*/
|
|
103
|
+
listClasses() {
|
|
104
|
+
const classes = new Set();
|
|
105
|
+
for (const definition of this.definitions.values()) {
|
|
106
|
+
if (definition.case.caseClass) {
|
|
107
|
+
classes.add(definition.case.caseClass);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return [...classes];
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if a case is registered.
|
|
114
|
+
*
|
|
115
|
+
* @param caseId - Case identifier
|
|
116
|
+
* @returns true if registered
|
|
117
|
+
*/
|
|
118
|
+
has(caseId) {
|
|
119
|
+
return this.definitions.has(caseId);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get the number of registered cases.
|
|
123
|
+
*/
|
|
124
|
+
get size() {
|
|
125
|
+
return this.definitions.size;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Clear all registrations.
|
|
129
|
+
*/
|
|
130
|
+
clear() {
|
|
131
|
+
this.definitions.clear();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Load the input resource for a case.
|
|
135
|
+
*
|
|
136
|
+
* @param caseId - Case identifier
|
|
137
|
+
* @returns Promise resolving to the input resource
|
|
138
|
+
*/
|
|
139
|
+
async getInput(caseId) {
|
|
140
|
+
const definition = this.getOrThrow(caseId);
|
|
141
|
+
return definition.getInput();
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get the algorithm inputs for a case.
|
|
145
|
+
*
|
|
146
|
+
* @param caseId - Case identifier
|
|
147
|
+
* @returns Algorithm inputs
|
|
148
|
+
*/
|
|
149
|
+
getInputs(caseId) {
|
|
150
|
+
const definition = this.getOrThrow(caseId);
|
|
151
|
+
return definition.getInputs();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Global case registry instance.
|
|
156
|
+
*
|
|
157
|
+
* Use this for standard registration, or create instances for isolation.
|
|
158
|
+
*/
|
|
159
|
+
export const caseRegistry = new CaseRegistry();
|
|
160
|
+
//# sourceMappingURL=case-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-registry.js","sourceRoot":"","sources":["../../src/registry/case-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SUT Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for System Under Test definitions. SUTs are registered
|
|
5
|
+
* with their factories and metadata, enabling lazy instantiation during
|
|
6
|
+
* experiment execution.
|
|
7
|
+
*/
|
|
8
|
+
import type { SUT, SutDefinition, SutFactory, SutRegistration, SutRole } from "../types/sut.js";
|
|
9
|
+
/**
|
|
10
|
+
* Registry for System Under Test definitions.
|
|
11
|
+
*
|
|
12
|
+
* @template TInputs - The algorithm inputs type
|
|
13
|
+
* @template TResult - The algorithm result type
|
|
14
|
+
*/
|
|
15
|
+
export declare class SUTRegistry<TInputs = unknown, TResult = unknown> {
|
|
16
|
+
private readonly definitions;
|
|
17
|
+
/**
|
|
18
|
+
* Register a new SUT.
|
|
19
|
+
*
|
|
20
|
+
* @param registration - SUT metadata
|
|
21
|
+
* @param factory - Factory for creating SUT instances
|
|
22
|
+
* @throws Error if SUT with same ID already registered
|
|
23
|
+
*/
|
|
24
|
+
register(registration: SutRegistration, factory: SutFactory<TInputs, TResult>): this;
|
|
25
|
+
/**
|
|
26
|
+
* Get a SUT definition by ID.
|
|
27
|
+
*
|
|
28
|
+
* @param id - SUT identifier
|
|
29
|
+
* @returns SUT definition or undefined
|
|
30
|
+
*/
|
|
31
|
+
get(id: string): SutDefinition<TInputs, TResult> | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Get a SUT definition by ID, throwing if not found.
|
|
34
|
+
*
|
|
35
|
+
* @param id - SUT identifier
|
|
36
|
+
* @returns SUT definition
|
|
37
|
+
* @throws Error if SUT not found
|
|
38
|
+
*/
|
|
39
|
+
getOrThrow(id: string): SutDefinition<TInputs, TResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Get all SUTs with a specific role.
|
|
42
|
+
*
|
|
43
|
+
* @param role - Role to filter by
|
|
44
|
+
* @returns Array of matching SUT definitions
|
|
45
|
+
*/
|
|
46
|
+
getByRole(role: SutRole): SutDefinition<TInputs, TResult>[];
|
|
47
|
+
/**
|
|
48
|
+
* Get all SUTs with a specific tag.
|
|
49
|
+
*
|
|
50
|
+
* @param tag - Tag to filter by
|
|
51
|
+
* @returns Array of matching SUT definitions
|
|
52
|
+
*/
|
|
53
|
+
getByTag(tag: string): SutDefinition<TInputs, TResult>[];
|
|
54
|
+
/**
|
|
55
|
+
* List all registered SUT IDs.
|
|
56
|
+
*
|
|
57
|
+
* @returns Array of SUT identifiers
|
|
58
|
+
*/
|
|
59
|
+
list(): string[];
|
|
60
|
+
/**
|
|
61
|
+
* List all registered SUT registrations.
|
|
62
|
+
*
|
|
63
|
+
* @returns Array of SUT registrations
|
|
64
|
+
*/
|
|
65
|
+
listRegistrations(): SutRegistration[];
|
|
66
|
+
/**
|
|
67
|
+
* Check if a SUT is registered.
|
|
68
|
+
*
|
|
69
|
+
* @param id - SUT identifier
|
|
70
|
+
* @returns true if registered
|
|
71
|
+
*/
|
|
72
|
+
has(id: string): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Get the number of registered SUTs.
|
|
75
|
+
*/
|
|
76
|
+
get size(): number;
|
|
77
|
+
/**
|
|
78
|
+
* Clear all registrations.
|
|
79
|
+
*/
|
|
80
|
+
clear(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Create a new SUT instance.
|
|
83
|
+
*
|
|
84
|
+
* @param id - SUT identifier
|
|
85
|
+
* @param config - Optional configuration overrides
|
|
86
|
+
* @returns SUT instance ready for execution
|
|
87
|
+
*/
|
|
88
|
+
create(id: string, config?: Record<string, unknown>): SUT<TInputs, TResult>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Global SUT registry instance.
|
|
92
|
+
*
|
|
93
|
+
* Use this for standard registration, or create instances for isolation.
|
|
94
|
+
*/
|
|
95
|
+
export declare const sutRegistry: SUTRegistry<unknown, unknown>;
|
|
96
|
+
//# sourceMappingURL=sut-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sut-registry.d.ts","sourceRoot":"","sources":["../../src/registry/sut-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEhG;;;;;GAKG;AACH,qBAAa,WAAW,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsD;IAElF;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI;IASpF;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS;IAI5D;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;IAQvD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;IAI3D;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;IAIxD;;;;OAIG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;;;OAIG;IACH,iBAAiB,IAAI,eAAe,EAAE;IAItC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;CAI3E;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,+BAAoB,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SUT Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for System Under Test definitions. SUTs are registered
|
|
5
|
+
* with their factories and metadata, enabling lazy instantiation during
|
|
6
|
+
* experiment execution.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Registry for System Under Test definitions.
|
|
10
|
+
*
|
|
11
|
+
* @template TInputs - The algorithm inputs type
|
|
12
|
+
* @template TResult - The algorithm result type
|
|
13
|
+
*/
|
|
14
|
+
export class SUTRegistry {
|
|
15
|
+
definitions = new Map();
|
|
16
|
+
/**
|
|
17
|
+
* Register a new SUT.
|
|
18
|
+
*
|
|
19
|
+
* @param registration - SUT metadata
|
|
20
|
+
* @param factory - Factory for creating SUT instances
|
|
21
|
+
* @throws Error if SUT with same ID already registered
|
|
22
|
+
*/
|
|
23
|
+
register(registration, factory) {
|
|
24
|
+
if (this.definitions.has(registration.id)) {
|
|
25
|
+
throw new Error(`SUT already registered: ${registration.id}`);
|
|
26
|
+
}
|
|
27
|
+
this.definitions.set(registration.id, { registration, factory });
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get a SUT definition by ID.
|
|
32
|
+
*
|
|
33
|
+
* @param id - SUT identifier
|
|
34
|
+
* @returns SUT definition or undefined
|
|
35
|
+
*/
|
|
36
|
+
get(id) {
|
|
37
|
+
return this.definitions.get(id);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get a SUT definition by ID, throwing if not found.
|
|
41
|
+
*
|
|
42
|
+
* @param id - SUT identifier
|
|
43
|
+
* @returns SUT definition
|
|
44
|
+
* @throws Error if SUT not found
|
|
45
|
+
*/
|
|
46
|
+
getOrThrow(id) {
|
|
47
|
+
const definition = this.definitions.get(id);
|
|
48
|
+
if (!definition) {
|
|
49
|
+
throw new Error(`SUT not found: ${id}`);
|
|
50
|
+
}
|
|
51
|
+
return definition;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get all SUTs with a specific role.
|
|
55
|
+
*
|
|
56
|
+
* @param role - Role to filter by
|
|
57
|
+
* @returns Array of matching SUT definitions
|
|
58
|
+
*/
|
|
59
|
+
getByRole(role) {
|
|
60
|
+
return [...this.definitions.values()].filter((d) => d.registration.role === role);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get all SUTs with a specific tag.
|
|
64
|
+
*
|
|
65
|
+
* @param tag - Tag to filter by
|
|
66
|
+
* @returns Array of matching SUT definitions
|
|
67
|
+
*/
|
|
68
|
+
getByTag(tag) {
|
|
69
|
+
return [...this.definitions.values()].filter((d) => d.registration.tags.includes(tag));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* List all registered SUT IDs.
|
|
73
|
+
*
|
|
74
|
+
* @returns Array of SUT identifiers
|
|
75
|
+
*/
|
|
76
|
+
list() {
|
|
77
|
+
return [...this.definitions.keys()];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* List all registered SUT registrations.
|
|
81
|
+
*
|
|
82
|
+
* @returns Array of SUT registrations
|
|
83
|
+
*/
|
|
84
|
+
listRegistrations() {
|
|
85
|
+
return [...this.definitions.values()].map((d) => d.registration);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Check if a SUT is registered.
|
|
89
|
+
*
|
|
90
|
+
* @param id - SUT identifier
|
|
91
|
+
* @returns true if registered
|
|
92
|
+
*/
|
|
93
|
+
has(id) {
|
|
94
|
+
return this.definitions.has(id);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get the number of registered SUTs.
|
|
98
|
+
*/
|
|
99
|
+
get size() {
|
|
100
|
+
return this.definitions.size;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Clear all registrations.
|
|
104
|
+
*/
|
|
105
|
+
clear() {
|
|
106
|
+
this.definitions.clear();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create a new SUT instance.
|
|
110
|
+
*
|
|
111
|
+
* @param id - SUT identifier
|
|
112
|
+
* @param config - Optional configuration overrides
|
|
113
|
+
* @returns SUT instance ready for execution
|
|
114
|
+
*/
|
|
115
|
+
create(id, config) {
|
|
116
|
+
const definition = this.getOrThrow(id);
|
|
117
|
+
return definition.factory(config);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Global SUT registry instance.
|
|
122
|
+
*
|
|
123
|
+
* Use this for standard registration, or create instances for isolation.
|
|
124
|
+
*/
|
|
125
|
+
export const sutRegistry = new SUTRegistry();
|
|
126
|
+
//# sourceMappingURL=sut-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sut-registry.js","sourceRoot":"","sources":["../../src/registry/sut-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACN,WAAW,GAAG,IAAI,GAAG,EAA2C,CAAC;IAElF;;;;;;OAMG;IACH,QAAQ,CAAC,YAA6B,EAAE,OAAqC;QAC5E,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,EAAU;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAa;QACtB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACnF,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,GAAW;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACxF,CAAC;IAED;;;;OAIG;IACH,IAAI;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK;QACJ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,EAAU,EAAE,MAAgC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renderers - Export module
|
|
3
|
+
*
|
|
4
|
+
* Pure transformation layer for converting aggregated results
|
|
5
|
+
* into human-readable output formats.
|
|
6
|
+
*/
|
|
7
|
+
export type { ColumnSpec, RenderOutput, Renderer, TableRenderSpec, ClaimStatusDisplay, } from "./types.js";
|
|
8
|
+
export { LATEX_CLAIM_STATUS, UNICODE_CLAIM_STATUS } from "./types.js";
|
|
9
|
+
export { LaTeXRenderer, createLatexRenderer, escapeLatex, type LaTeXRendererOptions, } from "./latex-renderer.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,kBAAkB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,KAAK,oBAAoB,GACzB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renderers - Export module
|
|
3
|
+
*
|
|
4
|
+
* Pure transformation layer for converting aggregated results
|
|
5
|
+
* into human-readable output formats.
|
|
6
|
+
*/
|
|
7
|
+
export { LATEX_CLAIM_STATUS, UNICODE_CLAIM_STATUS } from "./types.js";
|
|
8
|
+
export { LaTeXRenderer, createLatexRenderer, escapeLatex, } from "./latex-renderer.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,WAAW,GAEX,MAAM,qBAAqB,CAAC"}
|