{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../src/bundler/bundler.ts"],"names":[],"mappings":"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","sourcesContent":["import * as async from \"async\";\nimport * as fs from \"fs\";\nimport * as lodash from \"lodash\";\nimport * as path from \"path\";\nimport * as tmp from \"tmp\";\n\nimport { FilePattern } from \"karma\";\nimport { Logger } from \"log4js\";\n\nimport { EmitOutput } from \"../compiler/emit-output\";\nimport { Benchmark } from \"../shared/benchmark\";\nimport { Configuration } from \"../shared/configuration\";\nimport { File } from \"../shared/file\";\nimport PathTool = require(\"../shared/path-tool\");\nimport { Project } from \"../shared/project\";\nimport { BundleCallback } from \"./bundle-callback\";\nimport { BundleItem } from \"./bundle-item\";\nimport { DependencyWalker } from \"./dependency-walker\";\nimport { Globals } from \"./globals\";\nimport { Queued } from \"./queued\";\nimport { Resolver } from \"./resolve/resolver\";\nimport { SourceMap } from \"./source-map\";\nimport { Transformer } from \"./transformer\";\nimport { Validator } from \"./validator\";\n\nimport \"../client/commonjs\";\n\nexport class Bundler {\n\n    private readonly BUNDLE_DELAY = 500;\n\n    private bundleQueuedModulesDeferred = lodash.debounce(this.bundleQueuedModules, this.BUNDLE_DELAY);\n\n    private bundleBuffer: BundleItem[] = [];\n    private bundleFile = tmp.fileSync({\n        postfix: \".js\",\n        prefix: \"karma-typescript-bundle-\"\n    });\n    private bundleQueue: Queued[] = [];\n    private entrypoints: string[] = [];\n    private projectImportCountOnFirstRun: number = undefined;\n\n    constructor(private config: Configuration,\n                private dependencyWalker: DependencyWalker,\n                private globals: Globals,\n                private log: Logger,\n                private project: Project,\n                private resolver: Resolver,\n                private sourceMap: SourceMap,\n                private transformer: Transformer,\n                private validator: Validator) { }\n\n    public attach(files: FilePattern[]) {\n\n        files.unshift({\n            included: true,\n            pattern: this.bundleFile.name,\n            served: true,\n            watched: true\n        });\n\n        files.push({\n            included: true,\n            pattern: path.join(__dirname, \"../../dist/client/commonjs.js\"),\n            served: true,\n            watched: false\n        });\n    }\n\n    public bundle(file: File, emitOutput: EmitOutput, callback: BundleCallback) {\n        this.bundleQueue.push({ callback, emitOutput, file });\n        this.bundleQueuedModulesDeferred();\n    }\n\n    private bundleQueuedModules() {\n        // Drain the bundle queue and keep a copy of the current items. This prevents problems\n        // when a new bundle is queued while transformations are running.\n        const queuedItems = this.bundleQueue.slice(0);\n        this.bundleQueue.length = 0;\n\n        const benchmark = new Benchmark();\n\n        this.transformer.applyTsTransforms(queuedItems, () => {\n            queuedItems.forEach((queued) => {\n\n                const source = this.sourceMap.removeSourceMapComment(queued);\n                const map = this.sourceMap.getSourceMap(queued);\n\n                if (map) {\n                    // used by Karma to log errors with original source code line numbers\n                    queued.file.sourceMap = map.toObject();\n                }\n\n                queued.item = new BundleItem(\n                    queued.file.path, queued.file.originalPath, source, map);\n            });\n\n            const dependencyCount = this.dependencyWalker.collectTypescriptDependencies(queuedItems);\n\n            if (this.shouldBundle(dependencyCount)) {\n                this.bundleWithLoader(benchmark, queuedItems);\n            }\n            else {\n                this.bundleWithoutLoader(queuedItems);\n            }\n        });\n    }\n\n    private shouldBundle(dependencyCount: number): boolean {\n        if (this.config.hasPreprocessor(\"commonjs\")) {\n            this.log.debug(\"Preprocessor 'commonjs' detected, code will NOT be bundled\");\n            return false;\n        }\n        if (!this.project.hasCompatibleModuleKind()) {\n            this.log.debug(\"Module kind set to '%s', code will NOT be bundled\", this.project.getModuleKind());\n            return false;\n        }\n        if (this.projectImportCountOnFirstRun === undefined) {\n            this.projectImportCountOnFirstRun = dependencyCount;\n        }\n        this.log.debug(\"Project has %s import/require statements, code will be%sbundled\",\n            this.projectImportCountOnFirstRun, this.projectImportCountOnFirstRun > 0 ? \" \" : \" NOT \");\n        return this.projectImportCountOnFirstRun > 0;\n    }\n\n    private bundleWithLoader(benchmark: Benchmark, queuedItems: Queued[]) {\n\n        async.each(queuedItems, (queued, onQueuedResolved) => {\n\n            this.addEntrypointFilename(queued.item.filename);\n\n            async.each(queued.item.dependencies, (bundleItem, onDependencyResolved) => {\n                this.resolver.resolveModule(queued.item.moduleName, bundleItem, this.bundleBuffer, () => {\n                    onDependencyResolved();\n                });\n            }, onQueuedResolved);\n        }, () => {\n            this.onAllResolved(benchmark, queuedItems);\n        });\n    }\n\n    private bundleWithoutLoader(queuedItems: Queued[]) {\n        this.globals.add(this.bundleBuffer, this.entrypoints, () => {\n            this.writeMainBundleFile(() => {\n                queuedItems.forEach((queued) => {\n                    const source = queued.item.source + \"\\n\" +\n                        (queued.item.sourceMap ? queued.item.sourceMap.toComment() + \"\\n\" : \"\");\n                    queued.callback(source);\n                });\n            });\n        });\n    }\n\n    private onAllResolved(benchmark: Benchmark, queuedItems: Queued[]) {\n\n        this.orderEntrypoints();\n\n        this.globals.add(this.bundleBuffer, this.entrypoints, () => {\n            this.writeMainBundleFile(() => {\n                this.log.info(\"Bundled imports for %s file(s) in %s ms.\",\n                    queuedItems.length, benchmark.elapsed());\n\n                queuedItems.forEach((queued) => {\n                    queued.callback(this.addLoaderFunction(queued.item, true));\n                });\n\n                this.log.debug(\"Karma callbacks for %s file(s) in %s ms.\",\n                    queuedItems.length, benchmark.elapsed());\n            });\n        });\n    }\n\n    private addLoaderFunction(bundleItem: BundleItem, standalone: boolean): string {\n\n        const dependencyMap: { [key: string]: string; } = {};\n        const moduleId = path.relative(this.config.karma.basePath, bundleItem.filename);\n\n        bundleItem.dependencies.forEach((dependency) => {\n            if (!dependency.filename) {\n                this.log.debug(\"No resolved filename for module [%s], required by [%s]\",\n                    dependency.moduleName, bundleItem.filename);\n            }\n            else {\n                dependencyMap[dependency.moduleName] = PathTool.fixWindowsPath(dependency.filename);\n            }\n        });\n\n        return (standalone ? \"(function(global){\" : \"\") +\n            \"global.wrappers['\" + PathTool.fixWindowsPath(bundleItem.filename) + \"']=\" +\n            \"[function(require,module,exports,__dirname,__filename){ \" + bundleItem.source +\n            \"\\n},'\" +\n            PathTool.fixWindowsPath(moduleId) + \"',\" +\n            PathTool.fixWindowsPath(JSON.stringify(dependencyMap)) + \"];\" +\n            (standalone ? \"})(this);\" : \"\") + \"\\n\" +\n            (bundleItem.sourceMap ? bundleItem.sourceMap.toComment() + \"\\n\" : \"\");\n    }\n\n    private createEntrypointFilenames() {\n        if (this.entrypoints.length > 0) {\n            return \"global.entrypointFilenames=['\" + this.entrypoints.join(\"','\") + \"'];\\n\";\n        }\n        return \"\";\n    }\n\n    private addEntrypointFilename(filename: string) {\n        if (this.config.bundlerOptions.entrypoints.test(filename) &&\n           this.entrypoints.indexOf(filename) === -1) {\n            this.entrypoints.push(filename);\n        }\n    }\n\n    private orderEntrypoints() {\n        const orderedEntrypoints: string[] = [];\n        this.project.getKarmaFiles().forEach((filename) => {\n            if (this.entrypoints.indexOf(filename) !== -1) {\n                orderedEntrypoints.push(filename);\n            }\n        });\n        this.entrypoints = orderedEntrypoints;\n    }\n\n    private writeMainBundleFile(onMainBundleFileWritten: () => void ) {\n\n        let bundle = \"(function(global){\\nglobal.wrappers={};\\n\";\n        this.sourceMap.initialize(bundle);\n\n        this.bundleBuffer.forEach((bundleItem) => {\n\n            this.sourceMap.addFile(bundleItem);\n\n            const wrapped = this.addLoaderFunction(bundleItem, false);\n            bundle += wrapped;\n\n            this.sourceMap.offsetLineNumber(wrapped);\n        });\n\n        bundle += this.createEntrypointFilenames() + \"})(this);\\n\";\n        bundle += this.sourceMap.getComment();\n\n        this.validator.validate(bundle, this.bundleFile.name);\n\n        fs.writeFile(this.bundleFile.name, bundle, (error) => {\n            if (error) {\n                throw error;\n            }\n            onMainBundleFileWritten();\n        });\n    }\n}\n"]}