diff -Nru node-external-editor-2.0.4+dfsg/debian/changelog node-external-editor-2.2.0+dfsg/debian/changelog --- node-external-editor-2.0.4+dfsg/debian/changelog 2020-02-23 07:21:42.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/debian/changelog 2020-03-13 12:53:31.000000000 +0000 @@ -1,3 +1,19 @@ +node-external-editor (2.2.0+dfsg-2) unstable; urgency=medium + + * Team upload + * Back to unstable + + -- Xavier Guimard Fri, 13 Mar 2020 13:53:31 +0100 + +node-external-editor (2.2.0+dfsg-1) experimental; urgency=medium + + * Team upload + * New upstream version 2.2.0+dfsg + * Refresh patches + * Require node-jschardet ≥ 2.1.1+repack-1~ + + -- Xavier Guimard Sat, 07 Mar 2020 11:22:32 +0100 + node-external-editor (2.0.4+dfsg-5) unstable; urgency=medium * Team upload diff -Nru node-external-editor-2.0.4+dfsg/debian/control node-external-editor-2.2.0+dfsg/debian/control --- node-external-editor-2.0.4+dfsg/debian/control 2020-02-20 23:41:50.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/debian/control 2020-03-07 10:20:19.000000000 +0000 @@ -9,7 +9,7 @@ , coffeescript , mocha , node-iconv-lite - , node-jschardet (>= 2.1.1) + , node-jschardet (>= 2.1.1+repack-1~) , node-tmp , pkg-js-tools (>= 0.9.20~) Standards-Version: 4.5.0 @@ -22,7 +22,7 @@ Architecture: all Depends: ${misc:Depends} , node-iconv-lite - , node-jschardet (>= 2.1.1) + , node-jschardet (>= 2.1.1+repack-1~) , node-tmp , nodejs Description: Edit a string with the users preferred text editor diff -Nru node-external-editor-2.0.4+dfsg/debian/patches/fix-for-jschardet-2.diff node-external-editor-2.2.0+dfsg/debian/patches/fix-for-jschardet-2.diff --- node-external-editor-2.0.4+dfsg/debian/patches/fix-for-jschardet-2.diff 2020-02-20 23:29:22.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/debian/patches/fix-for-jschardet-2.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -Description: fix for jschardet 2 -Author: Xavier Guimard -Forwarded: not-needed -Last-Update: 2020-02-20 - ---- a/src/index.coffee -+++ b/src/index.coffee -@@ -16,7 +16,7 @@ - RemoveFileError = require './errors/RemoveFileError' - LaunchEditorError = require './errors/LaunchEditorError' - --JSCharDet.Constants.MINIMUM_THRESHOLD = 0 -+#JSCharDet.Constants.MINIMUM_THRESHOLD = 0 - - class ExternalEditor - @edit: (text = '') -> diff -Nru node-external-editor-2.0.4+dfsg/debian/patches/series node-external-editor-2.2.0+dfsg/debian/patches/series --- node-external-editor-2.0.4+dfsg/debian/patches/series 2020-02-20 23:28:41.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/debian/patches/series 2020-03-07 09:47:23.000000000 +0000 @@ -1,2 +1,2 @@ use-compiled-files-for-mocha.diff -fix-for-jschardet-2.diff +#replace-chardet-by-jschardet.diff diff -Nru node-external-editor-2.0.4+dfsg/debian/patches/use-compiled-files-for-mocha.diff node-external-editor-2.2.0+dfsg/debian/patches/use-compiled-files-for-mocha.diff --- node-external-editor-2.0.4+dfsg/debian/patches/use-compiled-files-for-mocha.diff 2020-02-20 23:23:57.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/debian/patches/use-compiled-files-for-mocha.diff 2020-03-07 09:40:53.000000000 +0000 @@ -3,7 +3,7 @@ See https://github.com/mochajs/mocha/wiki/compilers-deprecation Author: Xavier Guimard Forwarded: not-needed -Last-Update: 2019-03-27 +Last-Update: 2020-03-07 --- a/test/spec/main.coffee +++ b/test/spec/main.coffee @@ -14,5 +14,5 @@ -ExternalEditor = require('../../src') +ExternalEditor = require('../../main') - describe 'main', -> - before -> + testingInput = 'aAbBcCdDeEfFgG' + expectedResult = 'aAbBcCdDeE' diff -Nru node-external-editor-2.0.4+dfsg/example_sync.js node-external-editor-2.2.0+dfsg/example_sync.js --- node-external-editor-2.0.4+dfsg/example_sync.js 2017-05-23 19:33:16.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/example_sync.js 2018-04-02 15:04:00.000000000 +0000 @@ -17,6 +17,10 @@ // Get response, remove all lines starting with #, remove any trailing newlines. var response = editor.run().replace(/^#.*\n?/gm, '').replace(/\n+$/g, '').trim(); + if (editor.last_exit_status !== 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)'); diff -Nru node-external-editor-2.0.4+dfsg/package.json node-external-editor-2.2.0+dfsg/package.json --- node-external-editor-2.0.4+dfsg/package.json 2017-05-23 19:33:16.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/package.json 2018-04-02 15:04:00.000000000 +0000 @@ -1,6 +1,6 @@ { "name": "external-editor", - "version": "2.0.4", + "version": "2.2.0", "description": "Edit a string with the users preferred text editor using $VISUAL or $ENVIRONMENT", "main": "main/index.js", "scripts": { @@ -26,15 +26,15 @@ }, "homepage": "https://github.com/mrkmg/node-external-editor#readme", "dependencies": { + "chardet": "^0.4.0", "iconv-lite": "^0.4.17", - "jschardet": "^1.4.2", - "tmp": "^0.0.31" + "tmp": "^0.0.33" }, "engines": { "node": ">=0.12" }, "devDependencies": { - "chai": "^3.5.0", + "chai": "^4.0.0", "coffee-script": "^1.10.0", "coffeelint": "^1.14.2", "mocha": "^3.2.0" diff -Nru node-external-editor-2.0.4+dfsg/package-lock.json node-external-editor-2.2.0+dfsg/package-lock.json --- node-external-editor-2.0.4+dfsg/package-lock.json 1970-01-01 00:00:00.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/package-lock.json 2018-04-02 15:04:00.000000000 +0000 @@ -0,0 +1,442 @@ +{ + "name": "external-editor", + "version": "2.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.3" + } + }, + "chardet": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.0.tgz", + "integrity": "sha1-C74TVaxE16PtSpJXB8TvcPgZD2w=" + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "coffee-script": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", + "dev": true + }, + "coffeelint": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/coffeelint/-/coffeelint-1.16.0.tgz", + "integrity": "sha1-g9jtHa/eOmd95E57ihi+YHdh5tg=", + "dev": true, + "requires": { + "coffee-script": "1.11.1", + "glob": "7.1.2", + "ignore": "3.3.5", + "optimist": "0.6.1", + "resolve": "0.6.3", + "strip-json-comments": "1.0.4" + }, + "dependencies": { + "coffee-script": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.11.1.tgz", + "integrity": "sha1-vxxHrWREOg2V0S3ysUfMCk2q1uk=", + "dev": true + } + } + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "4.0.3" + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ignore": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz", + "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "resolve": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=", + "dev": true + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "type-detect": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", + "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff -Nru node-external-editor-2.0.4+dfsg/README.md node-external-editor-2.2.0+dfsg/README.md --- node-external-editor-2.0.4+dfsg/README.md 2017-05-23 19:33:16.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/README.md 2018-04-02 15:04:00.000000000 +0000 @@ -7,15 +7,15 @@ A node module to edit a string with a users preferred text editor using $VISUAL or $ENVIRONMENT. -Version: 2.0.1 +Version: 2.2.0 As of version 2.0.0, node 0.10 is no longer support. Minimum node version is now 0.12. -##Install +## Install `npm install external-editor --save` -##Usage +## Usage A simple example using the `.edit` convenience method @@ -29,8 +29,11 @@ try { var editor = new ExternalEditor(); - var text = editor.run() - // the text is also available in editor.text + var 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 ExternalEditor.CreateFileError) { console.log('Failed to create the temporary file'); @@ -57,8 +60,9 @@ } -####API +#### API **Static Methods** + - `edit(text)` - `text` (string) *Optional* Defaults to empty string - **Returns** (string) The contents of the file @@ -71,12 +75,14 @@ **Static Properties** + - `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. **Public Methods** + - `new ExternalEditor(text)` - `text` (string) *Optional* Defaults to empty string - Could throw `CreateFileError` @@ -91,18 +97,20 @@ - Could throw `RemoveFileError` **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 - `temp_file` (string) Path to temporary file. Can be changed, but be careful as the temporary file probably already exists and would need be removed manually. +- `last_exit_status` (number) The last exit code emitted from the editor. -##Errors +## Errors All errors have a simple message explaining what went wrong. They all also have an `original_error` property containing the original error thrown for debugging purposes. -##Why Synchronous? +## 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 @@ -114,11 +122,11 @@ 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 stdin. -##Demo +## Demo [![asciicast](https://asciinema.org/a/a1qh9lypbe65mj0ivfuoslz2s.png)](https://asciinema.org/a/a1qh9lypbe65mj0ivfuoslz2s) -##License +## License The MIT License (MIT) diff -Nru node-external-editor-2.0.4+dfsg/shrinkwrap.yaml node-external-editor-2.2.0+dfsg/shrinkwrap.yaml --- node-external-editor-2.0.4+dfsg/shrinkwrap.yaml 2017-05-23 19:33:16.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/shrinkwrap.yaml 1970-01-01 00:00:00.000000000 +0000 @@ -1,157 +0,0 @@ -createdWith: pnpm@0.68.0 -dependencies: - chai@^3.5.0: 3.5.0 - coffee-script@^1.10.0: 1.12.6 - coffeelint@^1.14.2: 1.16.0 - iconv-lite@^0.4.17: 0.4.17 - jschardet@^1.4.2: 1.4.2 - mocha@^3.2.0: 3.4.1 - tmp@^0.0.31: 0.0.31 -packages: - /assertion-error/1.0.2: 13ca515d86206da0bac66e834dd397d87581094c - /balanced-match/0.4.2: cb3f3e3c732dc0f01ee70b403f302e61d7709838 - /brace-expansion/1.1.7: - dependencies: - balanced-match: 0.4.2 - concat-map: 0.0.1 - resolution: 3effc3c50e000531fb720eaff80f0ae8ef23cf59 - /browser-stdout/1.3.0: f351d32969d32fa5d7a5567154263d928ae3bd1f - /chai/3.5.0: - dependencies: - assertion-error: 1.0.2 - deep-eql: 0.1.3 - type-detect: 1.0.0 - resolution: 4d02637b067fe958bdbfdd3a40ec56fef7373247 - /coffee-script/1.11.1: bf1c47ad64443a0d95d12df2b147cc0a4daad6e9 - /coffee-script/1.12.6: 285a3f7115689065064d6bf9ef4572db66695cbf - /coffeelint/1.16.0: - dependencies: - coffee-script: 1.11.1 - glob: 7.1.2 - ignore: 3.3.3 - optimist: 0.6.1 - resolve: 0.6.3 - strip-json-comments: 1.0.4 - resolution: 83d8ed1dafde3a677de44e7b8a18be607761e6d8 - /commander/2.9.0: - dependencies: - graceful-readlink: 1.0.1 - resolution: 9c99094176e12240cb22d6c5146098400fe0f7d4 - /concat-map/0.0.1: d8a96bd77fd68df7793a73036a3ba0d5405d477b - /debug/2.6.0: - dependencies: - ms: 0.7.2 - resolution: bc596bcabe7617f11d9fa15361eded5608b8499b - /deep-eql/0.1.3: - dependencies: - type-detect: 0.1.1 - resolution: ef558acab8de25206cd713906d74e56930eb69f2 - /diff/3.2.0: c9ce393a4b7cbd0b058a725c93df299027868ff9 - /escape-string-regexp/1.0.5: 1b61c0562190a8dff6ae3bb2cf0200ca130b86d4 - /fs.realpath/1.0.0: 1504ad2523158caa40db4a2787cb01411994ea4f - /glob/7.1.1: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.3 - minimatch: 3.0.4 - once: 1.4.0 - path-is-absolute: 1.0.1 - resolution: 805211df04faaf1c63a3600306cdf5ade50b2ec8 - /glob/7.1.2: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.3 - minimatch: 3.0.4 - once: 1.4.0 - path-is-absolute: 1.0.1 - resolution: c19c9df9a028702d678612384a6552404c636d15 - /graceful-readlink/1.0.1: 4cafad76bc62f02fa039b2f94e9a3dd3a391a725 - /growl/1.9.2: 0ea7743715db8d8de2c5ede1775e1b45ac85c02f - /has-flag/1.0.0: 9d9e793165ce017a00f00418c43f942a7b1d11fa - /iconv-lite/0.4.17: 4fdaa3b38acbc2c031b045d0edcdfe1ecab18c8d - /ignore/3.3.3: 432352e57accd87ab3110e82d3fea0e47812156d - /inflight/1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - resolution: 49bd6331d7d02d0c09bc910a1075ba8165b56df9 - /inherits/2.0.3: 633c2c83e3da42a502f52466022480f4208261de - /jschardet/1.4.2: 2aa107f142af4121d145659d44f50830961e699a - /json3/3.3.2: 3c0434743df93e2f5c42aee7b19bcb483575f4e1 - /lodash._baseassign/3.2.0: - dependencies: - lodash._basecopy: 3.0.1 - lodash.keys: 3.1.2 - resolution: 8c38a099500f215ad09e59f1722fd0c52bfe0a4e - /lodash._basecopy/3.0.1: 8da0e6a876cf344c0ad8a54882111dd3c5c7ca36 - /lodash._basecreate/3.0.3: 1bc661614daa7fc311b7d03bf16806a0213cf821 - /lodash._getnative/3.9.1: 570bc7dede46d61cdcde687d65d3eecbaa3aaff5 - /lodash._isiterateecall/3.0.9: 5203ad7ba425fae842460e696db9cf3e6aac057c - /lodash.create/3.1.1: - dependencies: - lodash._baseassign: 3.2.0 - lodash._basecreate: 3.0.3 - lodash._isiterateecall: 3.0.9 - resolution: d7f2849f0dbda7e04682bb8cd72ab022461debe7 - /lodash.isarguments/3.1.0: 2f573d85c6a24289ff00663b491c1d338ff3458a - /lodash.isarray/3.0.4: 79e4eb88c36a8122af86f844aa9bcd851b5fbb55 - /lodash.keys/3.1.2: - dependencies: - lodash._getnative: 3.9.1 - lodash.isarguments: 3.1.0 - lodash.isarray: 3.0.4 - resolution: 4dbc0472b156be50a0b286855d1bd0b0c656098a - /minimatch/3.0.4: - dependencies: - brace-expansion: 1.1.7 - resolution: 5166e286457f03306064be5497e8dbb0c3d32083 - /minimist/0.0.10: de3f98543dbf96082be48ad1a0c7cda836301dcf - /minimist/0.0.8: 857fcabfc3397d2625b8228262e86aa7a011b05d - /mkdirp/0.5.1: - dependencies: - minimist: 0.0.8 - resolution: 30057438eac6cf7f8c4767f38648d6697d75c903 - /mocha/3.4.1: - dependencies: - browser-stdout: 1.3.0 - commander: 2.9.0 - debug: 2.6.0 - diff: 3.2.0 - escape-string-regexp: 1.0.5 - glob: 7.1.1 - growl: 1.9.2 - json3: 3.3.2 - lodash.create: 3.1.1 - mkdirp: 0.5.1 - supports-color: 3.1.2 - resolution: a3802b4aa381934cacb38de70cf771621da8f9af - /ms/0.7.2: ae25cf2512b3885a1d95d7f037868d8431124765 - /once/1.4.0: - dependencies: - wrappy: 1.0.2 - resolution: 583b1aa775961d4b113ac17d9c50baef9dd76bd1 - /optimist/0.6.1: - dependencies: - minimist: 0.0.10 - wordwrap: 0.0.3 - resolution: da3ea74686fa21a19a111c326e90eb15a0196686 - /os-tmpdir/1.0.2: bbe67406c79aa85c5cfec766fe5734555dfa1274 - /path-is-absolute/1.0.1: 174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f - /resolve/0.6.3: dd957982e7e736debdf53b58a4dd91754575dd46 - /strip-json-comments/1.0.4: 1e15fbcac97d3ee99bf2d73b4c656b082bbafb91 - /supports-color/3.1.2: - dependencies: - has-flag: 1.0.0 - resolution: 72a262894d9d408b956ca05ff37b2ed8a6e2a2d5 - /tmp/0.0.31: - dependencies: - os-tmpdir: 1.0.2 - resolution: 8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7 - /type-detect/0.1.1: 0ba5ec2a885640e470ea4e8505971900dac58822 - /type-detect/1.0.0: 762217cc06db258ec48908a1298e8b95121e8ea2 - /wordwrap/0.0.3: a3d5da6cd5c0bc0008d37234bbaf1bed63059107 - /wrappy/1.0.2: b5243d8f3ec1aa35f1364605bc0d1036e30ab69f -registry: 'https://registry.npmjs.org/' -version: 2 diff -Nru node-external-editor-2.0.4+dfsg/src/index.coffee node-external-editor-2.2.0+dfsg/src/index.coffee --- node-external-editor-2.0.4+dfsg/src/index.coffee 2017-05-23 19:33:16.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/src/index.coffee 2018-04-02 15:04:00.000000000 +0000 @@ -8,16 +8,14 @@ Temp = require 'tmp' SpawnSync = require('child_process').spawnSync Spawn = require('child_process').spawn -JSCharDet = require 'jschardet' IConvLite = require 'iconv-lite' +ChatDet = require 'chardet' CreateFileError = require './errors/CreateFileError' ReadFileError = require './errors/ReadFileError' RemoveFileError = require './errors/RemoveFileError' LaunchEditorError = require './errors/LaunchEditorError' -JSCharDet.Constants.MINIMUM_THRESHOLD = 0 - class ExternalEditor @edit: (text = '') -> editor = new ExternalEditor(text) @@ -27,15 +25,15 @@ @editAsync: (text = '', callback) -> editor = new ExternalEditor(text) - editor.runAsync (error_run, response) -> + editor.runAsync (error_run, text) -> if not error_run try editor.cleanup() + setImmediate(callback, null, text) if typeof callback is 'function' catch error_cleanup - callback(error_cleanup) if typeof callback is 'function' - callback(null, response) + setImmediate(callback, error_cleanup, null) if typeof callback is 'function' else - callback(error_run) of typeof callback is 'function' + setImmediate(callback, error_run, null) if typeof callback is 'function' @CreateFileError: CreateFileError @@ -48,6 +46,7 @@ editor: bin: undefined args: [] + last_exit_status: undefined constructor: (@text = '') -> @determineEditor() @@ -62,11 +61,11 @@ @launchEditorAsync => try @readTemporaryFile() - callback(null, @text) if typeof callback is 'function' + setImmediate(callback, null, @text) if typeof callback is 'function' catch error_read - callback(error_read) if typeof callback is 'function' + setImmediate(callback, error_read, null) if typeof callback is 'function' catch error_launch - callback(error_launch) if typeof callback is 'function' + setImmediate(callback, error_launch, null) if typeof callback is 'function' cleanup: => @removeTemporaryFile() @@ -75,21 +74,22 @@ ed = if /^win/.test process.platform then 'notepad' else 'vim' editor = process.env.VISUAL or process.env.EDITOR or ed args = editor.split /\s+/ - @bin = args.shift() - @args = args + @editor.bin = args.shift() + @editor.args = args createTemporaryFile: => try @temp_file = Temp.tmpNameSync {} - FS.writeFileSync(@temp_file, @text, encoding: 'utf8') + FS.writeFileSync @temp_file, @text, encoding: 'utf8' catch e throw new CreateFileError e readTemporaryFile: => try buffer = FS.readFileSync(@temp_file) - encoding = JSCharDet.detect(buffer) - @text = IConvLite.decode(buffer, encoding.encoding) + return @text = '' unless buffer.length + encoding = ChatDet.detect buffer + @text = IConvLite.decode buffer, encoding catch e throw new ReadFileError e @@ -101,14 +101,17 @@ launchEditor: => try - SpawnSync @bin, @args.concat([@temp_file]), stdio: 'inherit' + run = SpawnSync @editor.bin, @editor.args.concat([@temp_file]), stdio: 'inherit' + @last_exit_status = run.status catch e throw new LaunchEditorError e launchEditorAsync: (callback) => try - child_process = Spawn @bin, @args.concat([@temp_file]), stdio: 'inherit' - child_process.on 'exit', -> callback() if typeof callback is 'function' + child_process = Spawn @editor.bin, @editor.args.concat([@temp_file]), stdio: 'inherit' + child_process.on 'exit', (code) => + @last_exit_status = code + callback() if typeof callback is 'function' catch e throw new LaunchEditorError e diff -Nru node-external-editor-2.0.4+dfsg/test/spec/main.coffee node-external-editor-2.2.0+dfsg/test/spec/main.coffee --- node-external-editor-2.0.4+dfsg/test/spec/main.coffee 2017-05-23 19:33:16.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/test/spec/main.coffee 2018-04-02 15:04:00.000000000 +0000 @@ -4,13 +4,16 @@ IConvLite = require 'iconv-lite' ExternalEditor = require('../../src') +testingInput = 'aAbBcCdDeEfFgG' +expectedResult = 'aAbBcCdDeE' + describe 'main', -> before -> @previous_visual = process.env.VISUAL - process.env.VISUAL = 'truncate --size 1' + process.env.VISUAL = 'truncate --size 10' beforeEach -> - @editor = new ExternalEditor 'XXX' + @editor = new ExternalEditor testingInput afterEach -> @editor.cleanup() @@ -19,25 +22,28 @@ process.env.VISUAL = @previous_visual it 'convenience method ".edit"', -> - text = ExternalEditor.edit 'XXX' - assert.equal text, 'X' + text = ExternalEditor.edit testingInput + assert.equal text, expectedResult it 'convenience method ".editAsync"', (cb) -> - ExternalEditor.editAsync 'XXX', (e, text) -> - assert.equal text, 'X' + ExternalEditor.editAsync testingInput, (e, text) -> + assert.equal text, expectedResult cb() it 'writes original text to file', -> contents = readFileSync @editor.temp_file - assert.equal contents, 'XXX' + assert.equal contents, testingInput it 'run() returns correctly', -> text = @editor.run() - assert.equal text, 'X' + assert.equal text, expectedResult + assert.equal @editor.last_exit_status, 0 it 'runAsync() callbacks correctly', (cb) -> + ed = @editor @editor.runAsync (e, text) -> - assert.equal text, 'X' + assert.equal text, expectedResult + assert.equal ed.last_exit_status, 0 cb() it 'run() returns text same as editor.text', -> @@ -49,6 +55,25 @@ assert.equal text, @editor.text cb() +describe 'invalid exit code', -> + + beforeEach -> + @editor = new ExternalEditor testingInput + @editor.editor.bin = "bash" + @editor.editor.args = ["-c", "exit 1"] + + afterEach -> + @editor.cleanup() + + it 'run()', -> + @editor.run() + assert.equal @editor.last_exit_status, 1 + + it 'runAsync()', (cb) -> + @editor.runAsync => + assert.equal @editor.last_exit_status, 1 + cb() + describe 'charsets', -> before -> @previous_visual = process.env.VISUAL @@ -63,6 +88,11 @@ after -> process.env.VISUAL = @previous_visual + it 'empty', -> + writeFileSync(@editor.temp_file, '') + text = @editor.run() + assert.equal text, '' + it 'utf8', -> writeFileSync(@editor.temp_file, IConvLite.encode('काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम् ॥', 'utf8'), encoding: 'binary') text = @editor.run() @@ -74,12 +104,12 @@ assert.equal text, 'काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम् ॥' it 'win1252', -> - writeFileSync(@editor.temp_file, IConvLite.encode('abc 123 ‰åþ', 'win1252'), encoding: 'binary') + writeFileSync(@editor.temp_file, IConvLite.encode('Testing 1 2 3 ! @ #', 'win1252'), encoding: 'binary') text = @editor.run() - assert.equal text, 'abc 123 ‰åþ' + assert.equal text, 'Testing 1 2 3 ! @ #' it 'Big5', -> - writeFileSync(@editor.temp_file, IConvLite.encode('一一一一', 'Big5'), encoding: 'binary') + writeFileSync(@editor.temp_file, IConvLite.encode('能 脊 胼 胯 臭 臬 舀 舐 航 舫 舨 般 芻 茫 荒 荔', 'Big5'), encoding: 'binary') text = @editor.run() - assert.equal text, '一一一一' + assert.equal text, '能 脊 胼 胯 臭 臬 舀 舐 航 舫 舨 般 芻 茫 荒 荔' diff -Nru node-external-editor-2.0.4+dfsg/.travis.yml node-external-editor-2.2.0+dfsg/.travis.yml --- node-external-editor-2.0.4+dfsg/.travis.yml 2017-05-23 19:33:16.000000000 +0000 +++ node-external-editor-2.2.0+dfsg/.travis.yml 2018-04-02 15:04:00.000000000 +0000 @@ -1,5 +1,7 @@ sudo: false node_js: + - 9 + - 8 - 7 - 6 - 5