CodeVetter · Repo Unpack · System map
stryker-mutator/stryker-js
The repository builds and publishes a family of Node.js packages coordinated by pnpm, Lerna, and TypeScript project references. Core owns the CLI and execution lifecycle, while the API and instrumenter define integration contracts and source transformation. Runtime work crosses parent-process, worker-process, filesystem, and optional network boundaries. Persistence consists of project copies, backups, and report files in the inspected paths.
- The executable sets process.title to 'stryker' and invokes StrykerCli.run(); the core package exposes its compiled index and installs bin/stryker.js as the stryker command.
- The parent is a private ESM package requiring Node >=22 and pnpm@11.5.1; pnpm workspaces include packages, e2e, and individual e2e fixture packages.
- TypeScript project references separate core, API, util, instrumenter, create-stryker, eight runner packages, typescript-checker, and test-helpers.
- Stryker.run executes preparation, instrumentation, baseline testing, and mutation execution sequentially through typed-inject contexts; runMutationTest disposes its root injector in finally.
- The public API exports separate check, core, ignore, logging, plugin, report, and test-runner entrypoints rather than one root export.
- ChildProcessProxy forks a worker with configurable Node arguments and inherited environment, then sends options, file descriptions, plugin paths, module/export identity, and working directory through IPC.
- ProjectFile caches original and current content independently; FileSystem forwards Node filesystem operations through an RxJS queue limited to 256 concurrent actions.
- Root build generates schemas/types before tsc -b, tests run through Lerna, and tag-triggered publishing builds packages before lerna publish from-git with npm provenance permission.