diff options
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/external-editor/main/index.js')
-rw-r--r-- | sandbox/testAppNevena/Front/node_modules/external-editor/main/index.js | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/index.js b/sandbox/testAppNevena/Front/node_modules/external-editor/main/index.js new file mode 100644 index 00000000..258f3196 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/index.js @@ -0,0 +1,193 @@ +"use strict"; +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2019 + */ +Object.defineProperty(exports, "__esModule", { value: true }); +var chardet_1 = require("chardet"); +var child_process_1 = require("child_process"); +var fs_1 = require("fs"); +var iconv_lite_1 = require("iconv-lite"); +var tmp_1 = require("tmp"); +var CreateFileError_1 = require("./errors/CreateFileError"); +exports.CreateFileError = CreateFileError_1.CreateFileError; +var LaunchEditorError_1 = require("./errors/LaunchEditorError"); +exports.LaunchEditorError = LaunchEditorError_1.LaunchEditorError; +var ReadFileError_1 = require("./errors/ReadFileError"); +exports.ReadFileError = ReadFileError_1.ReadFileError; +var RemoveFileError_1 = require("./errors/RemoveFileError"); +exports.RemoveFileError = RemoveFileError_1.RemoveFileError; +function edit(text, fileOptions) { + if (text === void 0) { text = ""; } + var editor = new ExternalEditor(text, fileOptions); + editor.run(); + editor.cleanup(); + return editor.text; +} +exports.edit = edit; +function editAsync(text, callback, fileOptions) { + if (text === void 0) { text = ""; } + var editor = new ExternalEditor(text, fileOptions); + editor.runAsync(function (err, result) { + if (err) { + setImmediate(callback, err, null); + } + else { + try { + editor.cleanup(); + setImmediate(callback, null, result); + } + catch (cleanupError) { + setImmediate(callback, cleanupError, null); + } + } + }); +} +exports.editAsync = editAsync; +var ExternalEditor = /** @class */ (function () { + function ExternalEditor(text, fileOptions) { + if (text === void 0) { text = ""; } + this.text = ""; + this.fileOptions = {}; + this.text = text; + if (fileOptions) { + this.fileOptions = fileOptions; + } + this.determineEditor(); + this.createTemporaryFile(); + } + ExternalEditor.splitStringBySpace = function (str) { + var pieces = []; + var currentString = ""; + for (var strIndex = 0; strIndex < str.length; strIndex++) { + var currentLetter = str[strIndex]; + if (strIndex > 0 && currentLetter === " " && str[strIndex - 1] !== "\\" && currentString.length > 0) { + pieces.push(currentString); + currentString = ""; + } + else { + currentString += currentLetter; + } + } + if (currentString.length > 0) { + pieces.push(currentString); + } + return pieces; + }; + Object.defineProperty(ExternalEditor.prototype, "temp_file", { + get: function () { + console.log("DEPRECATED: temp_file. Use tempFile moving forward."); + return this.tempFile; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ExternalEditor.prototype, "last_exit_status", { + get: function () { + console.log("DEPRECATED: last_exit_status. Use lastExitStatus moving forward."); + return this.lastExitStatus; + }, + enumerable: true, + configurable: true + }); + ExternalEditor.prototype.run = function () { + this.launchEditor(); + this.readTemporaryFile(); + return this.text; + }; + ExternalEditor.prototype.runAsync = function (callback) { + var _this = this; + try { + this.launchEditorAsync(function () { + try { + _this.readTemporaryFile(); + setImmediate(callback, null, _this.text); + } + catch (readError) { + setImmediate(callback, readError, null); + } + }); + } + catch (launchError) { + setImmediate(callback, launchError, null); + } + }; + ExternalEditor.prototype.cleanup = function () { + this.removeTemporaryFile(); + }; + ExternalEditor.prototype.determineEditor = function () { + var editor = process.env.VISUAL ? process.env.VISUAL : + process.env.EDITOR ? process.env.EDITOR : + /^win/.test(process.platform) ? "notepad" : + "vim"; + var editorOpts = ExternalEditor.splitStringBySpace(editor).map(function (piece) { return piece.replace("\\ ", " "); }); + var bin = editorOpts.shift(); + this.editor = { args: editorOpts, bin: bin }; + }; + ExternalEditor.prototype.createTemporaryFile = function () { + try { + this.tempFile = tmp_1.tmpNameSync(this.fileOptions); + var opt = { encoding: "utf8" }; + if (this.fileOptions.hasOwnProperty("mode")) { + opt.mode = this.fileOptions.mode; + } + fs_1.writeFileSync(this.tempFile, this.text, opt); + } + catch (createFileError) { + throw new CreateFileError_1.CreateFileError(createFileError); + } + }; + ExternalEditor.prototype.readTemporaryFile = function () { + try { + var tempFileBuffer = fs_1.readFileSync(this.tempFile); + if (tempFileBuffer.length === 0) { + this.text = ""; + } + else { + var encoding = chardet_1.detect(tempFileBuffer).toString(); + if (!iconv_lite_1.encodingExists(encoding)) { + // Probably a bad idea, but will at least prevent crashing + encoding = "utf8"; + } + this.text = iconv_lite_1.decode(tempFileBuffer, encoding); + } + } + catch (readFileError) { + throw new ReadFileError_1.ReadFileError(readFileError); + } + }; + ExternalEditor.prototype.removeTemporaryFile = function () { + try { + fs_1.unlinkSync(this.tempFile); + } + catch (removeFileError) { + throw new RemoveFileError_1.RemoveFileError(removeFileError); + } + }; + ExternalEditor.prototype.launchEditor = function () { + try { + var editorProcess = child_process_1.spawnSync(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: "inherit" }); + this.lastExitStatus = editorProcess.status; + } + catch (launchError) { + throw new LaunchEditorError_1.LaunchEditorError(launchError); + } + }; + ExternalEditor.prototype.launchEditorAsync = function (callback) { + var _this = this; + try { + var editorProcess = child_process_1.spawn(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: "inherit" }); + editorProcess.on("exit", function (code) { + _this.lastExitStatus = code; + setImmediate(callback); + }); + } + catch (launchError) { + throw new LaunchEditorError_1.LaunchEditorError(launchError); + } + }; + return ExternalEditor; +}()); +exports.ExternalEditor = ExternalEditor; |