ppef 1.0.1 → 1.2.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 +76 -125
- package/bin/ppef.mjs +20 -0
- package/dist/__tests__/cli/evaluate-command.integration.test.d.ts +8 -0
- package/dist/__tests__/cli/evaluate-command.integration.test.d.ts.map +1 -0
- package/dist/__tests__/cli/evaluate-command.integration.test.js +308 -0
- package/dist/__tests__/cli/evaluate-command.integration.test.js.map +1 -0
- package/dist/__tests__/evaluators/claims-evaluator.unit.test.d.ts +8 -0
- package/dist/__tests__/evaluators/claims-evaluator.unit.test.d.ts.map +1 -0
- package/dist/__tests__/evaluators/claims-evaluator.unit.test.js +405 -0
- package/dist/__tests__/evaluators/claims-evaluator.unit.test.js.map +1 -0
- package/dist/__tests__/evaluators/metrics-evaluator.unit.test.d.ts +8 -0
- package/dist/__tests__/evaluators/metrics-evaluator.unit.test.d.ts.map +1 -0
- package/dist/__tests__/evaluators/metrics-evaluator.unit.test.js +424 -0
- package/dist/__tests__/evaluators/metrics-evaluator.unit.test.js.map +1 -0
- package/dist/__tests__/evaluators/registry.unit.test.d.ts +7 -0
- package/dist/__tests__/evaluators/registry.unit.test.d.ts.map +1 -0
- package/dist/__tests__/evaluators/registry.unit.test.js +173 -0
- package/dist/__tests__/evaluators/registry.unit.test.js.map +1 -0
- package/dist/__tests__/evaluators/robustness-evaluator.unit.test.d.ts +8 -0
- package/dist/__tests__/evaluators/robustness-evaluator.unit.test.d.ts.map +1 -0
- package/dist/__tests__/evaluators/robustness-evaluator.unit.test.js +260 -0
- package/dist/__tests__/evaluators/robustness-evaluator.unit.test.js.map +1 -0
- package/dist/__tests__/framework-pipeline.integration.test.js +49 -20
- package/dist/__tests__/framework-pipeline.integration.test.js.map +1 -1
- 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 +124 -0
- package/dist/__tests__/index-exports.unit.test.js.map +1 -0
- package/dist/__tests__/registry-executor.integration.test.js +12 -9
- package/dist/__tests__/registry-executor.integration.test.js.map +1 -1
- 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 +9 -0
- package/dist/aggregation/aggregators.d.ts.map +1 -1
- package/dist/aggregation/aggregators.js +1 -1
- package/dist/aggregation/aggregators.js.map +1 -1
- package/dist/aggregation/index.d.ts +1 -1
- package/dist/aggregation/index.d.ts.map +1 -1
- package/dist/aggregation/index.js +1 -1
- package/dist/aggregation/index.js.map +1 -1
- package/dist/aggregation/pipeline.d.ts.map +1 -1
- package/dist/aggregation/pipeline.js +40 -3
- package/dist/aggregation/pipeline.js.map +1 -1
- package/dist/claims/index.d.ts +6 -3
- package/dist/claims/index.d.ts.map +1 -1
- package/dist/claims/index.js +6 -3
- package/dist/claims/index.js.map +1 -1
- 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 +399 -0
- package/dist/cli/__tests__/aggregate.command.unit.test.js.map +1 -0
- package/dist/cli/__tests__/binary-sut.integration.test.d.ts +8 -0
- package/dist/cli/__tests__/binary-sut.integration.test.d.ts.map +1 -0
- package/dist/cli/__tests__/binary-sut.integration.test.js +165 -0
- package/dist/cli/__tests__/binary-sut.integration.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__/config-loader.unit.test.d.ts +7 -0
- package/dist/cli/__tests__/config-loader.unit.test.d.ts.map +1 -0
- package/dist/cli/__tests__/config-loader.unit.test.js +611 -0
- package/dist/cli/__tests__/config-loader.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 +137 -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 +124 -0
- package/dist/cli/commands/aggregate.js.map +1 -0
- package/dist/cli/commands/evaluate.d.ts +41 -0
- package/dist/cli/commands/evaluate.d.ts.map +1 -0
- package/dist/cli/commands/evaluate.js +287 -0
- package/dist/cli/commands/evaluate.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 +277 -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 +27 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +60 -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 +68 -0
- package/dist/cli/module-loader.d.ts.map +1 -0
- package/dist/cli/module-loader.js +134 -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 +193 -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/evaluators/claims-evaluator.d.ts +87 -0
- package/dist/evaluators/claims-evaluator.d.ts.map +1 -0
- package/dist/evaluators/claims-evaluator.js +289 -0
- package/dist/evaluators/claims-evaluator.js.map +1 -0
- package/dist/evaluators/exploratory-evaluator.d.ts +136 -0
- package/dist/evaluators/exploratory-evaluator.d.ts.map +1 -0
- package/dist/evaluators/exploratory-evaluator.js +545 -0
- package/dist/evaluators/exploratory-evaluator.js.map +1 -0
- package/dist/evaluators/index.d.ts +13 -0
- package/dist/evaluators/index.d.ts.map +1 -0
- package/dist/evaluators/index.js +14 -0
- package/dist/evaluators/index.js.map +1 -0
- package/dist/evaluators/metrics-evaluator.d.ts +114 -0
- package/dist/evaluators/metrics-evaluator.d.ts.map +1 -0
- package/dist/evaluators/metrics-evaluator.js +433 -0
- package/dist/evaluators/metrics-evaluator.js.map +1 -0
- package/dist/evaluators/registry.d.ts +106 -0
- package/dist/evaluators/registry.d.ts.map +1 -0
- package/dist/evaluators/registry.js +148 -0
- package/dist/evaluators/registry.js.map +1 -0
- package/dist/evaluators/robustness-evaluator.d.ts +57 -0
- package/dist/evaluators/robustness-evaluator.d.ts.map +1 -0
- package/dist/evaluators/robustness-evaluator.js +186 -0
- package/dist/evaluators/robustness-evaluator.js.map +1 -0
- package/dist/executor/__tests__/binary-sut.unit.test.d.ts +8 -0
- package/dist/executor/__tests__/binary-sut.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/binary-sut.unit.test.js +313 -0
- package/dist/executor/__tests__/binary-sut.unit.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.js +83 -1
- package/dist/executor/__tests__/checkpoint-manager.unit.test.js.map +1 -1
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts +3 -6
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts.map +1 -1
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js +428 -159
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js.map +1 -1
- package/dist/executor/__tests__/checkpoint-storage.unit.test.js +148 -1
- package/dist/executor/__tests__/checkpoint-storage.unit.test.js.map +1 -1
- package/dist/executor/__tests__/executor.unit.test.js +123 -8
- package/dist/executor/__tests__/executor.unit.test.js.map +1 -1
- 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-executor.unit.test.d.ts +2 -1
- package/dist/executor/__tests__/parallel-executor.unit.test.d.ts.map +1 -1
- package/dist/executor/__tests__/parallel-executor.unit.test.js +426 -156
- package/dist/executor/__tests__/parallel-executor.unit.test.js.map +1 -1
- package/dist/executor/__tests__/resource-calculator.unit.test.d.ts +10 -0
- package/dist/executor/__tests__/resource-calculator.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/resource-calculator.unit.test.js +104 -0
- package/dist/executor/__tests__/resource-calculator.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/__tests__/worker-threads-executor.unit.test.d.ts +8 -0
- package/dist/executor/__tests__/worker-threads-executor.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/worker-threads-executor.unit.test.js +276 -0
- package/dist/executor/__tests__/worker-threads-executor.unit.test.js.map +1 -0
- package/dist/executor/binary-sut.d.ts +105 -0
- package/dist/executor/binary-sut.d.ts.map +1 -0
- package/dist/executor/binary-sut.js +174 -0
- package/dist/executor/binary-sut.js.map +1 -0
- package/dist/executor/checkpoint-storage.d.ts.map +1 -1
- package/dist/executor/checkpoint-storage.js +6 -4
- package/dist/executor/checkpoint-storage.js.map +1 -1
- package/dist/executor/executor.d.ts +28 -0
- package/dist/executor/executor.d.ts.map +1 -1
- package/dist/executor/executor.js +85 -24
- package/dist/executor/executor.js.map +1 -1
- package/dist/executor/index.d.ts +4 -0
- package/dist/executor/index.d.ts.map +1 -1
- package/dist/executor/index.js +4 -0
- package/dist/executor/index.js.map +1 -1
- package/dist/executor/parallel-executor.d.ts +186 -0
- package/dist/executor/parallel-executor.d.ts.map +1 -1
- package/dist/executor/parallel-executor.js +218 -83
- package/dist/executor/parallel-executor.js.map +1 -1
- package/dist/executor/resource-calculator.d.ts +49 -0
- package/dist/executor/resource-calculator.d.ts.map +1 -0
- package/dist/executor/resource-calculator.js +129 -0
- package/dist/executor/resource-calculator.js.map +1 -0
- package/dist/executor/run-id.d.ts.map +1 -1
- package/dist/executor/run-id.js +8 -1
- package/dist/executor/run-id.js.map +1 -1
- package/dist/executor/worker-entry.d.ts +2 -0
- package/dist/executor/worker-entry.d.ts.map +1 -1
- package/dist/executor/worker-entry.js +46 -55
- package/dist/executor/worker-entry.js.map +1 -1
- package/dist/executor/worker-executor.d.ts +257 -0
- package/dist/executor/worker-executor.d.ts.map +1 -0
- package/dist/executor/worker-executor.js +308 -0
- package/dist/executor/worker-executor.js.map +1 -0
- package/dist/executor/worker-threads-executor.d.ts +245 -0
- package/dist/executor/worker-threads-executor.d.ts.map +1 -0
- package/dist/executor/worker-threads-executor.js +332 -0
- package/dist/executor/worker-threads-executor.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/renderers/latex-renderer.d.ts +60 -0
- package/dist/renderers/latex-renderer.d.ts.map +1 -1
- package/dist/renderers/latex-renderer.js +299 -0
- package/dist/renderers/latex-renderer.js.map +1 -1
- package/dist/renderers/types.d.ts +9 -0
- package/dist/renderers/types.d.ts.map +1 -1
- package/dist/renderers/types.js.map +1 -1
- 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/index.d.ts +5 -2
- package/dist/robustness/index.d.ts.map +1 -1
- package/dist/robustness/index.js +4 -2
- package/dist/robustness/index.js.map +1 -1
- 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/types/evaluator.d.ts +449 -0
- package/dist/types/evaluator.d.ts.map +1 -0
- package/dist/types/evaluator.js +9 -0
- package/dist/types/evaluator.js.map +1 -0
- package/dist/types/result.d.ts +2 -0
- package/dist/types/result.d.ts.map +1 -1
- package/package.json +8 -1
- package/dist/claims/evaluator.d.ts +0 -33
- package/dist/claims/evaluator.d.ts.map +0 -1
- package/dist/claims/evaluator.js +0 -174
- package/dist/claims/evaluator.js.map +0 -1
- package/dist/robustness/analyzer.d.ts +0 -61
- package/dist/robustness/analyzer.d.ts.map +0 -1
- package/dist/robustness/analyzer.js +0 -191
- package/dist/robustness/analyzer.js.map +0 -1
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker Threads Executor
|
|
3
|
+
*
|
|
4
|
+
* Executes experiments using Node.js worker threads for parallelism.
|
|
5
|
+
* Each worker runs in isolation, preventing SUT crashes from affecting the main process.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - Main thread spawns N worker threads (75% of CPU cores by default)
|
|
9
|
+
* - Each worker receives a batch of runs via postMessage
|
|
10
|
+
* - Workers write results to sharded checkpoint files
|
|
11
|
+
* - Main thread merges shards after all workers complete
|
|
12
|
+
*
|
|
13
|
+
* Benefits:
|
|
14
|
+
* - Main thread isolation: SUT crashes don't crash the CLI
|
|
15
|
+
* - True parallelism: Workers run on separate OS threads
|
|
16
|
+
* - Resource managed: Automatic 75% resource allocation
|
|
17
|
+
* - Fault tolerance: Single worker failure doesn't stop others
|
|
18
|
+
*
|
|
19
|
+
* Dependency Injection:
|
|
20
|
+
* - Logger interface enables testing of log output
|
|
21
|
+
* - WorkerFactory interface enables mocking Worker for testing
|
|
22
|
+
* - WorkerEntryPath interface enables testing worker path resolution
|
|
23
|
+
*/
|
|
24
|
+
import { resolve } from "node:path";
|
|
25
|
+
import { fileURLToPath } from "node:url";
|
|
26
|
+
/**
|
|
27
|
+
* Production logger using console.
|
|
28
|
+
*/
|
|
29
|
+
export class ConsoleLogger {
|
|
30
|
+
log(message) {
|
|
31
|
+
console.log(message);
|
|
32
|
+
}
|
|
33
|
+
debug(message) {
|
|
34
|
+
console.log(message);
|
|
35
|
+
}
|
|
36
|
+
info(message) {
|
|
37
|
+
console.log(message);
|
|
38
|
+
}
|
|
39
|
+
warn(message) {
|
|
40
|
+
console.warn(message);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
import { Worker } from "node:worker_threads";
|
|
44
|
+
/**
|
|
45
|
+
* Production worker factory using node:worker_threads.
|
|
46
|
+
* Registers the tsx loader when spawning workers from TypeScript source.
|
|
47
|
+
*/
|
|
48
|
+
export class WorkerFactory {
|
|
49
|
+
create(workerPath) {
|
|
50
|
+
const execArgv = workerPath.endsWith(".ts") ? ["--import", "tsx"] : [];
|
|
51
|
+
return new Worker(workerPath, { execArgv });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Production path resolver using import.meta.url.
|
|
56
|
+
* Handles both compiled (dist/*.js) and source (src/*.ts via tsx) contexts.
|
|
57
|
+
*/
|
|
58
|
+
export class WorkerEntryPath {
|
|
59
|
+
getWorkerEntryPath() {
|
|
60
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
61
|
+
const __dirname = resolve(__filename, "..");
|
|
62
|
+
const ext = __filename.endsWith(".ts") ? ".ts" : ".js";
|
|
63
|
+
return resolve(__dirname, `worker-entry${ext}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Worker threads executor class with dependency injection.
|
|
68
|
+
*
|
|
69
|
+
* Executes experiments using Node.js worker threads for parallelism.
|
|
70
|
+
* Each worker runs in isolation, preventing SUT crashes from affecting the main process.
|
|
71
|
+
*/
|
|
72
|
+
export class WorkerThreadsExecutor {
|
|
73
|
+
logger;
|
|
74
|
+
workerFactory;
|
|
75
|
+
workerEntryPath;
|
|
76
|
+
baseDir;
|
|
77
|
+
useRegistryManifest;
|
|
78
|
+
constructor(options = {}) {
|
|
79
|
+
this.logger = options.logger ?? new ConsoleLogger();
|
|
80
|
+
this.workerFactory = options.workerFactory ?? new WorkerFactory();
|
|
81
|
+
this.workerEntryPath = options.workerEntryPath ?? new WorkerEntryPath();
|
|
82
|
+
this.baseDir = options.baseDir ?? process.cwd();
|
|
83
|
+
this.useRegistryManifest = options.useRegistryManifest ?? false;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Split runs into batches for parallel processing.
|
|
87
|
+
* @param runs - Runs to distribute
|
|
88
|
+
* @param numberWorkers - Number of worker threads
|
|
89
|
+
* @returns Array of run batches
|
|
90
|
+
*/
|
|
91
|
+
_createBatches(runs, numberWorkers) {
|
|
92
|
+
const batchSize = Math.ceil(runs.length / numberWorkers);
|
|
93
|
+
const batches = [];
|
|
94
|
+
for (let i = 0; i < runs.length; i += batchSize) {
|
|
95
|
+
const batch = runs.slice(i, i + batchSize);
|
|
96
|
+
const batchIndex = Math.floor(i / batchSize);
|
|
97
|
+
const runIds = batch.map((r) => r.runId);
|
|
98
|
+
batches.push({
|
|
99
|
+
index: batchIndex,
|
|
100
|
+
runIds,
|
|
101
|
+
runs: batch,
|
|
102
|
+
firstRunId: batch[0]?.runId ?? "none",
|
|
103
|
+
lastRunId: batch.at(-1)?.runId ?? "none",
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return batches;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Execute runs using multiple worker threads.
|
|
110
|
+
*
|
|
111
|
+
* Each worker writes to its own sharded checkpoint file to avoid race conditions.
|
|
112
|
+
* After all workers complete, results are aggregated and returned.
|
|
113
|
+
*
|
|
114
|
+
* @param runs - Planned runs to execute
|
|
115
|
+
* @param suts - SUT definitions (serialized and passed to workers)
|
|
116
|
+
* @param cases - Case definitions (serialized and passed to workers)
|
|
117
|
+
* @param config - Executor configuration
|
|
118
|
+
* @param options - Worker threads executor options
|
|
119
|
+
* @param checkpointDir - Checkpoint directory for shard files
|
|
120
|
+
* @returns Execution results
|
|
121
|
+
*/
|
|
122
|
+
async execute(runs, suts, cases, config, options = {}, checkpointDir = resolve(process.cwd(), "results/execute")) {
|
|
123
|
+
const workerCount = options.workers ?? 1;
|
|
124
|
+
this.logger.info(`WorkerThreadsExecutor: Spawning ${workerCount} workers for ${runs.length} runs`);
|
|
125
|
+
this.logger.info(`Checkpoint directory: ${checkpointDir}`);
|
|
126
|
+
// Split runs into batches
|
|
127
|
+
const batches = this._createBatches(runs, workerCount);
|
|
128
|
+
// Log batch information
|
|
129
|
+
for (const batch of batches) {
|
|
130
|
+
this.logger.debug(`Batch ${batch.index} has ${batch.runIds.length} runs`);
|
|
131
|
+
this.logger.debug(` First run: ${batch.firstRunId}, Last run: ${batch.lastRunId}`);
|
|
132
|
+
}
|
|
133
|
+
// Get worker entry path
|
|
134
|
+
const workerPath = this.workerEntryPath.getWorkerEntryPath();
|
|
135
|
+
this.logger.debug(`Worker entry path: ${workerPath}`);
|
|
136
|
+
// Spawn workers
|
|
137
|
+
const workerStates = this._spawnWorkers(batches, workerPath, checkpointDir, config, suts, cases);
|
|
138
|
+
// Wait for all workers to complete
|
|
139
|
+
await this._waitForWorkers(workerStates);
|
|
140
|
+
// Aggregate results
|
|
141
|
+
const allResults = [];
|
|
142
|
+
const allErrors = [];
|
|
143
|
+
for (const state of workerStates) {
|
|
144
|
+
allResults.push(...state.results);
|
|
145
|
+
allErrors.push(...state.errors);
|
|
146
|
+
}
|
|
147
|
+
this.logger.info(`All workers completed: ${allResults.length} results, ${allErrors.length} errors`);
|
|
148
|
+
return { results: allResults, errors: allErrors };
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Spawn worker threads for all batches.
|
|
152
|
+
* @param batches - Run batches
|
|
153
|
+
* @param workerPath - Path to worker entry point
|
|
154
|
+
* @param checkpointDir - Checkpoint directory
|
|
155
|
+
* @param config - Executor configuration
|
|
156
|
+
* @param suts - SUT definitions to serialize
|
|
157
|
+
* @param cases - Case definitions to serialize
|
|
158
|
+
* @returns Array of worker states
|
|
159
|
+
*/
|
|
160
|
+
_spawnWorkers(batches, workerPath, checkpointDir, config, suts, cases) {
|
|
161
|
+
const workerStates = [];
|
|
162
|
+
// Serialize SUTs for WorkerMessage
|
|
163
|
+
const serializedSuts = suts.map((sut) => ({
|
|
164
|
+
id: sut.registration.id,
|
|
165
|
+
module: `./dist/suts/${sut.registration.id}.js`,
|
|
166
|
+
exportName: "createSut",
|
|
167
|
+
registration: {
|
|
168
|
+
name: sut.registration.name,
|
|
169
|
+
version: sut.registration.version,
|
|
170
|
+
role: sut.registration.role,
|
|
171
|
+
},
|
|
172
|
+
}));
|
|
173
|
+
// Serialize cases for WorkerMessage
|
|
174
|
+
const serializedCases = cases.map((c) => ({
|
|
175
|
+
caseId: c.case.caseId,
|
|
176
|
+
module: `./dist/cases/${c.case.caseId}.js`,
|
|
177
|
+
exportName: "createCase",
|
|
178
|
+
}));
|
|
179
|
+
for (const batch of batches) {
|
|
180
|
+
const checkpointPath = resolve(checkpointDir, `checkpoint-worker-${String(batch.index).padStart(2, "0")}.json`);
|
|
181
|
+
const worker = this.workerFactory.create(workerPath);
|
|
182
|
+
const state = {
|
|
183
|
+
worker,
|
|
184
|
+
index: batch.index,
|
|
185
|
+
batch,
|
|
186
|
+
checkpointPath,
|
|
187
|
+
completed: false,
|
|
188
|
+
results: [],
|
|
189
|
+
errors: [],
|
|
190
|
+
};
|
|
191
|
+
// Set up message handler
|
|
192
|
+
worker.on("message", (data) => {
|
|
193
|
+
this._handleWorkerMessage(state, data, config);
|
|
194
|
+
});
|
|
195
|
+
// Set up error handler
|
|
196
|
+
worker.on("error", (error) => {
|
|
197
|
+
this.logger.warn(`Worker ${batch.index} error: ${error.message}`);
|
|
198
|
+
state.completed = true;
|
|
199
|
+
// Add error for all runs in this batch
|
|
200
|
+
for (const runId of batch.runIds) {
|
|
201
|
+
state.errors.push({ runId, error: error.message });
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
// Send initial message to worker with serialized SUTs and cases
|
|
205
|
+
const workerMessage = {
|
|
206
|
+
runs: batch.runs.map((run) => ({
|
|
207
|
+
runId: run.runId,
|
|
208
|
+
sutId: run.sutId,
|
|
209
|
+
caseId: run.caseId,
|
|
210
|
+
repetition: run.repetition,
|
|
211
|
+
config: run.config,
|
|
212
|
+
})),
|
|
213
|
+
config: {
|
|
214
|
+
repetitions: config.repetitions,
|
|
215
|
+
seedBase: config.seedBase,
|
|
216
|
+
continueOnError: config.continueOnError,
|
|
217
|
+
timeoutMs: config.timeoutMs,
|
|
218
|
+
collectProvenance: config.collectProvenance,
|
|
219
|
+
},
|
|
220
|
+
baseDir: this.baseDir,
|
|
221
|
+
suts: serializedSuts,
|
|
222
|
+
cases: serializedCases,
|
|
223
|
+
};
|
|
224
|
+
// Add registry manifest if useRegistryManifest is enabled
|
|
225
|
+
if (this.useRegistryManifest) {
|
|
226
|
+
const registryManifest = {
|
|
227
|
+
suts: suts.map((sut) => ({
|
|
228
|
+
id: sut.registration.id,
|
|
229
|
+
name: sut.registration.name,
|
|
230
|
+
version: sut.registration.version,
|
|
231
|
+
role: sut.registration.role,
|
|
232
|
+
config: {},
|
|
233
|
+
tags: [],
|
|
234
|
+
})),
|
|
235
|
+
sharedCode: "", // Registry code not bundled in this implementation
|
|
236
|
+
sutModules: Object.fromEntries(suts.map((sut) => [sut.registration.id, `./dist/suts/${sut.registration.id}.js`])),
|
|
237
|
+
exportName: "createSut",
|
|
238
|
+
};
|
|
239
|
+
workerMessage.registryManifest = registryManifest;
|
|
240
|
+
}
|
|
241
|
+
worker.postMessage(workerMessage);
|
|
242
|
+
workerStates.push(state);
|
|
243
|
+
}
|
|
244
|
+
return workerStates;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Handle a message from a worker.
|
|
248
|
+
* @param state - Worker state
|
|
249
|
+
* @param data - Message data
|
|
250
|
+
* @param config - Executor configuration
|
|
251
|
+
*/
|
|
252
|
+
_handleWorkerMessage(state, data, config) {
|
|
253
|
+
// Use type guards to discriminate the union type
|
|
254
|
+
const isError = (msg) => msg.type === "error";
|
|
255
|
+
const isSuccess = (msg) => msg.type === "done";
|
|
256
|
+
// Handle WorkerErrorMessage
|
|
257
|
+
if (isError(data)) {
|
|
258
|
+
this.logger.warn(`Worker ${state.index} error: ${data.error}`);
|
|
259
|
+
state.completed = true;
|
|
260
|
+
for (const runId of state.batch.runIds) {
|
|
261
|
+
state.errors.push({ runId, error: data.error });
|
|
262
|
+
}
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
// Handle WorkerSuccessMessage
|
|
266
|
+
if (isSuccess(data)) {
|
|
267
|
+
state.results.push(...data.results);
|
|
268
|
+
state.errors.push(...data.errors);
|
|
269
|
+
state.completed = true;
|
|
270
|
+
this.logger.debug(`Worker ${state.index} completed: ${data.results.length} results`);
|
|
271
|
+
// Call onResult callback for each result
|
|
272
|
+
if (config.onResult) {
|
|
273
|
+
for (const result of data.results) {
|
|
274
|
+
try {
|
|
275
|
+
void config.onResult(result);
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
this.logger.warn(`Error in onResult callback: ${String(error)}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Wait for all workers to complete.
|
|
286
|
+
* @param workerStates - Worker states
|
|
287
|
+
* @returns Promise that resolves when all workers complete
|
|
288
|
+
*/
|
|
289
|
+
async _waitForWorkers(workerStates) {
|
|
290
|
+
return new Promise((resolve, reject) => {
|
|
291
|
+
let completedCount = 0;
|
|
292
|
+
const totalWorkers = workerStates.length;
|
|
293
|
+
const checkCompletion = () => {
|
|
294
|
+
completedCount = workerStates.filter((s) => s.completed).length;
|
|
295
|
+
if (completedCount === totalWorkers) {
|
|
296
|
+
clearInterval(interval);
|
|
297
|
+
clearTimeout(timeout);
|
|
298
|
+
resolve();
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
// Poll for completion
|
|
302
|
+
const interval = setInterval(checkCompletion, 100);
|
|
303
|
+
// Timeout after 1 hour
|
|
304
|
+
const timeout = setTimeout(() => {
|
|
305
|
+
clearInterval(interval);
|
|
306
|
+
const incomplete = workerStates.filter((s) => !s.completed).map((s) => s.index);
|
|
307
|
+
reject(new Error(`Worker timeout after 1 hour. Incomplete workers: ${incomplete.join(", ")}`));
|
|
308
|
+
}, 3_600_000);
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Execute runs using multiple worker threads.
|
|
314
|
+
*
|
|
315
|
+
* Each worker writes to its own sharded checkpoint file to avoid race conditions.
|
|
316
|
+
* After all workers complete, results are aggregated and returned.
|
|
317
|
+
*
|
|
318
|
+
* This is a convenience function that creates a WorkerThreadsExecutor with default dependencies.
|
|
319
|
+
* For testing or custom behavior, use the WorkerThreadsExecutor class directly.
|
|
320
|
+
*
|
|
321
|
+
* @param runs - Planned runs to execute
|
|
322
|
+
* @param suts - SUT definitions (serialized and passed to workers)
|
|
323
|
+
* @param cases - Case definitions (serialized and passed to workers)
|
|
324
|
+
* @param config - Executor configuration
|
|
325
|
+
* @param options - Worker threads executor options
|
|
326
|
+
* @returns Execution results
|
|
327
|
+
*/
|
|
328
|
+
export const executeWithWorkerThreads = async (runs, suts, cases, config, options = {}) => {
|
|
329
|
+
const executor = new WorkerThreadsExecutor(options);
|
|
330
|
+
return executor.execute(runs, suts, cases, config, options);
|
|
331
|
+
};
|
|
332
|
+
//# sourceMappingURL=worker-threads-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-threads-executor.js","sourceRoot":"","sources":["../../src/executor/worker-threads-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from "./executor/index.js";
|
|
|
9
9
|
export * from "./collector/index.js";
|
|
10
10
|
export * from "./statistical/index.js";
|
|
11
11
|
export * from "./aggregation/index.js";
|
|
12
|
+
export * from "./evaluators/index.js";
|
|
12
13
|
export * from "./claims/index.js";
|
|
13
14
|
export * from "./robustness/index.js";
|
|
14
15
|
export * from "./renderers/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +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"}
|
|
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,uBAAuB,CAAC;AAGtC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,9 +15,11 @@ export * from "./collector/index.js";
|
|
|
15
15
|
export * from "./statistical/index.js";
|
|
16
16
|
// Aggregation
|
|
17
17
|
export * from "./aggregation/index.js";
|
|
18
|
-
//
|
|
18
|
+
// Evaluators (new extensible evaluation system)
|
|
19
|
+
export * from "./evaluators/index.js";
|
|
20
|
+
// Claims (types only)
|
|
19
21
|
export * from "./claims/index.js";
|
|
20
|
-
// Robustness
|
|
22
|
+
// Robustness (types and perturbations only)
|
|
21
23
|
export * from "./robustness/index.js";
|
|
22
24
|
// Renderers
|
|
23
25
|
export * from "./renderers/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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,
|
|
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,gDAAgD;AAChD,cAAc,uBAAuB,CAAC;AAEtC,sBAAsB;AACtB,cAAc,mBAAmB,CAAC;AAElC,4CAA4C;AAC5C,cAAc,uBAAuB,CAAC;AAEtC,YAAY;AACZ,cAAc,sBAAsB,CAAC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { AggregatedResult } from "../types/aggregate.js";
|
|
8
8
|
import type { ClaimEvaluation } from "../types/claims.js";
|
|
9
|
+
import type { EvaluationOutput } from "../types/evaluator.js";
|
|
9
10
|
import type { ClaimStatusDisplay, Renderer, RenderOutput, TableRenderSpec } from "./types.js";
|
|
10
11
|
/**
|
|
11
12
|
* Options for LaTeX rendering.
|
|
@@ -36,6 +37,65 @@ export declare class LaTeXRenderer implements Renderer {
|
|
|
36
37
|
* @param specs
|
|
37
38
|
*/
|
|
38
39
|
renderAll(aggregates: AggregatedResult[], specs: TableRenderSpec[]): RenderOutput[];
|
|
40
|
+
/**
|
|
41
|
+
* Render evaluation output (generic for all evaluation types).
|
|
42
|
+
* Dispatches to type-specific rendering methods.
|
|
43
|
+
*
|
|
44
|
+
* @param evaluation - Evaluation output from any evaluator
|
|
45
|
+
* @returns Rendered output
|
|
46
|
+
*/
|
|
47
|
+
renderEvaluation<T>(evaluation: EvaluationOutput<T>): RenderOutput;
|
|
48
|
+
/**
|
|
49
|
+
* Render claims evaluation output.
|
|
50
|
+
*
|
|
51
|
+
* @param evaluation - Claims evaluation output
|
|
52
|
+
* @returns Rendered output
|
|
53
|
+
*/
|
|
54
|
+
private renderClaimsEvaluation;
|
|
55
|
+
/**
|
|
56
|
+
* Render robustness evaluation output.
|
|
57
|
+
*
|
|
58
|
+
* @param evaluation - Robustness evaluation output
|
|
59
|
+
* @returns Rendered output
|
|
60
|
+
*/
|
|
61
|
+
private renderRobustnessEvaluation;
|
|
62
|
+
/**
|
|
63
|
+
* Render metrics evaluation output.
|
|
64
|
+
*
|
|
65
|
+
* @param evaluation - Metrics evaluation output
|
|
66
|
+
* @returns Rendered output
|
|
67
|
+
*/
|
|
68
|
+
private renderMetricsEvaluation;
|
|
69
|
+
/**
|
|
70
|
+
* Render exploratory evaluation output.
|
|
71
|
+
*
|
|
72
|
+
* @param evaluation - Exploratory evaluation output
|
|
73
|
+
* @returns Rendered output
|
|
74
|
+
*/
|
|
75
|
+
private renderExploratoryEvaluation;
|
|
76
|
+
/**
|
|
77
|
+
* Render SUT rankings table.
|
|
78
|
+
*/
|
|
79
|
+
private renderSutRankings;
|
|
80
|
+
/**
|
|
81
|
+
* Render pairwise comparisons table.
|
|
82
|
+
*/
|
|
83
|
+
private renderPairwiseComparisons;
|
|
84
|
+
/**
|
|
85
|
+
* Render case-class effects table.
|
|
86
|
+
*/
|
|
87
|
+
private renderCaseClassEffects;
|
|
88
|
+
/**
|
|
89
|
+
* Render metric correlations table.
|
|
90
|
+
*/
|
|
91
|
+
private renderMetricCorrelations;
|
|
92
|
+
/**
|
|
93
|
+
* Render custom evaluation output (generic fallback).
|
|
94
|
+
*
|
|
95
|
+
* @param evaluation - Custom evaluation output
|
|
96
|
+
* @returns Rendered output
|
|
97
|
+
*/
|
|
98
|
+
private renderCustomEvaluation;
|
|
39
99
|
/**
|
|
40
100
|
* Render claim evaluation summary.
|
|
41
101
|
* @param evaluations
|
|
@@ -1 +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"}
|
|
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,gBAAgB,EAKhB,MAAM,uBAAuB,CAAC;AAC/B,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;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY;IAoBlE;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IA+ClC;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAmE/B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAwCnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAuCjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuC9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqChC;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;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"}
|