blob: 1e453b388f1de9239a5a2267e2fdbd470df4788d [file] [log] [blame]
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../src/istanbul/coverage.ts"],"names":[],"mappings":";;AAOA;IAMI,kBAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAJjC,aAAQ,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAK9D,CAAC;IAEM,6BAAU,GAAjB,UAAkB,MAAW,EAAE,MAAW;QAA1C,iBAeC;QAbG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YAClB,KAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACpD,KAAI,CAAC,oBAAoB,GAAG,KAAI,CAAC,QAAQ,CACrC,MAAM,EACN,MAAM,EACN,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAC1B,KAAI,CAAC,MAAM,CAAC,SAAS,EACrB,KAAI,CAAC,MAAM,CAAC,gBAAgB,CAC/B,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,6BAAU,GAAjB,UAAkB,IAAU,EAAE,OAAe,EAAE,UAAsB,EAAE,QAA0B;QAE7F,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACpD,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,OAAO;SACV;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACpD,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,OAAO;SACV;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe;YAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;YACvE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;YAE9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5E,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,OAAO;SACV;QAED,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEO,8BAAW,GAAnB,UAAoB,UAAsB;QACtC,OAAO,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACrE,CAAC;IAEO,6BAAU,GAAlB,UAAmB,KAAwB,EAAE,IAAY;QACrD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,KAAgB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;gBAAlB,IAAM,CAAC,cAAA;gBACR,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACd,OAAO,IAAI,CAAC;iBACf;aACJ;YACD,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACL,eAAC;AAAD,CAAC,AAnED,IAmEC;AAnEY,4BAAQ","sourcesContent":["import { Logger } from \"log4js\";\n\nimport { EmitOutput } from \"../compiler/emit-output\";\nimport { Configuration } from \"../shared/configuration\";\nimport { File } from \"../shared/file\";\nimport { CoverageCallback } from \"./coverage-callback\";\n\nexport class Coverage {\n\n private coverage = require(\"karma-coverage/lib/preprocessor\");\n private coveragePreprocessor: any;\n private log: Logger;\n\n constructor(private config: Configuration) {\n }\n\n public initialize(helper: any, logger: any): void {\n\n this.log = logger.create(\"coverage.karma-typescript\");\n this.log.debug(\"Initializing\");\n\n this.config.whenReady(() => {\n this.log.debug(\"Configuring coverage preprocessor\");\n this.coveragePreprocessor = this.coverage(\n logger,\n helper,\n this.config.karma.basePath,\n this.config.reporters,\n this.config.coverageReporter\n );\n });\n }\n\n public instrument(file: File, bundled: string, emitOutput: EmitOutput, callback: CoverageCallback): void {\n\n if (this.config.hasPreprocessor(\"commonjs\")) {\n this.log.debug(\"karma-commonjs already configured\");\n callback(bundled);\n return;\n }\n\n if (this.config.hasPreprocessor(\"coverage\")) {\n this.log.debug(\"karma-coverage already configured\");\n callback(bundled);\n return;\n }\n\n if (!this.config.coverageOptions.instrumentation ||\n this.isExcluded(this.config.coverageOptions.exclude, file.relativePath) ||\n this.hasNoOutput(emitOutput)) {\n\n this.log.debug(\"Excluding file %s from instrumentation\", file.originalPath);\n callback(bundled);\n return;\n }\n\n this.coveragePreprocessor(bundled, file, callback);\n }\n\n private hasNoOutput(emitOutput: EmitOutput): boolean {\n return emitOutput.outputText.startsWith(\"//# sourceMappingURL=\");\n }\n\n private isExcluded(regex: RegExp | RegExp[], path: string): boolean {\n if (Array.isArray(regex)) {\n for (const r of regex) {\n if (r.test(path)) {\n return true;\n }\n }\n return false;\n }\n return regex.test(path);\n }\n}\n"]}