@sgohlke/stryker-log-ignorer 2.0.0 → 2.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/README.md +1 -1
- package/build/index.cjs +5 -8
- package/build/index.cjs.map +1 -1
- package/build/index.d.cts +4 -6
- package/build/index.d.ts +4 -6
- package/build/index.js +5 -8
- package/build/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ TypeScript declarations are provided within the project.
|
|
|
14
14
|
|
|
15
15
|
In order to use the plugin you have to add it as **ignorer** and add both the **@stryker-mutator** and **@sgohlke/stryker-log-ignorer** plugins to the Stryker configuration file.
|
|
16
16
|
|
|
17
|
-
In the optional **
|
|
17
|
+
In the optional **logignore** option you can define the object names (i.e. the name of the variable/constant, NOT the name of a Logger class or interface) to be ignored. If no **logignore** option is provided **console** calls will be ignored.
|
|
18
18
|
|
|
19
19
|
```json
|
|
20
20
|
{
|
package/build/index.cjs
CHANGED
|
@@ -7,16 +7,13 @@
|
|
|
7
7
|
var _plugin = require('@stryker-mutator/api/plugin');
|
|
8
8
|
var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
|
|
9
9
|
var LogIgnorer = (_class = class {
|
|
10
|
-
|
|
11
|
-
this.log = log;
|
|
12
|
-
this.options = options;
|
|
13
|
-
}
|
|
14
|
-
static __initStatic() {this.inject = [_plugin.commonTokens.logger, _plugin.commonTokens.options]}
|
|
10
|
+
static __initStatic() {this.inject = [_plugin.commonTokens.options]}
|
|
15
11
|
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.options = _optionalChain([options, 'optionalAccess', _ => _.logignore]);
|
|
14
|
+
}
|
|
16
15
|
shouldIgnore(path) {
|
|
17
|
-
const loggerObjectNames = _nullishCoalesce(_optionalChain([this, 'access',
|
|
18
|
-
"console"
|
|
19
|
-
]));
|
|
16
|
+
const loggerObjectNames = _nullishCoalesce(_optionalChain([this, 'access', _2 => _2.options, 'optionalAccess', _3 => _3.objectNames]), () => ( ["console"]));
|
|
20
17
|
if (path.isExpressionStatement() && path.node.expression.type === "CallExpression" && path.node.expression.callee.type === "MemberExpression" && path.node.expression.callee.object.type === "Identifier" && loggerObjectNames.includes(path.node.expression.callee.object.name)) {
|
|
21
18
|
return `We are not interested in testing ${loggerObjectNames} statements.`;
|
|
22
19
|
}
|
package/build/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";AAEA;AAAA,EACI;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACG;AACP,OAAO,QAAQ;AAuCR,IAAM,aAAN,MAAoC;AAAA,EACvC,OAAc,SAAS,CAAC,aAAa,OAAO;AAAA,EACzB;AAAA,EAEnB,YAAY,SAAsC;AAC9C,SAAK,UAAU,SAAS;AAAA,EAC5B;AAAA,EAEA,aAAa,MAAoC;AAC7C,UAAM,oBAAoB,KAAK,SAAS,eAAe,CAAC,SAAS;AACjE,QACI,KAAK,sBAAsB,KAC3B,KAAK,KAAK,WAAW,SAAS,oBAC9B,KAAK,KAAK,WAAW,OAAO,SAAS,sBACrC,KAAK,KAAK,WAAW,OAAO,OAAO,SAAS,gBAC5C,kBAAkB,SAAS,KAAK,KAAK,WAAW,OAAO,OAAO,IAAI,GACpE;AACE,aAAO,oCAAoC,iBAAiB;AAAA,IAChE;AAAA,EACJ;AACJ;AAEA,kBAAkB,SAAS,OAAO,aAAa,QAAQ;AAEhD,SAAS,kBACZ,UACU;AACV,SAAO,SAAS,YAAY,UAAU;AAC1C;AAEO,SAAS,0BAGd;AACE,SAAO;AACX;AAEO,IAAM,iBAAiB;AAAA,EAC1B;AAAA,IACI,WAAW;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,EAC5B;AACJ;AAEO,IAAM,0BACT,KAAK;AAAA;AAAA,EAED,GAAG;AAAA,IACC,IAAI,IAAI,sCAAsC,YAAY,GAAG;AAAA,IAC7D;AAAA,EACJ;AACJ","sourcesContent":["import { StrykerOptions } from '@stryker-mutator/api/core'\nimport { Ignorer } from '@stryker-mutator/api/ignore'\nimport {\n commonTokens,\n declareFactoryPlugin,\n Injector,\n PluginContext,\n PluginKind,\n tokens,\n} from '@stryker-mutator/api/plugin'\nimport fs from 'node:fs'\n\n/**\n * We define the necessary functions and fields for NodePath to be able to provide type safety\n * in our code.\n */\nexport interface NodePath {\n isExpressionStatement(): boolean\n node: {\n expression: {\n type: string\n callee: {\n type: string\n object: {\n type: string\n name: string\n }\n }\n }\n }\n}\n\n/**\n * Configuration for @sgohlke/stryker-log-ignorer\n */\nexport interface IgnorerOptions {\n /**\n * Specify the object names of the logger objects to be ignored. Defaults to [\"console\"]\n */\n objectNames?: string[]\n}\n\nexport interface LogIgnorerOptions extends StrykerOptions {\n logignore?: IgnorerOptions\n}\n\n/*\n * LogIgnorer provides functionality to ignore log calls for provided logger object names.\n */\nexport class LogIgnorer implements Ignorer {\n public static inject = [commonTokens.options] as const\n protected readonly options?: IgnorerOptions\n\n constructor(options?: Partial<LogIgnorerOptions>) {\n this.options = options?.logignore\n }\n\n shouldIgnore(path: NodePath): string | undefined {\n const loggerObjectNames = this.options?.objectNames ?? ['console']\n if (\n path.isExpressionStatement() &&\n path.node.expression.type === 'CallExpression' &&\n path.node.expression.callee.type === 'MemberExpression' &&\n path.node.expression.callee.object.type === 'Identifier' &&\n loggerObjectNames.includes(path.node.expression.callee.object.name)\n ) {\n return `We are not interested in testing ${loggerObjectNames} statements.`\n }\n }\n}\n\nlogIgnorerFactory.inject = tokens(commonTokens.injector)\n\nexport function logIgnorerFactory(\n injector: Injector<PluginContext>,\n): LogIgnorer {\n return injector.injectClass(LogIgnorer)\n}\n\nexport function createLogIgnorerFactory(): {\n (injector: Injector<PluginContext>): LogIgnorer\n inject: ['$injector']\n} {\n return logIgnorerFactory\n}\n\nexport const strykerPlugins = [\n declareFactoryPlugin(\n PluginKind.Ignore,\n 'log-ignore',\n createLogIgnorerFactory(),\n ),\n]\n\nexport const strykerValidationSchema: typeof import('../schema/log-ignorer-options.json') =\n JSON.parse(\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n fs.readFileSync(\n new URL('../schema/log-ignorer-options.json', import.meta.url),\n 'utf8',\n ),\n )\n"]}
|
package/build/index.d.cts
CHANGED
|
@@ -2,7 +2,6 @@ import * as _stryker_mutator_api_plugin from '@stryker-mutator/api/plugin';
|
|
|
2
2
|
import { Injector, PluginContext, PluginKind } from '@stryker-mutator/api/plugin';
|
|
3
3
|
import { StrykerOptions } from '@stryker-mutator/api/core';
|
|
4
4
|
import { Ignorer } from '@stryker-mutator/api/ignore';
|
|
5
|
-
import { Logger } from '@stryker-mutator/api/logging';
|
|
6
5
|
|
|
7
6
|
var $schema = "http://json-schema.org/draft-07/schema";
|
|
8
7
|
var type = "object";
|
|
@@ -76,13 +75,12 @@ interface IgnorerOptions {
|
|
|
76
75
|
objectNames?: string[];
|
|
77
76
|
}
|
|
78
77
|
interface LogIgnorerOptions extends StrykerOptions {
|
|
79
|
-
logignore
|
|
78
|
+
logignore?: IgnorerOptions;
|
|
80
79
|
}
|
|
81
80
|
declare class LogIgnorer implements Ignorer {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
constructor(log?: Logger | undefined, options?: StrykerOptions);
|
|
81
|
+
static inject: readonly ["options"];
|
|
82
|
+
protected readonly options?: IgnorerOptions;
|
|
83
|
+
constructor(options?: Partial<LogIgnorerOptions>);
|
|
86
84
|
shouldIgnore(path: NodePath): string | undefined;
|
|
87
85
|
}
|
|
88
86
|
declare function logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer;
|
package/build/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import * as _stryker_mutator_api_plugin from '@stryker-mutator/api/plugin';
|
|
|
2
2
|
import { Injector, PluginContext, PluginKind } from '@stryker-mutator/api/plugin';
|
|
3
3
|
import { StrykerOptions } from '@stryker-mutator/api/core';
|
|
4
4
|
import { Ignorer } from '@stryker-mutator/api/ignore';
|
|
5
|
-
import { Logger } from '@stryker-mutator/api/logging';
|
|
6
5
|
|
|
7
6
|
var $schema = "http://json-schema.org/draft-07/schema";
|
|
8
7
|
var type = "object";
|
|
@@ -76,13 +75,12 @@ interface IgnorerOptions {
|
|
|
76
75
|
objectNames?: string[];
|
|
77
76
|
}
|
|
78
77
|
interface LogIgnorerOptions extends StrykerOptions {
|
|
79
|
-
logignore
|
|
78
|
+
logignore?: IgnorerOptions;
|
|
80
79
|
}
|
|
81
80
|
declare class LogIgnorer implements Ignorer {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
constructor(log?: Logger | undefined, options?: StrykerOptions);
|
|
81
|
+
static inject: readonly ["options"];
|
|
82
|
+
protected readonly options?: IgnorerOptions;
|
|
83
|
+
constructor(options?: Partial<LogIgnorerOptions>);
|
|
86
84
|
shouldIgnore(path: NodePath): string | undefined;
|
|
87
85
|
}
|
|
88
86
|
declare function logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer;
|
package/build/index.js
CHANGED
|
@@ -7,16 +7,13 @@ import {
|
|
|
7
7
|
} from "@stryker-mutator/api/plugin";
|
|
8
8
|
import fs from "node:fs";
|
|
9
9
|
var LogIgnorer = class {
|
|
10
|
-
|
|
11
|
-
this.log = log;
|
|
12
|
-
this.options = options;
|
|
13
|
-
}
|
|
14
|
-
static inject = [commonTokens.logger, commonTokens.options];
|
|
10
|
+
static inject = [commonTokens.options];
|
|
15
11
|
options;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.options = options?.logignore;
|
|
14
|
+
}
|
|
16
15
|
shouldIgnore(path) {
|
|
17
|
-
const loggerObjectNames = this.options?.
|
|
18
|
-
"console"
|
|
19
|
-
];
|
|
16
|
+
const loggerObjectNames = this.options?.objectNames ?? ["console"];
|
|
20
17
|
if (path.isExpressionStatement() && path.node.expression.type === "CallExpression" && path.node.expression.callee.type === "MemberExpression" && path.node.expression.callee.object.type === "Identifier" && loggerObjectNames.includes(path.node.expression.callee.object.name)) {
|
|
21
18
|
return `We are not interested in testing ${loggerObjectNames} statements.`;
|
|
22
19
|
}
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { StrykerOptions } from '@stryker-mutator/api/core'\nimport { Ignorer } from '@stryker-mutator/api/ignore'\nimport {
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { StrykerOptions } from '@stryker-mutator/api/core'\nimport { Ignorer } from '@stryker-mutator/api/ignore'\nimport {\n commonTokens,\n declareFactoryPlugin,\n Injector,\n PluginContext,\n PluginKind,\n tokens,\n} from '@stryker-mutator/api/plugin'\nimport fs from 'node:fs'\n\n/**\n * We define the necessary functions and fields for NodePath to be able to provide type safety\n * in our code.\n */\nexport interface NodePath {\n isExpressionStatement(): boolean\n node: {\n expression: {\n type: string\n callee: {\n type: string\n object: {\n type: string\n name: string\n }\n }\n }\n }\n}\n\n/**\n * Configuration for @sgohlke/stryker-log-ignorer\n */\nexport interface IgnorerOptions {\n /**\n * Specify the object names of the logger objects to be ignored. Defaults to [\"console\"]\n */\n objectNames?: string[]\n}\n\nexport interface LogIgnorerOptions extends StrykerOptions {\n logignore?: IgnorerOptions\n}\n\n/*\n * LogIgnorer provides functionality to ignore log calls for provided logger object names.\n */\nexport class LogIgnorer implements Ignorer {\n public static inject = [commonTokens.options] as const\n protected readonly options?: IgnorerOptions\n\n constructor(options?: Partial<LogIgnorerOptions>) {\n this.options = options?.logignore\n }\n\n shouldIgnore(path: NodePath): string | undefined {\n const loggerObjectNames = this.options?.objectNames ?? ['console']\n if (\n path.isExpressionStatement() &&\n path.node.expression.type === 'CallExpression' &&\n path.node.expression.callee.type === 'MemberExpression' &&\n path.node.expression.callee.object.type === 'Identifier' &&\n loggerObjectNames.includes(path.node.expression.callee.object.name)\n ) {\n return `We are not interested in testing ${loggerObjectNames} statements.`\n }\n }\n}\n\nlogIgnorerFactory.inject = tokens(commonTokens.injector)\n\nexport function logIgnorerFactory(\n injector: Injector<PluginContext>,\n): LogIgnorer {\n return injector.injectClass(LogIgnorer)\n}\n\nexport function createLogIgnorerFactory(): {\n (injector: Injector<PluginContext>): LogIgnorer\n inject: ['$injector']\n} {\n return logIgnorerFactory\n}\n\nexport const strykerPlugins = [\n declareFactoryPlugin(\n PluginKind.Ignore,\n 'log-ignore',\n createLogIgnorerFactory(),\n ),\n]\n\nexport const strykerValidationSchema: typeof import('../schema/log-ignorer-options.json') =\n JSON.parse(\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n fs.readFileSync(\n new URL('../schema/log-ignorer-options.json', import.meta.url),\n 'utf8',\n ),\n )\n"],"mappings":";AAEA;AAAA,EACI;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACG;AACP,OAAO,QAAQ;AAuCR,IAAM,aAAN,MAAoC;AAAA,EACvC,OAAc,SAAS,CAAC,aAAa,OAAO;AAAA,EACzB;AAAA,EAEnB,YAAY,SAAsC;AAC9C,SAAK,UAAU,SAAS;AAAA,EAC5B;AAAA,EAEA,aAAa,MAAoC;AAC7C,UAAM,oBAAoB,KAAK,SAAS,eAAe,CAAC,SAAS;AACjE,QACI,KAAK,sBAAsB,KAC3B,KAAK,KAAK,WAAW,SAAS,oBAC9B,KAAK,KAAK,WAAW,OAAO,SAAS,sBACrC,KAAK,KAAK,WAAW,OAAO,OAAO,SAAS,gBAC5C,kBAAkB,SAAS,KAAK,KAAK,WAAW,OAAO,OAAO,IAAI,GACpE;AACE,aAAO,oCAAoC,iBAAiB;AAAA,IAChE;AAAA,EACJ;AACJ;AAEA,kBAAkB,SAAS,OAAO,aAAa,QAAQ;AAEhD,SAAS,kBACZ,UACU;AACV,SAAO,SAAS,YAAY,UAAU;AAC1C;AAEO,SAAS,0BAGd;AACE,SAAO;AACX;AAEO,IAAM,iBAAiB;AAAA,EAC1B;AAAA,IACI,WAAW;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,EAC5B;AACJ;AAEO,IAAM,0BACT,KAAK;AAAA;AAAA,EAED,GAAG;AAAA,IACC,IAAI,IAAI,sCAAsC,YAAY,GAAG;AAAA,IAC7D;AAAA,EACJ;AACJ;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sgohlke/stryker-log-ignorer",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Log Ignorer for Stryker",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsup-node",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"homepage": "https://github.com/sgohlke/stryker-log-ignorer#readme",
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "20.12.7",
|
|
45
|
-
"@vitest/coverage-v8": "1.5.
|
|
45
|
+
"@vitest/coverage-v8": "1.5.2",
|
|
46
46
|
"eslint-plugin-deprecation": "2.0.0",
|
|
47
47
|
"eslint-plugin-import": "2.29.1",
|
|
48
48
|
"eslint-plugin-security": "3.0.0",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"typescript": "5.4.5",
|
|
54
54
|
"typescript-eslint": "7.7.1",
|
|
55
55
|
"vite-tsconfig-paths": "4.3.2",
|
|
56
|
-
"vitest": "1.5.
|
|
56
|
+
"vitest": "1.5.2"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@stryker-mutator/api": "8.2.6"
|