{"version":3,"sources":["/home/runner/work/stryker-log-ignorer/stryker-log-ignorer/build/index.cjs","../src/index.ts"],"names":[],"mappings":"AAAA;ACEA;AACI;AACA;AACA;AACA;AAAA,qDACG;AAIP,gEAAe;AAmBf,IAAM,WAAA,YAAN,MAAoC;AAAA,EAChC,4BAAc,OAAA,EAAS,CAAC,oBAAA,CAAa,OAAO,EAAA;AAAA,EACzB;AAAA,EAEnB,WAAA,CAAY,OAAA,EAAsC;AAC9C,IAAA,IAAA,CAAK,QAAA,kBAAU,OAAA,2BAAS,WAAA;AAAA,EAC5B;AAAA,EAEA,YAAA,CAAa,IAAA,EAAoC;AAC7C,IAAA,MAAM,kBAAA,mCAAoB,IAAA,qBAAK,OAAA,6BAAS,aAAA,UAAe,CAAC,SAAS,GAAA;AACjE,IAAA,GAAA,CACI,IAAA,CAAK,qBAAA,CAAsB,EAAA,GAC3B,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,KAAA,IAAS,iBAAA,GAC9B,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,KAAA,IAAS,mBAAA,GACrC,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,MAAA,CAAO,KAAA,IAAS,aAAA,GAC5C,iBAAA,CAAkB,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA,EACpE;AACE,MAAA,OAAO,CAAA,iCAAA,EAAoC,iBAAiB,CAAA,YAAA,CAAA;AAAA,IAChE;AAAA,EACJ;AACJ,iCAAA;AAEA,iBAAA,CAAkB,OAAA,EAAS,4BAAA,oBAAO,CAAa,QAAQ,CAAA;AAEvD,SAAS,iBAAA,CAAkB,QAAA,EAA+C;AACtE,EAAA,OAAO,QAAA,CAAS,WAAA,CAAY,UAAU,CAAA;AAC1C;AAEA,SAAS,uBAAA,CAAA,EAGP;AACE,EAAA,OAAO,iBAAA;AACX;AAEA,IAAM,eAAA,EAAiB;AAAA,EACnB,0CAAA;AAAA,IACI,kBAAA,CAAW,MAAA;AAAA,IACX,YAAA;AAAA,IACA,uBAAA,CAAwB;AAAA,EAC5B;AACJ,CAAA;AAGA,IAAM,wBAAA,EACF,IAAA,CAAK,KAAA;AAAA;AAAA,EAED,YAAA,CAAG,YAAA;AAAA,IACC,IAAI,GAAA,CAAI,oCAAA,EAAsC,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAAA,IAC7D;AAAA,EACJ;AACJ,CAAA;ADvCJ;AACE;AACA;AACA;AACA;AACA;AACF,8OAAC","file":"/home/runner/work/stryker-log-ignorer/stryker-log-ignorer/build/index.cjs","sourcesContent":[null,"import type { StrykerOptions } from '@stryker-mutator/api/core'\nimport type { Ignorer, NodePath } from '@stryker-mutator/api/ignore'\nimport {\n    PluginKind,\n    commonTokens,\n    declareFactoryPlugin,\n    tokens,\n} from '@stryker-mutator/api/plugin'\n// eslint-disable-next-line @typescript-eslint/no-duplicate-imports\nimport type { Injector, PluginContext } from '@stryker-mutator/api/plugin'\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"]}