@d-es-ign/stryker-js-instrumenter 9.6.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/LICENSE +201 -0
- package/dist/src/create-instrumenter.d.ts +16 -0
- package/dist/src/create-instrumenter.d.ts.map +1 -0
- package/dist/src/create-instrumenter.js +15 -0
- package/dist/src/create-instrumenter.js.map +1 -0
- package/dist/src/disable-type-checks.d.ts +11 -0
- package/dist/src/disable-type-checks.d.ts.map +1 -0
- package/dist/src/disable-type-checks.js +125 -0
- package/dist/src/disable-type-checks.js.map +1 -0
- package/dist/src/file.d.ts +6 -0
- package/dist/src/file.d.ts.map +1 -0
- package/dist/src/file.js +2 -0
- package/dist/src/file.js.map +1 -0
- package/dist/src/frameworks/angular-ignorer.d.ts +16 -0
- package/dist/src/frameworks/angular-ignorer.d.ts.map +1 -0
- package/dist/src/frameworks/angular-ignorer.js +85 -0
- package/dist/src/frameworks/angular-ignorer.js.map +1 -0
- package/dist/src/frameworks/index.d.ts +4 -0
- package/dist/src/frameworks/index.d.ts.map +1 -0
- package/dist/src/frameworks/index.js +7 -0
- package/dist/src/frameworks/index.js.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +8 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/instrument-result.d.ts +7 -0
- package/dist/src/instrument-result.d.ts.map +1 -0
- package/dist/src/instrument-result.js +2 -0
- package/dist/src/instrument-result.js.map +1 -0
- package/dist/src/instrumenter-options.d.ts +5 -0
- package/dist/src/instrumenter-options.d.ts.map +1 -0
- package/dist/src/instrumenter-options.js +2 -0
- package/dist/src/instrumenter-options.js.map +1 -0
- package/dist/src/instrumenter-tokens.d.ts +6 -0
- package/dist/src/instrumenter-tokens.d.ts.map +1 -0
- package/dist/src/instrumenter-tokens.js +6 -0
- package/dist/src/instrumenter-tokens.js.map +1 -0
- package/dist/src/instrumenter.d.ts +24 -0
- package/dist/src/instrumenter.d.ts.map +1 -0
- package/dist/src/instrumenter.js +76 -0
- package/dist/src/instrumenter.js.map +1 -0
- package/dist/src/mutant-placers/expression-mutant-placer.d.ts +10 -0
- package/dist/src/mutant-placers/expression-mutant-placer.d.ts.map +1 -0
- package/dist/src/mutant-placers/expression-mutant-placer.js +144 -0
- package/dist/src/mutant-placers/expression-mutant-placer.js.map +1 -0
- package/dist/src/mutant-placers/index.d.ts +5 -0
- package/dist/src/mutant-placers/index.d.ts.map +1 -0
- package/dist/src/mutant-placers/index.js +11 -0
- package/dist/src/mutant-placers/index.js.map +1 -0
- package/dist/src/mutant-placers/mutant-placer.d.ts +8 -0
- package/dist/src/mutant-placers/mutant-placer.d.ts.map +1 -0
- package/dist/src/mutant-placers/mutant-placer.js +2 -0
- package/dist/src/mutant-placers/mutant-placer.js.map +1 -0
- package/dist/src/mutant-placers/statement-mutant-placer.d.ts +8 -0
- package/dist/src/mutant-placers/statement-mutant-placer.d.ts.map +1 -0
- package/dist/src/mutant-placers/statement-mutant-placer.js +24 -0
- package/dist/src/mutant-placers/statement-mutant-placer.js.map +1 -0
- package/dist/src/mutant-placers/switch-case-mutant-placer.d.ts +14 -0
- package/dist/src/mutant-placers/switch-case-mutant-placer.d.ts.map +1 -0
- package/dist/src/mutant-placers/switch-case-mutant-placer.js +29 -0
- package/dist/src/mutant-placers/switch-case-mutant-placer.js.map +1 -0
- package/dist/src/mutant-placers/throw-placement-error.d.ts +5 -0
- package/dist/src/mutant-placers/throw-placement-error.d.ts.map +1 -0
- package/dist/src/mutant-placers/throw-placement-error.js +17 -0
- package/dist/src/mutant-placers/throw-placement-error.js.map +1 -0
- package/dist/src/mutant.d.ts +27 -0
- package/dist/src/mutant.d.ts.map +1 -0
- package/dist/src/mutant.js +80 -0
- package/dist/src/mutant.js.map +1 -0
- package/dist/src/mutators/arithmetic-operator-mutator.d.ts +3 -0
- package/dist/src/mutators/arithmetic-operator-mutator.d.ts.map +1 -0
- package/dist/src/mutators/arithmetic-operator-mutator.js +34 -0
- package/dist/src/mutators/arithmetic-operator-mutator.js.map +1 -0
- package/dist/src/mutators/array-declaration-mutator.d.ts +3 -0
- package/dist/src/mutators/array-declaration-mutator.d.ts.map +1 -0
- package/dist/src/mutators/array-declaration-mutator.js +26 -0
- package/dist/src/mutators/array-declaration-mutator.js.map +1 -0
- package/dist/src/mutators/arrow-function-mutator.d.ts +3 -0
- package/dist/src/mutators/arrow-function-mutator.d.ts.map +1 -0
- package/dist/src/mutators/arrow-function-mutator.js +14 -0
- package/dist/src/mutators/arrow-function-mutator.js.map +1 -0
- package/dist/src/mutators/assignment-operator-mutator.d.ts +3 -0
- package/dist/src/mutators/assignment-operator-mutator.d.ts.map +1 -0
- package/dist/src/mutators/assignment-operator-mutator.js +42 -0
- package/dist/src/mutators/assignment-operator-mutator.js.map +1 -0
- package/dist/src/mutators/block-statement-mutator.d.ts +3 -0
- package/dist/src/mutators/block-statement-mutator.d.ts.map +1 -0
- package/dist/src/mutators/block-statement-mutator.js +63 -0
- package/dist/src/mutators/block-statement-mutator.js.map +1 -0
- package/dist/src/mutators/boolean-literal-mutator.d.ts +3 -0
- package/dist/src/mutators/boolean-literal-mutator.d.ts.map +1 -0
- package/dist/src/mutators/boolean-literal-mutator.js +17 -0
- package/dist/src/mutators/boolean-literal-mutator.js.map +1 -0
- package/dist/src/mutators/conditional-expression-mutator.d.ts +3 -0
- package/dist/src/mutators/conditional-expression-mutator.d.ts.map +1 -0
- package/dist/src/mutators/conditional-expression-mutator.js +81 -0
- package/dist/src/mutators/conditional-expression-mutator.js.map +1 -0
- package/dist/src/mutators/equality-operator-mutator.d.ts +3 -0
- package/dist/src/mutators/equality-operator-mutator.d.ts.map +1 -0
- package/dist/src/mutators/equality-operator-mutator.js +28 -0
- package/dist/src/mutators/equality-operator-mutator.js.map +1 -0
- package/dist/src/mutators/index.d.ts +4 -0
- package/dist/src/mutators/index.d.ts.map +1 -0
- package/dist/src/mutators/index.js +4 -0
- package/dist/src/mutators/index.js.map +1 -0
- package/dist/src/mutators/logical-operator-mutator.d.ts +3 -0
- package/dist/src/mutators/logical-operator-mutator.d.ts.map +1 -0
- package/dist/src/mutators/logical-operator-mutator.js +21 -0
- package/dist/src/mutators/logical-operator-mutator.js.map +1 -0
- package/dist/src/mutators/method-expression-mutator.d.ts +3 -0
- package/dist/src/mutators/method-expression-mutator.d.ts.map +1 -0
- package/dist/src/mutators/method-expression-mutator.js +65 -0
- package/dist/src/mutators/method-expression-mutator.js.map +1 -0
- package/dist/src/mutators/mutate.d.ts +3 -0
- package/dist/src/mutators/mutate.d.ts.map +1 -0
- package/dist/src/mutators/mutate.js +35 -0
- package/dist/src/mutators/mutate.js.map +1 -0
- package/dist/src/mutators/mutator-options.d.ts +5 -0
- package/dist/src/mutators/mutator-options.d.ts.map +1 -0
- package/dist/src/mutators/mutator-options.js +2 -0
- package/dist/src/mutators/mutator-options.js.map +1 -0
- package/dist/src/mutators/node-mutator.d.ts +6 -0
- package/dist/src/mutators/node-mutator.d.ts.map +1 -0
- package/dist/src/mutators/node-mutator.js +2 -0
- package/dist/src/mutators/node-mutator.js.map +1 -0
- package/dist/src/mutators/object-literal-mutator.d.ts +3 -0
- package/dist/src/mutators/object-literal-mutator.d.ts.map +1 -0
- package/dist/src/mutators/object-literal-mutator.js +11 -0
- package/dist/src/mutators/object-literal-mutator.js.map +1 -0
- package/dist/src/mutators/optional-chaining-mutator.d.ts +15 -0
- package/dist/src/mutators/optional-chaining-mutator.d.ts.map +1 -0
- package/dist/src/mutators/optional-chaining-mutator.js +28 -0
- package/dist/src/mutators/optional-chaining-mutator.js.map +1 -0
- package/dist/src/mutators/regex-mutator.d.ts +3 -0
- package/dist/src/mutators/regex-mutator.d.ts.map +1 -0
- package/dist/src/mutators/regex-mutator.js +53 -0
- package/dist/src/mutators/regex-mutator.js.map +1 -0
- package/dist/src/mutators/string-literal-mutator.d.ts +3 -0
- package/dist/src/mutators/string-literal-mutator.d.ts.map +1 -0
- package/dist/src/mutators/string-literal-mutator.js +36 -0
- package/dist/src/mutators/string-literal-mutator.js.map +1 -0
- package/dist/src/mutators/unary-operator-mutator.d.ts +3 -0
- package/dist/src/mutators/unary-operator-mutator.d.ts.map +1 -0
- package/dist/src/mutators/unary-operator-mutator.js +27 -0
- package/dist/src/mutators/unary-operator-mutator.js.map +1 -0
- package/dist/src/mutators/update-operator-mutator.d.ts +3 -0
- package/dist/src/mutators/update-operator-mutator.d.ts.map +1 -0
- package/dist/src/mutators/update-operator-mutator.js +17 -0
- package/dist/src/mutators/update-operator-mutator.js.map +1 -0
- package/dist/src/parsers/create-parser.d.ts +5 -0
- package/dist/src/parsers/create-parser.d.ts.map +1 -0
- package/dist/src/parsers/create-parser.js +58 -0
- package/dist/src/parsers/create-parser.js.map +1 -0
- package/dist/src/parsers/html-parser.d.ts +4 -0
- package/dist/src/parsers/html-parser.d.ts.map +1 -0
- package/dist/src/parsers/html-parser.js +96 -0
- package/dist/src/parsers/html-parser.js.map +1 -0
- package/dist/src/parsers/index.d.ts +5 -0
- package/dist/src/parsers/index.d.ts.map +1 -0
- package/dist/src/parsers/index.js +3 -0
- package/dist/src/parsers/index.js.map +1 -0
- package/dist/src/parsers/js-parser.d.ts +4 -0
- package/dist/src/parsers/js-parser.d.ts.map +1 -0
- package/dist/src/parsers/js-parser.js +50 -0
- package/dist/src/parsers/js-parser.js.map +1 -0
- package/dist/src/parsers/parse-error.d.ts +5 -0
- package/dist/src/parsers/parse-error.d.ts.map +1 -0
- package/dist/src/parsers/parse-error.js +6 -0
- package/dist/src/parsers/parse-error.js.map +1 -0
- package/dist/src/parsers/parser-context.d.ts +6 -0
- package/dist/src/parsers/parser-context.d.ts.map +1 -0
- package/dist/src/parsers/parser-context.js +2 -0
- package/dist/src/parsers/parser-context.js.map +1 -0
- package/dist/src/parsers/parser-options.d.ts +4 -0
- package/dist/src/parsers/parser-options.d.ts.map +1 -0
- package/dist/src/parsers/parser-options.js +2 -0
- package/dist/src/parsers/parser-options.js.map +1 -0
- package/dist/src/parsers/svelte-parser.d.ts +4 -0
- package/dist/src/parsers/svelte-parser.d.ts.map +1 -0
- package/dist/src/parsers/svelte-parser.js +169 -0
- package/dist/src/parsers/svelte-parser.js.map +1 -0
- package/dist/src/parsers/ts-parser.d.ts +9 -0
- package/dist/src/parsers/ts-parser.d.ts.map +1 -0
- package/dist/src/parsers/ts-parser.js +54 -0
- package/dist/src/parsers/ts-parser.js.map +1 -0
- package/dist/src/printers/html-printer.d.ts +4 -0
- package/dist/src/printers/html-printer.d.ts.map +1 -0
- package/dist/src/printers/html-printer.js +15 -0
- package/dist/src/printers/html-printer.js.map +1 -0
- package/dist/src/printers/index.d.ts +7 -0
- package/dist/src/printers/index.d.ts.map +1 -0
- package/dist/src/printers/index.js +23 -0
- package/dist/src/printers/index.js.map +1 -0
- package/dist/src/printers/js-printer.d.ts +4 -0
- package/dist/src/printers/js-printer.d.ts.map +1 -0
- package/dist/src/printers/js-printer.js +6 -0
- package/dist/src/printers/js-printer.js.map +1 -0
- package/dist/src/printers/svelte-printer.d.ts +4 -0
- package/dist/src/printers/svelte-printer.d.ts.map +1 -0
- package/dist/src/printers/svelte-printer.js +28 -0
- package/dist/src/printers/svelte-printer.js.map +1 -0
- package/dist/src/printers/ts-printer.d.ts +4 -0
- package/dist/src/printers/ts-printer.d.ts.map +1 -0
- package/dist/src/printers/ts-printer.js +9 -0
- package/dist/src/printers/ts-printer.js.map +1 -0
- package/dist/src/syntax/index.d.ts +86 -0
- package/dist/src/syntax/index.d.ts.map +1 -0
- package/dist/src/syntax/index.js +9 -0
- package/dist/src/syntax/index.js.map +1 -0
- package/dist/src/transformers/babel-transformer.d.ts +4 -0
- package/dist/src/transformers/babel-transformer.d.ts.map +1 -0
- package/dist/src/transformers/babel-transformer.js +142 -0
- package/dist/src/transformers/babel-transformer.js.map +1 -0
- package/dist/src/transformers/directive-bookkeeper.d.ts +19 -0
- package/dist/src/transformers/directive-bookkeeper.d.ts.map +1 -0
- package/dist/src/transformers/directive-bookkeeper.js +108 -0
- package/dist/src/transformers/directive-bookkeeper.js.map +1 -0
- package/dist/src/transformers/html-transformer.d.ts +4 -0
- package/dist/src/transformers/html-transformer.d.ts.map +1 -0
- package/dist/src/transformers/html-transformer.js +6 -0
- package/dist/src/transformers/html-transformer.js.map +1 -0
- package/dist/src/transformers/ignorer-bookkeeper.d.ts +18 -0
- package/dist/src/transformers/ignorer-bookkeeper.d.ts.map +1 -0
- package/dist/src/transformers/ignorer-bookkeeper.js +29 -0
- package/dist/src/transformers/ignorer-bookkeeper.js.map +1 -0
- package/dist/src/transformers/index.d.ts +6 -0
- package/dist/src/transformers/index.d.ts.map +1 -0
- package/dist/src/transformers/index.js +4 -0
- package/dist/src/transformers/index.js.map +1 -0
- package/dist/src/transformers/mutant-collector.d.ts +19 -0
- package/dist/src/transformers/mutant-collector.d.ts.map +1 -0
- package/dist/src/transformers/mutant-collector.js +25 -0
- package/dist/src/transformers/mutant-collector.js.map +1 -0
- package/dist/src/transformers/svelte-transformer.d.ts +4 -0
- package/dist/src/transformers/svelte-transformer.d.ts.map +1 -0
- package/dist/src/transformers/svelte-transformer.js +46 -0
- package/dist/src/transformers/svelte-transformer.js.map +1 -0
- package/dist/src/transformers/transformer-options.d.ts +6 -0
- package/dist/src/transformers/transformer-options.d.ts.map +1 -0
- package/dist/src/transformers/transformer-options.js +2 -0
- package/dist/src/transformers/transformer-options.js.map +1 -0
- package/dist/src/transformers/transformer.d.ts +22 -0
- package/dist/src/transformers/transformer.d.ts.map +1 -0
- package/dist/src/transformers/transformer.js +30 -0
- package/dist/src/transformers/transformer.js.map +1 -0
- package/dist/src/util/binary-operator.d.ts +2 -0
- package/dist/src/util/binary-operator.d.ts.map +1 -0
- package/dist/src/util/binary-operator.js +2 -0
- package/dist/src/util/binary-operator.js.map +1 -0
- package/dist/src/util/index.d.ts +4 -0
- package/dist/src/util/index.d.ts.map +1 -0
- package/dist/src/util/index.js +4 -0
- package/dist/src/util/index.js.map +1 -0
- package/dist/src/util/position-converter.d.ts +16 -0
- package/dist/src/util/position-converter.d.ts.map +1 -0
- package/dist/src/util/position-converter.js +126 -0
- package/dist/src/util/position-converter.js.map +1 -0
- package/dist/src/util/syntax-helpers.d.ts +60 -0
- package/dist/src/util/syntax-helpers.d.ts.map +1 -0
- package/dist/src/util/syntax-helpers.js +217 -0
- package/dist/src/util/syntax-helpers.js.map +1 -0
- package/package.json +64 -0
- package/src/create-instrumenter.ts +30 -0
- package/src/disable-type-checks.ts +153 -0
- package/src/file.ts +6 -0
- package/src/frameworks/angular-ignorer.ts +129 -0
- package/src/frameworks/index.ts +9 -0
- package/src/index.ts +8 -0
- package/src/instrument-result.ts +8 -0
- package/src/instrumenter-options.ts +5 -0
- package/src/instrumenter-tokens.ts +5 -0
- package/src/instrumenter.ts +100 -0
- package/src/mutant-placers/expression-mutant-placer.ts +210 -0
- package/src/mutant-placers/index.ts +12 -0
- package/src/mutant-placers/mutant-placer.ts +9 -0
- package/src/mutant-placers/statement-mutant-placer.ts +39 -0
- package/src/mutant-placers/switch-case-mutant-placer.ts +41 -0
- package/src/mutant-placers/throw-placement-error.ts +34 -0
- package/src/mutant.ts +101 -0
- package/src/mutators/arithmetic-operator-mutator.ts +51 -0
- package/src/mutators/array-declaration-mutator.ts +36 -0
- package/src/mutators/arrow-function-mutator.ts +22 -0
- package/src/mutators/assignment-operator-mutator.ts +59 -0
- package/src/mutators/block-statement-mutator.ts +89 -0
- package/src/mutators/boolean-literal-mutator.ts +24 -0
- package/src/mutators/conditional-expression-mutator.ts +92 -0
- package/src/mutators/equality-operator-mutator.ts +35 -0
- package/src/mutators/index.ts +3 -0
- package/src/mutators/logical-operator-mutator.ts +29 -0
- package/src/mutators/method-expression-mutator.ts +99 -0
- package/src/mutators/mutate.ts +36 -0
- package/src/mutators/mutator-options.ts +4 -0
- package/src/mutators/node-mutator.ts +6 -0
- package/src/mutators/object-literal-mutator.ts +15 -0
- package/src/mutators/optional-chaining-mutator.ts +39 -0
- package/src/mutators/regex-mutator.ts +69 -0
- package/src/mutators/string-literal-mutator.ts +49 -0
- package/src/mutators/unary-operator-mutator.ts +39 -0
- package/src/mutators/update-operator-mutator.ts +26 -0
- package/src/parsers/create-parser.ts +78 -0
- package/src/parsers/html-parser.ts +138 -0
- package/src/parsers/index.ts +5 -0
- package/src/parsers/js-parser.ts +58 -0
- package/src/parsers/parse-error.ts +9 -0
- package/src/parsers/parser-context.ts +15 -0
- package/src/parsers/parser-options.ts +3 -0
- package/src/parsers/svelte-parser.ts +255 -0
- package/src/parsers/ts-parser.ts +69 -0
- package/src/printers/html-printer.ts +20 -0
- package/src/printers/index.ts +33 -0
- package/src/printers/js-printer.ts +11 -0
- package/src/printers/svelte-printer.ts +34 -0
- package/src/printers/ts-printer.ts +14 -0
- package/src/syntax/index.ts +97 -0
- package/src/transformers/babel-transformer.ts +217 -0
- package/src/transformers/directive-bookkeeper.ts +173 -0
- package/src/transformers/html-transformer.ts +13 -0
- package/src/transformers/ignorer-bookkeeper.ts +41 -0
- package/src/transformers/index.ts +6 -0
- package/src/transformers/mutant-collector.ts +44 -0
- package/src/transformers/svelte-transformer.ts +57 -0
- package/src/transformers/transformer-options.ts +7 -0
- package/src/transformers/transformer.ts +54 -0
- package/src/util/binary-operator.ts +23 -0
- package/src/util/index.ts +3 -0
- package/src/util/position-converter.ts +145 -0
- package/src/util/syntax-helpers.ts +301 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Position } from '@stryker-mutator/api/core';
|
|
2
|
+
/**
|
|
3
|
+
* A class that can convert a string offset back to line / column.
|
|
4
|
+
* Grabbed from TypeScript code base
|
|
5
|
+
* @see https://github.com/microsoft/TypeScript/blob/aa9b6953441b53f8b14072c047f0519b611150c4/src/compiler/scanner.ts#L503
|
|
6
|
+
*/
|
|
7
|
+
export declare class PositionConverter {
|
|
8
|
+
private readonly text;
|
|
9
|
+
private _lineStarts?;
|
|
10
|
+
private get lineStarts();
|
|
11
|
+
constructor(text: string);
|
|
12
|
+
positionFromOffset(offset: number): Position;
|
|
13
|
+
private computeLineOfPosition;
|
|
14
|
+
private computeLineStarts;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=position-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-converter.d.ts","sourceRoot":"","sources":["../../../src/util/position-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD;;;;GAIG;AACH,qBAAa,iBAAiB;IAQhB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,WAAW,CAAC,CAAoB;IACxC,OAAO,KAAK,UAAU,GAKrB;gBAC4B,IAAI,EAAE,MAAM;IAElC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAQnD,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,iBAAiB;CAiC1B"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A class that can convert a string offset back to line / column.
|
|
3
|
+
* Grabbed from TypeScript code base
|
|
4
|
+
* @see https://github.com/microsoft/TypeScript/blob/aa9b6953441b53f8b14072c047f0519b611150c4/src/compiler/scanner.ts#L503
|
|
5
|
+
*/
|
|
6
|
+
export class PositionConverter {
|
|
7
|
+
text;
|
|
8
|
+
_lineStarts;
|
|
9
|
+
get lineStarts() {
|
|
10
|
+
if (!this._lineStarts) {
|
|
11
|
+
this._lineStarts = this.computeLineStarts(this.text);
|
|
12
|
+
}
|
|
13
|
+
return this._lineStarts;
|
|
14
|
+
}
|
|
15
|
+
constructor(text) {
|
|
16
|
+
this.text = text;
|
|
17
|
+
}
|
|
18
|
+
positionFromOffset(offset) {
|
|
19
|
+
const lineNumber = this.computeLineOfPosition(offset);
|
|
20
|
+
return {
|
|
21
|
+
line: lineNumber,
|
|
22
|
+
column: offset - this.lineStarts[lineNumber],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
computeLineOfPosition(offset) {
|
|
26
|
+
let lineNumber = binarySearch(this.lineStarts, offset);
|
|
27
|
+
if (lineNumber < 0) {
|
|
28
|
+
// If the actual position was not found,
|
|
29
|
+
// the binary search returns the 2's-complement of the next line start
|
|
30
|
+
// e.g. if the line starts at [5, 10, 23, 80] and the position requested was 20
|
|
31
|
+
// then the search will return -2.
|
|
32
|
+
//
|
|
33
|
+
// We want the index of the previous line start, so we subtract 1.
|
|
34
|
+
// Review 2's-complement if this is confusing.
|
|
35
|
+
lineNumber = ~lineNumber - 1;
|
|
36
|
+
if (lineNumber === -1) {
|
|
37
|
+
throw new Error('position cannot precede the beginning of the file');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return lineNumber;
|
|
41
|
+
}
|
|
42
|
+
computeLineStarts(text) {
|
|
43
|
+
const result = [];
|
|
44
|
+
let pos = 0;
|
|
45
|
+
let lineStart = 0;
|
|
46
|
+
while (pos < text.length) {
|
|
47
|
+
const ch = text.charCodeAt(pos);
|
|
48
|
+
pos++;
|
|
49
|
+
switch (ch) {
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
51
|
+
case 13 /* CharacterCodes.carriageReturn */: {
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
53
|
+
if (text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
|
|
54
|
+
pos++;
|
|
55
|
+
}
|
|
56
|
+
// falls through
|
|
57
|
+
}
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
59
|
+
case 10 /* CharacterCodes.lineFeed */:
|
|
60
|
+
result.push(lineStart);
|
|
61
|
+
lineStart = pos;
|
|
62
|
+
break;
|
|
63
|
+
default:
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
65
|
+
if (ch > 127 /* CharacterCodes.maxAsciiCharacter */ && isLineBreak(ch)) {
|
|
66
|
+
result.push(lineStart);
|
|
67
|
+
lineStart = pos;
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
result.push(lineStart);
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function binarySearch(array, value) {
|
|
77
|
+
if (!array.length) {
|
|
78
|
+
return -1;
|
|
79
|
+
}
|
|
80
|
+
let low = 0;
|
|
81
|
+
let high = array.length - 1;
|
|
82
|
+
while (low <= high) {
|
|
83
|
+
const middle = low + ((high - low) >> 1);
|
|
84
|
+
const midKey = compare(array[middle], value);
|
|
85
|
+
switch (midKey) {
|
|
86
|
+
case -1 /* Comparison.LessThan */:
|
|
87
|
+
low = middle + 1;
|
|
88
|
+
break;
|
|
89
|
+
case 0 /* Comparison.EqualTo */:
|
|
90
|
+
return middle;
|
|
91
|
+
case 1 /* Comparison.GreaterThan */:
|
|
92
|
+
high = middle - 1;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return ~low;
|
|
97
|
+
}
|
|
98
|
+
function compare(a, b) {
|
|
99
|
+
return a < b
|
|
100
|
+
? -1 /* Comparison.LessThan */
|
|
101
|
+
: a > b
|
|
102
|
+
? 1 /* Comparison.GreaterThan */
|
|
103
|
+
: 0 /* Comparison.EqualTo */;
|
|
104
|
+
}
|
|
105
|
+
function isLineBreak(ch) {
|
|
106
|
+
// ES5 7.3:
|
|
107
|
+
// The ECMAScript line terminator characters are listed in Table 3.
|
|
108
|
+
// Table 3: Line Terminator Characters
|
|
109
|
+
// Code Unit Value Name Formal Name
|
|
110
|
+
// \u000A Line Feed <LF>
|
|
111
|
+
// \u000D Carriage Return <CR>
|
|
112
|
+
// \u2028 Line separator <LS>
|
|
113
|
+
// \u2029 Paragraph separator <PS>
|
|
114
|
+
// Only the characters in Table 3 are treated as line terminators. Other new line or line
|
|
115
|
+
// breaking characters are treated as white space but not as line terminators.
|
|
116
|
+
return (
|
|
117
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
118
|
+
ch === 10 /* CharacterCodes.lineFeed */ ||
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
120
|
+
ch === 13 /* CharacterCodes.carriageReturn */ ||
|
|
121
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
122
|
+
ch === 8232 /* CharacterCodes.lineSeparator */ ||
|
|
123
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
124
|
+
ch === 8233 /* CharacterCodes.paragraphSeparator */);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=position-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-converter.js","sourceRoot":"","sources":["../../../src/util/position-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { INSTRUMENTER_CONSTANTS as ID } from '@stryker-mutator/api/core';
|
|
2
|
+
import babel from '@babel/core';
|
|
3
|
+
import { I } from '@stryker-mutator/util';
|
|
4
|
+
import { Mutant } from '../mutant.js';
|
|
5
|
+
import { MutantCollector } from '../transformers/index.js';
|
|
6
|
+
import { MutatorOptions } from '../mutators/index.js';
|
|
7
|
+
export { ID };
|
|
8
|
+
/**
|
|
9
|
+
* Returns syntax for the header if JS/TS files
|
|
10
|
+
*/
|
|
11
|
+
export declare const instrumentationBabelHeader: readonly babel.types.Statement[];
|
|
12
|
+
/**
|
|
13
|
+
* returns syntax for `global.activeMutant === $mutantId`
|
|
14
|
+
* @param mutantId The id of the mutant to switch
|
|
15
|
+
*/
|
|
16
|
+
export declare function mutantTestExpression(mutantId: string): babel.types.CallExpression;
|
|
17
|
+
interface Position {
|
|
18
|
+
line: number;
|
|
19
|
+
column: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function eqNode<T extends babel.types.Node>(a: T, b: babel.types.Node): b is T;
|
|
22
|
+
export declare function offsetLocations(file: babel.types.File, { position, line, column, }: {
|
|
23
|
+
position: number;
|
|
24
|
+
line: number;
|
|
25
|
+
column: number;
|
|
26
|
+
}): void;
|
|
27
|
+
/**
|
|
28
|
+
* Returns a sequence of mutation coverage counters with an optional last expression.
|
|
29
|
+
*
|
|
30
|
+
* @example (global.__coverMutant__(0, 1), 40 + 2)
|
|
31
|
+
* @param mutants The mutants for which covering syntax needs to be generated
|
|
32
|
+
* @param targetExpression The original expression
|
|
33
|
+
*/
|
|
34
|
+
export declare function mutationCoverageSequenceExpression(mutants: Iterable<Mutant>, targetExpression?: babel.types.Expression): babel.types.Expression;
|
|
35
|
+
export declare function isTypeNode(path: babel.NodePath): boolean;
|
|
36
|
+
export declare function isImportDeclaration(path: babel.NodePath): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* A location of an ast node in a file
|
|
39
|
+
*/
|
|
40
|
+
export interface SourceLocationInFile {
|
|
41
|
+
end: Position;
|
|
42
|
+
start: Position;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Determines if a location (needle) is included in an other location (haystack)
|
|
46
|
+
* @param haystack The range to look in
|
|
47
|
+
* @param needle the range to search for
|
|
48
|
+
*/
|
|
49
|
+
export declare function locationIncluded(haystack: SourceLocationInFile, needle: SourceLocationInFile): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Determines if two locations overlap with each other
|
|
52
|
+
*/
|
|
53
|
+
export declare function locationOverlaps(a: SourceLocationInFile, b: SourceLocationInFile): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Helper for `types.cloneNode(node, deep: true, withoutLocations: false);`
|
|
56
|
+
*/
|
|
57
|
+
export declare function deepCloneNode<TNode extends babel.types.Node>(node: TNode): TNode;
|
|
58
|
+
export declare function placeHeaderIfNeeded(mutantCollector: I<MutantCollector>, originFileName: string, options: MutatorOptions, root: babel.types.File): void;
|
|
59
|
+
export declare function placeHeader(root: babel.types.File): void;
|
|
60
|
+
//# sourceMappingURL=syntax-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax-helpers.d.ts","sourceRoot":"","sources":["../../../src/util/syntax-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,EAAE,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAc,CAAC,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,EAAE,EAAE,CAAC;AAQd;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAiDrB,SAAS,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,GACf,KAAK,CAAC,KAAK,CAAC,cAAc,CAI5B;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAYD,wBAAgB,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,EAC/C,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,GAClB,CAAC,IAAI,CAAC,CAER;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EACtB,EACE,QAAQ,EACR,IAAI,EACJ,MAAM,GACP,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpD,IAAI,CAsBN;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EACzB,gBAAgB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,GACxC,KAAK,CAAC,KAAK,CAAC,UAAU,CAWxB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAQxD;AAkDD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAIjE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAUT;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,oBAAoB,EACvB,CAAC,EAAE,oBAAoB,GACtB,OAAO,CAQT;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,EAC1D,IAAI,EAAE,KAAK,GACV,KAAK,CAEP;AAED,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,EACnC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,GACrB,IAAI,CAKN;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAYxD"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { INSTRUMENTER_CONSTANTS as ID } from '@stryker-mutator/api/core';
|
|
2
|
+
import babel from '@babel/core';
|
|
3
|
+
import { deepFreeze } from '@stryker-mutator/util';
|
|
4
|
+
export { ID };
|
|
5
|
+
const STRYKER_NAMESPACE_HELPER = 'stryNS_9fa48';
|
|
6
|
+
const COVER_MUTANT_HELPER = 'stryCov_9fa48';
|
|
7
|
+
const IS_MUTANT_ACTIVE_HELPER = 'stryMutAct_9fa48';
|
|
8
|
+
const { types, traverse } = babel;
|
|
9
|
+
/**
|
|
10
|
+
* Returns syntax for the header if JS/TS files
|
|
11
|
+
*/
|
|
12
|
+
export const instrumentationBabelHeader = deepFreeze(
|
|
13
|
+
// `globalThis` implementation is based on core-js's implementation. See https://github.com/stryker-mutator/stryker-js/issues/4035
|
|
14
|
+
babel.parse(`function ${STRYKER_NAMESPACE_HELPER}(){
|
|
15
|
+
var g = typeof globalThis === 'object' && globalThis && globalThis.Math === Math && globalThis || new Function("return this")();
|
|
16
|
+
var ns = g.${ID.NAMESPACE} || (g.${ID.NAMESPACE} = {});
|
|
17
|
+
if (ns.${ID.ACTIVE_MUTANT} === undefined && g.process && g.process.env && g.process.env.${ID.ACTIVE_MUTANT_ENV_VARIABLE}) {
|
|
18
|
+
ns.${ID.ACTIVE_MUTANT} = g.process.env.${ID.ACTIVE_MUTANT_ENV_VARIABLE};
|
|
19
|
+
}
|
|
20
|
+
function retrieveNS(){
|
|
21
|
+
return ns;
|
|
22
|
+
}
|
|
23
|
+
${STRYKER_NAMESPACE_HELPER} = retrieveNS;
|
|
24
|
+
return retrieveNS();
|
|
25
|
+
}
|
|
26
|
+
${STRYKER_NAMESPACE_HELPER}();
|
|
27
|
+
|
|
28
|
+
function ${COVER_MUTANT_HELPER}() {
|
|
29
|
+
var ns = ${STRYKER_NAMESPACE_HELPER}();
|
|
30
|
+
var cov = ns.${ID.MUTATION_COVERAGE_OBJECT} || (ns.${ID.MUTATION_COVERAGE_OBJECT} = { static: {}, perTest: {} });
|
|
31
|
+
function cover() {
|
|
32
|
+
var c = cov.static;
|
|
33
|
+
if (ns.${ID.CURRENT_TEST_ID}) {
|
|
34
|
+
c = cov.perTest[ns.${ID.CURRENT_TEST_ID}] = cov.perTest[ns.${ID.CURRENT_TEST_ID}] || {};
|
|
35
|
+
}
|
|
36
|
+
var a = arguments;
|
|
37
|
+
for(var i=0; i < a.length; i++){
|
|
38
|
+
c[a[i]] = (c[a[i]] || 0) + 1;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
${COVER_MUTANT_HELPER} = cover;
|
|
42
|
+
cover.apply(null, arguments);
|
|
43
|
+
}
|
|
44
|
+
function ${IS_MUTANT_ACTIVE_HELPER}(id) {
|
|
45
|
+
var ns = ${STRYKER_NAMESPACE_HELPER}();
|
|
46
|
+
function isActive(id) {
|
|
47
|
+
if (ns.${ID.ACTIVE_MUTANT} === id) {
|
|
48
|
+
if (ns.${ID.HIT_COUNT} !== void 0 && ++ns.${ID.HIT_COUNT} > ns.${ID.HIT_LIMIT}) {
|
|
49
|
+
throw new Error('Stryker: Hit count limit reached (' + ns.${ID.HIT_COUNT} + ')');
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
${IS_MUTANT_ACTIVE_HELPER} = isActive;
|
|
56
|
+
return isActive(id);
|
|
57
|
+
}`, { configFile: false, browserslistConfigFile: false, env: { targets: {} } })).program.body; // cast here, otherwise the thing gets unwieldy to handle
|
|
58
|
+
/**
|
|
59
|
+
* returns syntax for `global.activeMutant === $mutantId`
|
|
60
|
+
* @param mutantId The id of the mutant to switch
|
|
61
|
+
*/
|
|
62
|
+
export function mutantTestExpression(mutantId) {
|
|
63
|
+
return types.callExpression(types.identifier(IS_MUTANT_ACTIVE_HELPER), [
|
|
64
|
+
types.stringLiteral(mutantId),
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
function eqLocation(a, b) {
|
|
68
|
+
function eqPosition(start, end) {
|
|
69
|
+
return start.column === end.column && start.line === end.line;
|
|
70
|
+
}
|
|
71
|
+
return eqPosition(a.start, b.start) && eqPosition(a.end, b.end);
|
|
72
|
+
}
|
|
73
|
+
export function eqNode(a, b) {
|
|
74
|
+
return a.type === b.type && !!a.loc && !!b.loc && eqLocation(a.loc, b.loc);
|
|
75
|
+
}
|
|
76
|
+
export function offsetLocations(file, { position, line, column, }) {
|
|
77
|
+
const offsetNode = (node) => {
|
|
78
|
+
node.start += position;
|
|
79
|
+
node.end += position;
|
|
80
|
+
// we need to subtract 1, as lines always start at 1
|
|
81
|
+
node.loc.start.line += line - 1;
|
|
82
|
+
node.loc.end.line += line - 1;
|
|
83
|
+
if (node.loc.start.line === line) {
|
|
84
|
+
node.loc.start.column += column;
|
|
85
|
+
}
|
|
86
|
+
if (node.loc.end.line === line) {
|
|
87
|
+
node.loc.end.column += column;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
traverse(file, {
|
|
91
|
+
enter(path) {
|
|
92
|
+
offsetNode(path.node);
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
// Don't forget the file itself!
|
|
96
|
+
file.start += position;
|
|
97
|
+
file.end += position;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Returns a sequence of mutation coverage counters with an optional last expression.
|
|
101
|
+
*
|
|
102
|
+
* @example (global.__coverMutant__(0, 1), 40 + 2)
|
|
103
|
+
* @param mutants The mutants for which covering syntax needs to be generated
|
|
104
|
+
* @param targetExpression The original expression
|
|
105
|
+
*/
|
|
106
|
+
export function mutationCoverageSequenceExpression(mutants, targetExpression) {
|
|
107
|
+
const mutantIds = [...mutants].map((mutant) => types.stringLiteral(mutant.id));
|
|
108
|
+
const sequence = [
|
|
109
|
+
types.callExpression(types.identifier(COVER_MUTANT_HELPER), mutantIds),
|
|
110
|
+
];
|
|
111
|
+
if (targetExpression) {
|
|
112
|
+
sequence.push(targetExpression);
|
|
113
|
+
}
|
|
114
|
+
return types.sequenceExpression(sequence);
|
|
115
|
+
}
|
|
116
|
+
export function isTypeNode(path) {
|
|
117
|
+
return (path.isTypeAnnotation() ||
|
|
118
|
+
flowTypeAnnotationNodeTypes.includes(path.node.type) ||
|
|
119
|
+
tsTypeAnnotationNodeTypes.includes(path.node.type) ||
|
|
120
|
+
isDeclareVariableStatement(path) ||
|
|
121
|
+
isDeclareModule(path));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Determines whether or not it is a declare variable statement node.
|
|
125
|
+
* @example
|
|
126
|
+
* declare const foo: 'foo';
|
|
127
|
+
*/
|
|
128
|
+
function isDeclareVariableStatement(path) {
|
|
129
|
+
return path.isVariableDeclaration() && path.node.declare === true;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Determines whether or not a node is a string literal that is the name of a module.
|
|
133
|
+
* @example
|
|
134
|
+
* declare module "express" {};
|
|
135
|
+
*/
|
|
136
|
+
function isDeclareModule(path) {
|
|
137
|
+
return path.isTSModuleDeclaration() && (path.node.declare ?? false);
|
|
138
|
+
}
|
|
139
|
+
const tsTypeAnnotationNodeTypes = Object.freeze([
|
|
140
|
+
'TSAsExpression',
|
|
141
|
+
'TSInterfaceDeclaration',
|
|
142
|
+
'TSTypeAnnotation',
|
|
143
|
+
'TSTypeAliasDeclaration',
|
|
144
|
+
'TSEnumDeclaration',
|
|
145
|
+
'TSDeclareFunction',
|
|
146
|
+
'TSTypeParameterInstantiation',
|
|
147
|
+
'TSTypeParameterDeclaration',
|
|
148
|
+
]);
|
|
149
|
+
const flowTypeAnnotationNodeTypes = Object.freeze([
|
|
150
|
+
'DeclareClass',
|
|
151
|
+
'DeclareFunction',
|
|
152
|
+
'DeclareInterface',
|
|
153
|
+
'DeclareModule',
|
|
154
|
+
'DeclareModuleExports',
|
|
155
|
+
'DeclareTypeAlias',
|
|
156
|
+
'DeclareOpaqueType',
|
|
157
|
+
'DeclareVariable',
|
|
158
|
+
'DeclareExportDeclaration',
|
|
159
|
+
'DeclareExportAllDeclaration',
|
|
160
|
+
'InterfaceDeclaration',
|
|
161
|
+
'OpaqueType',
|
|
162
|
+
'TypeAlias',
|
|
163
|
+
'InterfaceDeclaration',
|
|
164
|
+
]);
|
|
165
|
+
export function isImportDeclaration(path) {
|
|
166
|
+
return (types.isTSImportEqualsDeclaration(path.node) || path.isImportDeclaration());
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Determines if a location (needle) is included in an other location (haystack)
|
|
170
|
+
* @param haystack The range to look in
|
|
171
|
+
* @param needle the range to search for
|
|
172
|
+
*/
|
|
173
|
+
export function locationIncluded(haystack, needle) {
|
|
174
|
+
const startIncluded = haystack.start.line < needle.start.line ||
|
|
175
|
+
(haystack.start.line === needle.start.line &&
|
|
176
|
+
haystack.start.column <= needle.start.column);
|
|
177
|
+
const endIncluded = haystack.end.line > needle.end.line ||
|
|
178
|
+
(haystack.end.line === needle.end.line &&
|
|
179
|
+
haystack.end.column >= needle.end.column);
|
|
180
|
+
return startIncluded && endIncluded;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Determines if two locations overlap with each other
|
|
184
|
+
*/
|
|
185
|
+
export function locationOverlaps(a, b) {
|
|
186
|
+
const startIncluded = a.start.line < b.end.line ||
|
|
187
|
+
(a.start.line === b.end.line && a.start.column <= b.end.column);
|
|
188
|
+
const endIncluded = a.end.line > b.start.line ||
|
|
189
|
+
(a.end.line === b.start.line && a.end.column >= b.start.column);
|
|
190
|
+
return startIncluded && endIncluded;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Helper for `types.cloneNode(node, deep: true, withoutLocations: false);`
|
|
194
|
+
*/
|
|
195
|
+
export function deepCloneNode(node) {
|
|
196
|
+
return types.cloneNode(node, /* deep */ true, /* withoutLocations */ false);
|
|
197
|
+
}
|
|
198
|
+
export function placeHeaderIfNeeded(mutantCollector, originFileName, options, root) {
|
|
199
|
+
if (mutantCollector.hasPlacedMutants(originFileName) && !options.noHeader) {
|
|
200
|
+
// Be sure to leave comments like `// @flow` in.
|
|
201
|
+
placeHeader(root);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
export function placeHeader(root) {
|
|
205
|
+
let header = instrumentationBabelHeader;
|
|
206
|
+
if (Array.isArray(root.program.body[0]?.leadingComments)) {
|
|
207
|
+
header = [
|
|
208
|
+
{
|
|
209
|
+
...instrumentationBabelHeader[0],
|
|
210
|
+
leadingComments: root.program.body[0]?.leadingComments,
|
|
211
|
+
},
|
|
212
|
+
...instrumentationBabelHeader.slice(1),
|
|
213
|
+
];
|
|
214
|
+
}
|
|
215
|
+
root.program.body.unshift(...header);
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=syntax-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax-helpers.js","sourceRoot":"","sources":["../../../src/util/syntax-helpers.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@d-es-ign/stryker-js-instrumenter",
|
|
3
|
+
"version": "9.6.0",
|
|
4
|
+
"description": "The code instrumenter used in Stryker, the JavaScript mutation testing framework",
|
|
5
|
+
"main": "dist/src/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/src",
|
|
9
|
+
"src"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
".": "./dist/src/index.js",
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/stryker-mutator/stryker-js.git",
|
|
18
|
+
"directory": "packages/instrumenter"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=20.0.0"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"author": "Nico Jansen <jansennico@gmail.com>",
|
|
27
|
+
"contributors": [
|
|
28
|
+
"Simon de Lang <simondelang@gmail.com>",
|
|
29
|
+
"Nico Jansen <jansennico@gmail.com>"
|
|
30
|
+
],
|
|
31
|
+
"license": "Apache-2.0",
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/stryker-mutator/stryker-js/issues"
|
|
34
|
+
},
|
|
35
|
+
"homepage": "https://stryker-mutator.io",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@babel/core": "~7.29.0",
|
|
38
|
+
"@babel/generator": "~7.29.0",
|
|
39
|
+
"@babel/parser": "~7.29.0",
|
|
40
|
+
"@babel/plugin-proposal-decorators": "~7.29.0",
|
|
41
|
+
"@babel/plugin-transform-explicit-resource-management": "^7.28.0",
|
|
42
|
+
"@babel/preset-typescript": "~7.28.0",
|
|
43
|
+
"@d-es-ign/stryker-js-api": "9.6.0",
|
|
44
|
+
"@d-es-ign/stryker-js-util": "9.6.0",
|
|
45
|
+
"angular-html-parser": "~10.4.0",
|
|
46
|
+
"semver": "~7.7.0",
|
|
47
|
+
"tslib": "2.8.1",
|
|
48
|
+
"weapon-regex": "~1.3.2"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@babel/preset-react": "7.28.5",
|
|
52
|
+
"@d-es-ign/stryker-js-test-helpers": "9.6.0",
|
|
53
|
+
"@types/babel__core": "7.20.5",
|
|
54
|
+
"@types/babel__generator": "7.27.0",
|
|
55
|
+
"@types/estree": "1.0.8",
|
|
56
|
+
"@types/semver": "7.7.1",
|
|
57
|
+
"svelte": "5.53.5"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"test": "c8 npm run mocha",
|
|
61
|
+
"mocha": "mocha",
|
|
62
|
+
"stryker": "node ../core/bin/stryker.js run"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseContext,
|
|
3
|
+
commonTokens,
|
|
4
|
+
Injector,
|
|
5
|
+
tokens,
|
|
6
|
+
} from '@stryker-mutator/api/plugin';
|
|
7
|
+
|
|
8
|
+
import { instrumenterTokens } from './instrumenter-tokens.js';
|
|
9
|
+
import { createParser } from './parsers/index.js';
|
|
10
|
+
import { print } from './printers/index.js';
|
|
11
|
+
import { transform } from './transformers/index.js';
|
|
12
|
+
|
|
13
|
+
import { Instrumenter } from './index.js';
|
|
14
|
+
|
|
15
|
+
export interface InstrumenterContext extends BaseContext {
|
|
16
|
+
[instrumenterTokens.createParser]: typeof createParser;
|
|
17
|
+
[instrumenterTokens.print]: typeof print;
|
|
18
|
+
[instrumenterTokens.transform]: typeof transform;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
createInstrumenter.inject = tokens(commonTokens.injector);
|
|
22
|
+
export function createInstrumenter(
|
|
23
|
+
injector: Injector<BaseContext>,
|
|
24
|
+
): Instrumenter {
|
|
25
|
+
return injector
|
|
26
|
+
.provideValue(instrumenterTokens.print, print)
|
|
27
|
+
.provideValue(instrumenterTokens.createParser, createParser)
|
|
28
|
+
.provideValue(instrumenterTokens.transform, transform)
|
|
29
|
+
.injectClass(Instrumenter);
|
|
30
|
+
}
|