@sgohlke/stryker-log-ignorer 2.0.0 → 2.0.2

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 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 **loginore** 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 **loginore** option is provided **console** calls will be ignored.
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
- constructor(log, options) {
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', _ => _.options, 'optionalAccess', _2 => _2.logignore, 'optionalAccess', _3 => _3.objectNames]), () => ( [
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
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";AAGA;AAAA,EACI;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACG;AACP,OAAO,QAAQ;AAuCR,IAAM,aAAN,MAAoC;AAAA,EAIvC,YAEqB,KACjB,SACF;AAFmB;AAGjB,SAAK,UAAU;AAAA,EACnB;AAAA,EATA,OAAc,SAAS,CAAC,aAAa,QAAQ,aAAa,OAAO;AAAA,EAC9C;AAAA,EAUnB,aAAa,MAAoC;AAC7C,UAAM,oBAAoB,KAAK,SAAS,WAAW,eAAe;AAAA,MAC9D;AAAA,IACJ;AACA,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 { Logger } from '@stryker-mutator/api/logging'\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 provides logger object names.\n */\nexport class LogIgnorer implements Ignorer {\n public static inject = [commonTokens.logger, commonTokens.options] as const\n protected readonly options: LogIgnorerOptions\n\n constructor(\n // eslint-disable-next-line @typescript-eslint/parameter-properties\n private readonly log?: Logger,\n options?: StrykerOptions,\n ) {\n this.options = options as LogIgnorerOptions\n }\n\n shouldIgnore(path: NodePath): string | undefined {\n const loggerObjectNames = this.options?.logignore?.objectNames ?? [\n 'console',\n ]\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"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";AAEA;AAAA,EAGI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,OAAO,QAAQ;AAmBR,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, NodePath } from '@stryker-mutator/api/ignore'\nimport {\n Injector,\n PluginContext,\n PluginKind,\n commonTokens,\n declareFactoryPlugin,\n tokens,\n} from '@stryker-mutator/api/plugin'\nimport fs from 'node:fs'\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
@@ -1,8 +1,7 @@
1
1
  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
- import { Ignorer } from '@stryker-mutator/api/ignore';
5
- import { Logger } from '@stryker-mutator/api/logging';
4
+ import { Ignorer, NodePath } from '@stryker-mutator/api/ignore';
6
5
 
7
6
  var $schema = "http://json-schema.org/draft-07/schema";
8
7
  var type = "object";
@@ -47,25 +46,6 @@ declare namespace ___schema_log_ignorer_options_json {
47
46
  export { ___schema_log_ignorer_options_json_$schema as $schema, ___schema_log_ignorer_options_json_additionalProperties as additionalProperties, logIgnorerOptions as default, ___schema_log_ignorer_options_json_properties as properties, ___schema_log_ignorer_options_json_title as title, ___schema_log_ignorer_options_json_type as type };
48
47
  }
49
48
 
50
- /**
51
- * We define the necessary functions and fields for NodePath to be able to provide type safety
52
- * in our code.
53
- */
54
- interface NodePath {
55
- isExpressionStatement(): boolean;
56
- node: {
57
- expression: {
58
- type: string;
59
- callee: {
60
- type: string;
61
- object: {
62
- type: string;
63
- name: string;
64
- };
65
- };
66
- };
67
- };
68
- }
69
49
  /**
70
50
  * Configuration for @sgohlke/stryker-log-ignorer
71
51
  */
@@ -76,13 +56,12 @@ interface IgnorerOptions {
76
56
  objectNames?: string[];
77
57
  }
78
58
  interface LogIgnorerOptions extends StrykerOptions {
79
- logignore: IgnorerOptions;
59
+ logignore?: IgnorerOptions;
80
60
  }
81
61
  declare class LogIgnorer implements Ignorer {
82
- private readonly log?;
83
- static inject: readonly ["logger", "options"];
84
- protected readonly options: LogIgnorerOptions;
85
- constructor(log?: Logger | undefined, options?: StrykerOptions);
62
+ static inject: readonly ["options"];
63
+ protected readonly options?: IgnorerOptions;
64
+ constructor(options?: Partial<LogIgnorerOptions>);
86
65
  shouldIgnore(path: NodePath): string | undefined;
87
66
  }
88
67
  declare function logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer;
@@ -96,4 +75,4 @@ declare function createLogIgnorerFactory(): {
96
75
  declare const strykerPlugins: _stryker_mutator_api_plugin.FactoryPlugin<PluginKind.Ignore, ["$injector"]>[];
97
76
  declare const strykerValidationSchema: typeof ___schema_log_ignorer_options_json;
98
77
 
99
- export { type IgnorerOptions, LogIgnorer, type LogIgnorerOptions, type NodePath, createLogIgnorerFactory, logIgnorerFactory, strykerPlugins, strykerValidationSchema };
78
+ export { type IgnorerOptions, LogIgnorer, type LogIgnorerOptions, createLogIgnorerFactory, logIgnorerFactory, strykerPlugins, strykerValidationSchema };
package/build/index.d.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  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
- import { Ignorer } from '@stryker-mutator/api/ignore';
5
- import { Logger } from '@stryker-mutator/api/logging';
4
+ import { Ignorer, NodePath } from '@stryker-mutator/api/ignore';
6
5
 
7
6
  var $schema = "http://json-schema.org/draft-07/schema";
8
7
  var type = "object";
@@ -47,25 +46,6 @@ declare namespace ___schema_log_ignorer_options_json {
47
46
  export { ___schema_log_ignorer_options_json_$schema as $schema, ___schema_log_ignorer_options_json_additionalProperties as additionalProperties, logIgnorerOptions as default, ___schema_log_ignorer_options_json_properties as properties, ___schema_log_ignorer_options_json_title as title, ___schema_log_ignorer_options_json_type as type };
48
47
  }
49
48
 
50
- /**
51
- * We define the necessary functions and fields for NodePath to be able to provide type safety
52
- * in our code.
53
- */
54
- interface NodePath {
55
- isExpressionStatement(): boolean;
56
- node: {
57
- expression: {
58
- type: string;
59
- callee: {
60
- type: string;
61
- object: {
62
- type: string;
63
- name: string;
64
- };
65
- };
66
- };
67
- };
68
- }
69
49
  /**
70
50
  * Configuration for @sgohlke/stryker-log-ignorer
71
51
  */
@@ -76,13 +56,12 @@ interface IgnorerOptions {
76
56
  objectNames?: string[];
77
57
  }
78
58
  interface LogIgnorerOptions extends StrykerOptions {
79
- logignore: IgnorerOptions;
59
+ logignore?: IgnorerOptions;
80
60
  }
81
61
  declare class LogIgnorer implements Ignorer {
82
- private readonly log?;
83
- static inject: readonly ["logger", "options"];
84
- protected readonly options: LogIgnorerOptions;
85
- constructor(log?: Logger | undefined, options?: StrykerOptions);
62
+ static inject: readonly ["options"];
63
+ protected readonly options?: IgnorerOptions;
64
+ constructor(options?: Partial<LogIgnorerOptions>);
86
65
  shouldIgnore(path: NodePath): string | undefined;
87
66
  }
88
67
  declare function logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer;
@@ -96,4 +75,4 @@ declare function createLogIgnorerFactory(): {
96
75
  declare const strykerPlugins: _stryker_mutator_api_plugin.FactoryPlugin<PluginKind.Ignore, ["$injector"]>[];
97
76
  declare const strykerValidationSchema: typeof ___schema_log_ignorer_options_json;
98
77
 
99
- export { type IgnorerOptions, LogIgnorer, type LogIgnorerOptions, type NodePath, createLogIgnorerFactory, logIgnorerFactory, strykerPlugins, strykerValidationSchema };
78
+ export { type IgnorerOptions, LogIgnorer, type LogIgnorerOptions, createLogIgnorerFactory, logIgnorerFactory, strykerPlugins, strykerValidationSchema };
package/build/index.js CHANGED
@@ -1,22 +1,19 @@
1
1
  // src/index.ts
2
2
  import {
3
+ PluginKind,
3
4
  commonTokens,
4
5
  declareFactoryPlugin,
5
- PluginKind,
6
6
  tokens
7
7
  } from "@stryker-mutator/api/plugin";
8
8
  import fs from "node:fs";
9
9
  var LogIgnorer = class {
10
- constructor(log, options) {
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?.logignore?.objectNames ?? [
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
  }
@@ -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 { Logger } from '@stryker-mutator/api/logging'\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 provides logger object names.\n */\nexport class LogIgnorer implements Ignorer {\n public static inject = [commonTokens.logger, commonTokens.options] as const\n protected readonly options: LogIgnorerOptions\n\n constructor(\n // eslint-disable-next-line @typescript-eslint/parameter-properties\n private readonly log?: Logger,\n options?: StrykerOptions,\n ) {\n this.options = options as LogIgnorerOptions\n }\n\n shouldIgnore(path: NodePath): string | undefined {\n const loggerObjectNames = this.options?.logignore?.objectNames ?? [\n 'console',\n ]\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":";AAGA;AAAA,EACI;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACG;AACP,OAAO,QAAQ;AAuCR,IAAM,aAAN,MAAoC;AAAA,EAIvC,YAEqB,KACjB,SACF;AAFmB;AAGjB,SAAK,UAAU;AAAA,EACnB;AAAA,EATA,OAAc,SAAS,CAAC,aAAa,QAAQ,aAAa,OAAO;AAAA,EAC9C;AAAA,EAUnB,aAAa,MAAoC;AAC7C,UAAM,oBAAoB,KAAK,SAAS,WAAW,eAAe;AAAA,MAC9D;AAAA,IACJ;AACA,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":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { StrykerOptions } from '@stryker-mutator/api/core'\nimport { Ignorer, NodePath } from '@stryker-mutator/api/ignore'\nimport {\n Injector,\n PluginContext,\n PluginKind,\n commonTokens,\n declareFactoryPlugin,\n tokens,\n} from '@stryker-mutator/api/plugin'\nimport fs from 'node:fs'\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,EAGI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,OAAO,QAAQ;AAmBR,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.0",
3
+ "version": "2.0.2",
4
4
  "description": "Log Ignorer for Stryker",
5
5
  "scripts": {
6
6
  "build": "tsup-node",
@@ -41,8 +41,11 @@
41
41
  },
42
42
  "homepage": "https://github.com/sgohlke/stryker-log-ignorer#readme",
43
43
  "devDependencies": {
44
+ "@babel/parser": "7.24.4",
45
+ "@babel/traverse": "7.24.1",
46
+ "@types/babel__core": "7.20.5",
44
47
  "@types/node": "20.12.7",
45
- "@vitest/coverage-v8": "1.5.0",
48
+ "@vitest/coverage-v8": "1.5.2",
46
49
  "eslint-plugin-deprecation": "2.0.0",
47
50
  "eslint-plugin-import": "2.29.1",
48
51
  "eslint-plugin-security": "3.0.0",
@@ -53,7 +56,7 @@
53
56
  "typescript": "5.4.5",
54
57
  "typescript-eslint": "7.7.1",
55
58
  "vite-tsconfig-paths": "4.3.2",
56
- "vitest": "1.5.0"
59
+ "vitest": "1.5.2"
57
60
  },
58
61
  "dependencies": {
59
62
  "@stryker-mutator/api": "8.2.6"