@systemfsoftware/stryker-js 22.0.0 → 23.0.1
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 +15 -0
- package/README.md +3 -10
- package/dist/index.mjs +1 -1
- package/dist/main.mjs +26 -29
- package/dist/promises.mjs +1 -1
- package/dist/{run-stages-BnFibYAg.mjs → run-stages-CNIjqDP3.mjs} +16 -19
- package/package.json +17 -17
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @systemfsoftware/stryker-js
|
|
2
2
|
|
|
3
|
+
## 23.0.1
|
|
4
|
+
|
|
5
|
+
The workspace dogfoods @systemfsoftware/stryker-js 23.0.0 and the TypeScript checker 10.0.0, and every package resolves one @systemfsoftware/effect-cell-types (12.1.4). The TypeScript checker and the vitest runner bundle 12.1.4 in place of 12.0.0, and stryker-js and the checker bundle @jsr/std__jsonc 1.0.3 in place of 1.0.2. Every package that takes @systemfsoftware/effect-cell-types from the catalog publishes the range ^12.1.4 in place of ^12.0.0.
|
|
6
|
+
|
|
7
|
+
## 23.0.0
|
|
8
|
+
|
|
9
|
+
`effect` is a peer dependency (`^4.1.2`) of every package whose library entry points import it, so a consumer's schemas, layers and errors and these packages' share one effect instance.
|
|
10
|
+
|
|
11
|
+
- cli-contract, plugin-interface, instrumenter, typescript-checker and plugin-runtime declared `effect` as a dependency. A consumer on another 4.1.x got a second copy, and the contract's `ShardPlan` no longer type-checked against the consumer's effect. They now peer on it; install `effect` yourself.
|
|
12
|
+
- stryker-js and the html-reporter already peered on `effect`; the floor rises from 4.1.0 to 4.1.2, the version these packages are built and tested with.
|
|
13
|
+
|
|
14
|
+
The processes Stryker starts are unchanged: the CLI (`main.mjs`), the TypeScript checker's worker and the vitest runner's worker bundle their own effect 4.1.2. The flake package `stryker-package` now declares `effect` itself.
|
|
15
|
+
|
|
16
|
+
The install section names `pnpm add` and the npm packages instead of the flake. The workspace takes the released packages it dogfoods from npm; no published manifest changes.
|
|
17
|
+
|
|
3
18
|
## 22.0.0
|
|
4
19
|
|
|
5
20
|
`run --since` and `plan --since` widen a project to a full run only when a Stryker config, a test-runner config, a `package.json` or a lockfile changed in that project or in one of its ancestor directories. A change to those files in a sibling package no longer widens it. The diff is read with its output format pinned (`--no-color`, `--no-ext-diff`, `--no-textconv`, `--no-relative` and the `a/`/`b/` prefixes), so a user's git config can no longer empty or misplace the diff scope.
|
package/README.md
CHANGED
|
@@ -7,19 +7,12 @@ typed `./config` authoring surface.
|
|
|
7
7
|
|
|
8
8
|
## Install
|
|
9
9
|
|
|
10
|
-
The CLI ships as the flake's `stryker` package, with the vitest runner, the TypeScript checker, the instrumenter, the svelte framework and both Effect ignorers beside it. Pin a release commit:
|
|
11
|
-
|
|
12
10
|
```bash
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
A bare plugin name in a config resolves from that install, so the project installs none of the plugins. To type `stryker.config.ts`, link the CLI package from the flake's output (`nix build github:systemfsoftware/stryker-js-effect/<release-commit>#stryker -o .stryker`):
|
|
17
|
-
|
|
18
|
-
```json
|
|
19
|
-
{ "devDependencies": { "@systemfsoftware/stryker-js": "link:.stryker/lib/node_modules/@systemfsoftware/stryker-js" } }
|
|
11
|
+
pnpm add -D @systemfsoftware/stryker-js vitest
|
|
12
|
+
node node_modules/@systemfsoftware/stryker-js/dist/main.mjs run
|
|
20
13
|
```
|
|
21
14
|
|
|
22
|
-
A plugin the package does not ship is named by its `file:` URL, for example `import.meta.resolve('my-ignorer')`.
|
|
15
|
+
Add the runner, the TypeScript checker and the ignorers you use from npm as well, for example `pnpm add -D @systemfsoftware/stryker-js-vitest-runner @systemfsoftware/stryker-js-typescript-checker`. A bare plugin name in a config resolves from your project's dependencies. A plugin the package does not ship is named by its `file:` URL, for example `import.meta.resolve('my-ignorer')`.
|
|
23
16
|
|
|
24
17
|
## Quick Start: Vitest Runner
|
|
25
18
|
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
|
|
2
2
|
import { i as Mutant_exports, l as Report_exports, n as mergeConfigs } from "./merge-config-BWQeU3-p.mjs";
|
|
3
|
-
import { $ as IncrementalReportSchema, $t as checkCell, A as optionalField, At as ExtendsStepDone, B as nodePlatformLayer, Bt as createDefaultOptions, C as offerSkipsIfAny, Ct as WorkerLauncher, D as dryRunChoiceOf, Dt as importModule, E as reusedTestCoverage, Et as decideExtendsStep, F as diffScopeDecisionOf, Ft as ConfigError, G as git_diff_service_exports, Gt as ImportedModuleSchema, H as SourceParser, Ht as ConfigDocumentSchema, I as DryRunCoverageReused, It as ConfigFileInvalidError, J as git_diff_schema_exports, Jt as ReadConfigCommand, K as ChangedSince, Kt as MergeCommand, L as scoped$1, Lt as ConfigFileNotFoundError, M as relativeNormalizedFileName, Mt as ExtendsStepRefused, N as requireDryRun, Nt as ExtendsStepResolve, O as requireDryRunCommandOf, Ot as initialExtendsStepState, P as readProjectCell, Pt as FileMatcher, Q as classifyWorkerExit, Qt as groupCell, R as makeCheckerPoolHandle, Rt as ConfigFileUnreadableError, S as instrumentFiles, St as makeWorkerClient, T as readIncrementalReuse, Tt as ReproducerSchema, U as source_parser_service_exports, Ut as ExtendsStepDocumentSchema, V as layerWorkerProtocol, Vt as defaultOptions, W as GitDiff, Wt as ExtendsStepStateSchema, X as ClassifyWorkerExitCommand, Xt as forkOptionsSchema, Y as EmptyDirectory, Yt as extendsPropertySchema, Z as ClassifyWorkerExitDecision, Zt as survivorsPriorReport, _ as testRunnerConfigOf, _t as metricsResultFromFiles, a as HtmlReporter_exports, an as ShardPlan, at as RunEnvironment, b as planPrepare, bt as spawnReporterWorker, c as instrumentCell, cn as SpanTaxonomy_exports, ct as SurfacingFields, d as isCommandRunner, dn as CheckerSkippedRequested, dt as RunEvents, en as ChildProcessCrashedError, et as validateOptions, f as mutantDetailEventsOf, ft as RunIdentity, g as isVmRunner, gt as staticVerdictOf, h as readPrepare, ht as VerdictEnvelope, i as MachineConsole, in as RunEvent_exports$1, it as readConfig, j as import_closure_cell_exports, jt as ExtendsStepRead, k as incrementalReportTextsOf, kt as StrykerError, l as buildTestRunner, ln as CheckerAnsweredUnrequested, lt as SurvivorRef, m as admitPreparedProject, mt as generateRunId, n as RunEventDrain, nn as WorkerBootTimeoutError, nt as describeErrors, o as mutationTestCell, on as ShardPlanVersion, ot as IdGenerator, p as concurrencyCell, pt as buildVerdictEnvelope, q as WholeProject, qt as MergeResult, r as makeRunEventStream, rn as OutputMode_exports, rt as forkCoreSchema, s as prepareCell, sn as ShardProject, st as surfacedSurvivorsOf, t as strykerCell, tn as OutOfMemoryError, tt as loadConfigCell, u as makeChildProcessTestRunner, un as CheckerIgnoredWithoutRule, ut as StrykerPackage, v as vmRunnerPluginUrl, vt as MetricsResultFromReport, w as planInstrumentation, wt as make, x as enteringInstrumentPhase, xt as withPhaseSpan, y as vmTestRunnerConfig, yt as reporterWorkerFactory, z as programDigestOf, zt as ConfigFileUnsupportedError } from "./run-stages-
|
|
3
|
+
import { $ as IncrementalReportSchema, $t as checkCell, A as optionalField, At as ExtendsStepDone, B as nodePlatformLayer, Bt as createDefaultOptions, C as offerSkipsIfAny, Ct as WorkerLauncher, D as dryRunChoiceOf, Dt as importModule, E as reusedTestCoverage, Et as decideExtendsStep, F as diffScopeDecisionOf, Ft as ConfigError, G as git_diff_service_exports, Gt as ImportedModuleSchema, H as SourceParser, Ht as ConfigDocumentSchema, I as DryRunCoverageReused, It as ConfigFileInvalidError, J as git_diff_schema_exports, Jt as ReadConfigCommand, K as ChangedSince, Kt as MergeCommand, L as scoped$1, Lt as ConfigFileNotFoundError, M as relativeNormalizedFileName, Mt as ExtendsStepRefused, N as requireDryRun, Nt as ExtendsStepResolve, O as requireDryRunCommandOf, Ot as initialExtendsStepState, P as readProjectCell, Pt as FileMatcher, Q as classifyWorkerExit, Qt as groupCell, R as makeCheckerPoolHandle, Rt as ConfigFileUnreadableError, S as instrumentFiles, St as makeWorkerClient, T as readIncrementalReuse, Tt as ReproducerSchema, U as source_parser_service_exports, Ut as ExtendsStepDocumentSchema, V as layerWorkerProtocol, Vt as defaultOptions, W as GitDiff, Wt as ExtendsStepStateSchema, X as ClassifyWorkerExitCommand, Xt as forkOptionsSchema, Y as EmptyDirectory, Yt as extendsPropertySchema, Z as ClassifyWorkerExitDecision, Zt as survivorsPriorReport, _ as testRunnerConfigOf, _t as metricsResultFromFiles, a as HtmlReporter_exports, an as ShardPlan, at as RunEnvironment, b as planPrepare, bt as spawnReporterWorker, c as instrumentCell, cn as SpanTaxonomy_exports, ct as SurfacingFields, d as isCommandRunner, dn as CheckerSkippedRequested, dt as RunEvents, en as ChildProcessCrashedError, et as validateOptions, f as mutantDetailEventsOf, ft as RunIdentity, g as isVmRunner, gt as staticVerdictOf, h as readPrepare, ht as VerdictEnvelope, i as MachineConsole, in as RunEvent_exports$1, it as readConfig, j as import_closure_cell_exports, jt as ExtendsStepRead, k as incrementalReportTextsOf, kt as StrykerError, l as buildTestRunner, ln as CheckerAnsweredUnrequested, lt as SurvivorRef, m as admitPreparedProject, mt as generateRunId, n as RunEventDrain, nn as WorkerBootTimeoutError, nt as describeErrors, o as mutationTestCell, on as ShardPlanVersion, ot as IdGenerator, p as concurrencyCell, pt as buildVerdictEnvelope, q as WholeProject, qt as MergeResult, r as makeRunEventStream, rn as OutputMode_exports, rt as forkCoreSchema, s as prepareCell, sn as ShardProject, st as surfacedSurvivorsOf, t as strykerCell, tn as OutOfMemoryError, tt as loadConfigCell, u as makeChildProcessTestRunner, un as CheckerIgnoredWithoutRule, ut as StrykerPackage, v as vmRunnerPluginUrl, vt as MetricsResultFromReport, w as planInstrumentation, wt as make, x as enteringInstrumentPhase, xt as withPhaseSpan, y as vmTestRunnerConfig, yt as reporterWorkerFactory, z as programDigestOf, zt as ConfigFileUnsupportedError } from "./run-stages-CNIjqDP3.mjs";
|
|
4
4
|
import { n as StageError } from "./Run.schema-DuaneDGd.mjs";
|
|
5
5
|
import { Blueprint, Cell, Handle, Sandwich, Workflow } from "@systemfsoftware/effect-cell-types";
|
|
6
6
|
import * as S from "effect/Schema";
|
package/dist/main.mjs
CHANGED
|
@@ -73716,7 +73716,7 @@ var __exportAll$2 = (all, no_symbols) => {
|
|
|
73716
73716
|
return target;
|
|
73717
73717
|
};
|
|
73718
73718
|
//#endregion
|
|
73719
|
-
//#region ../../node_modules/.pnpm/@systemfsoftware+effect-cell-types@12.
|
|
73719
|
+
//#region ../../node_modules/.pnpm/@systemfsoftware+effect-cell-types@12.1.4_effect@4.1.2/node_modules/@systemfsoftware/effect-cell-types/dist/rolldown-runtime-D7D4PA-g.mjs
|
|
73720
73720
|
var __defProp$1 = Object.defineProperty;
|
|
73721
73721
|
var __exportAll$1 = (all, no_symbols) => {
|
|
73722
73722
|
let target = {};
|
|
@@ -73728,7 +73728,7 @@ var __exportAll$1 = (all, no_symbols) => {
|
|
|
73728
73728
|
return target;
|
|
73729
73729
|
};
|
|
73730
73730
|
//#endregion
|
|
73731
|
-
//#region ../../node_modules/.pnpm/@systemfsoftware+effect-cell-types@12.
|
|
73731
|
+
//#region ../../node_modules/.pnpm/@systemfsoftware+effect-cell-types@12.1.4_effect@4.1.2/node_modules/@systemfsoftware/effect-cell-types/dist/index.mjs
|
|
73732
73732
|
var Blueprint_exports = /* @__PURE__ */ __exportAll$1({
|
|
73733
73733
|
IndexId: () => IndexId,
|
|
73734
73734
|
make: () => make$3$1
|
|
@@ -77255,7 +77255,7 @@ const isEmptyNumber = (value$21) => value(value$21).pipe(when(0, () => true), or
|
|
|
77255
77255
|
const isEmptyError = (error) => value(error).pipe(when(_undefined, () => true), when(_null, () => true), when(string, (text) => text.length === 0), when(number, isEmptyNumber), when(boolean, (value) => !value), orElse$1(() => false));
|
|
77256
77256
|
const formatErrnoException = (error) => value(error.stack).pipe(when(hasText, (stack) => `${error.name}: ${error.code} (${error.syscall}) ${stack}`), orElse$1(() => `${error.name}: ${error.code} (${error.syscall})`));
|
|
77257
77257
|
const formatError = (error) => value(error.stack).pipe(when(hasText, (stack) => `${error.name}: ${error.message}\n${stack}`), orElse$1(() => `${error.name}: ${error.message}`));
|
|
77258
|
-
const isJsonPrimitive = (value$
|
|
77258
|
+
const isJsonPrimitive = (value$15) => value(value$15).pipe(when(number, () => true), when(boolean, () => true), when(bigint, () => true), orElse$1(() => false));
|
|
77259
77259
|
const jsonText = (error) => getOrElse(try_$2({
|
|
77260
77260
|
try: () => textIfNonEmpty(JSON.stringify(error)),
|
|
77261
77261
|
catch: () => void 0
|
|
@@ -77286,13 +77286,13 @@ function nonStringTextOf(error) {
|
|
|
77286
77286
|
return primitiveJsonOf(error) ?? stringifyRest(error);
|
|
77287
77287
|
}
|
|
77288
77288
|
const errorText = (error) => value(error).pipe(when(isErrnoException, formatErrnoException), orElse$1(() => formatError(error)));
|
|
77289
|
-
const errorNameOf = (value$
|
|
77290
|
-
const tagOf = (value$
|
|
77289
|
+
const errorNameOf = (value$14) => value(value$14).pipe(when(instanceOf(Error), (error) => textIfNonEmpty(error.name)), orElse$1(() => void 0));
|
|
77290
|
+
const tagOf = (value$12) => value(textIfNonEmpty(fieldOf$2(value$12, "_tag"))).pipe(when(hasText, (tag) => tag), orElse$1(() => errorNameOf(value$12)));
|
|
77291
77291
|
const textWithNested = (own, nested) => value(own).pipe(when(hasText, (text) => appendNested(text, nested)), orElse$1(() => nested));
|
|
77292
77292
|
const appendNested = (own, nested) => value(nested).pipe(when(hasText, (text) => `${own}: ${text}`), orElse$1(() => own));
|
|
77293
77293
|
const errorMessage = (error) => value(error.message.length > 0).pipe(when(true, () => error.message), orElse$1(() => tagOf(error)));
|
|
77294
77294
|
const errorMessageOrTag = (value$27) => value(value$27).pipe(when(instanceOf(Error), errorMessage), orElse$1(() => tagOf(value$27)));
|
|
77295
|
-
const messageText = (value$
|
|
77295
|
+
const messageText = (value$13) => value(textIfNonEmpty(fieldOf$2(value$13, "message"))).pipe(when(hasText, (message) => message), orElse$1(() => errorMessageOrTag(value$13)));
|
|
77296
77296
|
const ownCauseText = (value$26) => value(textIfNonEmpty(fieldOf$2(value$26, "reason"))).pipe(when(hasText, (reason) => reason), orElse$1(() => messageText(value$26)));
|
|
77297
77297
|
const isPastDepth = (depth) => depth > 4;
|
|
77298
77298
|
const isMissingCause = (cause) => cause === void 0 || cause === null;
|
|
@@ -78271,7 +78271,7 @@ const identifierText = (node) => match$8(fromNullishOr(node), {
|
|
|
78271
78271
|
onNone: () => none(),
|
|
78272
78272
|
onSome: (present) => value(present).pipe(when(isNamedIdentifier, (name) => some$2(name.name)), when(isStringLiteral$1, (literal) => literalValueText(literal.value)), orElse$1(() => none()))
|
|
78273
78273
|
});
|
|
78274
|
-
const literalValueText = (value$
|
|
78274
|
+
const literalValueText = (value$17) => value(value$17).pipe(when(isString$2, (text) => some$2(text)), orElse$1(() => none()));
|
|
78275
78275
|
const moduleExportName = (name) => getOrElse$1(identifierText(name), () => "");
|
|
78276
78276
|
const staticMemberName = (member) => value(member.computed).pipe(when(false, () => identifierText(member.property)), orElse$1(() => none()));
|
|
78277
78277
|
const nodesOutsideFunctions = (root) => {
|
|
@@ -80075,7 +80075,7 @@ const literalWithoutRegex = (node) => match$8(fromNullishOr(node.bigint), {
|
|
|
80075
80075
|
const valueLiteralText = (value$30) => value(value$30).pipe(when(string, (v) => JSON.stringify(v)), orElse$1(nonStringLiteralText));
|
|
80076
80076
|
const nonStringLiteralText = (value$20) => value(value$20).pipe(when(number, (v) => String(v)), orElse$1(booleanOrBigintText));
|
|
80077
80077
|
const booleanOrBigintText = (value$11) => value(value$11).pipe(when(boolean, (v) => String(v)), orElse$1(bigintText));
|
|
80078
|
-
const bigintText = (value$
|
|
80078
|
+
const bigintText = (value$18) => value(value$18).pipe(when((candidate) => typeof candidate === "bigint", (v) => `${String(v)}n`), orElse$1(() => "null"));
|
|
80079
80079
|
const flagText = (present, text) => match$1(isTruthy(present), {
|
|
80080
80080
|
onTrue: () => text,
|
|
80081
80081
|
onFalse: () => ""
|
|
@@ -80090,7 +80090,7 @@ const objectExpressionText = (ctx, node) => match$1(node.properties.length === 0
|
|
|
80090
80090
|
onFalse: () => `{ ${nodeListText(ctx, node.properties, PREC.Sequence)} }`
|
|
80091
80091
|
});
|
|
80092
80092
|
const propertyText = (ctx, node) => value(propertyFormOf(node)).pipe(when("accessor", () => `${node.kind} ${propertyKeyText(ctx, node.key, node.computed === true, PREC.Assignment)}${functionValueTailText(ctx, node.value)}`), when("method", () => `${propertyKeyText(ctx, node.key, node.computed === true, PREC.Assignment)}${functionValueTailText(ctx, node.value)}`), when("shorthand", () => identifierNameText(node.key)), when("shorthandDefault", () => shorthandDefaultPropertyText(ctx, node)), orElse$1(() => `${propertyKeyText(ctx, node.key, node.computed === true, PREC.Assignment)}: ${printNodePrec(ctx, node.value, PREC.Assignment)}`));
|
|
80093
|
-
const functionValueTailText = (ctx, value$
|
|
80093
|
+
const functionValueTailText = (ctx, value$16) => value(value$16).pipe(when(isFunctionNode, (fn) => functionTailText(ctx, fn)), orElse$1(() => ""));
|
|
80094
80094
|
const shorthandDefaultPropertyText = (ctx, node) => value(node.value).pipe(when(isAssignmentPattern, (value) => `${identifierNameText(node.key)} = ${printNodePrec(ctx, value.right, PREC.Assignment)}`), orElse$1(() => ""));
|
|
80095
80095
|
const propertyKeyText = (ctx, key, computed, computedPrec) => match$1(computed, {
|
|
80096
80096
|
onTrue: () => `[${dispatchNode(ctx, key, computedPrec)}]`,
|
|
@@ -81219,21 +81219,12 @@ var MutantKept = class extends TaggedClass()("MutantKept", {}) {
|
|
|
81219
81219
|
[MutantSetOutcomeTypeId] = MutantSetOutcomeTypeId;
|
|
81220
81220
|
};
|
|
81221
81221
|
const MutantSetDecision = ArraySchema(Union([MutantSuppressed, MutantKept]));
|
|
81222
|
-
|
|
81223
|
-
|
|
81224
|
-
|
|
81225
|
-
|
|
81226
|
-
const
|
|
81227
|
-
|
|
81228
|
-
return [
|
|
81229
|
-
text.startsWith("("),
|
|
81230
|
-
text.endsWith(")"),
|
|
81231
|
-
depths.length > 0,
|
|
81232
|
-
depths.slice(0, -1).every((depth) => depth >= 1),
|
|
81233
|
-
getOrElse$1(last$1(depths), () => 0) === 0
|
|
81234
|
-
].every(Boolean);
|
|
81235
|
-
};
|
|
81236
|
-
const defaultOnly = (policy, value$12) => value(policy).pipe(when("full", () => none()), when("default", value$12), exhaustive);
|
|
81222
|
+
/**
|
|
81223
|
+
* The code a candidate plants, as the instrumenter's printer wrote it from the node the placers plant. Two candidates
|
|
81224
|
+
* plant the same code exactly when these texts are equal, so the policy compares text and reparses nothing.
|
|
81225
|
+
*/
|
|
81226
|
+
const canonicalForm = (text) => text.trim();
|
|
81227
|
+
const defaultOnly = (policy, value$19) => value(policy).pipe(when("full", () => none()), when("default", value$19), exhaustive);
|
|
81237
81228
|
const printedAs = (code) => canonicalForm(code);
|
|
81238
81229
|
const printsSomething = (code) => printedAs(code).length > 0;
|
|
81239
81230
|
const samePrintedCode = (left, right) => [printsSomething(left), printedAs(left) === printedAs(right)].every(Boolean);
|
|
@@ -81954,6 +81945,7 @@ const mutablesFor = (frame, location, context) => {
|
|
|
81954
81945
|
const ignorerAnswer = getOrUndefined$1(ignorerAnswerFor(frame.node, ancestors, context.ignorers));
|
|
81955
81946
|
const aridReason = getOrUndefined$1(aridReasonOf(frame, context.mutantSetPolicy, context.aridImportTable));
|
|
81956
81947
|
const originalCode = printNode(frame.node);
|
|
81948
|
+
const plantedOriginal = printNode(unwrapParenthesizedExpression(frame.node));
|
|
81957
81949
|
return replacements.map(({ mutatorName, replacement }) => {
|
|
81958
81950
|
const replacementCode = printNode(replacement);
|
|
81959
81951
|
const tuple = {
|
|
@@ -81976,8 +81968,8 @@ const mutablesFor = (frame, location, context) => {
|
|
|
81976
81968
|
ignorerAnswer,
|
|
81977
81969
|
...aridReason === void 0 ? {} : { aridReason },
|
|
81978
81970
|
mutantSet: {
|
|
81979
|
-
originalCode,
|
|
81980
|
-
replacementCode
|
|
81971
|
+
originalCode: plantedOriginal,
|
|
81972
|
+
replacementCode: printNode(unwrapParenthesizedExpression(replacement))
|
|
81981
81973
|
},
|
|
81982
81974
|
subsumption: subsumptionReplacementOf(mutatorName, replacement)
|
|
81983
81975
|
}
|
|
@@ -82770,7 +82762,7 @@ const makeHtmlReporter = dual(2, (options, _init) => (events) => build(nodeFsPat
|
|
|
82770
82762
|
var HtmlReporter_exports = /* @__PURE__ */ __exportAll$3({ makeHtmlReporter: () => makeHtmlReporter });
|
|
82771
82763
|
//#endregion
|
|
82772
82764
|
//#region package.json
|
|
82773
|
-
var version = "
|
|
82765
|
+
var version = "23.0.1";
|
|
82774
82766
|
//#endregion
|
|
82775
82767
|
//#region ../../node_modules/.pnpm/effect@4.1.2/node_modules/effect/dist/cli/internal/ansi.js
|
|
82776
82768
|
/**
|
|
@@ -127025,7 +127017,7 @@ const withPreprocessedFiles = dual(2, (project, updates) => ({
|
|
|
127025
127017
|
filesToMutate: replacedBy(project.filesToMutate, filter$4(updates, heldIn(project.filesToMutate)))
|
|
127026
127018
|
}));
|
|
127027
127019
|
//#endregion
|
|
127028
|
-
//#region ../../node_modules/.pnpm/@jsr+std__jsonc@1.0.
|
|
127020
|
+
//#region ../../node_modules/.pnpm/@jsr+std__jsonc@1.0.3/node_modules/@jsr/std__jsonc/parse.js
|
|
127029
127021
|
/**
|
|
127030
127022
|
* Converts a JSON with Comments (JSONC) string into an object.
|
|
127031
127023
|
*
|
|
@@ -127128,11 +127120,16 @@ var JsoncParser = class {
|
|
|
127128
127120
|
case "\"": {
|
|
127129
127121
|
const startIndex = i;
|
|
127130
127122
|
let shouldEscapeNext = false;
|
|
127123
|
+
let hasEndOfString = false;
|
|
127131
127124
|
i++;
|
|
127132
127125
|
for (; i < this.#length; i++) {
|
|
127133
|
-
if (this.#text[i] === "\"" && !shouldEscapeNext)
|
|
127126
|
+
if (this.#text[i] === "\"" && !shouldEscapeNext) {
|
|
127127
|
+
hasEndOfString = true;
|
|
127128
|
+
break;
|
|
127129
|
+
}
|
|
127134
127130
|
shouldEscapeNext = this.#text[i] === "\\" && !shouldEscapeNext;
|
|
127135
127131
|
}
|
|
127132
|
+
if (!hasEndOfString) throw new SyntaxError("Cannot parse JSONC: unexpected end of JSONC input");
|
|
127136
127133
|
yield {
|
|
127137
127134
|
type: "String",
|
|
127138
127135
|
sourceText: this.#text.substring(startIndex, i + 1),
|
package/dist/promises.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as nodePlatformLayer, t as strykerCell } from "./run-stages-
|
|
1
|
+
import { B as nodePlatformLayer, t as strykerCell } from "./run-stages-CNIjqDP3.mjs";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import { dual } from "effect/Function";
|
|
4
4
|
//#region src/promises/run.ts
|
|
@@ -9005,20 +9005,11 @@ var MutantKept = class extends S.TaggedClass()("MutantKept", {}) {
|
|
|
9005
9005
|
};
|
|
9006
9006
|
const MutantSetOutcome = S.Union([MutantSuppressed, MutantKept]);
|
|
9007
9007
|
const MutantSetDecision = S.Array(MutantSetOutcome);
|
|
9008
|
-
|
|
9009
|
-
|
|
9010
|
-
|
|
9011
|
-
|
|
9012
|
-
const
|
|
9013
|
-
const depths = depthsAfter(text);
|
|
9014
|
-
return [
|
|
9015
|
-
text.startsWith("("),
|
|
9016
|
-
text.endsWith(")"),
|
|
9017
|
-
depths.length > 0,
|
|
9018
|
-
depths.slice(0, -1).every((depth) => depth >= 1),
|
|
9019
|
-
Option$1.getOrElse(Arr.last(depths), () => 0) === 0
|
|
9020
|
-
].every(Boolean);
|
|
9021
|
-
};
|
|
9008
|
+
/**
|
|
9009
|
+
* The code a candidate plants, as the instrumenter's printer wrote it from the node the placers plant. Two candidates
|
|
9010
|
+
* plant the same code exactly when these texts are equal, so the policy compares text and reparses nothing.
|
|
9011
|
+
*/
|
|
9012
|
+
const canonicalForm = (text) => text.trim();
|
|
9022
9013
|
const defaultOnly = (policy, value) => Match$1.value(policy).pipe(Match$1.when("full", () => Option$1.none()), Match$1.when("default", value), Match$1.exhaustive);
|
|
9023
9014
|
const printedAs = (code) => canonicalForm(code);
|
|
9024
9015
|
const printsSomething = (code) => printedAs(code).length > 0;
|
|
@@ -9741,6 +9732,7 @@ const mutablesFor = (frame, location, context) => {
|
|
|
9741
9732
|
const ignorerAnswer = Option$1.getOrUndefined(ignorerAnswerFor(frame.node, ancestors, context.ignorers));
|
|
9742
9733
|
const aridReason = Option$1.getOrUndefined(aridReasonOf(frame, context.mutantSetPolicy, context.aridImportTable));
|
|
9743
9734
|
const originalCode = printNode(frame.node);
|
|
9735
|
+
const plantedOriginal = printNode(unwrapParenthesizedExpression(frame.node));
|
|
9744
9736
|
return replacements.map(({ mutatorName, replacement }) => {
|
|
9745
9737
|
const replacementCode = printNode(replacement);
|
|
9746
9738
|
const tuple = {
|
|
@@ -9763,8 +9755,8 @@ const mutablesFor = (frame, location, context) => {
|
|
|
9763
9755
|
ignorerAnswer,
|
|
9764
9756
|
...aridReason === void 0 ? {} : { aridReason },
|
|
9765
9757
|
mutantSet: {
|
|
9766
|
-
originalCode,
|
|
9767
|
-
replacementCode
|
|
9758
|
+
originalCode: plantedOriginal,
|
|
9759
|
+
replacementCode: printNode(unwrapParenthesizedExpression(replacement))
|
|
9768
9760
|
},
|
|
9769
9761
|
subsumption: subsumptionReplacementOf(mutatorName, replacement)
|
|
9770
9762
|
}
|
|
@@ -12208,7 +12200,7 @@ const strykerOutputFilesOf = (options) => STRYKER_OUTPUTS.map((output) => output
|
|
|
12208
12200
|
STRYKER_OUTPUTS.map((output) => output.label);
|
|
12209
12201
|
//#endregion
|
|
12210
12202
|
//#region package.json
|
|
12211
|
-
var version = "
|
|
12203
|
+
var version = "23.0.1";
|
|
12212
12204
|
//#endregion
|
|
12213
12205
|
//#region src/stryker-package.schema.ts
|
|
12214
12206
|
var StrykerPackage = class extends S.Class("StrykerPackage")({
|
|
@@ -22999,7 +22991,7 @@ const withPreprocessedFiles = dual(2, (project, updates) => ({
|
|
|
22999
22991
|
filesToMutate: replacedBy(project.filesToMutate, Arr.filter(updates, heldIn(project.filesToMutate)))
|
|
23000
22992
|
}));
|
|
23001
22993
|
//#endregion
|
|
23002
|
-
//#region ../../node_modules/.pnpm/@jsr+std__jsonc@1.0.
|
|
22994
|
+
//#region ../../node_modules/.pnpm/@jsr+std__jsonc@1.0.3/node_modules/@jsr/std__jsonc/parse.js
|
|
23003
22995
|
/**
|
|
23004
22996
|
* Converts a JSON with Comments (JSONC) string into an object.
|
|
23005
22997
|
*
|
|
@@ -23102,11 +23094,16 @@ var JsoncParser = class {
|
|
|
23102
23094
|
case "\"": {
|
|
23103
23095
|
const startIndex = i;
|
|
23104
23096
|
let shouldEscapeNext = false;
|
|
23097
|
+
let hasEndOfString = false;
|
|
23105
23098
|
i++;
|
|
23106
23099
|
for (; i < this.#length; i++) {
|
|
23107
|
-
if (this.#text[i] === "\"" && !shouldEscapeNext)
|
|
23100
|
+
if (this.#text[i] === "\"" && !shouldEscapeNext) {
|
|
23101
|
+
hasEndOfString = true;
|
|
23102
|
+
break;
|
|
23103
|
+
}
|
|
23108
23104
|
shouldEscapeNext = this.#text[i] === "\\" && !shouldEscapeNext;
|
|
23109
23105
|
}
|
|
23106
|
+
if (!hasEndOfString) throw new SyntaxError("Cannot parse JSONC: unexpected end of JSONC input");
|
|
23110
23107
|
yield {
|
|
23111
23108
|
type: "String",
|
|
23112
23109
|
sourceText: this.#text.substring(startIndex, i + 1),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@systemfsoftware/stryker-js",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "23.0.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/systemfsoftware/stryker-js-effect.git",
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
"@opentelemetry/exporter-trace-otlp-http": "^0.222.0",
|
|
31
31
|
"@opentelemetry/sdk-metrics": "^2.11.0",
|
|
32
32
|
"@opentelemetry/sdk-trace-base": "^2.2.0",
|
|
33
|
-
"@systemfsoftware/effect-cell-types": "^12.
|
|
34
|
-
"@systemfsoftware/stryker-js-vm-runner": "npm:@systemfsoftware/stryker-js-vitest-runner@^10.1.
|
|
33
|
+
"@systemfsoftware/effect-cell-types": "^12.1.4",
|
|
34
|
+
"@systemfsoftware/stryker-js-vm-runner": "npm:@systemfsoftware/stryker-js-vitest-runner@^10.1.1",
|
|
35
35
|
"yaml": "^2.9.1"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"effect": "^4.1.
|
|
38
|
+
"effect": "^4.1.2"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@effect/tsgo": "^0.63.0",
|
|
@@ -48,18 +48,18 @@
|
|
|
48
48
|
"@systemfsoftware/effect-schema-law": "^5.0.0",
|
|
49
49
|
"@systemfsoftware/oxlint-config-recommended": "^4.0.0",
|
|
50
50
|
"@systemfsoftware/stryker-config": "^0.1.0",
|
|
51
|
-
"@systemfsoftware/stryker-framework-interface": "^0.0.
|
|
52
|
-
"@systemfsoftware/stryker-ignorer-effect-schema-declarations": "
|
|
53
|
-
"@systemfsoftware/stryker-ignorer-in-source-vitest-block": "
|
|
54
|
-
"@systemfsoftware/stryker-ignorer-interface": "^0.1.
|
|
55
|
-
"@systemfsoftware/stryker-js": "
|
|
56
|
-
"@systemfsoftware/stryker-js-cli-contract": "^
|
|
57
|
-
"@systemfsoftware/stryker-js-html-reporter": "^
|
|
58
|
-
"@systemfsoftware/stryker-js-instrumenter": "^
|
|
59
|
-
"@systemfsoftware/stryker-js-plugin-interface": "^
|
|
60
|
-
"@systemfsoftware/stryker-js-plugin-runtime": "^
|
|
61
|
-
"@systemfsoftware/stryker-js-typescript-checker": "
|
|
62
|
-
"@systemfsoftware/stryker-js-vitest-runner": "
|
|
51
|
+
"@systemfsoftware/stryker-framework-interface": "^0.0.3",
|
|
52
|
+
"@systemfsoftware/stryker-ignorer-effect-schema-declarations": "^0.3.1",
|
|
53
|
+
"@systemfsoftware/stryker-ignorer-in-source-vitest-block": "^0.1.3",
|
|
54
|
+
"@systemfsoftware/stryker-ignorer-interface": "^0.1.4",
|
|
55
|
+
"@systemfsoftware/stryker-js": "^23.0.0",
|
|
56
|
+
"@systemfsoftware/stryker-js-cli-contract": "^3.0.1",
|
|
57
|
+
"@systemfsoftware/stryker-js-html-reporter": "^7.0.1",
|
|
58
|
+
"@systemfsoftware/stryker-js-instrumenter": "^16.0.1",
|
|
59
|
+
"@systemfsoftware/stryker-js-plugin-interface": "^19.0.1",
|
|
60
|
+
"@systemfsoftware/stryker-js-plugin-runtime": "^9.0.1",
|
|
61
|
+
"@systemfsoftware/stryker-js-typescript-checker": "^10.0.0",
|
|
62
|
+
"@systemfsoftware/stryker-js-vitest-runner": "^10.1.0",
|
|
63
63
|
"@systemfsoftware/tsconfig": "^2.0.1",
|
|
64
64
|
"@systemfsoftware/tsdown-config": "^0.1.0",
|
|
65
65
|
"@systemfsoftware/vitest": "^2.0.0",
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
},
|
|
106
106
|
"inlinedDependencies": {
|
|
107
107
|
"@eslint-community/regexpp": "4.12.2",
|
|
108
|
-
"@jsr/std__jsonc": "1.0.
|
|
108
|
+
"@jsr/std__jsonc": "1.0.3",
|
|
109
109
|
"oxc-parser": "0.150.0"
|
|
110
110
|
},
|
|
111
111
|
"scripts": {
|