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
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
|