# Extension points — dubzzz/fast-check

> Canonical page: https://codevetter.com/unpack/fast-check/extension-points

# Extension points — dubzzz/fast-check

Scanned commit ecf7193810d1057253808105444e147d948051a1 (2026-10-01). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Most extension mechanisms are typed APIs and composable factories. Arbitraries define generation and shrinking, plugins wrap execution, and custom RNG factories control randomness. Commands and scheduler hooks adapt testing to stateful or asynchronous systems. Documentation and build configuration provide additional repository-level extension surfaces.
- Custom Arbitrary<T> implementations provide generate, canShrinkWithoutContext, and shrink, returning Value objects with context; new public generators are explicitly exported through fast-check.ts. — [packages/fast-check/src/check/arbitrary/definition/Arbitrary.ts#L14-L56](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/arbitrary/definition/Arbitrary.ts#L14-L56) [packages/fast-check/src/check/arbitrary/definition/Value.ts#L43-L60](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/arbitrary/definition/Value.ts#L43-L60) [packages/fast-check/src/fast-check.ts#L185-L189](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/fast-check.ts#L185-L189)
- Arbitrary.filter, map, and chain are composition factories; map accepts an optional unmapper for user-provided values, while chain retains original/chained shrink context and cloned randomness. — [packages/fast-check/src/check/arbitrary/definition/Arbitrary.ts#L99-L142](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/arbitrary/definition/Arbitrary.ts#L99-L142) [packages/fast-check/src/check/arbitrary/definition/Arbitrary.ts#L146-L166](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/arbitrary/definition/Arbitrary.ts#L146-L166) [packages/fast-check/src/check/arbitrary/definition/Arbitrary.ts#L172-L209](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/arbitrary/definition/Arbitrary.ts#L172-L209)
- Plugin builders receive their execution index and a shared symbol-keyed PluginStore; instances can implement decorateGenerate, decorateRun, onAllRunsComplete, and afterAll. — [packages/fast-check/src/check/plugin/Plugin.ts#L11-L24](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/plugin/Plugin.ts#L11-L24) [packages/fast-check/src/check/plugin/Plugin.ts#L37-L79](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/plugin/Plugin.ts#L37-L79) [packages/fast-check/src/check/plugin/Plugin.ts#L82-L95](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/plugin/Plugin.ts#L82-L95)
- installGlobalPlugin registers outer wrappers for every runner, while per-call plugins remain local; reporting plugins can throw in onAllRunsComplete to override default assertion reporting, and the older reporter option remains supported. — [packages/fast-check/src/check/runner/configuration/GlobalPlugins.ts#L5-L27](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/runner/configuration/GlobalPlugins.ts#L5-L27) [packages/fast-check/src/check/runner/Runner.ts#L100-L124](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/runner/Runner.ts#L100-L124) [website/docs/configuration/custom-reports.md#L34-L74](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/website/docs/configuration/custom-reports.md#L34-L74)
- randomType accepts a seeded generator factory; qualification validates exposed min/max bounds and adapts generators when needed, allowing alternatives to the default xorshift128plus. — [packages/fast-check/src/check/runner/configuration/QualifiedParameters.ts#L75-L81](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/runner/configuration/QualifiedParameters.ts#L75-L81) [packages/fast-check/src/check/runner/configuration/QualifiedParameters.ts#L97-L109](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/runner/configuration/QualifiedParameters.ts#L97-L109)
- Model runners accept user setup functions and iterable commands with check/run behavior; SchedulerImplem accepts a cloneable TaskSelector and act function, with additional customAct wrappers per scheduled task or wait. — [packages/fast-check/src/check/model/ModelRunner.ts#L12-L19](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/model/ModelRunner.ts#L12-L19) [packages/fast-check/src/check/model/ModelRunner.ts#L47-L93](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/model/ModelRunner.ts#L47-L93) [packages/fast-check/src/arbitrary/_internals/implementations/SchedulerImplem.ts#L33-L58](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/arbitrary/_internals/implementations/SchedulerImplem.ts#L33-L58) [packages/fast-check/src/arbitrary/_internals/implementations/SchedulerImplem.ts#L131-L146](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/arbitrary/_internals/implementations/SchedulerImplem.ts#L131-L146)
- Generated objects can expose cloneMethod for repeatable access and toStringMethod/asyncToStringMethod for custom diagnostic serialization; Value and stringify explicitly dispatch through those contracts. — [packages/fast-check/src/check/arbitrary/definition/Value.ts#L48-L70](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/check/arbitrary/definition/Value.ts#L48-L70) [packages/fast-check/src/utils/stringify.ts#L1-L63](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/utils/stringify.ts#L1-L63) [packages/fast-check/src/utils/stringify.ts#L123-L136](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/packages/fast-check/src/utils/stringify.ts#L123-L136)
- Repository extensions can reuse buildConfigFor with package export mappings; website documentation is discovered through an autogenerated sidebar, and Docusaurus plugins add PWA, TypeDoc, and LLM-readable documentation outputs. — [rolldown.common.config.js#L8-L19](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/rolldown.common.config.js#L8-L19) [website/sidebars.js#L14-L17](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/website/sidebars.js#L14-L17) [website/docusaurus.config.ts#L187-L191](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/website/docusaurus.config.ts#L187-L191) [website/docusaurus.config.ts#L242-L272](https://github.com/dubzzz/fast-check/blob/ecf7193810d1057253808105444e147d948051a1/website/docusaurus.config.ts#L242-L272)

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)
