@systemfsoftware/stryker-js 22.0.0 → 23.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 +11 -0
- package/README.md +3 -10
- package/dist/index.mjs +1 -1
- package/dist/main.mjs +17 -25
- package/dist/promises.mjs +1 -1
- package/dist/{run-stages-BnFibYAg.mjs → run-stages-CjcUqGn1.mjs} +9 -17
- package/package.json +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @systemfsoftware/stryker-js
|
|
2
2
|
|
|
3
|
+
## 23.0.0
|
|
4
|
+
|
|
5
|
+
`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.
|
|
6
|
+
|
|
7
|
+
- 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.
|
|
8
|
+
- 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.
|
|
9
|
+
|
|
10
|
+
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.
|
|
11
|
+
|
|
12
|
+
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.
|
|
13
|
+
|
|
3
14
|
## 22.0.0
|
|
4
15
|
|
|
5
16
|
`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-CjcUqGn1.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
|
@@ -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.0";
|
|
82774
82766
|
//#endregion
|
|
82775
82767
|
//#region ../../node_modules/.pnpm/effect@4.1.2/node_modules/effect/dist/cli/internal/ansi.js
|
|
82776
82768
|
/**
|
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-CjcUqGn1.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.0";
|
|
12212
12204
|
//#endregion
|
|
12213
12205
|
//#region src/stryker-package.schema.ts
|
|
12214
12206
|
var StrykerPackage = class extends S.Class("StrykerPackage")({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@systemfsoftware/stryker-js",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "23.0.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/systemfsoftware/stryker-js-effect.git",
|
|
@@ -35,7 +35,7 @@
|
|
|
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",
|
|
@@ -49,17 +49,17 @@
|
|
|
49
49
|
"@systemfsoftware/oxlint-config-recommended": "^4.0.0",
|
|
50
50
|
"@systemfsoftware/stryker-config": "^0.1.0",
|
|
51
51
|
"@systemfsoftware/stryker-framework-interface": "^0.0.2",
|
|
52
|
-
"@systemfsoftware/stryker-ignorer-effect-schema-declarations": "
|
|
53
|
-
"@systemfsoftware/stryker-ignorer-in-source-vitest-block": "
|
|
52
|
+
"@systemfsoftware/stryker-ignorer-effect-schema-declarations": "^0.3.1",
|
|
53
|
+
"@systemfsoftware/stryker-ignorer-in-source-vitest-block": "^0.1.3",
|
|
54
54
|
"@systemfsoftware/stryker-ignorer-interface": "^0.1.3",
|
|
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": "
|
|
55
|
+
"@systemfsoftware/stryker-js": "^22.0.0",
|
|
56
|
+
"@systemfsoftware/stryker-js-cli-contract": "^3.0.0",
|
|
57
|
+
"@systemfsoftware/stryker-js-html-reporter": "^7.0.0",
|
|
58
|
+
"@systemfsoftware/stryker-js-instrumenter": "^16.0.0",
|
|
59
|
+
"@systemfsoftware/stryker-js-plugin-interface": "^19.0.0",
|
|
60
|
+
"@systemfsoftware/stryker-js-plugin-runtime": "^9.0.0",
|
|
61
|
+
"@systemfsoftware/stryker-js-typescript-checker": "^9.0.1",
|
|
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",
|