1082815dcSEvan Bacon"use strict";
2082815dcSEvan Bacon
3082815dcSEvan BaconObject.defineProperty(exports, "__esModule", {
4082815dcSEvan Bacon  value: true
5082815dcSEvan Bacon});
6082815dcSEvan Baconexports.getIosModFileProviders = getIosModFileProviders;
7082815dcSEvan Baconexports.withIosBaseMods = withIosBaseMods;
8082815dcSEvan Baconfunction _jsonFile() {
9082815dcSEvan Bacon  const data = _interopRequireDefault(require("@expo/json-file"));
10082815dcSEvan Bacon  _jsonFile = function () {
11082815dcSEvan Bacon    return data;
12082815dcSEvan Bacon  };
13082815dcSEvan Bacon  return data;
14082815dcSEvan Bacon}
15082815dcSEvan Baconfunction _plist() {
16082815dcSEvan Bacon  const data = _interopRequireDefault(require("@expo/plist"));
17082815dcSEvan Bacon  _plist = function () {
18082815dcSEvan Bacon    return data;
19082815dcSEvan Bacon  };
20082815dcSEvan Bacon  return data;
21082815dcSEvan Bacon}
22082815dcSEvan Baconfunction _assert() {
23082815dcSEvan Bacon  const data = _interopRequireDefault(require("assert"));
24082815dcSEvan Bacon  _assert = function () {
25082815dcSEvan Bacon    return data;
26082815dcSEvan Bacon  };
27082815dcSEvan Bacon  return data;
28082815dcSEvan Bacon}
29082815dcSEvan Baconfunction _fs() {
30082815dcSEvan Bacon  const data = _interopRequireWildcard(require("fs"));
31082815dcSEvan Bacon  _fs = function () {
32082815dcSEvan Bacon    return data;
33082815dcSEvan Bacon  };
34082815dcSEvan Bacon  return data;
35082815dcSEvan Bacon}
36082815dcSEvan Baconfunction _path() {
37082815dcSEvan Bacon  const data = _interopRequireDefault(require("path"));
38082815dcSEvan Bacon  _path = function () {
39082815dcSEvan Bacon    return data;
40082815dcSEvan Bacon  };
41082815dcSEvan Bacon  return data;
42082815dcSEvan Bacon}
43082815dcSEvan Baconfunction _xcode() {
44082815dcSEvan Bacon  const data = _interopRequireDefault(require("xcode"));
45082815dcSEvan Bacon  _xcode = function () {
46082815dcSEvan Bacon    return data;
47082815dcSEvan Bacon  };
48082815dcSEvan Bacon  return data;
49082815dcSEvan Bacon}
50*8a424bebSJames Idefunction _createBaseMod() {
51*8a424bebSJames Ide  const data = require("./createBaseMod");
52*8a424bebSJames Ide  _createBaseMod = function () {
53*8a424bebSJames Ide    return data;
54*8a424bebSJames Ide  };
55*8a424bebSJames Ide  return data;
56*8a424bebSJames Ide}
57082815dcSEvan Baconfunction _ios() {
58082815dcSEvan Bacon  const data = require("../ios");
59082815dcSEvan Bacon  _ios = function () {
60082815dcSEvan Bacon    return data;
61082815dcSEvan Bacon  };
62082815dcSEvan Bacon  return data;
63082815dcSEvan Bacon}
64082815dcSEvan Baconfunction _Entitlements() {
65082815dcSEvan Bacon  const data = require("../ios/Entitlements");
66082815dcSEvan Bacon  _Entitlements = function () {
67082815dcSEvan Bacon    return data;
68082815dcSEvan Bacon  };
69082815dcSEvan Bacon  return data;
70082815dcSEvan Bacon}
71082815dcSEvan Baconfunction _Xcodeproj() {
72082815dcSEvan Bacon  const data = require("../ios/utils/Xcodeproj");
73082815dcSEvan Bacon  _Xcodeproj = function () {
74082815dcSEvan Bacon    return data;
75082815dcSEvan Bacon  };
76082815dcSEvan Bacon  return data;
77082815dcSEvan Bacon}
78082815dcSEvan Baconfunction _getInfoPlistPath() {
79082815dcSEvan Bacon  const data = require("../ios/utils/getInfoPlistPath");
80082815dcSEvan Bacon  _getInfoPlistPath = function () {
81082815dcSEvan Bacon    return data;
82082815dcSEvan Bacon  };
83082815dcSEvan Bacon  return data;
84082815dcSEvan Bacon}
85082815dcSEvan Baconfunction _modules() {
86082815dcSEvan Bacon  const data = require("../utils/modules");
87082815dcSEvan Bacon  _modules = function () {
88082815dcSEvan Bacon    return data;
89082815dcSEvan Bacon  };
90082815dcSEvan Bacon  return data;
91082815dcSEvan Bacon}
92082815dcSEvan Baconfunction _sortObject() {
93082815dcSEvan Bacon  const data = require("../utils/sortObject");
94082815dcSEvan Bacon  _sortObject = function () {
95082815dcSEvan Bacon    return data;
96082815dcSEvan Bacon  };
97082815dcSEvan Bacon  return data;
98082815dcSEvan Bacon}
99082815dcSEvan Baconfunction _warnings() {
100082815dcSEvan Bacon  const data = require("../utils/warnings");
101082815dcSEvan Bacon  _warnings = function () {
102082815dcSEvan Bacon    return data;
103082815dcSEvan Bacon  };
104082815dcSEvan Bacon  return data;
105082815dcSEvan Bacon}
106082815dcSEvan Baconfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
107082815dcSEvan Baconfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
108082815dcSEvan Baconfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
109082815dcSEvan Baconconst {
110082815dcSEvan Bacon  readFile,
111082815dcSEvan Bacon  writeFile
112082815dcSEvan Bacon} = _fs().promises;
113082815dcSEvan Baconfunction getEntitlementsPlistTemplate() {
114082815dcSEvan Bacon  // TODO: Fetch the versioned template file if possible
115082815dcSEvan Bacon  return {};
116082815dcSEvan Bacon}
117082815dcSEvan Baconfunction getInfoPlistTemplate() {
118082815dcSEvan Bacon  // TODO: Fetch the versioned template file if possible
119082815dcSEvan Bacon  return {
120082815dcSEvan Bacon    CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',
121082815dcSEvan Bacon    CFBundleExecutable: '$(EXECUTABLE_NAME)',
122082815dcSEvan Bacon    CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',
123082815dcSEvan Bacon    CFBundleName: '$(PRODUCT_NAME)',
124082815dcSEvan Bacon    CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',
125082815dcSEvan Bacon    CFBundleInfoDictionaryVersion: '6.0',
126082815dcSEvan Bacon    CFBundleSignature: '????',
127082815dcSEvan Bacon    LSRequiresIPhoneOS: true,
128082815dcSEvan Bacon    NSAppTransportSecurity: {
129082815dcSEvan Bacon      NSAllowsArbitraryLoads: true,
130082815dcSEvan Bacon      NSExceptionDomains: {
131082815dcSEvan Bacon        localhost: {
132082815dcSEvan Bacon          NSExceptionAllowsInsecureHTTPLoads: true
133082815dcSEvan Bacon        }
134082815dcSEvan Bacon      }
135082815dcSEvan Bacon    },
136082815dcSEvan Bacon    UILaunchStoryboardName: 'SplashScreen',
137082815dcSEvan Bacon    UIRequiredDeviceCapabilities: ['armv7'],
138082815dcSEvan Bacon    UIViewControllerBasedStatusBarAppearance: false,
139e62686cbSEvan Bacon    UIStatusBarStyle: 'UIStatusBarStyleDefault',
140e62686cbSEvan Bacon    CADisableMinimumFrameDurationOnPhone: true
141082815dcSEvan Bacon  };
142082815dcSEvan Bacon}
143082815dcSEvan Baconconst defaultProviders = {
144082815dcSEvan Bacon  dangerous: (0, _createBaseMod().provider)({
145082815dcSEvan Bacon    getFilePath() {
146082815dcSEvan Bacon      return '';
147082815dcSEvan Bacon    },
148082815dcSEvan Bacon    async read() {
149082815dcSEvan Bacon      return {};
150082815dcSEvan Bacon    },
151082815dcSEvan Bacon    async write() {}
152082815dcSEvan Bacon  }),
153082815dcSEvan Bacon  // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`
154082815dcSEvan Bacon  appDelegate: (0, _createBaseMod().provider)({
155082815dcSEvan Bacon    getFilePath({
156082815dcSEvan Bacon      modRequest: {
157082815dcSEvan Bacon        projectRoot
158082815dcSEvan Bacon      }
159082815dcSEvan Bacon    }) {
1602ddae922SKudo Chien      // TODO: Get application AppDelegate file from pbxproj.
161082815dcSEvan Bacon      return _ios().Paths.getAppDelegateFilePath(projectRoot);
162082815dcSEvan Bacon    },
163082815dcSEvan Bacon    async read(filePath) {
164082815dcSEvan Bacon      return _ios().Paths.getFileInfo(filePath);
165082815dcSEvan Bacon    },
166082815dcSEvan Bacon    async write(filePath, {
167082815dcSEvan Bacon      modResults: {
168082815dcSEvan Bacon        contents
169082815dcSEvan Bacon      }
170082815dcSEvan Bacon    }) {
171082815dcSEvan Bacon      await writeFile(filePath, contents);
172082815dcSEvan Bacon    }
173082815dcSEvan Bacon  }),
174082815dcSEvan Bacon  // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`
175082815dcSEvan Bacon  expoPlist: (0, _createBaseMod().provider)({
176082815dcSEvan Bacon    isIntrospective: true,
177082815dcSEvan Bacon    getFilePath({
178082815dcSEvan Bacon      modRequest: {
179082815dcSEvan Bacon        platformProjectRoot,
180082815dcSEvan Bacon        projectName
181082815dcSEvan Bacon      }
182082815dcSEvan Bacon    }) {
183082815dcSEvan Bacon      const supportingDirectory = _path().default.join(platformProjectRoot, projectName, 'Supporting');
184082815dcSEvan Bacon      return _path().default.resolve(supportingDirectory, 'Expo.plist');
185082815dcSEvan Bacon    },
186082815dcSEvan Bacon    async read(filePath, {
187082815dcSEvan Bacon      modRequest: {
188082815dcSEvan Bacon        introspect
189082815dcSEvan Bacon      }
190082815dcSEvan Bacon    }) {
191082815dcSEvan Bacon      try {
192082815dcSEvan Bacon        return _plist().default.parse(await readFile(filePath, 'utf8'));
193082815dcSEvan Bacon      } catch (error) {
194082815dcSEvan Bacon        if (introspect) {
195082815dcSEvan Bacon          return {};
196082815dcSEvan Bacon        }
197082815dcSEvan Bacon        throw error;
198082815dcSEvan Bacon      }
199082815dcSEvan Bacon    },
200082815dcSEvan Bacon    async write(filePath, {
201082815dcSEvan Bacon      modResults,
202082815dcSEvan Bacon      modRequest: {
203082815dcSEvan Bacon        introspect
204082815dcSEvan Bacon      }
205082815dcSEvan Bacon    }) {
206082815dcSEvan Bacon      if (introspect) {
207082815dcSEvan Bacon        return;
208082815dcSEvan Bacon      }
209082815dcSEvan Bacon      await writeFile(filePath, _plist().default.build((0, _sortObject().sortObject)(modResults)));
210082815dcSEvan Bacon    }
211082815dcSEvan Bacon  }),
212082815dcSEvan Bacon  // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`
213082815dcSEvan Bacon  xcodeproj: (0, _createBaseMod().provider)({
214082815dcSEvan Bacon    getFilePath({
215082815dcSEvan Bacon      modRequest: {
216082815dcSEvan Bacon        projectRoot
217082815dcSEvan Bacon      }
218082815dcSEvan Bacon    }) {
219082815dcSEvan Bacon      return _ios().Paths.getPBXProjectPath(projectRoot);
220082815dcSEvan Bacon    },
221082815dcSEvan Bacon    async read(filePath) {
222082815dcSEvan Bacon      const project = _xcode().default.project(filePath);
223082815dcSEvan Bacon      project.parseSync();
224082815dcSEvan Bacon      return project;
225082815dcSEvan Bacon    },
226082815dcSEvan Bacon    async write(filePath, {
227082815dcSEvan Bacon      modResults
228082815dcSEvan Bacon    }) {
229082815dcSEvan Bacon      await writeFile(filePath, modResults.writeSync());
230082815dcSEvan Bacon    }
231082815dcSEvan Bacon  }),
232082815dcSEvan Bacon  // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`
233082815dcSEvan Bacon  infoPlist: (0, _createBaseMod().provider)({
234082815dcSEvan Bacon    isIntrospective: true,
235082815dcSEvan Bacon    async getFilePath(config) {
236082815dcSEvan Bacon      let project = null;
237082815dcSEvan Bacon      try {
238082815dcSEvan Bacon        project = (0, _Xcodeproj().getPbxproj)(config.modRequest.projectRoot);
239ee216927STomasz Sapeta      } catch {
240ee216927STomasz Sapeta        // noop
241ee216927STomasz Sapeta      }
242ee216927STomasz Sapeta
243ee216927STomasz Sapeta      // Only check / warn if a project actually exists, this'll provide
244082815dcSEvan Bacon      // more accurate warning messages for users in managed projects.
245082815dcSEvan Bacon      if (project) {
246082815dcSEvan Bacon        const infoPlistBuildProperty = (0, _getInfoPlistPath().getInfoPlistPathFromPbxproj)(project);
247082815dcSEvan Bacon        if (infoPlistBuildProperty) {
248082815dcSEvan Bacon          //: [root]/myapp/ios/MyApp/Info.plist
249ee216927STomasz Sapeta          const infoPlistPath = _path().default.join(
250ee216927STomasz Sapeta          //: myapp/ios
251ee216927STomasz Sapeta          config.modRequest.platformProjectRoot,
252ee216927STomasz Sapeta          //: MyApp/Info.plist
253082815dcSEvan Bacon          infoPlistBuildProperty);
254082815dcSEvan Bacon          if ((0, _modules().fileExists)(infoPlistPath)) {
255082815dcSEvan Bacon            return infoPlistPath;
256082815dcSEvan Bacon          }
257082815dcSEvan Bacon          (0, _warnings().addWarningIOS)('mods.ios.infoPlist', `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`);
258082815dcSEvan Bacon        } else {
259082815dcSEvan Bacon          (0, _warnings().addWarningIOS)('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');
260082815dcSEvan Bacon        }
261082815dcSEvan Bacon      }
262082815dcSEvan Bacon      try {
263082815dcSEvan Bacon        // Fallback on glob...
264082815dcSEvan Bacon        return await _ios().Paths.getInfoPlistPath(config.modRequest.projectRoot);
265082815dcSEvan Bacon      } catch (error) {
266082815dcSEvan Bacon        if (config.modRequest.introspect) {
267082815dcSEvan Bacon          // fallback to an empty string in introspection mode.
268082815dcSEvan Bacon          return '';
269082815dcSEvan Bacon        }
270082815dcSEvan Bacon        throw error;
271082815dcSEvan Bacon      }
272082815dcSEvan Bacon    },
273082815dcSEvan Bacon    async read(filePath, config) {
274082815dcSEvan Bacon      // Apply all of the Info.plist values to the expo.ios.infoPlist object
275082815dcSEvan Bacon      // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.
276082815dcSEvan Bacon      if (!config.ios) config.ios = {};
277082815dcSEvan Bacon      if (!config.ios.infoPlist) config.ios.infoPlist = {};
278082815dcSEvan Bacon      let modResults;
279082815dcSEvan Bacon      try {
280082815dcSEvan Bacon        const contents = await readFile(filePath, 'utf8');
281082815dcSEvan Bacon        (0, _assert().default)(contents, 'Info.plist is empty');
282082815dcSEvan Bacon        modResults = _plist().default.parse(contents);
283082815dcSEvan Bacon      } catch (error) {
284082815dcSEvan Bacon        // Throw errors in introspection mode.
285082815dcSEvan Bacon        if (!config.modRequest.introspect) {
286082815dcSEvan Bacon          throw error;
287ee216927STomasz Sapeta        }
288ee216927STomasz Sapeta        // Fallback to using the infoPlist object from the Expo config.
289082815dcSEvan Bacon        modResults = getInfoPlistTemplate();
290082815dcSEvan Bacon      }
291ee216927STomasz Sapeta      config.ios.infoPlist = {
292ee216927STomasz Sapeta        ...(modResults || {}),
293082815dcSEvan Bacon        ...config.ios.infoPlist
294082815dcSEvan Bacon      };
295082815dcSEvan Bacon      return config.ios.infoPlist;
296082815dcSEvan Bacon    },
297082815dcSEvan Bacon    async write(filePath, config) {
298082815dcSEvan Bacon      // Update the contents of the static infoPlist object
299082815dcSEvan Bacon      if (!config.ios) {
300082815dcSEvan Bacon        config.ios = {};
301082815dcSEvan Bacon      }
302ee216927STomasz Sapeta      config.ios.infoPlist = config.modResults;
303082815dcSEvan Bacon
304ee216927STomasz Sapeta      // Return early without writing, in introspection mode.
305082815dcSEvan Bacon      if (config.modRequest.introspect) {
306082815dcSEvan Bacon        return;
307082815dcSEvan Bacon      }
308082815dcSEvan Bacon      await writeFile(filePath, _plist().default.build((0, _sortObject().sortObject)(config.modResults)));
309082815dcSEvan Bacon    }
310082815dcSEvan Bacon  }),
311082815dcSEvan Bacon  // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`
312082815dcSEvan Bacon  entitlements: (0, _createBaseMod().provider)({
313082815dcSEvan Bacon    isIntrospective: true,
314082815dcSEvan Bacon    async getFilePath(config) {
315082815dcSEvan Bacon      try {
316082815dcSEvan Bacon        var _Entitlements$getEnti;
317082815dcSEvan Bacon        (0, _Entitlements().ensureApplicationTargetEntitlementsFileConfigured)(config.modRequest.projectRoot);
318082815dcSEvan Bacon        return (_Entitlements$getEnti = _ios().Entitlements.getEntitlementsPath(config.modRequest.projectRoot)) !== null && _Entitlements$getEnti !== void 0 ? _Entitlements$getEnti : '';
319082815dcSEvan Bacon      } catch (error) {
320082815dcSEvan Bacon        if (config.modRequest.introspect) {
321082815dcSEvan Bacon          // fallback to an empty string in introspection mode.
322082815dcSEvan Bacon          return '';
323082815dcSEvan Bacon        }
324082815dcSEvan Bacon        throw error;
325082815dcSEvan Bacon      }
326082815dcSEvan Bacon    },
327082815dcSEvan Bacon    async read(filePath, config) {
328082815dcSEvan Bacon      let modResults;
329082815dcSEvan Bacon      try {
33042d6b312SCedric van Putten        if (!config.modRequest.ignoreExistingNativeFiles && _fs().default.existsSync(filePath)) {
331082815dcSEvan Bacon          const contents = await readFile(filePath, 'utf8');
332082815dcSEvan Bacon          (0, _assert().default)(contents, 'Entitlements plist is empty');
333082815dcSEvan Bacon          modResults = _plist().default.parse(contents);
334082815dcSEvan Bacon        } else {
335082815dcSEvan Bacon          modResults = getEntitlementsPlistTemplate();
336082815dcSEvan Bacon        }
337082815dcSEvan Bacon      } catch (error) {
338082815dcSEvan Bacon        // Throw errors in introspection mode.
339082815dcSEvan Bacon        if (!config.modRequest.introspect) {
340082815dcSEvan Bacon          throw error;
341ee216927STomasz Sapeta        }
342ee216927STomasz Sapeta        // Fallback to using the template file.
343082815dcSEvan Bacon        modResults = getEntitlementsPlistTemplate();
344ee216927STomasz Sapeta      }
345ee216927STomasz Sapeta
346ee216927STomasz Sapeta      // Apply all of the .entitlements values to the expo.ios.entitlements object
347082815dcSEvan Bacon      // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.
348082815dcSEvan Bacon      if (!config.ios) config.ios = {};
349082815dcSEvan Bacon      if (!config.ios.entitlements) config.ios.entitlements = {};
350ee216927STomasz Sapeta      config.ios.entitlements = {
351ee216927STomasz Sapeta        ...(modResults || {}),
352082815dcSEvan Bacon        ...config.ios.entitlements
353082815dcSEvan Bacon      };
354082815dcSEvan Bacon      return config.ios.entitlements;
355082815dcSEvan Bacon    },
356082815dcSEvan Bacon    async write(filePath, config) {
357082815dcSEvan Bacon      // Update the contents of the static entitlements object
358082815dcSEvan Bacon      if (!config.ios) {
359082815dcSEvan Bacon        config.ios = {};
360082815dcSEvan Bacon      }
361ee216927STomasz Sapeta      config.ios.entitlements = config.modResults;
362082815dcSEvan Bacon
363ee216927STomasz Sapeta      // Return early without writing, in introspection mode.
364082815dcSEvan Bacon      if (config.modRequest.introspect) {
365082815dcSEvan Bacon        return;
366082815dcSEvan Bacon      }
367082815dcSEvan Bacon      await writeFile(filePath, _plist().default.build((0, _sortObject().sortObject)(config.modResults)));
368082815dcSEvan Bacon    }
369082815dcSEvan Bacon  }),
370082815dcSEvan Bacon  // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`
371082815dcSEvan Bacon  podfileProperties: (0, _createBaseMod().provider)({
372082815dcSEvan Bacon    isIntrospective: true,
373082815dcSEvan Bacon    getFilePath({
374082815dcSEvan Bacon      modRequest: {
375082815dcSEvan Bacon        platformProjectRoot
376082815dcSEvan Bacon      }
377082815dcSEvan Bacon    }) {
378082815dcSEvan Bacon      return _path().default.resolve(platformProjectRoot, 'Podfile.properties.json');
379082815dcSEvan Bacon    },
380082815dcSEvan Bacon    async read(filePath) {
381082815dcSEvan Bacon      let results = {};
382082815dcSEvan Bacon      try {
383082815dcSEvan Bacon        results = await _jsonFile().default.readAsync(filePath);
384082815dcSEvan Bacon      } catch {}
385082815dcSEvan Bacon      return results;
386082815dcSEvan Bacon    },
387082815dcSEvan Bacon    async write(filePath, {
388082815dcSEvan Bacon      modResults,
389082815dcSEvan Bacon      modRequest: {
390082815dcSEvan Bacon        introspect
391082815dcSEvan Bacon      }
392082815dcSEvan Bacon    }) {
393082815dcSEvan Bacon      if (introspect) {
394082815dcSEvan Bacon        return;
395082815dcSEvan Bacon      }
396082815dcSEvan Bacon      await _jsonFile().default.writeAsync(filePath, modResults);
397082815dcSEvan Bacon    }
398082815dcSEvan Bacon  })
399082815dcSEvan Bacon};
400082815dcSEvan Baconfunction withIosBaseMods(config, {
401082815dcSEvan Bacon  providers,
402082815dcSEvan Bacon  ...props
403082815dcSEvan Bacon} = {}) {
404ee216927STomasz Sapeta  return (0, _createBaseMod().withGeneratedBaseMods)(config, {
405ee216927STomasz Sapeta    ...props,
406082815dcSEvan Bacon    platform: 'ios',
407082815dcSEvan Bacon    providers: providers !== null && providers !== void 0 ? providers : getIosModFileProviders()
408082815dcSEvan Bacon  });
409082815dcSEvan Bacon}
410082815dcSEvan Baconfunction getIosModFileProviders() {
411082815dcSEvan Bacon  return defaultProviders;
412082815dcSEvan Bacon}
413082815dcSEvan Bacon//# sourceMappingURL=withIosBaseMods.js.map