UNPKG

freerasp-react-native

Version:

React Native plugin for improving app security and threat monitoring on Android and iOS mobile devices.

89 lines (88 loc) 3.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const config_plugins_1 = require("@expo/config-plugins"); const { createBuildGradlePropsConfigPlugin } = config_plugins_1.AndroidConfig.BuildProperties; const urlFreerasp = 'https://europe-west3-maven.pkg.dev/talsec-artifact-repository/freerasp'; const urlJitpack = 'https://www.jitpack.io'; const setBuildscriptDependency = (buildGradle) => { // This enables users in bare workflow to comment out the line to prevent freerasp from adding it back. const mavenFreerasp = buildGradle.includes(urlFreerasp) ? '' : `maven { url "${urlFreerasp}" }`; const mavenJitpack = buildGradle.includes(urlJitpack) ? '' : `maven { url "${urlJitpack}" }`; // It's ok to have multiple allprojects.repositories, so we create a new one since it's cheaper than tokenizing // the existing block to find the correct place to insert our dependency. const combinedGradleMaven = ` allprojects { repositories { ${mavenFreerasp} ${mavenJitpack} } } `; return buildGradle + `\n${combinedGradleMaven}\n`; }; const setAndroidR8 = (buildGradle, version) => { const combinedGradleMaven = ` buildscript { dependencies { classpath("com.android.tools:r8:${version}") } } `; return buildGradle + `\n${combinedGradleMaven}\n`; }; /** * Update `<project>/build.gradle` by adding nexus dependency to buildscript */ const withBuildscriptDependency = (expoConfig) => { return (0, config_plugins_1.withProjectBuildGradle)(expoConfig, (config) => { if (config.modResults.language === 'groovy') { config.modResults.contents = setBuildscriptDependency(config.modResults.contents); } else { config_plugins_1.WarningAggregator.addWarningAndroid('freerasp-react-native', `Cannot automatically configure project build.gradle, because it's not groovy`); } return config; }); }; const withAndroidMinSdkVersion = createBuildGradlePropsConfigPlugin([ { propName: 'android.minSdkVersion', propValueGetter: (config) => config.android?.minSdkVersion?.toString(), }, ], 'withAndroidMinSdkVersion'); /** * Update `<project>/build.gradle` by updating the R8 version */ const withAndroidR8Version = (expoConfig, props) => { if (!props.android?.R8Version) { return expoConfig; } return (0, config_plugins_1.withProjectBuildGradle)(expoConfig, (config) => { if (config.modResults.language === 'groovy') { config.modResults.contents = setAndroidR8(config.modResults.contents, props.android?.R8Version ?? '+'); } else { config_plugins_1.WarningAggregator.addWarningAndroid('freerasp-react-native', `Cannot automatically configure project build.gradle, because it's not groovy`); } return config; }); }; const withRnTalsecApp = (config, props) => { config = withBuildscriptDependency(config); config = withAndroidMinSdkVersion(config, props); config = withAndroidR8Version(config, props); return config; }; let pkg = { name: 'freerasp-react-native', }; try { const freeraspPkg = require('freerasp-react-native/package.json'); pkg = freeraspPkg; } catch { } exports.default = (0, config_plugins_1.createRunOncePlugin)(withRnTalsecApp, pkg.name, pkg.version);