You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
2.5 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.EXPO_NO_KEYCHAIN = void 0;
exports.deletePasswordAsync = deletePasswordAsync;
exports.getPasswordAsync = getPasswordAsync;
exports.setPasswordAsync = setPasswordAsync;
function _getenv() {
const data = _interopRequireDefault(require("getenv"));
_getenv = function () {
return data;
};
return data;
}
function _keychain() {
const data = _interopRequireDefault(require("keychain"));
_keychain = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// @ts-ignore
const KEYCHAIN_TYPE = 'internet';
const IS_MAC = process.platform === 'darwin';
const NO_PASSWORD_REGEX = /Could not find password/;
// When enabled, the password will not only be skipped but also deleted.
// This makes it easier to completely opt-out of Keychain functionality.
const EXPO_NO_KEYCHAIN = _getenv().default.boolish('EXPO_NO_KEYCHAIN', false);
exports.EXPO_NO_KEYCHAIN = EXPO_NO_KEYCHAIN;
function deletePasswordAsync({
username,
serviceName
}) {
if (!IS_MAC) {
return Promise.resolve(false);
}
return new Promise((resolve, reject) => {
_keychain().default.deletePassword({
account: username,
service: serviceName,
type: KEYCHAIN_TYPE
}, error => {
if (error) {
if (error.message.match(NO_PASSWORD_REGEX)) {
return resolve(false);
}
reject(error);
} else {
resolve(true);
}
});
});
}
function getPasswordAsync({
username,
serviceName
}) {
if (!IS_MAC) {
return Promise.resolve(null);
}
return new Promise((resolve, reject) => {
_keychain().default.getPassword({
account: username,
service: serviceName,
type: KEYCHAIN_TYPE
}, (error, password) => {
if (error) {
if (error.message.match(NO_PASSWORD_REGEX)) {
return resolve(null);
}
reject(error);
} else {
resolve(password);
}
});
});
}
function setPasswordAsync({
serviceName,
username,
password
}) {
if (!IS_MAC) {
return Promise.resolve(false);
}
return new Promise((resolve, reject) => {
_keychain().default.setPassword({
account: username,
service: serviceName,
password,
type: KEYCHAIN_TYPE
}, error => {
if (error) {
reject(error);
} else {
resolve(true);
}
});
});
}
//# sourceMappingURL=keychain.js.map