{"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../../src/karma/preprocessor.ts"],"names":[],"mappings":";;AACA,2BAA6B;AAM7B,mDAAiD;AAGjD;IAKI,sBAAY,OAAgB,EAAE,QAAkB,EAAU,MAAqB,EACnE,QAAkB,EAAE,oBAA0C;QAD1E,iBAqCC;QArCyD,WAAM,GAAN,MAAM,CAAe;QAG3E,IAAI,CAAC,MAAM,GAAG,UAAC,MAAW,EAAE,MAAW;YACnC,KAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAE1D,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAEpC,OAAO,UAAC,OAAe,EAAE,IAAU,EAAE,IAAkC;gBACnE,IAAI;oBACA,KAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC3E,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACpD,IAAI,CAAC,YAAY,GAAG,sBAAS,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAE7F,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,UAAU;wBAC9B,IAAI,UAAU,CAAC,QAAQ,EAAE;4BACrB,OAAO,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;yBAC7C;wBACD,IAAI,UAAU,CAAC,iBAAiB,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;4BAC7D,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;yBAC1B;wBACD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,UAAC,OAAe;4BAC7C,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,OAAO,CAAC;4BAClE,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAC,MAAM;gCAClD,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;4BACvB,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;iBACN;gBACD,OAAO,CAAC,EAAE;oBACN,KAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBAChF,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;iBACjB;YACL,CAAC,CAAC;QACN,CAAC,CAAC;QAED,IAAI,CAAC,MAAc,CAAC,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IACL,mBAAC;AAAD,CAAC,AA3CD,IA2CC;AA3CY,oCAAY","sourcesContent":["import { Logger } from \"log4js\";\nimport * as path from \"path\";\nimport { Bundler } from \"../bundler/bundler\";\nimport { Compiler } from \"../compiler/compiler\";\nimport { Coverage } from \"../istanbul/coverage\";\nimport { Configuration } from \"../shared/configuration\";\nimport { File } from \"../shared/file\";\nimport { FileUtils } from \"../shared/file-utils\";\nimport { SharedProcessedFiles } from \"../shared/shared-processed-files\";\n\nexport class Preprocessor {\n\n    public create: (helper: any, logger: any) => void;\n    private log: Logger;\n\n    constructor(bundler: Bundler, compiler: Compiler, private config: Configuration,\n                coverage: Coverage, sharedProcessedFiles: SharedProcessedFiles) {\n\n        this.create = (helper: any, logger: any) => {\n            this.log = logger.create(\"preprocessor.karma-typescript\");\n\n            coverage.initialize(helper, logger);\n\n            return (content: string, file: File, done: (e: any, c?: string) => void) => {\n                try {\n                    this.log.debug(\"Processing \\\"%s\\\". %s\", file.originalPath, content.length);\n                    file.path = config.transformPath(file.originalPath);\n                    file.relativePath = FileUtils.getRelativePath(file.originalPath, this.config.karma.basePath);\n\n                    compiler.compile(file, (emitOutput) => {\n                        if (emitOutput.hasError) {\n                            return done(\"COMPILATION ERROR\", content);\n                        }\n                        if (emitOutput.isDeclarationFile && !emitOutput.isAmbientModule) {\n                            return done(null, \" \");\n                        }\n                        bundler.bundle(file, emitOutput, (bundled: string) => {\n                            sharedProcessedFiles[path.normalize(file.originalPath)] = bundled;\n                            coverage.instrument(file, bundled, emitOutput, (result) => {\n                                done(null, result);\n                            });\n                        });\n                    });\n                }\n                catch (e) {\n                    this.log.error(\"%s\\n processing %s\\n%s\", e.message, file.originalPath, e.stack);\n                    done(e, null);\n                }\n            };\n        };\n\n        (this.create as any).$inject = [\"helper\", \"logger\"];\n    }\n}\n"]}