concat.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. "use strict";
  2. /**
  3. * @license
  4. * Copyright Google LLC All Rights Reserved.
  5. *
  6. * Use of this source code is governed by an MIT-style license that can be
  7. * found in the LICENSE file at https://angular.dev/license
  8. */
  9. Object.defineProperty(exports, "__esModule", { value: true });
  10. const rxjs_1 = require("rxjs");
  11. const src_1 = require("../src");
  12. exports.default = (0, src_1.createBuilder)((options, context) => {
  13. const allRuns = [];
  14. context.reportProgress(0, (options.targets ? options.targets.length : 0) +
  15. (options.builders ? options.builders.length : 0));
  16. if (options.targets) {
  17. allRuns.push(...options.targets.map(({ target: targetStr, overrides }) => {
  18. const [project, target, configuration] = targetStr.split(/:/g, 3);
  19. return () => context.scheduleTarget({ project, target, configuration }, overrides || {});
  20. }));
  21. }
  22. if (options.builders) {
  23. allRuns.push(...options.builders.map(({ builder, options }) => {
  24. return () => context.scheduleBuilder(builder, options || {});
  25. }));
  26. }
  27. let stop = null;
  28. let i = 0;
  29. context.reportProgress(i++, allRuns.length);
  30. return (0, rxjs_1.from)(allRuns).pipe((0, rxjs_1.concatMap)((fn) => stop
  31. ? (0, rxjs_1.of)(null)
  32. : (0, rxjs_1.from)(fn()).pipe((0, rxjs_1.switchMap)((run) => (run === null ? (0, rxjs_1.of)(null) : run.output.pipe((0, rxjs_1.first)()))))), (0, rxjs_1.map)((output) => {
  33. context.reportProgress(i++, allRuns.length);
  34. if (output === null || stop !== null) {
  35. return stop || { success: false };
  36. }
  37. else if (output.success === false) {
  38. return (stop = output);
  39. }
  40. else {
  41. return output;
  42. }
  43. }), (0, rxjs_1.last)());
  44. });