MyRepo-Ums/node_modules/browser-sync/dist/runner.js

112 lines
3.3 KiB
JavaScript
Raw Normal View History

2024-01-19 10:09:11 +00:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.npmRunner = exports.shRunner = exports.bsRunner = exports.execRunner = void 0;
const Rx = require("rx");
const types_1 = require("./types");
/**
* @param {import("./types").RunnerOption} runner
*/
function execRunner(runner) {
return Rx.Observable.concat(runner.run.map(r => {
if ("bs" in r) {
return bsRunner(r);
}
if ("sh" in r) {
let cmd;
if (typeof r.sh === "string") {
cmd = r.sh;
}
else if ("cmd" in r.sh) {
cmd = r.sh.cmd;
}
else {
return Rx.Observable.throw(new Error("invalid `sh` config"));
}
return shRunner(r, {
cmd: cmd
});
}
if ("npm" in r) {
return npmRunner(r);
}
throw new Error("unreachable");
}));
}
exports.execRunner = execRunner;
/**
* @param {import("./types").Runner} runner
*/
function bsRunner(runner) {
if (!("bs" in runner))
throw new Error("unreachable");
/** @type {import("./types").BsSideEffect[]} */
const effects = [];
if (runner.bs === "inject") {
effects.push({
type: "inject",
files: runner.files.map(f => {
return {
path: f,
event: "bs-runner"
};
})
});
}
else if (runner.bs === "reload") {
effects.push({
type: "reload",
files: []
});
}
return Rx.Observable.concat(Rx.Observable.just((0, types_1.toRunnerNotification)({
status: "start",
effects: [],
runner
})), Rx.Observable.just((0, types_1.toRunnerNotification)({
status: "end",
effects: effects,
runner
})));
}
exports.bsRunner = bsRunner;
/**
* @param {import("./types").Runner} runner
* @param {object} params
* @param {string} params.cmd
*/
function shRunner(runner, params) {
return Rx.Observable.concat(Rx.Observable.just((0, types_1.toRunnerNotification)({ status: "start", effects: [], runner })), Rx.Observable.just((0, types_1.toRunnerNotification)({ status: "end", effects: [], runner })));
}
exports.shRunner = shRunner;
/**
* @param {import("./types").Runner} runner
*/
function npmRunner(runner) {
if (!("npm" in runner))
throw new Error("unreachble");
return Rx.Observable.just(runner).flatMap(runner => {
try {
const runAll = require("npm-run-all");
const runAllRunner = runAll(runner.npm, {
parallel: false,
stdout: process.stdout,
stdin: process.stdin,
stderr: process.stderr
});
const p = runAllRunner.then(results => {
if (results.some(r => r.code !== 0))
throw new Error("failed");
return results;
});
return Rx.Observable.fromPromise(p).map(results => {
return (0, types_1.toRunnerNotification)({ status: "end", effects: [], runner });
});
}
catch (e) {
console.log("e", e);
return Rx.Observable.throw(e);
}
});
}
exports.npmRunner = npmRunner;
//# sourceMappingURL=runner.js.map