@sgohlke/stryker-log-ignorer 2.0.6 → 2.1.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/README.md +9 -9
- package/build/index.cjs +56 -45
- package/build/index.cjs.map +1 -1
- package/build/index.d.cts +60 -61
- package/build/index.d.mts +77 -0
- package/build/index.mjs +28 -0
- package/build/index.mjs.map +1 -0
- package/package.json +56 -58
- package/schema/log-ignorer-options.json +21 -21
- package/build/index.d.ts +0 -78
- package/build/index.js +0 -50
- package/build/index.js.map +0 -1
package/README.md
CHANGED
|
@@ -18,11 +18,11 @@ In the optional **logignore** option you can define the object names (i.e. the n
|
|
|
18
18
|
|
|
19
19
|
```json
|
|
20
20
|
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
"ignorers": ["log-ignore"],
|
|
22
|
+
"plugins": ["@stryker-mutator/*", "@sgohlke/stryker-log-ignorer"],
|
|
23
|
+
"logignore": {
|
|
24
|
+
"objectNames": ["console", "logger"]
|
|
25
|
+
}
|
|
26
26
|
}
|
|
27
27
|
```
|
|
28
28
|
|
|
@@ -35,10 +35,10 @@ Example code:
|
|
|
35
35
|
```typescript
|
|
36
36
|
import { MyFavoriteLogger } from 'some-logger-module'
|
|
37
37
|
export function doSomething(): void {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
const logger = new MyFavoriteLogger('loggername')
|
|
39
|
+
console.log('We do something here!')
|
|
40
|
+
// Some imaginary code here!
|
|
41
|
+
logger.info('We finished doing something!')
|
|
42
42
|
}
|
|
43
43
|
```
|
|
44
44
|
|
package/build/index.cjs
CHANGED
|
@@ -1,50 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
//#region \0rolldown/runtime.js
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
12
|
+
key = keys[i];
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
14
|
+
__defProp(to, key, {
|
|
15
|
+
get: ((k) => from[k]).bind(null, key),
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
24
|
+
value: mod,
|
|
25
|
+
enumerable: true
|
|
26
|
+
}) : target, mod));
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
let _stryker_mutator_api_plugin = require("@stryker-mutator/api/plugin");
|
|
30
|
+
let node_fs = require("node:fs");
|
|
31
|
+
node_fs = __toESM(node_fs);
|
|
32
|
+
|
|
33
|
+
//#region src/index.ts
|
|
34
|
+
var LogIgnorer = class {
|
|
35
|
+
static inject = [_stryker_mutator_api_plugin.commonTokens.options];
|
|
36
|
+
options;
|
|
37
|
+
constructor(options) {
|
|
38
|
+
this.options = options?.logignore;
|
|
39
|
+
}
|
|
40
|
+
shouldIgnore(path) {
|
|
41
|
+
const loggerObjectNames = this.options?.objectNames ?? ["console"];
|
|
42
|
+
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)) return `We are not interested in testing ${loggerObjectNames} statements.`;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
logIgnorerFactory.inject = (0, _stryker_mutator_api_plugin.tokens)(_stryker_mutator_api_plugin.commonTokens.injector);
|
|
23
46
|
function logIgnorerFactory(injector) {
|
|
24
|
-
|
|
47
|
+
return injector.injectClass(LogIgnorer);
|
|
25
48
|
}
|
|
26
49
|
function createLogIgnorerFactory() {
|
|
27
|
-
|
|
50
|
+
return logIgnorerFactory;
|
|
28
51
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
_fs2.default.readFileSync(
|
|
39
|
-
new URL("../schema/log-ignorer-options.json", import.meta.url),
|
|
40
|
-
"utf8"
|
|
41
|
-
)
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
exports.LogIgnorer = LogIgnorer; exports.createLogIgnorerFactory = createLogIgnorerFactory; exports.logIgnorerFactory = logIgnorerFactory; exports.strykerPlugins = strykerPlugins; exports.strykerValidationSchema = strykerValidationSchema;
|
|
52
|
+
const strykerPlugins = [(0, _stryker_mutator_api_plugin.declareFactoryPlugin)(_stryker_mutator_api_plugin.PluginKind.Ignore, "log-ignore", createLogIgnorerFactory())];
|
|
53
|
+
const strykerValidationSchema = JSON.parse(node_fs.default.readFileSync(new URL("../schema/log-ignorer-options.json", require("url").pathToFileURL(__filename).href), "utf8"));
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
exports.LogIgnorer = LogIgnorer;
|
|
57
|
+
exports.createLogIgnorerFactory = createLogIgnorerFactory;
|
|
58
|
+
exports.logIgnorerFactory = logIgnorerFactory;
|
|
59
|
+
exports.strykerPlugins = strykerPlugins;
|
|
60
|
+
exports.strykerValidationSchema = strykerValidationSchema;
|
|
50
61
|
//# sourceMappingURL=index.cjs.map
|
package/build/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["commonTokens","PluginKind","fs"],"sources":["../src/index.ts"],"sourcesContent":["import type { StrykerOptions } from '@stryker-mutator/api/core'\nimport type { Ignorer, NodePath } from '@stryker-mutator/api/ignore'\nimport type { Injector, PluginContext } from '@stryker-mutator/api/plugin'\nimport { PluginKind, commonTokens, declareFactoryPlugin, tokens } from '@stryker-mutator/api/plugin' // eslint-disable-line @typescript-eslint/no-duplicate-imports\n\nimport fs from 'node:fs'\n\n/**\n * Configuration for @sgohlke/stryker-log-ignorer\n */\ninterface IgnorerOptions {\n /**\n * Specify the object names of the logger objects to be ignored. Defaults to [\"console\"]\n */\n objectNames?: string[]\n}\n\ninterface LogIgnorerOptions extends StrykerOptions {\n logignore?: IgnorerOptions\n}\n\n/*\n * LogIgnorer provides functionality to ignore log calls for provided logger object names.\n */\nclass 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\nfunction logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer {\n return injector.injectClass(LogIgnorer)\n}\n\nfunction createLogIgnorerFactory(): {\n (injector: Injector<PluginContext>): LogIgnorer\n inject: ['$injector']\n} {\n return logIgnorerFactory\n}\n\nconst strykerPlugins = [\n declareFactoryPlugin(PluginKind.Ignore, 'log-ignore', createLogIgnorerFactory()),\n]\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nconst strykerValidationSchema: typeof import('../schema/log-ignorer-options.json') = JSON.parse(\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n fs.readFileSync(new URL('../schema/log-ignorer-options.json', import.meta.url), 'utf8'),\n)\n\nexport {\n LogIgnorer,\n createLogIgnorerFactory,\n logIgnorerFactory,\n strykerPlugins,\n strykerValidationSchema,\n}\nexport type { IgnorerOptions, LogIgnorerOptions }\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM,aAAN,MAAoC;CAClC,OAAc,SAAS,CAACA,yCAAa,QAAQ;CAC7C,AAAmB;CAEnB,YAAY,SAAsC;AAChD,OAAK,UAAU,SAAS;;CAG1B,aAAa,MAAoC;EAC/C,MAAM,oBAAoB,KAAK,SAAS,eAAe,CAAC,UAAU;AAClE,MACE,KAAK,uBAAuB,IAC5B,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,KAAK,CAEnE,QAAO,oCAAoC,kBAAkB;;;AAKnE,kBAAkB,iDAAgBA,yCAAa,SAAS;AAExD,SAAS,kBAAkB,UAA+C;AACxE,QAAO,SAAS,YAAY,WAAW;;AAGzC,SAAS,0BAGP;AACA,QAAO;;AAGT,MAAM,iBAAiB,uDACAC,uCAAW,QAAQ,cAAc,yBAAyB,CAAC,CACjF;AAGD,MAAM,0BAA+E,KAAK,MAExFC,gBAAG,aAAa,IAAI,IAAI,oFAAsD,EAAE,OAAO,CACxF"}
|
package/build/index.d.cts
CHANGED
|
@@ -1,78 +1,77 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import { Injector, PluginContext, PluginKind } from
|
|
3
|
-
import { StrykerOptions } from
|
|
4
|
-
import { Ignorer, NodePath } from
|
|
1
|
+
import * as _$_stryker_mutator_api_plugin0 from "@stryker-mutator/api/plugin";
|
|
2
|
+
import { Injector, PluginContext, PluginKind } from "@stryker-mutator/api/plugin";
|
|
3
|
+
import { StrykerOptions } from "@stryker-mutator/api/core";
|
|
4
|
+
import { Ignorer, NodePath } from "@stryker-mutator/api/ignore";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var additionalProperties = false;
|
|
10
|
-
var properties = {
|
|
11
|
-
logignore: {
|
|
12
|
-
description: "Configuration for @sgohlke/stryker-log-ignorer",
|
|
13
|
-
title: "IgnorerOptions",
|
|
14
|
-
additionalProperties: false,
|
|
15
|
-
type: "object",
|
|
16
|
-
"default": {
|
|
17
|
-
},
|
|
18
|
-
properties: {
|
|
19
|
-
objectNames: {
|
|
20
|
-
description: "Specify the object names of the logger objects to be ignored. Defaults to [\"console\"]",
|
|
21
|
-
type: "array",
|
|
22
|
-
items: {
|
|
23
|
-
type: "string"
|
|
24
|
-
},
|
|
25
|
-
"default": [
|
|
26
|
-
"console"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
var logIgnorerOptions = {
|
|
33
|
-
$schema: $schema,
|
|
34
|
-
type: type,
|
|
35
|
-
title: title,
|
|
36
|
-
additionalProperties: additionalProperties,
|
|
37
|
-
properties: properties
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
declare const ___schema_log_ignorer_options_json_$schema: typeof $schema;
|
|
41
|
-
declare const ___schema_log_ignorer_options_json_additionalProperties: typeof additionalProperties;
|
|
42
|
-
declare const ___schema_log_ignorer_options_json_properties: typeof properties;
|
|
43
|
-
declare const ___schema_log_ignorer_options_json_title: typeof title;
|
|
44
|
-
declare const ___schema_log_ignorer_options_json_type: typeof type;
|
|
45
|
-
declare namespace ___schema_log_ignorer_options_json {
|
|
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 };
|
|
6
|
+
//#region \0rolldown/runtime.js
|
|
7
|
+
declare namespace log_ignorer_options_json_d_exports {
|
|
8
|
+
export { $schema, additionalProperties, __json_default_export as default, properties, title, type };
|
|
47
9
|
}
|
|
48
|
-
|
|
10
|
+
declare let $schema: string;
|
|
11
|
+
declare let type: string;
|
|
12
|
+
declare let title: string;
|
|
13
|
+
declare let additionalProperties: boolean;
|
|
14
|
+
declare namespace properties {
|
|
15
|
+
namespace logignore {
|
|
16
|
+
export let description: string;
|
|
17
|
+
let title_1: string;
|
|
18
|
+
export { title_1 as title };
|
|
19
|
+
let additionalProperties_1: boolean;
|
|
20
|
+
export { additionalProperties_1 as additionalProperties };
|
|
21
|
+
let type_1: string;
|
|
22
|
+
export { type_1 as type };
|
|
23
|
+
let _default: {};
|
|
24
|
+
export { _default as default };
|
|
25
|
+
export namespace properties_1 {
|
|
26
|
+
namespace objectNames {
|
|
27
|
+
let description_1: string;
|
|
28
|
+
export { description_1 as description };
|
|
29
|
+
let type_2: string;
|
|
30
|
+
export { type_2 as type };
|
|
31
|
+
export namespace items {
|
|
32
|
+
let type_3: string;
|
|
33
|
+
export { type_3 as type };
|
|
34
|
+
}
|
|
35
|
+
let _default_1: string[];
|
|
36
|
+
export { _default_1 as default };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export { properties_1 as properties };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
declare namespace __json_default_export {
|
|
43
|
+
export { $schema, type, title, additionalProperties, properties };
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region src/index.d.ts
|
|
49
47
|
/**
|
|
50
48
|
* Configuration for @sgohlke/stryker-log-ignorer
|
|
51
49
|
*/
|
|
52
50
|
interface IgnorerOptions {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Specify the object names of the logger objects to be ignored. Defaults to ["console"]
|
|
53
|
+
*/
|
|
54
|
+
objectNames?: string[];
|
|
57
55
|
}
|
|
58
56
|
interface LogIgnorerOptions extends StrykerOptions {
|
|
59
|
-
|
|
57
|
+
logignore?: IgnorerOptions;
|
|
60
58
|
}
|
|
61
59
|
declare class LogIgnorer implements Ignorer {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
static inject: readonly ["options"];
|
|
61
|
+
protected readonly options?: IgnorerOptions;
|
|
62
|
+
constructor(options?: Partial<LogIgnorerOptions>);
|
|
63
|
+
shouldIgnore(path: NodePath): string | undefined;
|
|
66
64
|
}
|
|
67
65
|
declare function logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer;
|
|
68
66
|
declare namespace logIgnorerFactory {
|
|
69
|
-
|
|
67
|
+
var inject: ["$injector"];
|
|
70
68
|
}
|
|
71
69
|
declare function createLogIgnorerFactory(): {
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
(injector: Injector<PluginContext>): LogIgnorer;
|
|
71
|
+
inject: ['$injector'];
|
|
74
72
|
};
|
|
75
|
-
declare const strykerPlugins:
|
|
76
|
-
declare const strykerValidationSchema: typeof
|
|
77
|
-
|
|
73
|
+
declare const strykerPlugins: _$_stryker_mutator_api_plugin0.FactoryPlugin<PluginKind.Ignore, ["$injector"]>[];
|
|
74
|
+
declare const strykerValidationSchema: typeof log_ignorer_options_json_d_exports;
|
|
75
|
+
//#endregion
|
|
78
76
|
export { type IgnorerOptions, LogIgnorer, type LogIgnorerOptions, createLogIgnorerFactory, logIgnorerFactory, strykerPlugins, strykerValidationSchema };
|
|
77
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as _$_stryker_mutator_api_plugin0 from "@stryker-mutator/api/plugin";
|
|
2
|
+
import { Injector, PluginContext, PluginKind } from "@stryker-mutator/api/plugin";
|
|
3
|
+
import { StrykerOptions } from "@stryker-mutator/api/core";
|
|
4
|
+
import { Ignorer, NodePath } from "@stryker-mutator/api/ignore";
|
|
5
|
+
|
|
6
|
+
//#region \0rolldown/runtime.js
|
|
7
|
+
declare namespace log_ignorer_options_json_d_exports {
|
|
8
|
+
export { $schema, additionalProperties, __json_default_export as default, properties, title, type };
|
|
9
|
+
}
|
|
10
|
+
declare let $schema: string;
|
|
11
|
+
declare let type: string;
|
|
12
|
+
declare let title: string;
|
|
13
|
+
declare let additionalProperties: boolean;
|
|
14
|
+
declare namespace properties {
|
|
15
|
+
namespace logignore {
|
|
16
|
+
export let description: string;
|
|
17
|
+
let title_1: string;
|
|
18
|
+
export { title_1 as title };
|
|
19
|
+
let additionalProperties_1: boolean;
|
|
20
|
+
export { additionalProperties_1 as additionalProperties };
|
|
21
|
+
let type_1: string;
|
|
22
|
+
export { type_1 as type };
|
|
23
|
+
let _default: {};
|
|
24
|
+
export { _default as default };
|
|
25
|
+
export namespace properties_1 {
|
|
26
|
+
namespace objectNames {
|
|
27
|
+
let description_1: string;
|
|
28
|
+
export { description_1 as description };
|
|
29
|
+
let type_2: string;
|
|
30
|
+
export { type_2 as type };
|
|
31
|
+
export namespace items {
|
|
32
|
+
let type_3: string;
|
|
33
|
+
export { type_3 as type };
|
|
34
|
+
}
|
|
35
|
+
let _default_1: string[];
|
|
36
|
+
export { _default_1 as default };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export { properties_1 as properties };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
declare namespace __json_default_export {
|
|
43
|
+
export { $schema, type, title, additionalProperties, properties };
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region src/index.d.ts
|
|
47
|
+
/**
|
|
48
|
+
* Configuration for @sgohlke/stryker-log-ignorer
|
|
49
|
+
*/
|
|
50
|
+
interface IgnorerOptions {
|
|
51
|
+
/**
|
|
52
|
+
* Specify the object names of the logger objects to be ignored. Defaults to ["console"]
|
|
53
|
+
*/
|
|
54
|
+
objectNames?: string[];
|
|
55
|
+
}
|
|
56
|
+
interface LogIgnorerOptions extends StrykerOptions {
|
|
57
|
+
logignore?: IgnorerOptions;
|
|
58
|
+
}
|
|
59
|
+
declare class LogIgnorer implements Ignorer {
|
|
60
|
+
static inject: readonly ["options"];
|
|
61
|
+
protected readonly options?: IgnorerOptions;
|
|
62
|
+
constructor(options?: Partial<LogIgnorerOptions>);
|
|
63
|
+
shouldIgnore(path: NodePath): string | undefined;
|
|
64
|
+
}
|
|
65
|
+
declare function logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer;
|
|
66
|
+
declare namespace logIgnorerFactory {
|
|
67
|
+
var inject: ["$injector"];
|
|
68
|
+
}
|
|
69
|
+
declare function createLogIgnorerFactory(): {
|
|
70
|
+
(injector: Injector<PluginContext>): LogIgnorer;
|
|
71
|
+
inject: ['$injector'];
|
|
72
|
+
};
|
|
73
|
+
declare const strykerPlugins: _$_stryker_mutator_api_plugin0.FactoryPlugin<PluginKind.Ignore, ["$injector"]>[];
|
|
74
|
+
declare const strykerValidationSchema: typeof log_ignorer_options_json_d_exports;
|
|
75
|
+
//#endregion
|
|
76
|
+
export { type IgnorerOptions, LogIgnorer, type LogIgnorerOptions, createLogIgnorerFactory, logIgnorerFactory, strykerPlugins, strykerValidationSchema };
|
|
77
|
+
//# sourceMappingURL=index.d.mts.map
|
package/build/index.mjs
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PluginKind, commonTokens, declareFactoryPlugin, tokens } from "@stryker-mutator/api/plugin";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
|
|
4
|
+
//#region src/index.ts
|
|
5
|
+
var LogIgnorer = class {
|
|
6
|
+
static inject = [commonTokens.options];
|
|
7
|
+
options;
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.options = options?.logignore;
|
|
10
|
+
}
|
|
11
|
+
shouldIgnore(path) {
|
|
12
|
+
const loggerObjectNames = this.options?.objectNames ?? ["console"];
|
|
13
|
+
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)) return `We are not interested in testing ${loggerObjectNames} statements.`;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
logIgnorerFactory.inject = tokens(commonTokens.injector);
|
|
17
|
+
function logIgnorerFactory(injector) {
|
|
18
|
+
return injector.injectClass(LogIgnorer);
|
|
19
|
+
}
|
|
20
|
+
function createLogIgnorerFactory() {
|
|
21
|
+
return logIgnorerFactory;
|
|
22
|
+
}
|
|
23
|
+
const strykerPlugins = [declareFactoryPlugin(PluginKind.Ignore, "log-ignore", createLogIgnorerFactory())];
|
|
24
|
+
const strykerValidationSchema = JSON.parse(fs.readFileSync(new URL("../schema/log-ignorer-options.json", import.meta.url), "utf8"));
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { LogIgnorer, createLogIgnorerFactory, logIgnorerFactory, strykerPlugins, strykerValidationSchema };
|
|
28
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { StrykerOptions } from '@stryker-mutator/api/core'\nimport type { Ignorer, NodePath } from '@stryker-mutator/api/ignore'\nimport type { Injector, PluginContext } from '@stryker-mutator/api/plugin'\nimport { PluginKind, commonTokens, declareFactoryPlugin, tokens } from '@stryker-mutator/api/plugin' // eslint-disable-line @typescript-eslint/no-duplicate-imports\n\nimport fs from 'node:fs'\n\n/**\n * Configuration for @sgohlke/stryker-log-ignorer\n */\ninterface IgnorerOptions {\n /**\n * Specify the object names of the logger objects to be ignored. Defaults to [\"console\"]\n */\n objectNames?: string[]\n}\n\ninterface LogIgnorerOptions extends StrykerOptions {\n logignore?: IgnorerOptions\n}\n\n/*\n * LogIgnorer provides functionality to ignore log calls for provided logger object names.\n */\nclass 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\nfunction logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer {\n return injector.injectClass(LogIgnorer)\n}\n\nfunction createLogIgnorerFactory(): {\n (injector: Injector<PluginContext>): LogIgnorer\n inject: ['$injector']\n} {\n return logIgnorerFactory\n}\n\nconst strykerPlugins = [\n declareFactoryPlugin(PluginKind.Ignore, 'log-ignore', createLogIgnorerFactory()),\n]\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nconst strykerValidationSchema: typeof import('../schema/log-ignorer-options.json') = JSON.parse(\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n fs.readFileSync(new URL('../schema/log-ignorer-options.json', import.meta.url), 'utf8'),\n)\n\nexport {\n LogIgnorer,\n createLogIgnorerFactory,\n logIgnorerFactory,\n strykerPlugins,\n strykerValidationSchema,\n}\nexport type { IgnorerOptions, LogIgnorerOptions }\n"],"mappings":";;;;AAwBA,IAAM,aAAN,MAAoC;CAClC,OAAc,SAAS,CAAC,aAAa,QAAQ;CAC7C,AAAmB;CAEnB,YAAY,SAAsC;AAChD,OAAK,UAAU,SAAS;;CAG1B,aAAa,MAAoC;EAC/C,MAAM,oBAAoB,KAAK,SAAS,eAAe,CAAC,UAAU;AAClE,MACE,KAAK,uBAAuB,IAC5B,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,KAAK,CAEnE,QAAO,oCAAoC,kBAAkB;;;AAKnE,kBAAkB,SAAS,OAAO,aAAa,SAAS;AAExD,SAAS,kBAAkB,UAA+C;AACxE,QAAO,SAAS,YAAY,WAAW;;AAGzC,SAAS,0BAGP;AACA,QAAO;;AAGT,MAAM,iBAAiB,CACrB,qBAAqB,WAAW,QAAQ,cAAc,yBAAyB,CAAC,CACjF;AAGD,MAAM,0BAA+E,KAAK,MAExF,GAAG,aAAa,IAAI,IAAI,sCAAsC,OAAO,KAAK,IAAI,EAAE,OAAO,CACxF"}
|
package/package.json
CHANGED
|
@@ -1,61 +1,59 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
"name": "@sgohlke/stryker-log-ignorer",
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Log Ignorer for Stryker",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"Log Ignorer",
|
|
7
|
+
"Mutation Testing",
|
|
8
|
+
"Stryker"
|
|
9
|
+
],
|
|
10
|
+
"homepage": "https://github.com/sgohlke/stryker-log-ignorer#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/sgohlke/stryker-log-ignorer/issues"
|
|
13
|
+
},
|
|
14
|
+
"license": "CC0-1.0",
|
|
15
|
+
"author": "Stefan Gohlke",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/sgohlke/stryker-log-ignorer.git"
|
|
19
|
+
},
|
|
20
|
+
"type": "module",
|
|
21
|
+
"main": "build/index.cjs",
|
|
22
|
+
"module": "build/index.mjs",
|
|
23
|
+
"types": "build/index.d.mts",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./build/index.d.mts",
|
|
27
|
+
"import": "./build/index.mjs",
|
|
28
|
+
"require": "./build/index.cjs",
|
|
29
|
+
"default": "./build/index.mjs"
|
|
14
30
|
},
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"devDependencies": {
|
|
44
|
-
"@babel/parser": "7.28.5",
|
|
45
|
-
"@babel/traverse": "7.28.5",
|
|
46
|
-
"@swc/core": "1.15.3",
|
|
47
|
-
"@types/babel__core": "7.20.5",
|
|
48
|
-
"@types/node": "24.10.1",
|
|
49
|
-
"@vitest/coverage-v8": "4.0.15",
|
|
50
|
-
"oxlint": "1.31.0",
|
|
51
|
-
"prettier": "3.7.4",
|
|
52
|
-
"prettier-plugin-organize-imports": "4.3.0",
|
|
53
|
-
"tsup": "8.5.0",
|
|
54
|
-
"typescript": "5.9.3",
|
|
55
|
-
"vite-tsconfig-paths": "5.1.4",
|
|
56
|
-
"vitest": "4.0.15"
|
|
57
|
-
},
|
|
58
|
-
"dependencies": {
|
|
59
|
-
"@stryker-mutator/api": "9.4.0"
|
|
60
|
-
}
|
|
31
|
+
"./package.json": "./package.json"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsdown",
|
|
35
|
+
"check": "tsc --noEmit --pretty",
|
|
36
|
+
"checkformat": "oxfmt --check",
|
|
37
|
+
"format": "oxfmt",
|
|
38
|
+
"lint": "oxlint -c .oxlintrc.json",
|
|
39
|
+
"lintfix": "oxlint -c .oxlintrc.json --fix",
|
|
40
|
+
"prepack": "npm run build",
|
|
41
|
+
"test": "vitest run --coverage"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@stryker-mutator/api": "9.6.0"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@babel/parser": "7.29.2",
|
|
48
|
+
"@babel/traverse": "7.29.0",
|
|
49
|
+
"@swc/core": "1.15.21",
|
|
50
|
+
"@types/babel__core": "7.20.5",
|
|
51
|
+
"@types/node": "25.5.0",
|
|
52
|
+
"@vitest/coverage-v8": "4.1.2",
|
|
53
|
+
"oxfmt": "0.42.0",
|
|
54
|
+
"oxlint": "1.57.0",
|
|
55
|
+
"tsdown": "0.21.7",
|
|
56
|
+
"typescript": "6.0.2",
|
|
57
|
+
"vitest": "4.1.2"
|
|
58
|
+
}
|
|
61
59
|
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
}
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"title": "LogIgnorerOptions",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"properties": {
|
|
7
|
+
"logignore": {
|
|
8
|
+
"description": "Configuration for @sgohlke/stryker-log-ignorer",
|
|
9
|
+
"title": "IgnorerOptions",
|
|
10
|
+
"additionalProperties": false,
|
|
11
|
+
"type": "object",
|
|
12
|
+
"default": {},
|
|
13
|
+
"properties": {
|
|
14
|
+
"objectNames": {
|
|
15
|
+
"description": "Specify the object names of the logger objects to be ignored. Defaults to [\"console\"]",
|
|
16
|
+
"type": "array",
|
|
17
|
+
"items": {
|
|
18
|
+
"type": "string"
|
|
19
|
+
},
|
|
20
|
+
"default": ["console"]
|
|
23
21
|
}
|
|
22
|
+
}
|
|
24
23
|
}
|
|
24
|
+
}
|
|
25
25
|
}
|
package/build/index.d.ts
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import * as _stryker_mutator_api_plugin from '@stryker-mutator/api/plugin';
|
|
2
|
-
import { Injector, PluginContext, PluginKind } from '@stryker-mutator/api/plugin';
|
|
3
|
-
import { StrykerOptions } from '@stryker-mutator/api/core';
|
|
4
|
-
import { Ignorer, NodePath } from '@stryker-mutator/api/ignore';
|
|
5
|
-
|
|
6
|
-
var $schema = "http://json-schema.org/draft-07/schema";
|
|
7
|
-
var type = "object";
|
|
8
|
-
var title = "LogIgnorerOptions";
|
|
9
|
-
var additionalProperties = false;
|
|
10
|
-
var properties = {
|
|
11
|
-
logignore: {
|
|
12
|
-
description: "Configuration for @sgohlke/stryker-log-ignorer",
|
|
13
|
-
title: "IgnorerOptions",
|
|
14
|
-
additionalProperties: false,
|
|
15
|
-
type: "object",
|
|
16
|
-
"default": {
|
|
17
|
-
},
|
|
18
|
-
properties: {
|
|
19
|
-
objectNames: {
|
|
20
|
-
description: "Specify the object names of the logger objects to be ignored. Defaults to [\"console\"]",
|
|
21
|
-
type: "array",
|
|
22
|
-
items: {
|
|
23
|
-
type: "string"
|
|
24
|
-
},
|
|
25
|
-
"default": [
|
|
26
|
-
"console"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
var logIgnorerOptions = {
|
|
33
|
-
$schema: $schema,
|
|
34
|
-
type: type,
|
|
35
|
-
title: title,
|
|
36
|
-
additionalProperties: additionalProperties,
|
|
37
|
-
properties: properties
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
declare const ___schema_log_ignorer_options_json_$schema: typeof $schema;
|
|
41
|
-
declare const ___schema_log_ignorer_options_json_additionalProperties: typeof additionalProperties;
|
|
42
|
-
declare const ___schema_log_ignorer_options_json_properties: typeof properties;
|
|
43
|
-
declare const ___schema_log_ignorer_options_json_title: typeof title;
|
|
44
|
-
declare const ___schema_log_ignorer_options_json_type: typeof type;
|
|
45
|
-
declare namespace ___schema_log_ignorer_options_json {
|
|
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 };
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Configuration for @sgohlke/stryker-log-ignorer
|
|
51
|
-
*/
|
|
52
|
-
interface IgnorerOptions {
|
|
53
|
-
/**
|
|
54
|
-
* Specify the object names of the logger objects to be ignored. Defaults to ["console"]
|
|
55
|
-
*/
|
|
56
|
-
objectNames?: string[];
|
|
57
|
-
}
|
|
58
|
-
interface LogIgnorerOptions extends StrykerOptions {
|
|
59
|
-
logignore?: IgnorerOptions;
|
|
60
|
-
}
|
|
61
|
-
declare class LogIgnorer implements Ignorer {
|
|
62
|
-
static inject: readonly ["options"];
|
|
63
|
-
protected readonly options?: IgnorerOptions;
|
|
64
|
-
constructor(options?: Partial<LogIgnorerOptions>);
|
|
65
|
-
shouldIgnore(path: NodePath): string | undefined;
|
|
66
|
-
}
|
|
67
|
-
declare function logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer;
|
|
68
|
-
declare namespace logIgnorerFactory {
|
|
69
|
-
var inject: ["$injector"];
|
|
70
|
-
}
|
|
71
|
-
declare function createLogIgnorerFactory(): {
|
|
72
|
-
(injector: Injector<PluginContext>): LogIgnorer;
|
|
73
|
-
inject: ['$injector'];
|
|
74
|
-
};
|
|
75
|
-
declare const strykerPlugins: _stryker_mutator_api_plugin.FactoryPlugin<PluginKind.Ignore, ["$injector"]>[];
|
|
76
|
-
declare const strykerValidationSchema: typeof ___schema_log_ignorer_options_json;
|
|
77
|
-
|
|
78
|
-
export { type IgnorerOptions, LogIgnorer, type LogIgnorerOptions, createLogIgnorerFactory, logIgnorerFactory, strykerPlugins, strykerValidationSchema };
|
package/build/index.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
// src/index.ts
|
|
2
|
-
import {
|
|
3
|
-
PluginKind,
|
|
4
|
-
commonTokens,
|
|
5
|
-
declareFactoryPlugin,
|
|
6
|
-
tokens
|
|
7
|
-
} from "@stryker-mutator/api/plugin";
|
|
8
|
-
import fs from "fs";
|
|
9
|
-
var LogIgnorer = class {
|
|
10
|
-
static inject = [commonTokens.options];
|
|
11
|
-
options;
|
|
12
|
-
constructor(options) {
|
|
13
|
-
this.options = options?.logignore;
|
|
14
|
-
}
|
|
15
|
-
shouldIgnore(path) {
|
|
16
|
-
const loggerObjectNames = this.options?.objectNames ?? ["console"];
|
|
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)) {
|
|
18
|
-
return `We are not interested in testing ${loggerObjectNames} statements.`;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
logIgnorerFactory.inject = tokens(commonTokens.injector);
|
|
23
|
-
function logIgnorerFactory(injector) {
|
|
24
|
-
return injector.injectClass(LogIgnorer);
|
|
25
|
-
}
|
|
26
|
-
function createLogIgnorerFactory() {
|
|
27
|
-
return logIgnorerFactory;
|
|
28
|
-
}
|
|
29
|
-
var strykerPlugins = [
|
|
30
|
-
declareFactoryPlugin(
|
|
31
|
-
PluginKind.Ignore,
|
|
32
|
-
"log-ignore",
|
|
33
|
-
createLogIgnorerFactory()
|
|
34
|
-
)
|
|
35
|
-
];
|
|
36
|
-
var strykerValidationSchema = JSON.parse(
|
|
37
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
38
|
-
fs.readFileSync(
|
|
39
|
-
new URL("../schema/log-ignorer-options.json", import.meta.url),
|
|
40
|
-
"utf8"
|
|
41
|
-
)
|
|
42
|
-
);
|
|
43
|
-
export {
|
|
44
|
-
LogIgnorer,
|
|
45
|
-
createLogIgnorerFactory,
|
|
46
|
-
logIgnorerFactory,
|
|
47
|
-
strykerPlugins,
|
|
48
|
-
strykerValidationSchema
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { StrykerOptions } from '@stryker-mutator/api/core'\nimport type { Ignorer, NodePath } from '@stryker-mutator/api/ignore'\nimport type { Injector, PluginContext } from '@stryker-mutator/api/plugin'\nimport {\n PluginKind,\n commonTokens,\n declareFactoryPlugin,\n tokens,\n} from '@stryker-mutator/api/plugin' // eslint-disable-line @typescript-eslint/no-duplicate-imports\n\nimport fs from 'node:fs'\n\n/**\n * Configuration for @sgohlke/stryker-log-ignorer\n */\ninterface IgnorerOptions {\n /**\n * Specify the object names of the logger objects to be ignored. Defaults to [\"console\"]\n */\n objectNames?: string[]\n}\n\ninterface LogIgnorerOptions extends StrykerOptions {\n logignore?: IgnorerOptions\n}\n\n/*\n * LogIgnorer provides functionality to ignore log calls for provided logger object names.\n */\nclass 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\nfunction logIgnorerFactory(injector: Injector<PluginContext>): LogIgnorer {\n return injector.injectClass(LogIgnorer)\n}\n\nfunction createLogIgnorerFactory(): {\n (injector: Injector<PluginContext>): LogIgnorer\n inject: ['$injector']\n} {\n return logIgnorerFactory\n}\n\nconst strykerPlugins = [\n declareFactoryPlugin(\n PluginKind.Ignore,\n 'log-ignore',\n createLogIgnorerFactory(),\n ),\n]\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nconst 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\nexport {\n LogIgnorer,\n createLogIgnorerFactory,\n logIgnorerFactory,\n strykerPlugins,\n strykerValidationSchema,\n}\nexport type { IgnorerOptions, LogIgnorerOptions }\n"],"mappings":";AAGA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,OAAO,QAAQ;AAmBf,IAAM,aAAN,MAAoC;AAAA,EAChC,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;AAEvD,SAAS,kBAAkB,UAA+C;AACtE,SAAO,SAAS,YAAY,UAAU;AAC1C;AAEA,SAAS,0BAGP;AACE,SAAO;AACX;AAEA,IAAM,iBAAiB;AAAA,EACnB;AAAA,IACI,WAAW;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,EAC5B;AACJ;AAGA,IAAM,0BACF,KAAK;AAAA;AAAA,EAED,GAAG;AAAA,IACC,IAAI,IAAI,sCAAsC,YAAY,GAAG;AAAA,IAC7D;AAAA,EACJ;AACJ;","names":[]}
|