@systemfsoftware/stryker-js-vitest-runner 4.0.4 → 6.0.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/CHANGELOG.md CHANGED
@@ -1,5 +1,72 @@
1
1
  # @systemfsoftware/stryker-js-vitest-runner
2
2
 
3
+ ## 6.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - `testRunner`, `checkers`, and `ignorers` now carry the plugin and its options together.
8
+
9
+ - `testRunner` is `'command'`, `'vm'`, or `{ plugin, options?, nodeArgs? }`.
10
+ - `checkers` is `{ plugin, options?, nodeArgs? }[]`. Each checker is its own plugin.
11
+ - `ignorers` is plugin file URLs. Every ignorer those modules export runs. There is no separate name list.
12
+ - Put Vitest settings on `testRunner.options` (`configFile`, `dir`, `related`). There is no `vitest` block.
13
+ - Put TypeScript checker settings on that checker's `options` (`prioritizePerformanceOverAccuracy`). There is no `typescriptChecker` block.
14
+
15
+ Before:
16
+
17
+ ```ts
18
+ export default defineConfig({
19
+ testRunner: 'vitest',
20
+ checkers: ['typescript'],
21
+ plugins: [
22
+ import.meta.resolve('@systemfsoftware/stryker-js-vitest-runner'),
23
+ import.meta.resolve('@systemfsoftware/stryker-js-typescript-checker'),
24
+ import.meta.resolve('@systemfsoftware/stryker-ignorer-effect-schema-declarations'),
25
+ ],
26
+ vitest: { configFile: 'vitest.config.ts' },
27
+ typescriptChecker: { prioritizePerformanceOverAccuracy: true },
28
+ ignorers: ['effect-schema-declarations'],
29
+ })
30
+ ```
31
+
32
+ After:
33
+
34
+ ```ts
35
+ export default defineConfig({
36
+ testRunner: {
37
+ plugin: import.meta.resolve('@systemfsoftware/stryker-js-vitest-runner'),
38
+ options: { configFile: 'vitest.config.ts' },
39
+ },
40
+ checkers: [
41
+ {
42
+ plugin: import.meta.resolve('@systemfsoftware/stryker-js-typescript-checker'),
43
+ options: { prioritizePerformanceOverAccuracy: true },
44
+ },
45
+ ],
46
+ ignorers: [
47
+ import.meta.resolve('@systemfsoftware/stryker-ignorer-effect-schema-declarations'),
48
+ ],
49
+ })
50
+ ```
51
+
52
+ ## 5.0.0
53
+
54
+ ### Major Changes
55
+
56
+ - Every module Stryker loads — config files, `extends` targets, plugins, and the vitest runner's own vitest — now resolves and imports through Node's native ECMAScript module system: `import.meta.resolve` resolves each bare specifier from the consuming module, and dynamic `import()` loads the resolved URL. The package's `exports` map (or a legacy `main`) selects the entry file, ESM-only plugin packages load, and no require-based loader ships in any package. An unresolvable bare specifier warns with a machine-readable reason; the run fails at prepare only when nothing provides the configured runner or checker. Node.js 22.18.0 or later is required.
57
+
58
+ To migrate, install Node.js 22.18.0 or later. Bare plugin specifiers keep working, but a plugin package must publish an ES module entry through `exports` or `main`, and the plugin must be resolvable from where Stryker itself is installed.
59
+
60
+ - The plugin system now runs each configured TestRunner/Checker/Reporter plugin in its own spawned process over an @effect/rpc wire: plugins load from the project's config-declared specifiers (no glob discovery), boundary failures are typed errors, and plugin spans link into the host trace. Breaking: the in-process plugin Layer contract is removed.
61
+
62
+ ### Patch Changes
63
+
64
+ - Maintenance release. Every published entry point, export, option, and behaviour is exactly as it was.
65
+
66
+ - effect peer range widens to ^4.0.0-rc.112; repository metadata now points at stryker-js-effect
67
+
68
+ - The worker environment now arrives on the spawn params instead of mid-init self-mutation, and the setup filename uses a uuid instead of the process id.
69
+
3
70
  ## 4.0.4
4
71
 
5
72
  ### Patch Changes
package/README.md CHANGED
@@ -1,34 +1,77 @@
1
1
  # @systemfsoftware/stryker-js-vitest-runner
2
2
 
3
- Vitest test-runner plugin for Stryker
3
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](../../LICENSE)
4
+ [![npm version](https://img.shields.io/npm/v/@systemfsoftware/stryker-js-vitest-runner.svg)](https://www.npmjs.com/package/@systemfsoftware/stryker-js-vitest-runner)
5
+
6
+ Vitest test-runner plugin for Stryker mutation testing. Provides fast in-process sandboxing, per-test coverage tracking, and native TypeScript support.
7
+
8
+ ## Prerequisites
9
+
10
+ - Node.js `>=22.18.0`
11
+ - Vitest `>=2.0.0`
12
+ - `@systemfsoftware/stryker-js` `>=5.0.0`
4
13
 
5
14
  ## Install
6
15
 
7
- ```sh
8
- pnpm add @systemfsoftware/stryker-js-vitest-runner 'vitest@>=2.0.0'
16
+ ```bash
17
+ pnpm add -D @systemfsoftware/stryker-js-vitest-runner vitest
9
18
  ```
10
19
 
11
- Those are peer dependencies: this package declares them but does not install them, so one copy is shared with the rest of your project.
20
+ ## Setup in `stryker.config.ts`
12
21
 
13
- ## Entry points
22
+ Plugins in Stryker 5.0 are resolved as `file:` URLs via `import.meta.resolve()`:
14
23
 
15
- - `@systemfsoftware/stryker-js-vitest-runner`
16
- - `@systemfsoftware/stryker-js-vitest-runner/stryker-setup`
24
+ ```ts
25
+ import { defineConfig } from '@systemfsoftware/stryker-js/config'
26
+
27
+ export default defineConfig({
28
+ testRunner: 'vitest',
29
+ plugins: [
30
+ import.meta.resolve('@systemfsoftware/stryker-js-vitest-runner'),
31
+ ],
32
+ mutate: [
33
+ 'src/**/*.ts',
34
+ '!src/**/*.test.ts',
35
+ '!src/**/*.d.ts',
36
+ ],
37
+ })
38
+ ```
17
39
 
18
- ## Use
40
+ ## How It Works
19
41
 
20
- Name the plugin in your Stryker configuration:
42
+ 1. **Dry-run phase**: The Vitest runner executes your existing test suite, collecting per-test execution profiles and code coverage data.
43
+ 2. **Mutant sandbox**: During the mutation test phase, worker processes run only the subset of tests that cover each mutant, terminating early on test failure to maximize speed.
44
+ 3. **Vitest Config**: By default, Stryker automatically discovers your `vitest.config.ts` or `vite.config.ts`. If your configuration is located elsewhere, specify it in your config:
21
45
 
22
- ```json
23
- {
24
- "plugins": ["@systemfsoftware/stryker-js-vitest-runner"]
25
- }
46
+ ```ts
47
+ export default defineConfig({
48
+ testRunner: 'vitest',
49
+ plugins: [import.meta.resolve('@systemfsoftware/stryker-js-vitest-runner')],
50
+ vitest: {
51
+ configFile: 'vitest.unit.config.ts',
52
+ },
53
+ })
26
54
  ```
27
55
 
28
- ## API
56
+ ## In-Source Tests (`import.meta.vitest`)
29
57
 
30
- The public surface is generated from the source and versioned with the package: [`etc/stryker-js-vitest-runner.api.md`](./etc/stryker-js-vitest-runner.api.md).
58
+ If your project uses in-source testing with `if (import.meta.vitest)` blocks, add the companion ignorer plugin so unreachable test mutants are excluded from your score:
59
+
60
+ ```bash
61
+ pnpm add -D @systemfsoftware/stryker-ignorer-in-source-vitest-block
62
+ ```
63
+
64
+ ```ts
65
+ export default defineConfig({
66
+ testRunner: {
67
+ plugin: import.meta.resolve('@systemfsoftware/stryker-js-vitest-runner'),
68
+ },
69
+ ignorers: [
70
+ import.meta.resolve('@systemfsoftware/stryker-ignorer-in-source-vitest-block'),
71
+ ],
72
+ })
73
+ ```
31
74
 
32
75
  ## License
33
76
 
34
- Apache-2.0. Part of [systemfsoftware](https://github.com/systemfsoftware/systemfsoftware/tree/main/packages/stryker-js/vitest-runner#readme).
77
+ [Apache-2.0](../../LICENSE)
@@ -0,0 +1,10 @@
1
+ import { i as __require, r as __commonJSMin } from "./main.mjs";
2
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.2.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js
3
+ var require_execAsync = /* @__PURE__ */ __commonJSMin(((exports) => {
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.execAsync = void 0;
6
+ const child_process = __require("child_process");
7
+ exports.execAsync = __require("util").promisify(child_process.exec);
8
+ }));
9
+ //#endregion
10
+ export { require_execAsync as t };
@@ -0,0 +1,10 @@
1
+ import { i as __require, r as __commonJSMin } from "./main.mjs";
2
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.11.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js
3
+ var require_execAsync = /* @__PURE__ */ __commonJSMin(((exports) => {
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.execAsync = void 0;
6
+ const child_process = __require("child_process");
7
+ exports.execAsync = __require("util").promisify(child_process.exec);
8
+ }));
9
+ //#endregion
10
+ export { require_execAsync as t };
@@ -0,0 +1,26 @@
1
+ import { a as __toCommonJS, i as __require, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ import { t as require_execAsync } from "./execAsync-zBkwnfr9.mjs";
3
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.11.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js
4
+ var require_getMachineId_bsd = /* @__PURE__ */ __commonJSMin(((exports) => {
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getMachineId = void 0;
7
+ const fs_1 = __require("fs");
8
+ const execAsync_1 = require_execAsync();
9
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
10
+ async function getMachineId() {
11
+ try {
12
+ return (await fs_1.promises.readFile("/etc/hostid", { encoding: "utf8" })).trim();
13
+ } catch (e) {
14
+ api_1.diag.debug(`error reading machine id: ${e}`);
15
+ }
16
+ try {
17
+ return (await (0, execAsync_1.execAsync)("kenv -q smbios.system.uuid")).stdout.trim();
18
+ } catch (e) {
19
+ api_1.diag.debug(`error reading machine id: ${e}`);
20
+ }
21
+ }
22
+ exports.getMachineId = getMachineId;
23
+ }));
24
+ //#endregion
25
+ export default require_getMachineId_bsd();
26
+ export {};
@@ -0,0 +1,26 @@
1
+ import { a as __toCommonJS, i as __require, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ import { t as require_execAsync } from "./execAsync-CUNMu62l.mjs";
3
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.2.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js
4
+ var require_getMachineId_bsd = /* @__PURE__ */ __commonJSMin(((exports) => {
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getMachineId = void 0;
7
+ const fs_1 = __require("fs");
8
+ const execAsync_1 = require_execAsync();
9
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
10
+ async function getMachineId() {
11
+ try {
12
+ return (await fs_1.promises.readFile("/etc/hostid", { encoding: "utf8" })).trim();
13
+ } catch (e) {
14
+ api_1.diag.debug(`error reading machine id: ${e}`);
15
+ }
16
+ try {
17
+ return (await (0, execAsync_1.execAsync)("kenv -q smbios.system.uuid")).stdout.trim();
18
+ } catch (e) {
19
+ api_1.diag.debug(`error reading machine id: ${e}`);
20
+ }
21
+ }
22
+ exports.getMachineId = getMachineId;
23
+ }));
24
+ //#endregion
25
+ export default require_getMachineId_bsd();
26
+ export {};
@@ -0,0 +1,23 @@
1
+ import { a as __toCommonJS, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ import { t as require_execAsync } from "./execAsync-CUNMu62l.mjs";
3
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.2.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js
4
+ var require_getMachineId_darwin = /* @__PURE__ */ __commonJSMin(((exports) => {
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getMachineId = void 0;
7
+ const execAsync_1 = require_execAsync();
8
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
9
+ async function getMachineId() {
10
+ try {
11
+ const idLine = (await (0, execAsync_1.execAsync)("ioreg -rd1 -c \"IOPlatformExpertDevice\"")).stdout.split("\n").find((line) => line.includes("IOPlatformUUID"));
12
+ if (!idLine) return;
13
+ const parts = idLine.split("\" = \"");
14
+ if (parts.length === 2) return parts[1].slice(0, -1);
15
+ } catch (e) {
16
+ api_1.diag.debug(`error reading machine id: ${e}`);
17
+ }
18
+ }
19
+ exports.getMachineId = getMachineId;
20
+ }));
21
+ //#endregion
22
+ export default require_getMachineId_darwin();
23
+ export {};
@@ -0,0 +1,23 @@
1
+ import { a as __toCommonJS, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ import { t as require_execAsync } from "./execAsync-zBkwnfr9.mjs";
3
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.11.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js
4
+ var require_getMachineId_darwin = /* @__PURE__ */ __commonJSMin(((exports) => {
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getMachineId = void 0;
7
+ const execAsync_1 = require_execAsync();
8
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
9
+ async function getMachineId() {
10
+ try {
11
+ const idLine = (await (0, execAsync_1.execAsync)("ioreg -rd1 -c \"IOPlatformExpertDevice\"")).stdout.split("\n").find((line) => line.includes("IOPlatformUUID"));
12
+ if (!idLine) return;
13
+ const parts = idLine.split("\" = \"");
14
+ if (parts.length === 2) return parts[1].slice(0, -1);
15
+ } catch (e) {
16
+ api_1.diag.debug(`error reading machine id: ${e}`);
17
+ }
18
+ }
19
+ exports.getMachineId = getMachineId;
20
+ }));
21
+ //#endregion
22
+ export default require_getMachineId_darwin();
23
+ export {};
@@ -0,0 +1,19 @@
1
+ import { a as __toCommonJS, i as __require, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.2.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js
3
+ var require_getMachineId_linux = /* @__PURE__ */ __commonJSMin(((exports) => {
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.getMachineId = void 0;
6
+ const fs_1 = __require("fs");
7
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
8
+ async function getMachineId() {
9
+ for (const path of ["/etc/machine-id", "/var/lib/dbus/machine-id"]) try {
10
+ return (await fs_1.promises.readFile(path, { encoding: "utf8" })).trim();
11
+ } catch (e) {
12
+ api_1.diag.debug(`error reading machine id: ${e}`);
13
+ }
14
+ }
15
+ exports.getMachineId = getMachineId;
16
+ }));
17
+ //#endregion
18
+ export default require_getMachineId_linux();
19
+ export {};
@@ -0,0 +1,19 @@
1
+ import { a as __toCommonJS, i as __require, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.11.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js
3
+ var require_getMachineId_linux = /* @__PURE__ */ __commonJSMin(((exports) => {
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.getMachineId = void 0;
6
+ const fs_1 = __require("fs");
7
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
8
+ async function getMachineId() {
9
+ for (const path of ["/etc/machine-id", "/var/lib/dbus/machine-id"]) try {
10
+ return (await fs_1.promises.readFile(path, { encoding: "utf8" })).trim();
11
+ } catch (e) {
12
+ api_1.diag.debug(`error reading machine id: ${e}`);
13
+ }
14
+ }
15
+ exports.getMachineId = getMachineId;
16
+ }));
17
+ //#endregion
18
+ export default require_getMachineId_linux();
19
+ export {};
@@ -0,0 +1,14 @@
1
+ import { a as __toCommonJS, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.11.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js
3
+ var require_getMachineId_unsupported = /* @__PURE__ */ __commonJSMin(((exports) => {
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.getMachineId = void 0;
6
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
7
+ async function getMachineId() {
8
+ api_1.diag.debug("could not read machine-id: unsupported platform");
9
+ }
10
+ exports.getMachineId = getMachineId;
11
+ }));
12
+ //#endregion
13
+ export default require_getMachineId_unsupported();
14
+ export {};
@@ -0,0 +1,14 @@
1
+ import { a as __toCommonJS, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.2.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js
3
+ var require_getMachineId_unsupported = /* @__PURE__ */ __commonJSMin(((exports) => {
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.getMachineId = void 0;
6
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
7
+ async function getMachineId() {
8
+ api_1.diag.debug("could not read machine-id: unsupported platform");
9
+ }
10
+ exports.getMachineId = getMachineId;
11
+ }));
12
+ //#endregion
13
+ export default require_getMachineId_unsupported();
14
+ export {};
@@ -0,0 +1,25 @@
1
+ import { a as __toCommonJS, i as __require, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ import { t as require_execAsync } from "./execAsync-zBkwnfr9.mjs";
3
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.11.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js
4
+ var require_getMachineId_win = /* @__PURE__ */ __commonJSMin(((exports) => {
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getMachineId = void 0;
7
+ const process = __require("process");
8
+ const execAsync_1 = require_execAsync();
9
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
10
+ async function getMachineId() {
11
+ const args = "QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid";
12
+ let command = "%windir%\\System32\\REG.exe";
13
+ if (process.arch === "ia32" && "PROCESSOR_ARCHITEW6432" in process.env) command = "%windir%\\sysnative\\cmd.exe /c " + command;
14
+ try {
15
+ const parts = (await (0, execAsync_1.execAsync)(`${command} ${args}`)).stdout.split("REG_SZ");
16
+ if (parts.length === 2) return parts[1].trim();
17
+ } catch (e) {
18
+ api_1.diag.debug(`error reading machine id: ${e}`);
19
+ }
20
+ }
21
+ exports.getMachineId = getMachineId;
22
+ }));
23
+ //#endregion
24
+ export default require_getMachineId_win();
25
+ export {};
@@ -0,0 +1,25 @@
1
+ import { a as __toCommonJS, i as __require, n as init_esm, r as __commonJSMin, t as esm_exports } from "./main.mjs";
2
+ import { t as require_execAsync } from "./execAsync-CUNMu62l.mjs";
3
+ //#region ../../node_modules/.pnpm/@opentelemetry+resources@2.2.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js
4
+ var require_getMachineId_win = /* @__PURE__ */ __commonJSMin(((exports) => {
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getMachineId = void 0;
7
+ const process = __require("process");
8
+ const execAsync_1 = require_execAsync();
9
+ const api_1 = (init_esm(), __toCommonJS(esm_exports));
10
+ async function getMachineId() {
11
+ const args = "QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid";
12
+ let command = "%windir%\\System32\\REG.exe";
13
+ if (process.arch === "ia32" && "PROCESSOR_ARCHITEW6432" in process.env) command = "%windir%\\sysnative\\cmd.exe /c " + command;
14
+ try {
15
+ const parts = (await (0, execAsync_1.execAsync)(`${command} ${args}`)).stdout.split("REG_SZ");
16
+ if (parts.length === 2) return parts[1].trim();
17
+ } catch (e) {
18
+ api_1.diag.debug(`error reading machine id: ${e}`);
19
+ }
20
+ }
21
+ exports.getMachineId = getMachineId;
22
+ }));
23
+ //#endregion
24
+ export default require_getMachineId_win();
25
+ export {};
package/dist/index.d.mts CHANGED
@@ -1,20 +1,7 @@
1
- import { PluginLayerContribution } from '@systemfsoftware/stryker-js';
2
-
3
- /**
4
- * The `vitest` test runner, as the plugin the engine loads.
5
- *
6
- * The declared layer asks for the run's resolved options and the sandbox it runs
7
- * in, so the requirement is visible in the type and an engine that does not
8
- * provide it fails to compile.
9
- */
10
- export declare const strykerPlugins: PluginLayerContribution<"TestRunner">[];
11
-
12
- /**
13
- * The `vitest` option section as a JSON Schema document, for Stryker's option
14
- * validation — derived from the declaration, never read from a file. It is built
15
- * here, at the entry that contributes it, because a document is a *use* of a
16
- * schema and the schema module exports only declarations.
17
- */
18
- export declare const strykerValidationSchema: Record<string, unknown>;
1
+ export declare const strykerPlugins: readonly {
2
+ readonly kind: 'TestRunner';
3
+ readonly name: string;
4
+ readonly workerEntry: string;
5
+ }[];
19
6
 
20
7
  export { }