"use strict"; /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.runWebpack = void 0; const architect_1 = require("@angular-devkit/architect"); const path_1 = require("path"); const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const webpack_1 = __importDefault(require("webpack")); const utils_1 = require("../utils"); function runWebpack(config, context, options = {}) { const { logging: log = (stats, config) => context.logger.info(stats.toString(config.stats)), shouldProvideStats = true, } = options; const createWebpack = (c) => { if (options.webpackFactory) { const result = options.webpackFactory(c); if (rxjs_1.isObservable(result)) { return result; } else { return rxjs_1.of(result); } } else { return rxjs_1.of(webpack_1.default(c)); } }; return createWebpack({ ...config, watch: false }).pipe(operators_1.switchMap((webpackCompiler) => new rxjs_1.Observable((obs) => { const callback = (err, stats) => { if (err) { return obs.error(err); } if (!stats) { return; } // Log stats. log(stats, config); const statsOptions = typeof config.stats === 'boolean' ? undefined : config.stats; const result = { success: !stats.hasErrors(), webpackStats: shouldProvideStats ? stats.toJson(statsOptions) : undefined, emittedFiles: utils_1.getEmittedFiles(stats.compilation), outputPath: stats.compilation.outputOptions.path, }; if (config.watch) { obs.next(result); } else { webpackCompiler.close(() => { obs.next(result); obs.complete(); }); } }; try { if (config.watch) { const watchOptions = config.watchOptions || {}; const watching = webpackCompiler.watch(watchOptions, callback); // Teardown logic. Close the watcher when unsubscribed from. return () => { watching.close(() => { }); webpackCompiler.close(() => { }); }; } else { webpackCompiler.run(callback); } } catch (err) { if (err) { context.logger.error(`\nAn error occurred during the build:\n${(err && err.stack) || err}`); } throw err; } }))); } exports.runWebpack = runWebpack; exports.default = architect_1.createBuilder((options, context) => { const configPath = path_1.resolve(context.workspaceRoot, options.webpackConfig); return rxjs_1.from(Promise.resolve().then(() => __importStar(require(configPath)))).pipe(operators_1.switchMap(({ default: config }) => runWebpack(config, context))); });