# Data flow — stryker-mutator/stryker-js

> Canonical page: https://codevetter.com/unpack/stryker-js/data-flow

# Data flow — stryker-mutator/stryker-js

Scanned commit f2a49ff02437e3b7fe2682dba808ac93039895bf (2026-09-11). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Configuration and filesystem selection establish the project model before source transformation begins. Instrumentation produces modified files and mutant metadata, while the baseline test runner supplies test results, coverage, and timing. The planner converts these inputs into early results or executable run options, and the executor streams outcomes into reporting. Reports preserve original source and test relationships, and incremental mode feeds that persisted information into later planning.
- ConfigReader loads a discovered or explicit JSON/JavaScript configuration, deep-merges CLI options with precedence, and validates it; preparation adds plugin schemas, validates again, then deep-freezes options. — [packages/core/src/config/config-reader.ts#L49-L80](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/config/config-reader.ts#L49-L80) [packages/core/src/process/1-prepare-executor.ts#L70-L95](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/1-prepare-executor.ts#L70-L95)
- ProjectReader crawls from process.cwd(), applies ordered ignore rules, resolves mutation/test descriptions, reads an optional incremental report, and constructs Project. — [packages/core/src/fs/project-reader.ts#L94-L108](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/fs/project-reader.ts#L94-L108) [packages/core/src/fs/project-reader.ts#L375-L409](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/fs/project-reader.ts#L375-L409)
- ProjectFile.toInstrumenterFile supplies name, mutation scope, and current text; Instrumenter parses each file, transforms its AST, prints instrumented text, and returns files plus API mutants. — [packages/core/src/fs/project-file.ts#L36-L45](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/fs/project-file.ts#L36-L45) [packages/instrumenter/src/instrumenter.ts#L45-L81](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/instrumenter/src/instrumenter.ts#L45-L81)
- MutantInstrumenterExecutor stores generated text in ProjectFile, runs preprocessors, initializes the checker pool, then initializes Sandbox; unchanged sandbox files are copied while changed text is written. — [packages/core/src/process/2-mutant-instrumenter-executor.ts#L75-L105](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/2-mutant-instrumenter-executor.ts#L75-L105) [packages/core/src/process/2-mutant-instrumenter-executor.ts#L117-L120](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/2-mutant-instrumenter-executor.ts#L117-L120) [packages/core/src/fs/project-file.ts#L28-L32](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/fs/project-file.ts#L28-L32)
- DryRunExecutor passes sandbox mutation/test paths, coverage mode, bail preference, and timeout to dryRun; it remaps returned test filenames and derives net time and nonnegative overhead. — [packages/core/src/process/3-dry-run-executor.ts#L152-L180](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/3-dry-run-executor.ts#L152-L180) [packages/core/src/process/3-dry-run-executor.ts#L188-L205](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/3-dry-run-executor.ts#L188-L205) [packages/core/src/process/3-dry-run-executor.ts#L231-L243](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/3-dry-run-executor.ts#L231-L243)
- MutantTestPlanner produces covered-test filters or full-test plans; timeout equals timeoutFactor × netTime + timeoutMS + overhead, hitLimit is 100 × baseline hits, and hot swapping requires a filter and nonstatic coverage. — [packages/core/src/mutants/mutant-test-planner.ts#L100-L136](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/mutants/mutant-test-planner.ts#L100-L136) [packages/core/src/mutants/mutant-test-planner.ts#L169-L218](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/mutants/mutant-test-planner.ts#L169-L218) [packages/core/src/mutants/mutant-test-planner.ts#L30-L37](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/mutants/mutant-test-planner.ts#L30-L37)
- Mutation execution separates early results, checker failures, empty-filter NoCoverage results, and test-runner outcomes, merges them into an array, and calls reportAll before reporter.wrapUp. — [packages/core/src/process/4-mutation-test-executor.ts#L102-L120](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/4-mutation-test-executor.ts#L102-L120) [packages/core/src/process/4-mutation-test-executor.ts#L124-L165](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/4-mutation-test-executor.ts#L124-L165)
- Report assembly remaps test IDs, includes original mutation/test sources, config, cwd, thresholds, and framework metadata; incremental loading converts report positions back to zero-based internal coordinates before diffing. — [packages/core/src/reporters/mutation-test-report-helper.ts#L230-L254](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/reporters/mutation-test-report-helper.ts#L230-L254) [packages/core/src/reporters/mutation-test-report-helper.ts#L314-L339](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/reporters/mutation-test-report-helper.ts#L314-L339) [packages/core/src/fs/project-reader.ts#L418-L452](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/fs/project-reader.ts#L418-L452) [packages/core/src/fs/project-reader.ts#L487-L492](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/fs/project-reader.ts#L487-L492)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
