blob: 418edb8cc0d394d71de0ee1aa94414d0b97fb2a1 [file] [log] [blame]
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../src/bundler/bundler.ts"],"names":[],"mappings":";;AAAA,6BAA+B;AAC/B,uBAAyB;AACzB,+BAAiC;AACjC,2BAA6B;AAC7B,yBAA2B;AAM3B,iDAAgD;AAGhD,8CAAiD;AAGjD,6CAA2C;AAS3C,8BAA4B;AAE5B;IAeI,iBAAoB,MAAqB,EACrB,gBAAkC,EAClC,OAAgB,EAChB,GAAW,EACX,OAAgB,EAChB,QAAkB,EAClB,SAAoB,EACpB,WAAwB,EACxB,SAAoB;QARpB,WAAM,GAAN,MAAM,CAAe;QACrB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,YAAO,GAAP,OAAO,CAAS;QAChB,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAAS;QAChB,aAAQ,GAAR,QAAQ,CAAU;QAClB,cAAS,GAAT,SAAS,CAAW;QACpB,gBAAW,GAAX,WAAW,CAAa;QACxB,cAAS,GAAT,SAAS,CAAW;QArBvB,iBAAY,GAAG,GAAG,CAAC;QAE5B,gCAA2B,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3F,iBAAY,GAAiB,EAAE,CAAC;QAChC,eAAU,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC9B,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,0BAA0B;SACrC,CAAC,CAAC;QACK,gBAAW,GAAa,EAAE,CAAC;QAC3B,gBAAW,GAAa,EAAE,CAAC;QAC3B,iCAA4B,GAAW,SAAS,CAAC;IAUb,CAAC;IAEtC,wBAAM,GAAb,UAAc,KAAoB;QAE9B,KAAK,CAAC,OAAO,CAAC;YACV,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;YAC7B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC;YACP,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC;YAC9D,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;SACjB,CAAC,CAAC;IACP,CAAC;IAEM,wBAAM,GAAb,UAAc,IAAU,EAAE,UAAsB,EAAE,QAAwB;QACtE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACvC,CAAC;IAEO,qCAAmB,GAA3B;QAAA,iBAgCC;QA/BG,sFAAsF;QACtF,iEAAiE;QACjE,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAE5B,IAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;QAElC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,WAAW,EAAE;YAC5C,WAAW,CAAC,OAAO,CAAC,UAAC,MAAM;gBAEvB,IAAM,MAAM,GAAG,KAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBAC7D,IAAM,GAAG,GAAG,KAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAEhD,IAAI,GAAG,EAAE;oBACL,qEAAqE;oBACrE,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;iBAC1C;gBAED,MAAM,CAAC,IAAI,GAAG,IAAI,wBAAU,CACxB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,IAAM,eAAe,GAAG,KAAI,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;YAEzF,IAAI,KAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE;gBACpC,KAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;aACjD;iBACI;gBACD,KAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;aACzC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,8BAAY,GAApB,UAAqB,eAAuB;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAC7E,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mDAAmD,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YAClG,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,4BAA4B,KAAK,SAAS,EAAE;YACjD,IAAI,CAAC,4BAA4B,GAAG,eAAe,CAAC;SACvD;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iEAAiE,EAC5E,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;IACjD,CAAC;IAEO,kCAAgB,GAAxB,UAAyB,SAAoB,EAAE,WAAqB;QAApE,iBAcC;QAZG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAC,MAAM,EAAE,gBAAgB;YAE7C,KAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEjD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,UAAC,UAAU,EAAE,oBAAoB;gBAClE,KAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,KAAI,CAAC,YAAY,EAAE;oBAC/E,oBAAoB,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACP,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACzB,CAAC,EAAE;YACC,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,qCAAmB,GAA3B,UAA4B,WAAqB;QAAjD,iBAUC;QATG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE;YAClD,KAAI,CAAC,mBAAmB,CAAC;gBACrB,WAAW,CAAC,OAAO,CAAC,UAAC,MAAM;oBACvB,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI;wBACpC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5E,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,+BAAa,GAArB,UAAsB,SAAoB,EAAE,WAAqB;QAAjE,iBAiBC;QAfG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE;YAClD,KAAI,CAAC,mBAAmB,CAAC;gBACrB,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,EACpD,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAE7C,WAAW,CAAC,OAAO,CAAC,UAAC,MAAM;oBACvB,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;gBAEH,KAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,EACrD,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,mCAAiB,GAAzB,UAA0B,UAAsB,EAAE,UAAmB;QAArE,iBAuBC;QArBG,IAAM,aAAa,GAA+B,EAAE,CAAC;QACrD,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEhF,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,UAAU;YACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;gBACtB,KAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wDAAwD,EACnE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;aACnD;iBACI;gBACD,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACvF;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,mBAAmB,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,KAAK;YAC1E,0DAA0D,GAAG,UAAU,CAAC,MAAM;YAC9E,OAAO;YACP,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI;YACxC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI;YAC7D,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI;YACtC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAEO,2CAAyB,GAAjC;QACI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,OAAO,+BAA+B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;SACnF;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAEO,uCAAqB,GAA7B,UAA8B,QAAgB;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACnC;IACL,CAAC;IAEO,kCAAgB,GAAxB;QAAA,iBAQC;QAPG,IAAM,kBAAkB,GAAa,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,UAAC,QAAQ;YAC1C,IAAI,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC3C,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACrC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC;IAC1C,CAAC;IAEO,qCAAmB,GAA3B,UAA4B,uBAAmC;QAA/D,iBA0BC;QAxBG,IAAI,MAAM,GAAG,2CAA2C,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,UAAU;YAEjC,KAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAEnC,IAAM,OAAO,GAAG,KAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,IAAI,OAAO,CAAC;YAElB,KAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,IAAI,CAAC,yBAAyB,EAAE,GAAG,aAAa,CAAC;QAC3D,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAEtC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAC,KAAK;YAC7C,IAAI,KAAK,EAAE;gBACP,MAAM,KAAK,CAAC;aACf;YACD,uBAAuB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IACL,cAAC;AAAD,CAAC,AA7ND,IA6NC;AA7NY,0BAAO","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"]}