aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/concurrently/dist/src/concurrently.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/concurrently/dist/src/concurrently.js')
-rw-r--r--node_modules/concurrently/dist/src/concurrently.js130
1 files changed, 130 insertions, 0 deletions
diff --git a/node_modules/concurrently/dist/src/concurrently.js b/node_modules/concurrently/dist/src/concurrently.js
new file mode 100644
index 0000000..fe07fb7
--- /dev/null
+++ b/node_modules/concurrently/dist/src/concurrently.js
@@ -0,0 +1,130 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.concurrently = void 0;
+const assert_1 = __importDefault(require("assert"));
+const lodash_1 = __importDefault(require("lodash"));
+const os_1 = require("os");
+const spawn_command_1 = __importDefault(require("spawn-command"));
+const tree_kill_1 = __importDefault(require("tree-kill"));
+const command_1 = require("./command");
+const expand_arguments_1 = require("./command-parser/expand-arguments");
+const expand_npm_shortcut_1 = require("./command-parser/expand-npm-shortcut");
+const expand_npm_wildcard_1 = require("./command-parser/expand-npm-wildcard");
+const strip_quotes_1 = require("./command-parser/strip-quotes");
+const completion_listener_1 = require("./completion-listener");
+const get_spawn_opts_1 = require("./get-spawn-opts");
+const output_writer_1 = require("./output-writer");
+const prefix_color_selector_1 = require("./prefix-color-selector");
+const defaults = {
+ spawn: spawn_command_1.default,
+ kill: tree_kill_1.default,
+ raw: false,
+ controllers: [],
+ cwd: undefined,
+};
+/**
+ * Core concurrently functionality -- spawns the given commands concurrently and
+ * returns the commands themselves + the result according to the specified success condition.
+ *
+ * @see CompletionListener
+ */
+function concurrently(baseCommands, baseOptions) {
+ assert_1.default.ok(Array.isArray(baseCommands), '[concurrently] commands should be an array');
+ assert_1.default.notStrictEqual(baseCommands.length, 0, '[concurrently] no commands provided');
+ const options = lodash_1.default.defaults(baseOptions, defaults);
+ const prefixColorSelector = new prefix_color_selector_1.PrefixColorSelector(options.prefixColors);
+ const commandParsers = [
+ new strip_quotes_1.StripQuotes(),
+ new expand_npm_shortcut_1.ExpandNpmShortcut(),
+ new expand_npm_wildcard_1.ExpandNpmWildcard(),
+ ];
+ if (options.additionalArguments) {
+ commandParsers.push(new expand_arguments_1.ExpandArguments(options.additionalArguments));
+ }
+ let commands = (0, lodash_1.default)(baseCommands)
+ .map(mapToCommandInfo)
+ .flatMap((command) => parseCommand(command, commandParsers))
+ .map((command, index) => {
+ return new command_1.Command({
+ index,
+ prefixColor: prefixColorSelector.getNextColor(),
+ ...command,
+ }, (0, get_spawn_opts_1.getSpawnOpts)({
+ raw: command.raw ?? options.raw,
+ env: command.env,
+ cwd: command.cwd || options.cwd,
+ }), options.spawn, options.kill);
+ })
+ .value();
+ const handleResult = options.controllers.reduce(({ commands: prevCommands, onFinishCallbacks }, controller) => {
+ const { commands, onFinish } = controller.handle(prevCommands);
+ return {
+ commands,
+ onFinishCallbacks: lodash_1.default.concat(onFinishCallbacks, onFinish ? [onFinish] : []),
+ };
+ }, { commands, onFinishCallbacks: [] });
+ commands = handleResult.commands;
+ if (options.logger && options.outputStream) {
+ const outputWriter = new output_writer_1.OutputWriter({
+ outputStream: options.outputStream,
+ group: !!options.group,
+ commands,
+ });
+ options.logger.output.subscribe(({ command, text }) => outputWriter.write(command, text));
+ }
+ const commandsLeft = commands.slice();
+ const maxProcesses = Math.max(1, (typeof options.maxProcesses === 'string' && options.maxProcesses.endsWith('%')
+ ? Math.round(((0, os_1.cpus)().length * Number(options.maxProcesses.slice(0, -1))) / 100)
+ : Number(options.maxProcesses)) || commandsLeft.length);
+ for (let i = 0; i < maxProcesses; i++) {
+ maybeRunMore(commandsLeft);
+ }
+ const result = new completion_listener_1.CompletionListener({ successCondition: options.successCondition })
+ .listen(commands)
+ .finally(() => {
+ handleResult.onFinishCallbacks.forEach((onFinish) => onFinish());
+ });
+ return {
+ result,
+ commands,
+ };
+}
+exports.concurrently = concurrently;
+function mapToCommandInfo(command) {
+ if (typeof command === 'string') {
+ return mapToCommandInfo({ command });
+ }
+ assert_1.default.ok(command.command, '[concurrently] command cannot be empty');
+ return {
+ command: command.command,
+ name: command.name || '',
+ env: command.env || {},
+ cwd: command.cwd || '',
+ ...(command.prefixColor
+ ? {
+ prefixColor: command.prefixColor,
+ }
+ : {}),
+ ...(command.raw !== undefined
+ ? {
+ raw: command.raw,
+ }
+ : {}),
+ };
+}
+function parseCommand(command, parsers) {
+ return parsers.reduce((commands, parser) => lodash_1.default.flatMap(commands, (command) => parser.parse(command)), lodash_1.default.castArray(command));
+}
+function maybeRunMore(commandsLeft) {
+ const command = commandsLeft.shift();
+ if (!command) {
+ return;
+ }
+ command.start();
+ command.close.subscribe(() => {
+ maybeRunMore(commandsLeft);
+ });
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage