UNPKG

@jawis/stdio-filter

Version:
63 lines (62 loc) 2.93 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const node_fs_1 = __importDefault(require("node:fs")); const node_path_1 = __importDefault(require("node:path")); const fs_extra_1 = __importDefault(require("fs-extra")); const internal_1 = require("./internal"); //conf const timeout = 300; const folder = __dirname; const dataFolder = node_path_1.default.join(folder, "../console-filter"); const ignoreFile = node_path_1.default.join(dataFolder, "cf-ignore.txt"); const ignorePrefixFile = node_path_1.default.join(dataFolder, "cf-ignore-prefix.txt"); const allOutputFile = node_path_1.default.join(dataFolder, "cf-all.txt"); const shownOutputFile = node_path_1.default.join(dataFolder, "cf-shown.txt"); const includeJsonFile = node_path_1.default.join(dataFolder, "includeJson.js"); //could be implemented with includeLine const includeLineFile = node_path_1.default.join(dataFolder, "includeLine.js"); const mapLineBeforeFilterFile = node_path_1.default.join(dataFolder, "mapLineBeforeFilter.js"); const mapLineBeforeOutputFile = node_path_1.default.join(dataFolder, "mapLineBeforeOutput.js"); //ensure folder and files fs_extra_1.default.ensureDirSync(dataFolder); fs_extra_1.default.ensureFileSync(ignoreFile); fs_extra_1.default.ensureFileSync(ignorePrefixFile); //clear node_fs_1.default.writeFileSync(allOutputFile, ""); node_fs_1.default.writeFileSync(shownOutputFile, ""); //load user functions const includeLine = node_fs_1.default.existsSync(includeLineFile) ? eval("require")(includeLineFile) : undefined; const includeJson = node_fs_1.default.existsSync(includeJsonFile) ? eval("require")(includeJsonFile) : undefined; const mapLineBeforeFilter = node_fs_1.default.existsSync(mapLineBeforeFilterFile) ? eval("require")(mapLineBeforeFilterFile) : undefined; const mapLineBeforeOutput = node_fs_1.default.existsSync(mapLineBeforeOutputFile) ? eval("require")(mapLineBeforeOutputFile) : undefined; //make filter const filter = (0, internal_1.makeStdioFilter)({ ignoreLiteralPrefixes: node_fs_1.default.readFileSync(ignorePrefixFile).toString().split("\n"), ignoreLiteralLines: node_fs_1.default.readFileSync(ignoreFile).toString().split("\n"), includeLine, includeJson, streamOutput: (line) => process.stdout.write(line), onLineShown: (line) => node_fs_1.default.appendFileSync(shownOutputFile, line + "\n"), mapLineBeforeFilter, mapLineBeforeOutput, timeout, }); process.stdin.on("data", (data) => { node_fs_1.default.appendFileSync(allOutputFile, data); filter(data.toString()); }); //ignore signals. We keep running until stdin is closed. process.on("SIGTERM", () => { }); process.on("SIGINT", () => { }); process.on("SIGQUIT", () => { }); process.on("SIGHUP", () => { });