1082815dcSEvan Bacon"use strict";
2082815dcSEvan Bacon
3082815dcSEvan BaconObject.defineProperty(exports, "__esModule", {
4082815dcSEvan Bacon  value: true
5082815dcSEvan Bacon});
6082815dcSEvan Baconexports.createEntitlementsPlugin = createEntitlementsPlugin;
7082815dcSEvan Baconexports.createInfoPlistPlugin = createInfoPlistPlugin;
8082815dcSEvan Baconexports.createInfoPlistPluginWithPropertyGuard = createInfoPlistPluginWithPropertyGuard;
9082815dcSEvan Baconexports.withXcodeProject = exports.withPodfileProperties = exports.withInfoPlist = exports.withExpoPlist = exports.withEntitlementsPlist = exports.withAppDelegate = void 0;
10*8a424bebSJames Idefunction _withMod() {
11*8a424bebSJames Ide  const data = require("./withMod");
12*8a424bebSJames Ide  _withMod = function () {
13*8a424bebSJames Ide    return data;
14*8a424bebSJames Ide  };
15*8a424bebSJames Ide  return data;
16*8a424bebSJames Ide}
17082815dcSEvan Baconfunction _obj() {
18082815dcSEvan Bacon  const data = require("../utils/obj");
19082815dcSEvan Bacon  _obj = function () {
20082815dcSEvan Bacon    return data;
21082815dcSEvan Bacon  };
22082815dcSEvan Bacon  return data;
23082815dcSEvan Bacon}
24082815dcSEvan Baconfunction _warnings() {
25082815dcSEvan Bacon  const data = require("../utils/warnings");
26082815dcSEvan Bacon  _warnings = function () {
27082815dcSEvan Bacon    return data;
28082815dcSEvan Bacon  };
29082815dcSEvan Bacon  return data;
30082815dcSEvan Bacon}
31082815dcSEvan Bacon/**
32082815dcSEvan Bacon * Helper method for creating mods from existing config functions.
33082815dcSEvan Bacon *
34082815dcSEvan Bacon * @param action
35082815dcSEvan Bacon */
36082815dcSEvan Baconfunction createInfoPlistPlugin(action, name) {
37082815dcSEvan Bacon  const withUnknown = config => withInfoPlist(config, async config => {
38082815dcSEvan Bacon    config.modResults = await action(config, config.modResults);
39082815dcSEvan Bacon    return config;
40082815dcSEvan Bacon  });
41082815dcSEvan Bacon  if (name) {
42082815dcSEvan Bacon    Object.defineProperty(withUnknown, 'name', {
43082815dcSEvan Bacon      value: name
44082815dcSEvan Bacon    });
45082815dcSEvan Bacon  }
46082815dcSEvan Bacon  return withUnknown;
47082815dcSEvan Bacon}
48082815dcSEvan Baconfunction createInfoPlistPluginWithPropertyGuard(action, settings, name) {
49082815dcSEvan Bacon  const withUnknown = config => withInfoPlist(config, async config => {
50082815dcSEvan Bacon    var _config$modRawConfig$, _config$modRawConfig$2;
51ee216927STomasz Sapeta    const existingProperty = settings.expoPropertyGetter ? settings.expoPropertyGetter(config) : (0, _obj().get)(config, settings.expoConfigProperty);
52ee216927STomasz Sapeta    // If the user explicitly sets a value in the infoPlist, we should respect that.
53082815dcSEvan Bacon    if (((_config$modRawConfig$ = config.modRawConfig.ios) === null || _config$modRawConfig$ === void 0 ? void 0 : (_config$modRawConfig$2 = _config$modRawConfig$.infoPlist) === null || _config$modRawConfig$2 === void 0 ? void 0 : _config$modRawConfig$2[settings.infoPlistProperty]) === undefined) {
54082815dcSEvan Bacon      config.modResults = await action(config, config.modResults);
55082815dcSEvan Bacon    } else if (existingProperty !== undefined) {
56082815dcSEvan Bacon      // Only warn if there is a conflict.
57082815dcSEvan Bacon      (0, _warnings().addWarningIOS)(settings.expoConfigProperty, `"ios.infoPlist.${settings.infoPlistProperty}" is set in the config. Ignoring abstract property "${settings.expoConfigProperty}": ${existingProperty}`);
58082815dcSEvan Bacon    }
59082815dcSEvan Bacon    return config;
60082815dcSEvan Bacon  });
61082815dcSEvan Bacon  if (name) {
62082815dcSEvan Bacon    Object.defineProperty(withUnknown, 'name', {
63082815dcSEvan Bacon      value: name
64082815dcSEvan Bacon    });
65082815dcSEvan Bacon  }
66082815dcSEvan Bacon  return withUnknown;
67082815dcSEvan Bacon}
68082815dcSEvan Bacon/**
69082815dcSEvan Bacon * Helper method for creating mods from existing config functions.
70082815dcSEvan Bacon *
71082815dcSEvan Bacon * @param action
72082815dcSEvan Bacon */
73082815dcSEvan Baconfunction createEntitlementsPlugin(action, name) {
74082815dcSEvan Bacon  const withUnknown = config => withEntitlementsPlist(config, async config => {
75082815dcSEvan Bacon    config.modResults = await action(config, config.modResults);
76082815dcSEvan Bacon    return config;
77082815dcSEvan Bacon  });
78082815dcSEvan Bacon  if (name) {
79082815dcSEvan Bacon    Object.defineProperty(withUnknown, 'name', {
80082815dcSEvan Bacon      value: name
81082815dcSEvan Bacon    });
82082815dcSEvan Bacon  }
83082815dcSEvan Bacon  return withUnknown;
84082815dcSEvan Bacon}
85ee216927STomasz Sapeta
86082815dcSEvan Bacon/**
87082815dcSEvan Bacon * Provides the AppDelegate file for modification.
88082815dcSEvan Bacon *
89082815dcSEvan Bacon * @param config
90082815dcSEvan Bacon * @param action
91082815dcSEvan Bacon */
92082815dcSEvan Baconconst withAppDelegate = (config, action) => {
93082815dcSEvan Bacon  return (0, _withMod().withMod)(config, {
94082815dcSEvan Bacon    platform: 'ios',
95082815dcSEvan Bacon    mod: 'appDelegate',
96082815dcSEvan Bacon    action
97082815dcSEvan Bacon  });
98082815dcSEvan Bacon};
99ee216927STomasz Sapeta
100082815dcSEvan Bacon/**
101082815dcSEvan Bacon * Provides the Info.plist file for modification.
102082815dcSEvan Bacon * Keeps the config's expo.ios.infoPlist object in sync with the data.
103082815dcSEvan Bacon *
104082815dcSEvan Bacon * @param config
105082815dcSEvan Bacon * @param action
106082815dcSEvan Bacon */
107082815dcSEvan Baconexports.withAppDelegate = withAppDelegate;
108082815dcSEvan Baconconst withInfoPlist = (config, action) => {
109082815dcSEvan Bacon  return (0, _withMod().withMod)(config, {
110082815dcSEvan Bacon    platform: 'ios',
111082815dcSEvan Bacon    mod: 'infoPlist',
112082815dcSEvan Bacon    async action(config) {
113082815dcSEvan Bacon      config = await action(config);
114082815dcSEvan Bacon      if (!config.ios) {
115082815dcSEvan Bacon        config.ios = {};
116082815dcSEvan Bacon      }
117082815dcSEvan Bacon      config.ios.infoPlist = config.modResults;
118082815dcSEvan Bacon      return config;
119082815dcSEvan Bacon    }
120082815dcSEvan Bacon  });
121082815dcSEvan Bacon};
122ee216927STomasz Sapeta
123082815dcSEvan Bacon/**
124082815dcSEvan Bacon * Provides the main .entitlements file for modification.
125082815dcSEvan Bacon * Keeps the config's expo.ios.entitlements object in sync with the data.
126082815dcSEvan Bacon *
127082815dcSEvan Bacon * @param config
128082815dcSEvan Bacon * @param action
129082815dcSEvan Bacon */
130082815dcSEvan Baconexports.withInfoPlist = withInfoPlist;
131082815dcSEvan Baconconst withEntitlementsPlist = (config, action) => {
132082815dcSEvan Bacon  return (0, _withMod().withMod)(config, {
133082815dcSEvan Bacon    platform: 'ios',
134082815dcSEvan Bacon    mod: 'entitlements',
135082815dcSEvan Bacon    async action(config) {
136082815dcSEvan Bacon      config = await action(config);
137082815dcSEvan Bacon      if (!config.ios) {
138082815dcSEvan Bacon        config.ios = {};
139082815dcSEvan Bacon      }
140082815dcSEvan Bacon      config.ios.entitlements = config.modResults;
141082815dcSEvan Bacon      return config;
142082815dcSEvan Bacon    }
143082815dcSEvan Bacon  });
144082815dcSEvan Bacon};
145ee216927STomasz Sapeta
146082815dcSEvan Bacon/**
147082815dcSEvan Bacon * Provides the Expo.plist for modification.
148082815dcSEvan Bacon *
149082815dcSEvan Bacon * @param config
150082815dcSEvan Bacon * @param action
151082815dcSEvan Bacon */
152082815dcSEvan Baconexports.withEntitlementsPlist = withEntitlementsPlist;
153082815dcSEvan Baconconst withExpoPlist = (config, action) => {
154082815dcSEvan Bacon  return (0, _withMod().withMod)(config, {
155082815dcSEvan Bacon    platform: 'ios',
156082815dcSEvan Bacon    mod: 'expoPlist',
157082815dcSEvan Bacon    action
158082815dcSEvan Bacon  });
159082815dcSEvan Bacon};
160ee216927STomasz Sapeta
161082815dcSEvan Bacon/**
162082815dcSEvan Bacon * Provides the main .xcodeproj for modification.
163082815dcSEvan Bacon *
164082815dcSEvan Bacon * @param config
165082815dcSEvan Bacon * @param action
166082815dcSEvan Bacon */
167082815dcSEvan Baconexports.withExpoPlist = withExpoPlist;
168082815dcSEvan Baconconst withXcodeProject = (config, action) => {
169082815dcSEvan Bacon  return (0, _withMod().withMod)(config, {
170082815dcSEvan Bacon    platform: 'ios',
171082815dcSEvan Bacon    mod: 'xcodeproj',
172082815dcSEvan Bacon    action
173082815dcSEvan Bacon  });
174082815dcSEvan Bacon};
175ee216927STomasz Sapeta
176082815dcSEvan Bacon/**
177082815dcSEvan Bacon * Provides the Podfile.properties.json for modification.
178082815dcSEvan Bacon *
179082815dcSEvan Bacon * @param config
180082815dcSEvan Bacon * @param action
181082815dcSEvan Bacon */
182082815dcSEvan Baconexports.withXcodeProject = withXcodeProject;
183082815dcSEvan Baconconst withPodfileProperties = (config, action) => {
184082815dcSEvan Bacon  return (0, _withMod().withMod)(config, {
185082815dcSEvan Bacon    platform: 'ios',
186082815dcSEvan Bacon    mod: 'podfileProperties',
187082815dcSEvan Bacon    action
188082815dcSEvan Bacon  });
189082815dcSEvan Bacon};
190082815dcSEvan Baconexports.withPodfileProperties = withPodfileProperties;
191082815dcSEvan Bacon//# sourceMappingURL=ios-plugins.js.map