From 6ae82d379250bb3ef47db08f43b13bde95e0c74c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Mon, 13 Feb 2017 22:41:07 +0100 Subject: [PATCH 01/12] removed unnecessary ".js" from require statements --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index beef395..0a83ef1 100644 --- a/index.js +++ b/index.js @@ -4,10 +4,10 @@ var impl = null; switch(os.type()) { case 'Darwin': - impl = require('./impl/darwin.js'); + impl = require('./impl/darwin'); break; case 'Linux': - impl = require('./impl/linux.js'); + impl = require('./impl/linux'); break; default: throw new Error('Your OS is currently not supported by node-loudness.'); From 1a2d07ca162b24f007f8c13eda7f3b675c327cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Mon, 13 Feb 2017 22:51:08 +0100 Subject: [PATCH 02/12] Added windows support using https://gist.github.com/rdp/8363580 --- .gitignore | 1 + ...t_get_current_system_volume_vista_plus.exe | Bin 0 -> 33169 bytes impl/windows/index.js | 1 + impl/windows/windows.js | 76 ++++++++++++++++++ index.js | 3 + 5 files changed, 81 insertions(+) create mode 100644 impl/windows/adjust_get_current_system_volume_vista_plus.exe create mode 100644 impl/windows/index.js create mode 100644 impl/windows/windows.js diff --git a/.gitignore b/.gitignore index 5466f24..00c9eff 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ results node_modules npm-debug.log +!adjust_get_current_system_volume_vista_plus.exe diff --git a/impl/windows/adjust_get_current_system_volume_vista_plus.exe b/impl/windows/adjust_get_current_system_volume_vista_plus.exe new file mode 100644 index 0000000000000000000000000000000000000000..c455315985bbdbf7e9b4da60a541270b8389baee GIT binary patch literal 33169 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 S>D^w&q3OOj_o$M$g#RykYA!1P literal 0 HcmV?d00001 diff --git a/impl/windows/index.js b/impl/windows/index.js new file mode 100644 index 0000000..900dd19 --- /dev/null +++ b/impl/windows/index.js @@ -0,0 +1 @@ +module.exports = require('./windows'); diff --git a/impl/windows/windows.js b/impl/windows/windows.js new file mode 100644 index 0000000..4ebb989 --- /dev/null +++ b/impl/windows/windows.js @@ -0,0 +1,76 @@ +var spawn = require('child_process').spawn; +var path = require('path'); + +var executable = path.join(__dirname, 'adjust_get_current_system_volume_vista_plus.exe'); + +var runProgram = function(args, done) { + args = args === '' ? [] : args.toString().split(' '); + done = done || function () {}; + + var ret = ''; + var err = null; + var p = spawn(executable, args); + + p.stdout.on('data', function (data) { + ret += data; + }); + + p.stderr.on('data', function (data) { + err = new Error('Windows Script Error: ' + data); + }); + + p.on('close', function () { + if (err) return done(err); + + return done(null, ret.trim()); + }); +}; + +var getVolume = function(done) { + done = done || function () {}; + + runProgram('', function(err, vol) { + if (err) return done(err); + + return done(null, parseInt(vol)); + }); +}; + +var setVolume = function(val, done) { + val = val || 0; + done = done || function () {}; + + runProgram(val, function(err) { + if (err) return done(err); + + return done(null); + }); +}; + +var getMuted = function(done) { + done = done || function () {}; + + getVolume(function(err, volume) { + if (err) return done(err); + + return done(null, volume === 0); + }); +}; + +var setMuted = function(val, done) { + val = val ? '0' : '100'; + done = done || function () {}; + + runProgram(val, function(err) { + if (err) return done(err); + + return done(null); + }); +}; + +module.exports = { + getVolume: getVolume, + setVolume: setVolume, + getMuted: getMuted, + setMuted: setMuted +}; diff --git a/index.js b/index.js index 0a83ef1..0f188ad 100644 --- a/index.js +++ b/index.js @@ -9,6 +9,9 @@ switch(os.type()) { case 'Linux': impl = require('./impl/linux'); break; + case 'Windows_NT': + impl = require('./impl/windows') + break; default: throw new Error('Your OS is currently not supported by node-loudness.'); } From 32ad5406dc14d7dfc0273ea205ce1344e7e3e816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Tue, 14 Feb 2017 18:15:01 +0100 Subject: [PATCH 03/12] Added proper mute/unmute on windows Binary source: https://gist.github.com/elderapo/0f950fe5d72ec91ff2b42c01e5784971 --- ...t_get_current_system_volume_vista_plus.exe | Bin 33169 -> 11264 bytes impl/windows/windows.js | 26 ++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/impl/windows/adjust_get_current_system_volume_vista_plus.exe b/impl/windows/adjust_get_current_system_volume_vista_plus.exe index c455315985bbdbf7e9b4da60a541270b8389baee..47d5021dc949134ccb2de494a637d3cba220c978 100644 GIT binary patch literal 11264 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 S>D^w&q3OOj_o$M$g#RykYA!1P diff --git a/impl/windows/windows.js b/impl/windows/windows.js index 4ebb989..b1837f0 100644 --- a/impl/windows/windows.js +++ b/impl/windows/windows.js @@ -26,13 +26,29 @@ var runProgram = function(args, done) { }); }; +var getVolumeInfo = function(done) { + done = done || function () {}; + + runProgram('', function(err, strArgs) { + if (err) return done(err); + + const args = strArgs.split(' '); + const info = { + volume: parseInt(args[0]), + isMuted: parseInt(args[1]) ? true : false + }; + + return done(null, info); + }); +}; + var getVolume = function(done) { done = done || function () {}; - runProgram('', function(err, vol) { + getVolumeInfo((err, info) => { if (err) return done(err); - return done(null, parseInt(vol)); + return done(null, info.volume); }); }; @@ -50,15 +66,15 @@ var setVolume = function(val, done) { var getMuted = function(done) { done = done || function () {}; - getVolume(function(err, volume) { + getVolumeInfo((err, info) => { if (err) return done(err); - return done(null, volume === 0); + return done(null, info.isMuted); }); }; var setMuted = function(val, done) { - val = val ? '0' : '100'; + val = val ? 'mute' : 'unmute'; done = done || function () {}; runProgram(val, function(err) { From 52f3a9d60370e5d15a4cd2524e43c137fb5d5c22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Tue, 14 Feb 2017 21:25:23 +0100 Subject: [PATCH 04/12] removed arrow functions --- impl/windows/windows.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/impl/windows/windows.js b/impl/windows/windows.js index b1837f0..a48dbc3 100644 --- a/impl/windows/windows.js +++ b/impl/windows/windows.js @@ -45,7 +45,7 @@ var getVolumeInfo = function(done) { var getVolume = function(done) { done = done || function () {}; - getVolumeInfo((err, info) => { + getVolumeInfo(function(err, info) { if (err) return done(err); return done(null, info.volume); @@ -66,7 +66,7 @@ var setVolume = function(val, done) { var getMuted = function(done) { done = done || function () {}; - getVolumeInfo((err, info) => { + getVolumeInfo(function(err, info) { if (err) return done(err); return done(null, info.isMuted); From 9cf45a6d11cc0723d3c2da4e2e069d1f4a1211b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Sun, 10 Sep 2017 17:17:46 +0200 Subject: [PATCH 05/12] impl/windows/windows.js to impl/windows/index.js --- impl/windows/index.js | 93 ++++++++++++++++++++++++++++++++++++++++- impl/windows/windows.js | 92 ---------------------------------------- 2 files changed, 92 insertions(+), 93 deletions(-) delete mode 100644 impl/windows/windows.js diff --git a/impl/windows/index.js b/impl/windows/index.js index 900dd19..a48dbc3 100644 --- a/impl/windows/index.js +++ b/impl/windows/index.js @@ -1 +1,92 @@ -module.exports = require('./windows'); +var spawn = require('child_process').spawn; +var path = require('path'); + +var executable = path.join(__dirname, 'adjust_get_current_system_volume_vista_plus.exe'); + +var runProgram = function(args, done) { + args = args === '' ? [] : args.toString().split(' '); + done = done || function () {}; + + var ret = ''; + var err = null; + var p = spawn(executable, args); + + p.stdout.on('data', function (data) { + ret += data; + }); + + p.stderr.on('data', function (data) { + err = new Error('Windows Script Error: ' + data); + }); + + p.on('close', function () { + if (err) return done(err); + + return done(null, ret.trim()); + }); +}; + +var getVolumeInfo = function(done) { + done = done || function () {}; + + runProgram('', function(err, strArgs) { + if (err) return done(err); + + const args = strArgs.split(' '); + const info = { + volume: parseInt(args[0]), + isMuted: parseInt(args[1]) ? true : false + }; + + return done(null, info); + }); +}; + +var getVolume = function(done) { + done = done || function () {}; + + getVolumeInfo(function(err, info) { + if (err) return done(err); + + return done(null, info.volume); + }); +}; + +var setVolume = function(val, done) { + val = val || 0; + done = done || function () {}; + + runProgram(val, function(err) { + if (err) return done(err); + + return done(null); + }); +}; + +var getMuted = function(done) { + done = done || function () {}; + + getVolumeInfo(function(err, info) { + if (err) return done(err); + + return done(null, info.isMuted); + }); +}; + +var setMuted = function(val, done) { + val = val ? 'mute' : 'unmute'; + done = done || function () {}; + + runProgram(val, function(err) { + if (err) return done(err); + + return done(null); + }); +}; + +module.exports = { + getVolume: getVolume, + setVolume: setVolume, + getMuted: getMuted, + setMuted: setMuted +}; diff --git a/impl/windows/windows.js b/impl/windows/windows.js deleted file mode 100644 index a48dbc3..0000000 --- a/impl/windows/windows.js +++ /dev/null @@ -1,92 +0,0 @@ -var spawn = require('child_process').spawn; -var path = require('path'); - -var executable = path.join(__dirname, 'adjust_get_current_system_volume_vista_plus.exe'); - -var runProgram = function(args, done) { - args = args === '' ? [] : args.toString().split(' '); - done = done || function () {}; - - var ret = ''; - var err = null; - var p = spawn(executable, args); - - p.stdout.on('data', function (data) { - ret += data; - }); - - p.stderr.on('data', function (data) { - err = new Error('Windows Script Error: ' + data); - }); - - p.on('close', function () { - if (err) return done(err); - - return done(null, ret.trim()); - }); -}; - -var getVolumeInfo = function(done) { - done = done || function () {}; - - runProgram('', function(err, strArgs) { - if (err) return done(err); - - const args = strArgs.split(' '); - const info = { - volume: parseInt(args[0]), - isMuted: parseInt(args[1]) ? true : false - }; - - return done(null, info); - }); -}; - -var getVolume = function(done) { - done = done || function () {}; - - getVolumeInfo(function(err, info) { - if (err) return done(err); - - return done(null, info.volume); - }); -}; - -var setVolume = function(val, done) { - val = val || 0; - done = done || function () {}; - - runProgram(val, function(err) { - if (err) return done(err); - - return done(null); - }); -}; - -var getMuted = function(done) { - done = done || function () {}; - - getVolumeInfo(function(err, info) { - if (err) return done(err); - - return done(null, info.isMuted); - }); -}; - -var setMuted = function(val, done) { - val = val ? 'mute' : 'unmute'; - done = done || function () {}; - - runProgram(val, function(err) { - if (err) return done(err); - - return done(null); - }); -}; - -module.exports = { - getVolume: getVolume, - setVolume: setVolume, - getMuted: getMuted, - setMuted: setMuted -}; From 8ed9be7beafc128bee695df5e11b5ca852b77ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Sun, 10 Sep 2017 17:17:55 +0200 Subject: [PATCH 06/12] added package-lock.json --- package-lock.json | 160 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3b3c647 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,160 @@ +{ + "name": "loudness", + "version": "0.2.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", + "dev": true + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "dev": true, + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "dev": true + } + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "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" + } + }, + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", + "dev": true, + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", + "dev": true + }, + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", + "dev": true + } + } +} From a125a4bf8dfdc344141d4fefb4ea72a48a4ed91f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Sun, 10 Sep 2017 17:57:05 +0200 Subject: [PATCH 07/12] added some tests --- test/basics.js | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/test/basics.js b/test/basics.js index a34fff4..1ed2da3 100644 --- a/test/basics.js +++ b/test/basics.js @@ -37,14 +37,35 @@ describe('loudness', function () { }); it('should set and get the volume', function (done) { - loudness.setVolume(15, function (err) { + // test all options - from 0% to 100% + var indexes = Array.apply(null, {length: 101}).map(Number.call, Number); + async.eachSeries(indexes, function (index, next) { + loudness.setVolume(index, function (err) { + + assert.ifError(err); + + loudness.getVolume(function (err, vol) { + + assert.ifError(err); + assert.equal(vol, index); + + next(); + }); + }); + }, function () { + done(); + }); + }); + + it('should mute the volume', function (done) { + loudness.setMuted(true, function (err) { assert.ifError(err); - loudness.getVolume(function (err, vol) { + loudness.getMuted(function (err, mute) { assert.ifError(err); - assert.equal(vol, 15); + assert.equal(mute, true); done(); }); @@ -52,15 +73,15 @@ describe('loudness', function () { }); }); - it('should set and get the mute state', function (done) { - loudness.setMuted(true, function (err) { + it('should unmute the volume', function (done) { + loudness.setMuted(false, function (err) { assert.ifError(err); loudness.getMuted(function (err, mute) { assert.ifError(err); - assert.equal(mute, true); + assert.equal(mute, false); done(); }); From d590b2b0ff8f45902e012175a89766473bda594d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Sun, 10 Sep 2017 18:12:29 +0200 Subject: [PATCH 08/12] exceeded timeout for this slow test Exceeded timeout to 5000ms (2000ms is default) because it sometimes takes more than 2000ms to execute. --- test/basics.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/basics.js b/test/basics.js index 1ed2da3..cd25f81 100644 --- a/test/basics.js +++ b/test/basics.js @@ -55,7 +55,7 @@ describe('loudness', function () { }, function () { done(); }); - }); + }).timeout(5000); it('should mute the volume', function (done) { loudness.setMuted(true, function (err) { From 4774b4cff6d6e85c73b8ce022ea36c8fe2c65d10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Sun, 10 Sep 2017 18:13:43 +0200 Subject: [PATCH 09/12] use default device instead of PCM not sure why it was like that --- impl/linux.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/impl/linux.js b/impl/linux.js index 56e50a5..f7b8758 100644 --- a/impl/linux.js +++ b/impl/linux.js @@ -101,7 +101,13 @@ module.exports.getMuted = function (cb) { }; module.exports.setMuted = function (val, cb) { - amixer(['set', 'PCM', (val?'mute':'unmute')], function (err) { - cb(err); + defaultDevice(function (err, dev) { + if (err) { + cb(err); + } else { + amixer(['set', dev, (val?'mute':'unmute')], function (err) { + cb(err); + }); + } }); }; From 6db80b7f43a8ce09859670b60ce079c523bf6847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Sun, 10 Sep 2017 18:15:29 +0200 Subject: [PATCH 10/12] Add flags "-D pulse" if system is ubuntu closes #4 --- impl/linux.js | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/impl/linux.js b/impl/linux.js index f7b8758..5e0dd4e 100644 --- a/impl/linux.js +++ b/impl/linux.js @@ -1,22 +1,39 @@ -var spawn = require('child_process').spawn; +var childProcess = require('child_process'); -var amixer = function (args, cb) { +var isUbuntu = function (cb) { + childProcess.exec('uname -a', (err, stdout, stderr) => { + if (err) return cb(err); + + return cb(null, stdout.toLowerCase().indexOf('ubuntu') > -1); + }); +}; +var amixer = function (args, cb) { var ret = ''; var err = null; - var p = spawn('amixer', args); - - p.stdout.on('data', function (data) { - ret += data; - }); + + isUbuntu((err, ubuntu) => { + if (err) return cb(err); - p.stderr.on('data', function (data) { - err = new Error('Alsa Mixer Error: ' + data); - }); + if (ubuntu) { + args.unshift('pulse'); + args.unshift('-D'); + } + + var p = childProcess.spawn('amixer', args); + p.stdout.on('data', function (data) { + ret += data; + }); + + p.stderr.on('data', function (data) { + err = new Error('Alsa Mixer Error: ' + data); + }); + + p.on('close', function () { + cb(err, ret.trim()); + }); - p.on('close', function () { - cb(err, ret.trim()); }); }; From 95e1528adeb5cbc807d2f7e6a5db894b6c06e9d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Sun, 10 Sep 2017 18:40:26 +0200 Subject: [PATCH 11/12] Revert "removed unnecessary ".js" from require statements" This reverts commit 6ae82d379250bb3ef47db08f43b13bde95e0c74c. --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 0f188ad..d0c454c 100644 --- a/index.js +++ b/index.js @@ -4,10 +4,10 @@ var impl = null; switch(os.type()) { case 'Darwin': - impl = require('./impl/darwin'); + impl = require('./impl/darwin.js'); break; case 'Linux': - impl = require('./impl/linux'); + impl = require('./impl/linux.js'); break; case 'Windows_NT': impl = require('./impl/windows') From a7ed83a1f9c6fd9dffcb949018522914c818911d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Marty=C5=84ski?= Date: Sun, 10 Sep 2017 18:53:53 +0200 Subject: [PATCH 12/12] Revert "Added windows support using https://gist.github.com/rdp/8363580" This reverts commit 1a2d07ca162b24f007f8c13eda7f3b675c327cf9. --- .gitignore | 1 - ...t_get_current_system_volume_vista_plus.exe | Bin 11264 -> 0 bytes impl/windows/index.js | 92 ------------------ index.js | 3 - 4 files changed, 96 deletions(-) delete mode 100644 impl/windows/adjust_get_current_system_volume_vista_plus.exe delete mode 100644 impl/windows/index.js diff --git a/.gitignore b/.gitignore index 00c9eff..5466f24 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,3 @@ results node_modules npm-debug.log -!adjust_get_current_system_volume_vista_plus.exe diff --git a/impl/windows/adjust_get_current_system_volume_vista_plus.exe b/impl/windows/adjust_get_current_system_volume_vista_plus.exe deleted file mode 100644 index 47d5021dc949134ccb2de494a637d3cba220c978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11264 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