expo-secure-store
Version:
Provides a way to encrypt and securely store key-value pairs locally on the device.
38 lines (37 loc) • 2.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("expo/config-plugins");
const pkg = require('expo-secure-store/package.json');
const BACKUP_RULES_PATH = '@xml/secure_store_backup_rules';
const EXTRACTION_RULES_PATH = '@xml/secure_store_data_extraction_rules';
const FACEID_USAGE = 'Allow $(PRODUCT_NAME) to access your Face ID biometric data.';
const withSecureStore = (config, { faceIDPermission, configureAndroidBackup = true } = {}) => {
config_plugins_1.IOSConfig.Permissions.createPermissionsPlugin({
NSFaceIDUsageDescription: FACEID_USAGE,
})(config, {
NSFaceIDUsageDescription: faceIDPermission,
});
(0, config_plugins_1.withAndroidManifest)(config, (config) => {
const mainApplication = config_plugins_1.AndroidConfig.Manifest.getMainApplicationOrThrow(config.modResults);
const backupConfig = mainApplication.$['android:fullBackupContent']; // SDK <= 30
const dataExtractionRules = mainApplication.$['android:dataExtractionRules']; // SDK >= 31
if (!configureAndroidBackup) {
backupConfig === BACKUP_RULES_PATH && delete mainApplication.$['android:fullBackupContent'];
dataExtractionRules === EXTRACTION_RULES_PATH &&
delete mainApplication.$['android:dataExtractionRules'];
return config;
}
const canApplyBackupConfig = !backupConfig || backupConfig === BACKUP_RULES_PATH;
const canApplyDataExtractionRules = !dataExtractionRules || dataExtractionRules === EXTRACTION_RULES_PATH;
if (canApplyBackupConfig && canApplyDataExtractionRules) {
mainApplication.$['android:fullBackupContent'] = BACKUP_RULES_PATH;
mainApplication.$['android:dataExtractionRules'] = EXTRACTION_RULES_PATH;
return config;
}
console.warn('Expo-secure-store tried to apply Android Auto Backup rules, but other backup rules are already present. ' +
'Refer to the expo-secure-store docs (https://docs.expo.dev/versions/latest/sdk/securestore/) to configure your backup rules.');
return config;
});
return config;
};
exports.default = (0, config_plugins_1.createRunOncePlugin)(withSecureStore, pkg.name, pkg.version);
;