expo-keystore-manager
Version:
A comprehensive Expo config plugin for managing Android release keystore configuration
54 lines • 2.24 kB
JavaScript
/**
* Utility functions for keystore management (TypeScript)
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateKeystoreTemplate = generateKeystoreTemplate;
exports.validatePasswordStrength = validatePasswordStrength;
exports.sanitizeConfigForLogging = sanitizeConfigForLogging;
exports.generateKeytoolCommand = generateKeytoolCommand;
function generateKeystoreTemplate(appName = "MyApp") {
const lower = appName.toLowerCase();
return {
keystoreFile: `${lower}-release-key.keystore`,
keystorePassword: "CHANGE_ME_SECURE_PASSWORD",
keyAlias: `${lower}-key-alias`,
keyPassword: "CHANGE_ME_SECURE_KEY_PASSWORD",
storeType: "JKS",
enableProguard: true,
enableR8: true,
};
}
function validatePasswordStrength(password) {
if (!password || password.length < 8) {
return {
valid: false,
message: "Password must be at least 8 characters long",
};
}
const hasUpperCase = /[A-Z]/.test(password);
const hasLowerCase = /[a-z]/.test(password);
const hasNumbers = /\d/.test(password);
const hasSpecialChar = /[!@#$%^&*(),.?\":{}|<>]/.test(password);
const criteriaMet = [hasUpperCase, hasLowerCase, hasNumbers, hasSpecialChar].filter(Boolean).length;
if (criteriaMet < 3) {
return {
valid: false,
message: "Password should contain at least 3 of: uppercase, lowercase, numbers, special characters",
};
}
return { valid: true, message: "Password strength is good" };
}
function sanitizeConfigForLogging(config) {
const sanitized = { ...config };
if (sanitized.keystorePassword)
sanitized.keystorePassword = "***HIDDEN***";
if (sanitized.keyPassword)
sanitized.keyPassword = "***HIDDEN***";
return sanitized;
}
function generateKeytoolCommand(config) {
const { keystoreFile, keyAlias, storeType = "JKS", validity = 10000, keySize = 2048, algorithm = "RSA", } = config;
return `keytool -genkeypair -v -storetype ${storeType} -keyalg ${algorithm} -keysize ${keySize} -validity ${validity} -alias ${keyAlias} -keystore ${keystoreFile}`;
}
//# sourceMappingURL=withKeystoreUtils.js.map
;