diff options
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/external-editor')
15 files changed, 766 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/LICENSE b/sandbox/testAppNevena/Front/node_modules/external-editor/LICENSE new file mode 100644 index 00000000..f5f61859 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Kevin Gravier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/README.md b/sandbox/testAppNevena/Front/node_modules/external-editor/README.md new file mode 100644 index 00000000..53a8e701 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/README.md @@ -0,0 +1,171 @@ +# External Editor + +[](https://travis-ci.org/mrkmg/node-external-editor/branches) +[](https://www.npmjs.com/package/external-editor) +[](https://opensource.org/licenses/MIT) + + +A node module to edit a string with a users preferred text editor using $VISUAL or $ENVIRONMENT. + +Version: 3.1.0 + +As of version 3.0.0, the minimum version of node supported is 4. + +## Install + +`npm install external-editor --save` + +## Usage + +A simple example using the `.edit` convenience method + +    import {edit} from "external-editor"; +    const data = edit('\n\n# Please write your text above'); +    console.log(data); + +A full featured example + +    import {ExternalEditor, CreateFileError, ReadFileError, RemoveFileError} from "external-editor" +     +    try { +        const editor = new ExternalEditor(); +        const text = editor.run() // the text is also available in editor.text +         +        if (editor.last_exit_status !== 0) { +            console.log("The editor exited with a non-zero code"); +        } +    } catch (err) { +        if (err instanceOf CreateFileError) { +            console.log('Failed to create the temporary file'); +        } else if (err instanceOf ReadFileError) { +            console.log('Failed to read the temporary file'); +        } else if (err instanceOf LaunchEditorError) { +            console.log('Failed to launch your editor'); +        } else { +            throw err; +        } +    } +     +    // Do things with the text +     +    // Eventually call the cleanup to remove the temporary file +    try { +        editor.cleanup();    +    } catch (err) { +         if (err instanceOf RemoveFileError) { +             console.log('Failed to remove the temporary file'); +         } else { +            throw err +        } +    } +     +     +#### API +**Convenience Methods** + +- `edit(text, config)` +    - `text` (string) *Optional* Defaults to empty string +    - `config` (Config) *Optional* Options for temporary file creation +    - **Returns** (string) The contents of the file +    - Could throw `CreateFileError`, `ReadFileError`, or `LaunchEditorError`, or `RemoveFileError` +- `editAsync(text, callback, config)` +    - `text` (string) *Optional* Defaults to empty string +    - `callback` (function (error, text)) +        - `error` could be of type `CreateFileError`, `ReadFileError`, or `LaunchEditorError`, or `RemoveFileError` +        - `text`(string) The contents of the file +    - `config` (Config) *Optional* Options for temporary file creation + + +**Errors** + +- `CreateFileError` Error thrown if the temporary file could not be created.  +- `ReadFileError` Error thrown if the temporary file could not be read. +- `RemoveFileError` Error thrown if the temporary file could not be removed during cleanup. +- `LaunchEditorError` Error thrown if the editor could not be launched. + +**External Editor Public Methods** + +- `new ExternalEditor(text, config)` +    - `text` (string) *Optional* Defaults to empty string +    - `config` (Config) *Optional* Options for temporary file creation +    - Could throw `CreateFileError` +- `run()` Launches the editor. +    - **Returns** (string) The contents of the file +    - Could throw `LaunchEditorError` or `ReadFileError` +- `runAsync(callback)` Launches the editor in an async way +    - `callback` (function (error, text)) +        - `error` could be of type `ReadFileError` or `LaunchEditorError` +        - `text`(string) The contents of the file +- `cleanup()`  Removes the temporary file. +    - Could throw `RemoveFileError` +     +**External Editor Public Properties** + +- `text` (string) *readonly* The text in the temporary file. +- `editor.bin` (string) The editor determined from the environment. +- `editor.args` (array) Default arguments for the bin +- `tempFile` (string) Path to temporary file. Can be changed, but be careful as the temporary file probably already  +    exists and would need be removed manually. +- `lastExitStatus` (number) The last exit code emitted from the editor. +     +**Config Options** + +- `prefix` (string) *Optional* A prefix for the file name. +- `postfix` (string; *Optional* A postfix for the file name. Useful if you want to provide an extension. +- `mode` (number) *Optional* Which mode to create the file with. e.g. 644 +- `template` (string) *Optional* A template for the filename. See [tmp](https://www.npmjs.com/package/tmp). +- `dir` (string) *Optional* Which path to store the file. +     +## Errors + +All errors have a simple message explaining what went wrong. They all also have an `originalError` property containing +the original error thrown for debugging purposes. +     +## Why Synchronous? +  +Everything is synchronous to make sure the editor has complete control of the stdin and stdout. Testing has shown  +async launching of the editor can lead to issues when using readline or other packages which try to read from stdin or  +write to stdout. Seeing as this will be used in an interactive CLI environment, I made the decision to force the package +to be synchronous. If you know a reliable way to force all stdin and stdout to be limited only to the child_process, +please submit a PR. + +If async is really needed, you can use `editAsync` or `runAsync`. If you are using readline or have anything else +listening to the stdin or you write to stdout, you will most likely have problem, so make sure to remove any other  +listeners on stdin, stdout, or stderr. + +## Demo + +[](https://asciinema.org/a/a1qh9lypbe65mj0ivfuoslz2s) + +## Breaking Changes from v2 to v3 + +- NodeJS 0.12 support dropped. +- Switched to named imports. +- All "snake_cased" variables and properties are now "camelCased". +    - `ExternalEditor.temp_file` is now `ExternalEditor.tempFile`. +    - `ExternalEditor.last_exit_status` is now `ExternalEditor.lastExitStatus`. +    - `Error.original_error` is now `Error.originalError`. +     +## License + +The MIT License (MIT) + +Copyright (c) 2016-2018 Kevin Gravier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/example_async.js b/sandbox/testAppNevena/Front/node_modules/external-editor/example_async.js new file mode 100644 index 00000000..05261661 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/example_async.js @@ -0,0 +1,40 @@ +var ExternalEditor = require('./main').ExternalEditor; +var readline = require('readline'); + +var rl = readline.createInterface({ +  input: process.stdin, +  output: null +}); + +var message = '\n\n# Please Write a message\n# Any line starting with # is ignored'; + +process.stdout.write('Please write a message. (press enter to launch your preferred editor)'); + +editor = new ExternalEditor(message); + +rl.on('line', function () { +  try { +    rl.pause(); +    editor.runAsync(function (error, response) +    { +      if (error) { +        process.stdout.write(error.message); +        process.exit(1); +      } +      if (response.length === 0) { +        readline.moveCursor(process.stdout, 0, -1); +        process.stdout.write('Your message was empty, please try again. (press enter to launch your preferred editor)'); +        rl.resume(); +      } else { +        process.stdout.write('Your Message:\n'); +        process.stdout.write(response); +        process.stdout.write('\n'); +        rl.close(); +      } +    }); +  } catch (err) { +    process.stderr.write(err.message); +    process.stdout.write('\n'); +    rl.close(); +  } +}); diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/example_sync.js b/sandbox/testAppNevena/Front/node_modules/external-editor/example_sync.js new file mode 100644 index 00000000..4ebee95f --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/example_sync.js @@ -0,0 +1,38 @@ +var ExternalEditor = require('./main').ExternalEditor; +var readline = require('readline'); + +var rl = readline.createInterface({ +  input: process.stdin, +  output: null +}); + +var message = '\n\n# Please Write a message\n# Any line starting with # is ignored'; + +process.stdout.write('Please write a message. (press enter to launch your preferred editor)'); + +editor = new ExternalEditor(message); + +rl.on('line', function () { +  try { +    // Get response, remove all lines starting with #, remove any trailing newlines. +    var response = editor.run().replace(/^#.*\n?/gm, '').replace(/\n+$/g, '').trim(); + +    if (editor.lastExitStatus !== 0) { +      process.stderr.write("WARN: The editor exited with a non-zero status\n\n") +    } + +    if (response.length === 0) { +      readline.moveCursor(process.stdout, 0, -1); +      process.stdout.write('Your message was empty, please try again. (press enter to launch your preferred editor)'); +    } else { +      process.stdout.write('Your Message:\n'); +      process.stdout.write(response); +      process.stdout.write('\n'); +      rl.close(); +    } +  } catch (err) { +    process.stderr.write(err.message); +    process.stdout.write('\n'); +    rl.close(); +  } +}); diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/CreateFileError.d.ts b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/CreateFileError.d.ts new file mode 100644 index 00000000..0df1b3d7 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/CreateFileError.d.ts @@ -0,0 +1,10 @@ +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2018 + */ +export declare class CreateFileError extends Error { +    originalError: Error; +    constructor(originalError: Error); +} diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/CreateFileError.js b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/CreateFileError.js new file mode 100644 index 00000000..7faa34c8 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/CreateFileError.js @@ -0,0 +1,39 @@ +"use strict"; +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2018 + */ +var __extends = (this && this.__extends) || (function () { +    var extendStatics = function (d, b) { +        extendStatics = Object.setPrototypeOf || +            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || +            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; +        return extendStatics(d, b); +    }; +    return function (d, b) { +        extendStatics(d, b); +        function __() { this.constructor = d; } +        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +    }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var CreateFileError = /** @class */ (function (_super) { +    __extends(CreateFileError, _super); +    function CreateFileError(originalError) { +        var _newTarget = this.constructor; +        var _this = _super.call(this, "Failed to create temporary file for editor") || this; +        _this.originalError = originalError; +        var proto = _newTarget.prototype; +        if (Object.setPrototypeOf) { +            Object.setPrototypeOf(_this, proto); +        } +        else { +            _this.__proto__ = _newTarget.prototype; +        } +        return _this; +    } +    return CreateFileError; +}(Error)); +exports.CreateFileError = CreateFileError; diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/LaunchEditorError.d.ts b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/LaunchEditorError.d.ts new file mode 100644 index 00000000..105077cc --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/LaunchEditorError.d.ts @@ -0,0 +1,10 @@ +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2018 + */ +export declare class LaunchEditorError extends Error { +    originalError: Error; +    constructor(originalError: Error); +} diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/LaunchEditorError.js b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/LaunchEditorError.js new file mode 100644 index 00000000..85a164e7 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/LaunchEditorError.js @@ -0,0 +1,39 @@ +"use strict"; +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2018 + */ +var __extends = (this && this.__extends) || (function () { +    var extendStatics = function (d, b) { +        extendStatics = Object.setPrototypeOf || +            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || +            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; +        return extendStatics(d, b); +    }; +    return function (d, b) { +        extendStatics(d, b); +        function __() { this.constructor = d; } +        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +    }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var LaunchEditorError = /** @class */ (function (_super) { +    __extends(LaunchEditorError, _super); +    function LaunchEditorError(originalError) { +        var _newTarget = this.constructor; +        var _this = _super.call(this, "Failed launch editor") || this; +        _this.originalError = originalError; +        var proto = _newTarget.prototype; +        if (Object.setPrototypeOf) { +            Object.setPrototypeOf(_this, proto); +        } +        else { +            _this.__proto__ = _newTarget.prototype; +        } +        return _this; +    } +    return LaunchEditorError; +}(Error)); +exports.LaunchEditorError = LaunchEditorError; diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/ReadFileError.d.ts b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/ReadFileError.d.ts new file mode 100644 index 00000000..438eae1c --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/ReadFileError.d.ts @@ -0,0 +1,10 @@ +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2018 + */ +export declare class ReadFileError extends Error { +    originalError: Error; +    constructor(originalError: Error); +} diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/ReadFileError.js b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/ReadFileError.js new file mode 100644 index 00000000..69e05136 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/ReadFileError.js @@ -0,0 +1,39 @@ +"use strict"; +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2018 + */ +var __extends = (this && this.__extends) || (function () { +    var extendStatics = function (d, b) { +        extendStatics = Object.setPrototypeOf || +            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || +            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; +        return extendStatics(d, b); +    }; +    return function (d, b) { +        extendStatics(d, b); +        function __() { this.constructor = d; } +        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +    }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var ReadFileError = /** @class */ (function (_super) { +    __extends(ReadFileError, _super); +    function ReadFileError(originalError) { +        var _newTarget = this.constructor; +        var _this = _super.call(this, "Failed to read temporary file") || this; +        _this.originalError = originalError; +        var proto = _newTarget.prototype; +        if (Object.setPrototypeOf) { +            Object.setPrototypeOf(_this, proto); +        } +        else { +            _this.__proto__ = _newTarget.prototype; +        } +        return _this; +    } +    return ReadFileError; +}(Error)); +exports.ReadFileError = ReadFileError; diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/RemoveFileError.d.ts b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/RemoveFileError.d.ts new file mode 100644 index 00000000..a6402e41 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/RemoveFileError.d.ts @@ -0,0 +1,10 @@ +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2018 + */ +export declare class RemoveFileError extends Error { +    originalError: Error; +    constructor(originalError: Error); +} diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/RemoveFileError.js b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/RemoveFileError.js new file mode 100644 index 00000000..23d266f2 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/errors/RemoveFileError.js @@ -0,0 +1,39 @@ +"use strict"; +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2018 + */ +var __extends = (this && this.__extends) || (function () { +    var extendStatics = function (d, b) { +        extendStatics = Object.setPrototypeOf || +            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || +            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; +        return extendStatics(d, b); +    }; +    return function (d, b) { +        extendStatics(d, b); +        function __() { this.constructor = d; } +        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +    }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var RemoveFileError = /** @class */ (function (_super) { +    __extends(RemoveFileError, _super); +    function RemoveFileError(originalError) { +        var _newTarget = this.constructor; +        var _this = _super.call(this, "Failed to cleanup temporary file") || this; +        _this.originalError = originalError; +        var proto = _newTarget.prototype; +        if (Object.setPrototypeOf) { +            Object.setPrototypeOf(_this, proto); +        } +        else { +            _this.__proto__ = _newTarget.prototype; +        } +        return _this; +    } +    return RemoveFileError; +}(Error)); +exports.RemoveFileError = RemoveFileError; diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/main/index.d.ts b/sandbox/testAppNevena/Front/node_modules/external-editor/main/index.d.ts new file mode 100644 index 00000000..d1e2730c --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/main/index.d.ts @@ -0,0 +1,46 @@ +/*** + * Node External Editor + * + * Kevin Gravier <kevin@mrkmg.com> + * MIT 2019 + */ +import { CreateFileError } from "./errors/CreateFileError"; +import { LaunchEditorError } from "./errors/LaunchEditorError"; +import { ReadFileError } from "./errors/ReadFileError"; +import { RemoveFileError } from "./errors/RemoveFileError"; +export interface IEditorParams { +    args: string[]; +    bin: string; +} +export interface IFileOptions { +    prefix?: string; +    postfix?: string; +    mode?: number; +    template?: string; +    dir?: string; +} +export declare type StringCallback = (err: Error, result: string) => void; +export declare type VoidCallback = () => void; +export { CreateFileError, LaunchEditorError, ReadFileError, RemoveFileError }; +export declare function edit(text?: string, fileOptions?: IFileOptions): string; +export declare function editAsync(text: string, callback: StringCallback, fileOptions?: IFileOptions): void; +export declare class ExternalEditor { +    private static splitStringBySpace; +    text: string; +    tempFile: string; +    editor: IEditorParams; +    lastExitStatus: number; +    private fileOptions; +    readonly temp_file: string; +    readonly last_exit_status: number; +    constructor(text?: string, fileOptions?: IFileOptions); +    run(): string; +    runAsync(callback: StringCallback): void; +    cleanup(): void; +    private determineEditor; +    private createTemporaryFile; +    private readTemporaryFile; +    private removeTemporaryFile; +    private launchEditor; +    private launchEditorAsync; +} 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; diff --git a/sandbox/testAppNevena/Front/node_modules/external-editor/package.json b/sandbox/testAppNevena/Front/node_modules/external-editor/package.json new file mode 100644 index 00000000..b0e2474e --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/external-editor/package.json @@ -0,0 +1,61 @@ +{ +  "name": "external-editor", +  "version": "3.1.0", +  "description": "Edit a string with the users preferred text editor using $VISUAL or $ENVIRONMENT", +  "main": "main/index.js", +  "types": "main/index.d.ts", +  "scripts": { +    "test": "mocha --recursive --require ts-node/register --timeout 10000 ./test/spec 'test/spec/**/*.ts'", +    "compile": "tsc -p tsconfig.json", +    "lint": "tslint './src/**/*.ts' './test/**/*.ts'" +  }, +  "repository": { +    "type": "git", +    "url": "git+https://github.com/mrkmg/node-external-editor.git" +  }, +  "keywords": [ +    "editor", +    "external", +    "user", +    "visual" +  ], +  "author": "Kevin Gravier <kevin@mrkmg.com> (https://mrkmg.com)", +  "license": "MIT", +  "bugs": { +    "url": "https://github.com/mrkmg/node-external-editor/issues" +  }, +  "homepage": "https://github.com/mrkmg/node-external-editor#readme", +  "dependencies": { +    "chardet": "^0.7.0", +    "iconv-lite": "^0.4.24", +    "tmp": "^0.0.33" +  }, +  "engines": { +    "node": ">=4" +  }, +  "devDependencies": { +    "@types/chai": "^4.1.4", +    "@types/chardet": "^0.5.0", +    "@types/mocha": "^5.2.5", +    "@types/node": "^10.14.12", +    "@types/tmp": "0.0.33", +    "chai": "^4.0.0", +    "es6-shim": "^0.35.3", +    "mocha": "^5.2.0", +    "ts-node": "^7.0.1", +    "tslint": "^5.18.0", +    "typescript": "^3.5.2" +  }, +  "files": [ +    "main", +    "example_sync.js", +    "example_async.js" +  ], +  "config": { +    "ndt": { +      "versions": [ +        "major" +      ] +    } +  } +}  | 
