ppef 1.0.0 → 1.1.0
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/bin/ppef.mjs +20 -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 +415 -0
- package/dist/__tests__/framework-pipeline.integration.test.js.map +1 -0
- package/dist/__tests__/index-exports.unit.test.d.ts +8 -0
- package/dist/__tests__/index-exports.unit.test.d.ts.map +1 -0
- package/dist/__tests__/index-exports.unit.test.js +127 -0
- package/dist/__tests__/index-exports.unit.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 +352 -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/__tests__/aggregators.unit.test.d.ts +7 -0
- package/dist/aggregation/__tests__/aggregators.unit.test.d.ts.map +1 -0
- package/dist/aggregation/__tests__/aggregators.unit.test.js +350 -0
- package/dist/aggregation/__tests__/aggregators.unit.test.js.map +1 -0
- package/dist/aggregation/__tests__/pipeline.unit.test.d.ts +7 -0
- package/dist/aggregation/__tests__/pipeline.unit.test.d.ts.map +1 -0
- package/dist/aggregation/__tests__/pipeline.unit.test.js +213 -0
- package/dist/aggregation/__tests__/pipeline.unit.test.js.map +1 -0
- package/dist/aggregation/aggregators.d.ts +63 -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/__tests__/evaluator.unit.test.d.ts +12 -0
- package/dist/claims/__tests__/evaluator.unit.test.d.ts.map +1 -0
- package/dist/claims/__tests__/evaluator.unit.test.js +801 -0
- package/dist/claims/__tests__/evaluator.unit.test.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/cli/__tests__/aggregate.command.unit.test.d.ts +7 -0
- package/dist/cli/__tests__/aggregate.command.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/aggregate.command.unit.test.js +396 -0
- package/dist/cli/__tests__/aggregate.command.unit.test.js.map +1 -0
- package/dist/cli/__tests__/commands.unit.test.d.ts +10 -0
- package/dist/cli/__tests__/commands.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/commands.unit.test.js +217 -0
- package/dist/cli/__tests__/commands.unit.test.js.map +1 -0
- package/dist/cli/__tests__/index.unit.test.d.ts +10 -0
- package/dist/cli/__tests__/index.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/index.unit.test.js +65 -0
- package/dist/cli/__tests__/index.unit.test.js.map +1 -0
- package/dist/cli/__tests__/logger.unit.test.d.ts +11 -0
- package/dist/cli/__tests__/logger.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/logger.unit.test.js +180 -0
- package/dist/cli/__tests__/logger.unit.test.js.map +1 -0
- package/dist/cli/__tests__/module-loader.unit.test.d.ts +11 -0
- package/dist/cli/__tests__/module-loader.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/module-loader.unit.test.js +262 -0
- package/dist/cli/__tests__/module-loader.unit.test.js.map +1 -0
- package/dist/cli/__tests__/output-writer.unit.test.d.ts +10 -0
- package/dist/cli/__tests__/output-writer.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/output-writer.unit.test.js +216 -0
- package/dist/cli/__tests__/output-writer.unit.test.js.map +1 -0
- package/dist/cli/__tests__/plan.command.unit.test.d.ts +7 -0
- package/dist/cli/__tests__/plan.command.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/plan.command.unit.test.js +289 -0
- package/dist/cli/__tests__/plan.command.unit.test.js.map +1 -0
- package/dist/cli/__tests__/run.command.unit.test.d.ts +7 -0
- package/dist/cli/__tests__/run.command.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/run.command.unit.test.js +422 -0
- package/dist/cli/__tests__/run.command.unit.test.js.map +1 -0
- package/dist/cli/__tests__/validate.command.unit.test.d.ts +7 -0
- package/dist/cli/__tests__/validate.command.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/validate.command.unit.test.js +226 -0
- package/dist/cli/__tests__/validate.command.unit.test.js.map +1 -0
- package/dist/cli/command-deps.d.ts +125 -0
- package/dist/cli/command-deps.d.ts.map +1 -0
- package/dist/cli/command-deps.js +7 -0
- package/dist/cli/command-deps.js.map +1 -0
- package/dist/cli/commands/aggregate.d.ts +35 -0
- package/dist/cli/commands/aggregate.d.ts.map +1 -0
- package/dist/cli/commands/aggregate.js +121 -0
- package/dist/cli/commands/aggregate.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +36 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +109 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/run.d.ts +33 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +185 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +27 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +88 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/config-loader.d.ts +30 -0
- package/dist/cli/config-loader.d.ts.map +1 -0
- package/dist/cli/config-loader.js +181 -0
- package/dist/cli/config-loader.js.map +1 -0
- package/dist/cli/index.d.ts +26 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +58 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/logger.d.ts +75 -0
- package/dist/cli/logger.d.ts.map +1 -0
- package/dist/cli/logger.js +131 -0
- package/dist/cli/logger.js.map +1 -0
- package/dist/cli/module-loader.d.ts +46 -0
- package/dist/cli/module-loader.d.ts.map +1 -0
- package/dist/cli/module-loader.js +116 -0
- package/dist/cli/module-loader.js.map +1 -0
- package/dist/cli/output-writer.d.ts +51 -0
- package/dist/cli/output-writer.d.ts.map +1 -0
- package/dist/cli/output-writer.js +65 -0
- package/dist/cli/output-writer.js.map +1 -0
- package/dist/cli/types.d.ts +174 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +7 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/collector/__tests__/result-collector.unit.test.d.ts +7 -0
- package/dist/collector/__tests__/result-collector.unit.test.d.ts.map +1 -0
- package/dist/collector/__tests__/result-collector.unit.test.js +1021 -0
- package/dist/collector/__tests__/result-collector.unit.test.js.map +1 -0
- package/dist/collector/__tests__/schema.unit.test.d.ts +7 -0
- package/dist/collector/__tests__/schema.unit.test.d.ts.map +1 -0
- package/dist/collector/__tests__/schema.unit.test.js +360 -0
- package/dist/collector/__tests__/schema.unit.test.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 +531 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts +8 -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 +493 -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 +490 -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 +202 -0
- package/dist/executor/__tests__/executor.unit.test.js.map +1 -0
- package/dist/executor/__tests__/memory-monitor.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/memory-monitor.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/memory-monitor.unit.test.js +285 -0
- package/dist/executor/__tests__/memory-monitor.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 +8 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.js +473 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.js.map +1 -0
- package/dist/executor/__tests__/run-id.unit.test.d.ts +8 -0
- package/dist/executor/__tests__/run-id.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/run-id.unit.test.js +156 -0
- package/dist/executor/__tests__/run-id.unit.test.js.map +1 -0
- package/dist/executor/__tests__/worker-entry.integration.test.d.ts +24 -0
- package/dist/executor/__tests__/worker-entry.integration.test.d.ts.map +1 -0
- package/dist/executor/__tests__/worker-entry.integration.test.js +82 -0
- package/dist/executor/__tests__/worker-entry.integration.test.js.map +1 -0
- package/dist/executor/__tests__/worker-entry.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/worker-entry.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/worker-entry.unit.test.js +364 -0
- package/dist/executor/__tests__/worker-entry.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 +239 -0
- package/dist/executor/parallel-executor.d.ts.map +1 -0
- package/dist/executor/parallel-executor.js +329 -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 +74 -0
- package/dist/executor/run-id.js.map +1 -0
- package/dist/executor/worker-entry.d.ts +10 -0
- package/dist/executor/worker-entry.d.ts.map +1 -0
- package/dist/executor/worker-entry.js +42 -0
- package/dist/executor/worker-entry.js.map +1 -0
- package/dist/executor/worker-executor.d.ts +156 -0
- package/dist/executor/worker-executor.d.ts.map +1 -0
- package/dist/executor/worker-executor.js +88 -0
- package/dist/executor/worker-executor.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/__tests__/analyzer.unit.test.d.ts +11 -0
- package/dist/robustness/__tests__/analyzer.unit.test.d.ts.map +1 -0
- package/dist/robustness/__tests__/analyzer.unit.test.js +455 -0
- package/dist/robustness/__tests__/analyzer.unit.test.js.map +1 -0
- package/dist/robustness/__tests__/perturbations.unit.test.d.ts +11 -0
- package/dist/robustness/__tests__/perturbations.unit.test.d.ts.map +1 -0
- package/dist/robustness/__tests__/perturbations.unit.test.js +284 -0
- package/dist/robustness/__tests__/perturbations.unit.test.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/__tests__/mann-whitney-u.unit.test.d.ts +7 -0
- package/dist/statistical/__tests__/mann-whitney-u.unit.test.d.ts.map +1 -0
- package/dist/statistical/__tests__/mann-whitney-u.unit.test.js +185 -0
- package/dist/statistical/__tests__/mann-whitney-u.unit.test.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 +290 -7
|
@@ -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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LaTeX Renderer
|
|
3
|
+
*
|
|
4
|
+
* Pure transformation from aggregated results to LaTeX tables.
|
|
5
|
+
* NO aggregation logic allowed here - only formatting and rendering.
|
|
6
|
+
*/
|
|
7
|
+
import type { AggregatedResult } from "../types/aggregate.js";
|
|
8
|
+
import type { ClaimEvaluation } from "../types/claims.js";
|
|
9
|
+
import type { ClaimStatusDisplay, Renderer, RenderOutput, TableRenderSpec } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Options for LaTeX rendering.
|
|
12
|
+
*/
|
|
13
|
+
export interface LaTeXRendererOptions {
|
|
14
|
+
/** Claim status symbols */
|
|
15
|
+
claimStatus?: ClaimStatusDisplay;
|
|
16
|
+
/** Whether to use booktabs package */
|
|
17
|
+
booktabs?: boolean;
|
|
18
|
+
/** Default number format decimals */
|
|
19
|
+
defaultDecimals?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* LaTeX table renderer.
|
|
23
|
+
*/
|
|
24
|
+
export declare class LaTeXRenderer implements Renderer {
|
|
25
|
+
private readonly options;
|
|
26
|
+
constructor(options?: Partial<LaTeXRendererOptions>);
|
|
27
|
+
/**
|
|
28
|
+
* Render a single table.
|
|
29
|
+
* @param aggregates
|
|
30
|
+
* @param spec
|
|
31
|
+
*/
|
|
32
|
+
renderTable(aggregates: AggregatedResult[], spec: TableRenderSpec): RenderOutput;
|
|
33
|
+
/**
|
|
34
|
+
* Render all tables.
|
|
35
|
+
* @param aggregates
|
|
36
|
+
* @param specs
|
|
37
|
+
*/
|
|
38
|
+
renderAll(aggregates: AggregatedResult[], specs: TableRenderSpec[]): RenderOutput[];
|
|
39
|
+
/**
|
|
40
|
+
* Render claim evaluation summary.
|
|
41
|
+
* @param evaluations
|
|
42
|
+
*/
|
|
43
|
+
renderClaimSummary(evaluations: ClaimEvaluation[]): RenderOutput;
|
|
44
|
+
/**
|
|
45
|
+
* Build a LaTeX table from data.
|
|
46
|
+
* @param data
|
|
47
|
+
* @param columns
|
|
48
|
+
* @param caption
|
|
49
|
+
* @param label
|
|
50
|
+
*/
|
|
51
|
+
private buildTable;
|
|
52
|
+
/**
|
|
53
|
+
* Format a value for LaTeX.
|
|
54
|
+
* @param value
|
|
55
|
+
*/
|
|
56
|
+
private formatValue;
|
|
57
|
+
/**
|
|
58
|
+
* Format a number with configurable decimals.
|
|
59
|
+
* @param n
|
|
60
|
+
* @param decimals
|
|
61
|
+
*/
|
|
62
|
+
formatNumber(n: number, decimals?: number): string;
|
|
63
|
+
/**
|
|
64
|
+
* Format a speedup ratio.
|
|
65
|
+
* @param ratio
|
|
66
|
+
*/
|
|
67
|
+
formatSpeedup(ratio: number): string;
|
|
68
|
+
/**
|
|
69
|
+
* Format a percentage.
|
|
70
|
+
* @param n
|
|
71
|
+
*/
|
|
72
|
+
formatPercentage(n: number): string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Escape special LaTeX characters.
|
|
76
|
+
* @param text
|
|
77
|
+
*/
|
|
78
|
+
export declare const escapeLatex: (text: string) => string;
|
|
79
|
+
/**
|
|
80
|
+
* Create a LaTeX renderer with default options.
|
|
81
|
+
* @param options
|
|
82
|
+
*/
|
|
83
|
+
export declare const createLatexRenderer: (options?: Partial<LaTeXRendererOptions>) => LaTeXRenderer;
|
|
84
|
+
//# sourceMappingURL=latex-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latex-renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/latex-renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EACX,kBAAkB,EAElB,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,2BAA2B;IAC3B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAEjC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD;;GAEG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAIvD;;;;OAIG;IACH,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,eAAe,GAAG,YAAY;IAgChF;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE;IAInF;;;OAGG;IACH,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,YAAY;IAmDhE;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAwClB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAanB;;;;OAIG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAOlD;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOpC;;;OAGG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAMnC;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAKO,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,OAAO,CAAC,oBAAoB,CAAC,KAAG,aACnD,CAAC"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LaTeX Renderer
|
|
3
|
+
*
|
|
4
|
+
* Pure transformation from aggregated results to LaTeX tables.
|
|
5
|
+
* NO aggregation logic allowed here - only formatting and rendering.
|
|
6
|
+
*/
|
|
7
|
+
import { LATEX_CLAIM_STATUS } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Default LaTeX renderer options.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_OPTIONS = {
|
|
12
|
+
claimStatus: LATEX_CLAIM_STATUS,
|
|
13
|
+
booktabs: true,
|
|
14
|
+
defaultDecimals: 2,
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* LaTeX table renderer.
|
|
18
|
+
*/
|
|
19
|
+
export class LaTeXRenderer {
|
|
20
|
+
options;
|
|
21
|
+
constructor(options = {}) {
|
|
22
|
+
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Render a single table.
|
|
26
|
+
* @param aggregates
|
|
27
|
+
* @param spec
|
|
28
|
+
*/
|
|
29
|
+
renderTable(aggregates, spec) {
|
|
30
|
+
// Extract and transform data
|
|
31
|
+
let data = spec.extractData(aggregates);
|
|
32
|
+
// Apply filter if specified
|
|
33
|
+
// Note: filter is for aggregates, not extracted data
|
|
34
|
+
// This is handled in extractData
|
|
35
|
+
// Apply sort if specified
|
|
36
|
+
if (spec.sort) {
|
|
37
|
+
data = [...data].sort(spec.sort);
|
|
38
|
+
}
|
|
39
|
+
// Compute caption placeholders
|
|
40
|
+
let caption = spec.caption;
|
|
41
|
+
if (spec.captionPlaceholders) {
|
|
42
|
+
for (const [placeholder, compute] of Object.entries(spec.captionPlaceholders)) {
|
|
43
|
+
caption = caption.replace(`{${placeholder}}`, compute(aggregates));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Build LaTeX
|
|
47
|
+
const content = this.buildTable(data, spec.columns, caption, spec.label);
|
|
48
|
+
return {
|
|
49
|
+
id: spec.id,
|
|
50
|
+
filename: spec.filename,
|
|
51
|
+
content,
|
|
52
|
+
format: "latex",
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Render all tables.
|
|
57
|
+
* @param aggregates
|
|
58
|
+
* @param specs
|
|
59
|
+
*/
|
|
60
|
+
renderAll(aggregates, specs) {
|
|
61
|
+
return specs.map((spec) => this.renderTable(aggregates, spec));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Render claim evaluation summary.
|
|
65
|
+
* @param evaluations
|
|
66
|
+
*/
|
|
67
|
+
renderClaimSummary(evaluations) {
|
|
68
|
+
const statusSymbol = (status) => {
|
|
69
|
+
return this.options.claimStatus?.[status] ?? status;
|
|
70
|
+
};
|
|
71
|
+
// Build table rows
|
|
72
|
+
const rows = [];
|
|
73
|
+
for (const evaluation of evaluations) {
|
|
74
|
+
const symbol = statusSymbol(evaluation.status);
|
|
75
|
+
const delta = this.formatNumber(evaluation.evidence.delta, 3);
|
|
76
|
+
const pValue = evaluation.evidence.pValue === undefined
|
|
77
|
+
? "--"
|
|
78
|
+
: this.formatNumber(evaluation.evidence.pValue, 4);
|
|
79
|
+
rows.push(` ${escapeLatex(evaluation.claim.claimId)} & ` +
|
|
80
|
+
`${escapeLatex(evaluation.claim.description)} & ` +
|
|
81
|
+
`$${symbol}$ & ${delta} & ${pValue} \\\\`);
|
|
82
|
+
}
|
|
83
|
+
// Count summary
|
|
84
|
+
const satisfied = evaluations.filter((e) => e.status === "satisfied").length;
|
|
85
|
+
const violated = evaluations.filter((e) => e.status === "violated").length;
|
|
86
|
+
const inconclusive = evaluations.filter((e) => e.status === "inconclusive").length;
|
|
87
|
+
const caption = `Claim evaluation summary. ${satisfied} satisfied, ${violated} violated, ${inconclusive} inconclusive.`;
|
|
88
|
+
const content = String.raw `\begin{table}[htbp]
|
|
89
|
+
\centering
|
|
90
|
+
\caption{${caption}}
|
|
91
|
+
\label{tab:claim-summary}
|
|
92
|
+
\begin{tabular}{llccc}
|
|
93
|
+
\toprule
|
|
94
|
+
Claim & Description & Status & Delta & p-value \\
|
|
95
|
+
\midrule
|
|
96
|
+
${rows.join("\n")}
|
|
97
|
+
\bottomrule
|
|
98
|
+
\end{tabular}
|
|
99
|
+
\end{table}
|
|
100
|
+
`;
|
|
101
|
+
return {
|
|
102
|
+
id: "claim-summary",
|
|
103
|
+
filename: "claim-summary.tex",
|
|
104
|
+
content,
|
|
105
|
+
format: "latex",
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Build a LaTeX table from data.
|
|
110
|
+
* @param data
|
|
111
|
+
* @param columns
|
|
112
|
+
* @param caption
|
|
113
|
+
* @param label
|
|
114
|
+
*/
|
|
115
|
+
buildTable(data, columns, caption, label) {
|
|
116
|
+
const columnSpec = columns.map((c) => c.align).join("");
|
|
117
|
+
const headers = columns.map((c) => c.header).join(" & ");
|
|
118
|
+
const rows = data.map((row) => {
|
|
119
|
+
const cells = columns.map((col) => {
|
|
120
|
+
const value = row[col.key];
|
|
121
|
+
let formatted = col.format ? col.format(value) : this.formatValue(value);
|
|
122
|
+
if (col.bold) {
|
|
123
|
+
formatted = String.raw `\textbf{${formatted}}`;
|
|
124
|
+
}
|
|
125
|
+
return formatted;
|
|
126
|
+
});
|
|
127
|
+
return ` ${cells.join(" & ")} \\\\`;
|
|
128
|
+
});
|
|
129
|
+
const rules = this.options.booktabs
|
|
130
|
+
? { top: String.raw `\toprule`, mid: String.raw `\midrule`, bottom: String.raw `\bottomrule` }
|
|
131
|
+
: { top: String.raw `\hline`, mid: String.raw `\hline`, bottom: String.raw `\hline` };
|
|
132
|
+
return String.raw `\begin{table}[htbp]
|
|
133
|
+
\centering
|
|
134
|
+
\caption{${caption}}
|
|
135
|
+
\label{${label}}
|
|
136
|
+
\begin{tabular}{${columnSpec}}
|
|
137
|
+
${rules.top}
|
|
138
|
+
${headers} \\
|
|
139
|
+
${rules.mid}
|
|
140
|
+
${rows.join("\n")}
|
|
141
|
+
${rules.bottom}
|
|
142
|
+
\end{tabular}
|
|
143
|
+
\end{table}
|
|
144
|
+
`;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Format a value for LaTeX.
|
|
148
|
+
* @param value
|
|
149
|
+
*/
|
|
150
|
+
formatValue(value) {
|
|
151
|
+
if (value === null || value === undefined) {
|
|
152
|
+
return "--";
|
|
153
|
+
}
|
|
154
|
+
if (typeof value === "number") {
|
|
155
|
+
return this.formatNumber(value);
|
|
156
|
+
}
|
|
157
|
+
if (typeof value === "string") {
|
|
158
|
+
return escapeLatex(value);
|
|
159
|
+
}
|
|
160
|
+
return escapeLatex(JSON.stringify(value));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Format a number with configurable decimals.
|
|
164
|
+
* @param n
|
|
165
|
+
* @param decimals
|
|
166
|
+
*/
|
|
167
|
+
formatNumber(n, decimals) {
|
|
168
|
+
if (!Number.isFinite(n)) {
|
|
169
|
+
return "--";
|
|
170
|
+
}
|
|
171
|
+
return n.toFixed(decimals ?? this.options.defaultDecimals ?? 2);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Format a speedup ratio.
|
|
175
|
+
* @param ratio
|
|
176
|
+
*/
|
|
177
|
+
formatSpeedup(ratio) {
|
|
178
|
+
if (!Number.isFinite(ratio)) {
|
|
179
|
+
return "--";
|
|
180
|
+
}
|
|
181
|
+
return String.raw `$${ratio.toFixed(2)}\times$`;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Format a percentage.
|
|
185
|
+
* @param n
|
|
186
|
+
*/
|
|
187
|
+
formatPercentage(n) {
|
|
188
|
+
if (!Number.isFinite(n)) {
|
|
189
|
+
return "--";
|
|
190
|
+
}
|
|
191
|
+
return String.raw `${Math.round(n)}\%`;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Escape special LaTeX characters.
|
|
196
|
+
* @param text
|
|
197
|
+
*/
|
|
198
|
+
export const escapeLatex = (text) => text
|
|
199
|
+
.replaceAll("\\", String.raw `\textbackslash{}`)
|
|
200
|
+
.replaceAll(/[&%$#_{}]/g, String.raw `\$&`)
|
|
201
|
+
.replaceAll("~", String.raw `\textasciitilde{}`)
|
|
202
|
+
.replaceAll("^", String.raw `\textasciicircum{}`);
|
|
203
|
+
/**
|
|
204
|
+
* Create a LaTeX renderer with default options.
|
|
205
|
+
* @param options
|
|
206
|
+
*/
|
|
207
|
+
export const createLatexRenderer = (options) => new LaTeXRenderer(options);
|
|
208
|
+
//# sourceMappingURL=latex-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latex-renderer.js","sourceRoot":"","sources":["../../src/renderers/latex-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renderer Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Types for the rendering layer that transforms aggregated results
|
|
5
|
+
* into human-readable output formats (LaTeX, Markdown, etc.).
|
|
6
|
+
*/
|
|
7
|
+
import type { AggregatedResult } from "../types/aggregate.js";
|
|
8
|
+
import type { ClaimEvaluation } from "../types/claims.js";
|
|
9
|
+
/**
|
|
10
|
+
* Column specification for a table.
|
|
11
|
+
*/
|
|
12
|
+
export interface ColumnSpec {
|
|
13
|
+
/** Column key (matches field in data) */
|
|
14
|
+
key: string;
|
|
15
|
+
/** Column header text */
|
|
16
|
+
header: string;
|
|
17
|
+
/** LaTeX column alignment (l, r, c) */
|
|
18
|
+
align: "l" | "r" | "c";
|
|
19
|
+
/** Format function for values */
|
|
20
|
+
format?: (value: unknown) => string;
|
|
21
|
+
/** Whether to bold this column's values */
|
|
22
|
+
bold?: boolean;
|
|
23
|
+
/** Whether this column is sortable */
|
|
24
|
+
sortable?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Table render specification.
|
|
28
|
+
*/
|
|
29
|
+
export interface TableRenderSpec {
|
|
30
|
+
/** Table identifier */
|
|
31
|
+
id: string;
|
|
32
|
+
/** Output filename */
|
|
33
|
+
filename: string;
|
|
34
|
+
/** LaTeX label */
|
|
35
|
+
label: string;
|
|
36
|
+
/** Table caption (can include placeholders like {SPEEDUP}) */
|
|
37
|
+
caption: string;
|
|
38
|
+
/** Column specifications */
|
|
39
|
+
columns: ColumnSpec[];
|
|
40
|
+
/** Data extraction function */
|
|
41
|
+
extractData: (aggregates: AggregatedResult[]) => Record<string, unknown>[];
|
|
42
|
+
/** Optional filter predicate */
|
|
43
|
+
filter?: (aggregate: AggregatedResult) => boolean;
|
|
44
|
+
/** Optional sort function */
|
|
45
|
+
sort?: (a: Record<string, unknown>, b: Record<string, unknown>) => number;
|
|
46
|
+
/** Caption placeholders to compute */
|
|
47
|
+
captionPlaceholders?: Record<string, (aggregates: AggregatedResult[]) => string>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Render output.
|
|
51
|
+
*/
|
|
52
|
+
export interface RenderOutput {
|
|
53
|
+
/** Table/document identifier */
|
|
54
|
+
id: string;
|
|
55
|
+
/** Filename for output */
|
|
56
|
+
filename: string;
|
|
57
|
+
/** Rendered content */
|
|
58
|
+
content: string;
|
|
59
|
+
/** Format type */
|
|
60
|
+
format: "latex" | "markdown" | "json";
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Renderer interface.
|
|
64
|
+
*/
|
|
65
|
+
export interface Renderer {
|
|
66
|
+
/**
|
|
67
|
+
* Render a single table.
|
|
68
|
+
*
|
|
69
|
+
* @param aggregates - Aggregated results
|
|
70
|
+
* @param spec - Table specification
|
|
71
|
+
* @returns Rendered output
|
|
72
|
+
*/
|
|
73
|
+
renderTable(aggregates: AggregatedResult[], spec: TableRenderSpec): RenderOutput;
|
|
74
|
+
/**
|
|
75
|
+
* Render all tables from specifications.
|
|
76
|
+
*
|
|
77
|
+
* @param aggregates - Aggregated results
|
|
78
|
+
* @param specs - Table specifications
|
|
79
|
+
* @returns Array of rendered outputs
|
|
80
|
+
*/
|
|
81
|
+
renderAll(aggregates: AggregatedResult[], specs: TableRenderSpec[]): RenderOutput[];
|
|
82
|
+
/**
|
|
83
|
+
* Render claim evaluation summary.
|
|
84
|
+
*
|
|
85
|
+
* @param evaluations - Claim evaluations
|
|
86
|
+
* @returns Rendered output
|
|
87
|
+
*/
|
|
88
|
+
renderClaimSummary(evaluations: ClaimEvaluation[]): RenderOutput;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Claim status display configuration.
|
|
92
|
+
*/
|
|
93
|
+
export interface ClaimStatusDisplay {
|
|
94
|
+
satisfied: string;
|
|
95
|
+
violated: string;
|
|
96
|
+
inconclusive: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Default claim status symbols for LaTeX.
|
|
100
|
+
*/
|
|
101
|
+
export declare const LATEX_CLAIM_STATUS: ClaimStatusDisplay;
|
|
102
|
+
/**
|
|
103
|
+
* Default claim status symbols for Unicode.
|
|
104
|
+
*/
|
|
105
|
+
export declare const UNICODE_CLAIM_STATUS: ClaimStatusDisplay;
|
|
106
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/renderers/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IAEZ,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IAEf,uCAAuC;IACvC,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAEvB,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IAEpC,2CAA2C;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IAEX,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IAEjB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IAEd,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB,+BAA+B;IAC/B,WAAW,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAE3E,gCAAgC;IAChC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC;IAElD,6BAA6B;IAC7B,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAE1E,sCAAsC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,MAAM,CAAC,CAAC;CACjF;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IAEX,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IAEjB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAEhB,kBAAkB;IAClB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,eAAe,GAAG,YAAY,CAAC;IAEjF;;;;;;OAMG;IACH,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE,CAAC;IAEpF;;;;;OAKG;IACH,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAIhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAIlC,CAAC"}
|