1082815dcSEvan Bacon"use strict"; 2082815dcSEvan Bacon 3082815dcSEvan BaconObject.defineProperty(exports, "__esModule", { 4082815dcSEvan Bacon value: true 5082815dcSEvan Bacon}); 6082815dcSEvan Baconexports.createBuildGradlePropsConfigPlugin = createBuildGradlePropsConfigPlugin; 7082815dcSEvan Baconexports.updateAndroidBuildPropertiesFromConfig = updateAndroidBuildPropertiesFromConfig; 8082815dcSEvan Baconexports.updateAndroidBuildProperty = updateAndroidBuildProperty; 9082815dcSEvan Baconexports.withJsEngineGradleProps = void 0; 10082815dcSEvan Baconfunction _androidPlugins() { 11082815dcSEvan Bacon const data = require("../plugins/android-plugins"); 12082815dcSEvan Bacon _androidPlugins = function () { 13082815dcSEvan Bacon return data; 14082815dcSEvan Bacon }; 15082815dcSEvan Bacon return data; 16082815dcSEvan Bacon} 17082815dcSEvan Bacon/** 18082815dcSEvan Bacon * Creates a `withGradleProperties` config-plugin based on given config to property mapping rules. 19082815dcSEvan Bacon * 20082815dcSEvan Bacon * The factory supports two modes from generic type inference 21082815dcSEvan Bacon * ```ts 22082815dcSEvan Bacon * // config-plugin without `props`, it will implicitly use the expo config as source config. 23082815dcSEvan Bacon * createBuildGradlePropsConfigPlugin<ExpoConfig>(): ConfigPlugin<void>; 24082815dcSEvan Bacon * 25082815dcSEvan Bacon * // config-plugin with a parameter `props: CustomType`, it will use the `props` as source config. 26082815dcSEvan Bacon * createBuildGradlePropsConfigPlugin<CustomType>(): ConfigPlugin<CustomType>; 27082815dcSEvan Bacon * ``` 28082815dcSEvan Bacon * 29082815dcSEvan Bacon * @param configToPropertyRules config to property mapping rules 30082815dcSEvan Bacon * @param name the config plugin name 31082815dcSEvan Bacon */ 32082815dcSEvan Baconfunction createBuildGradlePropsConfigPlugin(configToPropertyRules, name) { 33082815dcSEvan Bacon const withUnknown = (config, sourceConfig) => (0, _androidPlugins().withGradleProperties)(config, config => { 34082815dcSEvan Bacon config.modResults = updateAndroidBuildPropertiesFromConfig(sourceConfig !== null && sourceConfig !== void 0 ? sourceConfig : config, config.modResults, configToPropertyRules); 35082815dcSEvan Bacon return config; 36082815dcSEvan Bacon }); 37082815dcSEvan Bacon if (name) { 38082815dcSEvan Bacon Object.defineProperty(withUnknown, 'name', { 39082815dcSEvan Bacon value: name 40082815dcSEvan Bacon }); 41082815dcSEvan Bacon } 42082815dcSEvan Bacon return withUnknown; 43082815dcSEvan Bacon} 44ee216927STomasz Sapeta 45082815dcSEvan Bacon/** 46082815dcSEvan Bacon * A config-plugin to update `android/gradle.properties` from the `jsEngine` in expo config 47082815dcSEvan Bacon */ 48082815dcSEvan Baconconst withJsEngineGradleProps = createBuildGradlePropsConfigPlugin([{ 49*0e8f799bSKudo Chien propName: 'hermesEnabled', 50082815dcSEvan Bacon propValueGetter: config => { 51082815dcSEvan Bacon var _ref, _config$android$jsEng, _config$android; 52*0e8f799bSKudo Chien return (((_ref = (_config$android$jsEng = (_config$android = config.android) === null || _config$android === void 0 ? void 0 : _config$android.jsEngine) !== null && _config$android$jsEng !== void 0 ? _config$android$jsEng : config.jsEngine) !== null && _ref !== void 0 ? _ref : 'hermes') === 'hermes').toString(); 53082815dcSEvan Bacon } 54082815dcSEvan Bacon}], 'withJsEngineGradleProps'); 55082815dcSEvan Baconexports.withJsEngineGradleProps = withJsEngineGradleProps; 56082815dcSEvan Baconfunction updateAndroidBuildPropertiesFromConfig(config, gradleProperties, configToPropertyRules) { 57082815dcSEvan Bacon for (const configToProperty of configToPropertyRules) { 58082815dcSEvan Bacon const value = configToProperty.propValueGetter(config); 59082815dcSEvan Bacon updateAndroidBuildProperty(gradleProperties, configToProperty.propName, value); 60082815dcSEvan Bacon } 61082815dcSEvan Bacon return gradleProperties; 62082815dcSEvan Bacon} 63082815dcSEvan Baconfunction updateAndroidBuildProperty(gradleProperties, name, value, options) { 64082815dcSEvan Bacon const oldPropIndex = gradleProperties.findIndex(prop => prop.type === 'property' && prop.key === name); 65082815dcSEvan Bacon if (value) { 66082815dcSEvan Bacon // found the matched value, add or merge new property 67082815dcSEvan Bacon const newProp = { 68082815dcSEvan Bacon type: 'property', 69082815dcSEvan Bacon key: name, 70082815dcSEvan Bacon value 71082815dcSEvan Bacon }; 72082815dcSEvan Bacon if (oldPropIndex >= 0) { 73082815dcSEvan Bacon gradleProperties[oldPropIndex] = newProp; 74082815dcSEvan Bacon } else { 75082815dcSEvan Bacon gradleProperties.push(newProp); 76082815dcSEvan Bacon } 77082815dcSEvan Bacon } else if (options !== null && options !== void 0 && options.removePropWhenValueIsNull && oldPropIndex >= 0) { 78082815dcSEvan Bacon gradleProperties.splice(oldPropIndex, 1); 79082815dcSEvan Bacon } 80082815dcSEvan Bacon return gradleProperties; 81082815dcSEvan Bacon} 82082815dcSEvan Bacon//# sourceMappingURL=BuildProperties.js.map