# Extension points — stryker-mutator/stryker-js

> Canonical page: https://codevetter.com/unpack/stryker-js/extension-points

# Extension points — 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.

The primary supported extension mechanism is a typed plugin contract for runners, checkers, reporters, and ignorers. Plugin modules contribute declarations and optional validation schemas, and typed-inject constructs their instances. Internal registries and factory functions offer separate seams for mutation operators, parsers, preprocessors, and initialization presets. These internal seams should not be confused with public plugin categories.
- PluginInterfaces maps Reporter, TestRunner, Checker, and Ignore kinds to their contracts; declareClassPlugin, declareFactoryPlugin, and declareValuePlugin construct typed declarations. — [packages/api/src/plugin/plugins.ts#L78-L94](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/api/src/plugin/plugins.ts#L78-L94) [packages/api/src/plugin/plugins.ts#L103-L147](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/api/src/plugin/plugins.ts#L103-L147)
- PluginLoader accepts module names, file paths/URLs, and simple wildcard expressions, collecting strykerPlugins and strykerValidationSchema; preparation combines configured, framework, reporter, and appendPlugins descriptors. — [packages/core/src/di/plugin-loader.ts#L53-L59](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/di/plugin-loader.ts#L53-L59) [packages/core/src/di/plugin-loader.ts#L169-L182](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/di/plugin-loader.ts#L169-L182) [packages/core/src/process/1-prepare-executor.ts#L70-L85](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/1-prepare-executor.ts#L70-L85)
- PluginCreator resolves names case-insensitively within a kind and invokes the factory/class through the injector or returns a value; missing registrations produce diagnostic errors listing loaded plugins. — [packages/core/src/di/plugin-creator.ts#L28-L64](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/di/plugin-creator.ts#L28-L64)
- A TestRunner implements capabilities, dryRun, and mutantRun with optional init/dispose; createTestRunnerFactory wraps plugin runners with retry, reload, reuse-limit, timeout, and child-process layers. — [packages/api/src/test-runner/test-runner.ts#L6-L11](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/api/src/test-runner/test-runner.ts#L6-L11) [packages/core/src/test-runner/index.ts#L47-L72](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/test-runner/index.ts#L47-L72)
- A Checker implements init and check plus optional group; MutationTestExecutor applies configured checkers in sequence, buffering/grouping mutants and converting failed checks to early results. — [packages/api/src/check/checker.ts#L5-L21](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/api/src/check/checker.ts#L5-L21) [packages/core/src/process/4-mutation-test-executor.ts#L181-L197](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/4-mutation-test-executor.ts#L181-L197) [packages/core/src/process/4-mutation-test-executor.ts#L227-L250](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/process/4-mutation-test-executor.ts#L227-L250)
- Reporter hooks cover baseline completion, plan readiness, individual mutants, final report/metrics, and asynchronous wrapUp; the built-in reporter list demonstrates class and factory registrations. — [packages/api/src/report/reporter.ts#L11-L46](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/api/src/report/reporter.ts#L11-L46) [packages/core/src/reporters/index.ts#L19-L39](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/reporters/index.ts#L19-L39)
- NodeMutator supplies a name, iterable AST replacements, and optional subtree filter; allMutators registers operators, and babelTransform invokes filters on exit before mutant placement. — [packages/instrumenter/src/mutators/node-mutator.ts#L9-L15](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/instrumenter/src/mutators/node-mutator.ts#L9-L15) [packages/instrumenter/src/mutators/mutate.ts#L20-L38](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/instrumenter/src/mutators/mutate.ts#L20-L38) [packages/instrumenter/src/transformers/babel-transformer.ts#L105-L151](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/instrumenter/src/transformers/babel-transformer.ts#L105-L151)
- Additional formats require parser dispatch changes; preprocessing composes DisableTypeChecksPreprocessor and TSConfigPreprocessor, while createInitializers explicitly registers Angular, React, Svelte, and Vue presets. — [packages/instrumenter/src/parsers/create-parser.ts#L31-L43](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/instrumenter/src/parsers/create-parser.ts#L31-L43) [packages/instrumenter/src/parsers/create-parser.ts#L55-L75](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/instrumenter/src/parsers/create-parser.ts#L55-L75) [packages/core/src/sandbox/create-preprocessor.ts#L17-L26](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/sandbox/create-preprocessor.ts#L17-L26) [packages/core/src/initializer/custom-initializers/index.ts#L21-L29](https://github.com/stryker-mutator/stryker-js/blob/f2a49ff02437e3b7fe2682dba808ac93039895bf/packages/core/src/initializer/custom-initializers/index.ts#L21-L29)

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)
