Skip to content
This repository has been archived by the owner on Dec 15, 2022. It is now read-only.

Commit

Permalink
migrate keytar to napi (#268)
Browse files Browse the repository at this point in the history
  • Loading branch information
John Kleinschmidt committed May 10, 2020
1 parent 2b1a9fa commit 3682c56
Show file tree
Hide file tree
Showing 7 changed files with 228 additions and 199 deletions.
11 changes: 10 additions & 1 deletion binding.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,16 @@
'targets': [
{
'target_name': 'keytar',
'include_dirs': [ '<!(node -e "require(\'nan\')")' ],
'cflags!': [ '-fno-exceptions' ],
'cflags_cc!': [ '-fno-exceptions' ],
'xcode_settings': { 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
'CLANG_CXX_LIBRARY': 'libc++',
'MACOSX_DEPLOYMENT_TARGET': '10.7',
},
'msvs_settings': {
'VCCLCompilerTool': { 'ExceptionHandling': 1 },
},
'include_dirs' : [ "<!@(node -p \"require('node-addon-api').include\")" ],
'sources': [
'src/async.cc',
'src/main.cc',
Expand Down
26 changes: 5 additions & 21 deletions lib/keytar.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,54 +6,38 @@ function checkRequired(val, name) {
}
}

function callbackPromise(callback) {
if (typeof callback === 'function') {
return new Promise(function(resolve, reject) {
callback((err, val) => {
if (err) {
reject(err)
} else {
resolve(val)
}
})
})
} else {
throw new Error('Callback required')
}
}

module.exports = {
getPassword: function (service, account) {
checkRequired(service, 'Service')
checkRequired(account, 'Account')

return callbackPromise(callback => keytar.getPassword(service, account, callback))
return keytar.getPassword(service, account)
},

setPassword: function (service, account, password) {
checkRequired(service, 'Service')
checkRequired(account, 'Account')
checkRequired(password, 'Password')

return callbackPromise(callback => keytar.setPassword(service, account, password, callback))
return keytar.setPassword(service, account, password)
},

deletePassword: function (service, account) {
checkRequired(service, 'Service')
checkRequired(account, 'Account')

return callbackPromise(callback => keytar.deletePassword(service, account, callback))
return keytar.deletePassword(service, account)
},

findPassword: function (service) {
checkRequired(service, 'Service')

return callbackPromise(callback => keytar.findPassword(service, callback))
return keytar.findPassword(service)
},

findCredentials: function (service) {
checkRequired(service, 'Service')

return callbackPromise(callback => keytar.findCredentials(service, callback))
return keytar.findCredentials(service)
}
}
10 changes: 5 additions & 5 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"prebuild": "^10.0.0"
},
"dependencies": {
"nan": "2.14.1",
"node-addon-api": "^3.0.0",
"prebuild-install": "5.3.3"
}
}

0 comments on commit 3682c56

Please sign in to comment.