UNPKG

expo-keystore-manager

Version:

A comprehensive Expo config plugin for managing Android release keystore configuration

54 lines 2.24 kB
"use strict"; /** * 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