@expo/config-plugins 7.9.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/build/android/AllowBackup.js +4 -6
  2. package/build/android/AllowBackup.js.map +1 -1
  3. package/build/android/BuildProperties.js +4 -8
  4. package/build/android/BuildProperties.js.map +1 -1
  5. package/build/android/Colors.js +3 -6
  6. package/build/android/Colors.js.map +1 -1
  7. package/build/android/EasBuild.js +2 -2
  8. package/build/android/EasBuild.js.map +1 -1
  9. package/build/android/EasBuildGradleScript.js +1 -2
  10. package/build/android/EasBuildGradleScript.js.map +1 -1
  11. package/build/android/GoogleMapsApiKey.js +2 -4
  12. package/build/android/GoogleMapsApiKey.js.map +1 -1
  13. package/build/android/GoogleServices.js +1 -2
  14. package/build/android/GoogleServices.js.map +1 -1
  15. package/build/android/IntentFilters.js +6 -12
  16. package/build/android/IntentFilters.js.map +1 -1
  17. package/build/android/Manifest.d.ts +1 -0
  18. package/build/android/Manifest.js +13 -22
  19. package/build/android/Manifest.js.map +1 -1
  20. package/build/android/Name.js +2 -4
  21. package/build/android/Name.js.map +1 -1
  22. package/build/android/Orientation.js +2 -4
  23. package/build/android/Orientation.js.map +1 -1
  24. package/build/android/Package.js +2 -4
  25. package/build/android/Package.js.map +1 -1
  26. package/build/android/Paths.js +2 -2
  27. package/build/android/Paths.js.map +1 -1
  28. package/build/android/Permissions.js +4 -8
  29. package/build/android/Permissions.js.map +1 -1
  30. package/build/android/PrimaryColor.js +1 -2
  31. package/build/android/PrimaryColor.js.map +1 -1
  32. package/build/android/Resources.js +8 -6
  33. package/build/android/Resources.js.map +1 -1
  34. package/build/android/Scheme.js +17 -40
  35. package/build/android/Scheme.js.map +1 -1
  36. package/build/android/StatusBar.js +3 -6
  37. package/build/android/StatusBar.js.map +1 -1
  38. package/build/android/Strings.js +2 -4
  39. package/build/android/Strings.js.map +1 -1
  40. package/build/android/Styles.js +3 -4
  41. package/build/android/Styles.js.map +1 -1
  42. package/build/android/Updates.d.ts +0 -8
  43. package/build/android/Updates.js +6 -91
  44. package/build/android/Updates.js.map +1 -1
  45. package/build/android/Version.js +3 -6
  46. package/build/android/Version.js.map +1 -1
  47. package/build/android/WindowSoftInputMode.js +2 -3
  48. package/build/android/WindowSoftInputMode.js.map +1 -1
  49. package/build/android/index.js +2 -2
  50. package/build/android/index.js.map +1 -1
  51. package/build/index.js +3 -4
  52. package/build/index.js.map +1 -1
  53. package/build/ios/Bitcode.js +1 -2
  54. package/build/ios/Bitcode.js.map +1 -1
  55. package/build/ios/BuildProperties.js +4 -8
  56. package/build/ios/BuildProperties.js.map +1 -1
  57. package/build/ios/BuildScheme.js +7 -12
  58. package/build/ios/BuildScheme.js.map +1 -1
  59. package/build/ios/BundleIdentifier.js +3 -5
  60. package/build/ios/BundleIdentifier.js.map +1 -1
  61. package/build/ios/DeviceFamily.js +5 -8
  62. package/build/ios/DeviceFamily.js.map +1 -1
  63. package/build/ios/Entitlements.js +3 -6
  64. package/build/ios/Entitlements.js.map +1 -1
  65. package/build/ios/Google.js +2 -4
  66. package/build/ios/Google.js.map +1 -1
  67. package/build/ios/IosConfig.types.d.ts +3 -1
  68. package/build/ios/IosConfig.types.js.map +1 -1
  69. package/build/ios/Locales.js +3 -4
  70. package/build/ios/Locales.js.map +1 -1
  71. package/build/ios/Maps.js +2 -4
  72. package/build/ios/Maps.js.map +1 -1
  73. package/build/ios/Name.js +3 -6
  74. package/build/ios/Name.js.map +1 -1
  75. package/build/ios/Orientation.js +4 -8
  76. package/build/ios/Orientation.js.map +1 -1
  77. package/build/ios/Paths.js +2 -2
  78. package/build/ios/Paths.js.map +1 -1
  79. package/build/ios/PrivacyInfo.js +7 -11
  80. package/build/ios/PrivacyInfo.js.map +1 -1
  81. package/build/ios/RequiresFullScreen.js +2 -4
  82. package/build/ios/RequiresFullScreen.js.map +1 -1
  83. package/build/ios/Scheme.js +6 -9
  84. package/build/ios/Scheme.js.map +1 -1
  85. package/build/ios/Swift.js +2 -2
  86. package/build/ios/Swift.js.map +1 -1
  87. package/build/ios/Target.js +4 -5
  88. package/build/ios/Target.js.map +1 -1
  89. package/build/ios/Updates.d.ts +0 -16
  90. package/build/ios/Updates.js +6 -95
  91. package/build/ios/Updates.js.map +1 -1
  92. package/build/ios/UsesNonExemptEncryption.js +2 -4
  93. package/build/ios/UsesNonExemptEncryption.js.map +1 -1
  94. package/build/ios/Version.js +3 -6
  95. package/build/ios/Version.js.map +1 -1
  96. package/build/ios/codeMod.js +1 -2
  97. package/build/ios/codeMod.js.map +1 -1
  98. package/build/ios/index.js +2 -2
  99. package/build/ios/index.js.map +1 -1
  100. package/build/ios/utils/Xcodeproj.js +15 -21
  101. package/build/ios/utils/Xcodeproj.js.map +1 -1
  102. package/build/ios/utils/getInfoPlistPath.js +1 -2
  103. package/build/ios/utils/getInfoPlistPath.js.map +1 -1
  104. package/build/plugins/createBaseMod.js +3 -4
  105. package/build/plugins/createBaseMod.js.map +1 -1
  106. package/build/plugins/ios-plugins.js +1 -2
  107. package/build/plugins/ios-plugins.js.map +1 -1
  108. package/build/plugins/mod-compiler.js +6 -10
  109. package/build/plugins/mod-compiler.js.map +1 -1
  110. package/build/plugins/withAndroidBaseMods.js +4 -6
  111. package/build/plugins/withAndroidBaseMods.js.map +1 -1
  112. package/build/plugins/withIosBaseMods.js +4 -5
  113. package/build/plugins/withIosBaseMods.js.map +1 -1
  114. package/build/plugins/withMod.js +2 -4
  115. package/build/plugins/withMod.js.map +1 -1
  116. package/build/plugins/withStaticPlugin.js +2 -4
  117. package/build/plugins/withStaticPlugin.js.map +1 -1
  118. package/build/utils/Updates.d.ts +5 -0
  119. package/build/utils/Updates.js +34 -37
  120. package/build/utils/Updates.js.map +1 -1
  121. package/build/utils/XML.js +4 -8
  122. package/build/utils/XML.js.map +1 -1
  123. package/build/utils/generateCode.js +2 -2
  124. package/build/utils/generateCode.js.map +1 -1
  125. package/build/utils/history.js +1 -2
  126. package/build/utils/history.js.map +1 -1
  127. package/build/utils/modules.js +2 -4
  128. package/build/utils/modules.js.map +1 -1
  129. package/build/utils/plugin-resolver.js +5 -7
  130. package/build/utils/plugin-resolver.js.map +1 -1
  131. package/package.json +4 -6
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Bitcode","data","_interopRequireWildcard","require","Object","defineProperty","exports","enumerable","get","BuildProperties","BuildScheme","BundleIdentifier","DeviceFamily","Entitlements","Google","_IosConfig","Locales","Maps","Name","Orientation","Paths","Permissions","PrivacyInfo","ProvisioningProfile","RequiresFullScreen","Scheme","Swift","Target","Updates","UsesNonExemptEncryption","Version","XcodeProjectFile","XcodeUtils","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set"],"sources":["../../src/ios/index.ts"],"sourcesContent":["import * as Bitcode from './Bitcode';\nimport * as BuildProperties from './BuildProperties';\nimport * as BuildScheme from './BuildScheme';\nimport * as BundleIdentifier from './BundleIdentifier';\nimport * as DeviceFamily from './DeviceFamily';\nimport * as Entitlements from './Entitlements';\nimport * as Google from './Google';\nimport { ExpoPlist, InfoPlist } from './IosConfig.types';\nimport * as Locales from './Locales';\nimport * as Maps from './Maps';\nimport * as Name from './Name';\nimport * as Orientation from './Orientation';\nimport * as Paths from './Paths';\nimport * as Permissions from './Permissions';\nimport * as PrivacyInfo from './PrivacyInfo';\nimport * as ProvisioningProfile from './ProvisioningProfile';\nimport * as RequiresFullScreen from './RequiresFullScreen';\nimport * as Scheme from './Scheme';\nimport * as Swift from './Swift';\nimport * as Target from './Target';\nimport * as Updates from './Updates';\nimport * as UsesNonExemptEncryption from './UsesNonExemptEncryption';\nimport * as Version from './Version';\nimport * as XcodeProjectFile from './XcodeProjectFile';\nimport * as XcodeUtils from './utils/Xcodeproj';\n\n// We can change this to export * as X with TypeScript 3.8+\n// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#export-star-as-namespace-syntax\n// .. but we should wait for this to be the default VSCode version.\nexport { InfoPlist, ExpoPlist, Entitlements, Paths, Permissions, XcodeUtils };\n\nexport {\n Bitcode,\n BundleIdentifier,\n BuildProperties,\n BuildScheme,\n DeviceFamily,\n Google,\n Maps,\n Locales,\n Name,\n Orientation,\n ProvisioningProfile,\n RequiresFullScreen,\n Scheme,\n Swift,\n Target,\n Updates,\n UsesNonExemptEncryption,\n Version,\n XcodeProjectFile,\n PrivacyInfo,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["Bitcode","data","_interopRequireWildcard","require","Object","defineProperty","exports","enumerable","get","BuildProperties","BuildScheme","BundleIdentifier","DeviceFamily","Entitlements","Google","_IosConfig","Locales","Maps","Name","Orientation","Paths","Permissions","PrivacyInfo","ProvisioningProfile","RequiresFullScreen","Scheme","Swift","Target","Updates","UsesNonExemptEncryption","Version","XcodeProjectFile","XcodeUtils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set"],"sources":["../../src/ios/index.ts"],"sourcesContent":["import * as Bitcode from './Bitcode';\nimport * as BuildProperties from './BuildProperties';\nimport * as BuildScheme from './BuildScheme';\nimport * as BundleIdentifier from './BundleIdentifier';\nimport * as DeviceFamily from './DeviceFamily';\nimport * as Entitlements from './Entitlements';\nimport * as Google from './Google';\nimport { ExpoPlist, InfoPlist } from './IosConfig.types';\nimport * as Locales from './Locales';\nimport * as Maps from './Maps';\nimport * as Name from './Name';\nimport * as Orientation from './Orientation';\nimport * as Paths from './Paths';\nimport * as Permissions from './Permissions';\nimport * as PrivacyInfo from './PrivacyInfo';\nimport * as ProvisioningProfile from './ProvisioningProfile';\nimport * as RequiresFullScreen from './RequiresFullScreen';\nimport * as Scheme from './Scheme';\nimport * as Swift from './Swift';\nimport * as Target from './Target';\nimport * as Updates from './Updates';\nimport * as UsesNonExemptEncryption from './UsesNonExemptEncryption';\nimport * as Version from './Version';\nimport * as XcodeProjectFile from './XcodeProjectFile';\nimport * as XcodeUtils from './utils/Xcodeproj';\n\n// We can change this to export * as X with TypeScript 3.8+\n// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#export-star-as-namespace-syntax\n// .. but we should wait for this to be the default VSCode version.\nexport { InfoPlist, ExpoPlist, Entitlements, Paths, Permissions, XcodeUtils };\n\nexport {\n Bitcode,\n BundleIdentifier,\n BuildProperties,\n BuildScheme,\n DeviceFamily,\n Google,\n Maps,\n Locales,\n Name,\n Orientation,\n ProvisioningProfile,\n RequiresFullScreen,\n Scheme,\n Swift,\n Target,\n Updates,\n UsesNonExemptEncryption,\n Version,\n XcodeProjectFile,\n PrivacyInfo,\n};\n"],"mappings":"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"}
@@ -80,8 +80,8 @@ function Paths() {
80
80
  };
81
81
  return data;
82
82
  }
83
- function _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); }
84
- function _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; }
83
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
84
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
85
85
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
86
86
  /**
87
87
  * Copyright © 2023-present 650 Industries, Inc. (aka Expo)
@@ -231,7 +231,7 @@ function addFileToGroupAndLink({
231
231
  file.target = targetUuid;
232
232
  } else {
233
233
  const applicationNativeTarget = project.getTarget('com.apple.product-type.application');
234
- file.target = applicationNativeTarget === null || applicationNativeTarget === void 0 ? void 0 : applicationNativeTarget.uuid;
234
+ file.target = applicationNativeTarget?.uuid;
235
235
  }
236
236
  file.uuid = project.generateUuid();
237
237
  file.fileRef = project.generateUuid();
@@ -287,8 +287,7 @@ const findGroup = (group, name) => {
287
287
  function findGroupInsideGroup(project, group, name) {
288
288
  const foundGroup = findGroup(group, name);
289
289
  if (foundGroup) {
290
- var _project$getPBXGroupB;
291
- return (_project$getPBXGroupB = project.getPBXGroupByKey(foundGroup.value)) !== null && _project$getPBXGroupB !== void 0 ? _project$getPBXGroupB : null;
290
+ return project.getPBXGroupByKey(foundGroup.value) ?? null;
292
291
  }
293
292
  return null;
294
293
  }
@@ -312,7 +311,6 @@ function pbxGroupByPathOrAssert(project, path) {
312
311
  return group;
313
312
  }
314
313
  function ensureGroupRecursively(project, filepath) {
315
- var _topMostGroup;
316
314
  const components = splitPath(filepath);
317
315
  const hasChild = (group, name) => group.children.find(({
318
316
  comment
@@ -330,7 +328,7 @@ function ensureGroupRecursively(project, filepath) {
330
328
  }
331
329
  topMostGroup = project.pbxGroupByName(pathComponent);
332
330
  }
333
- return (_topMostGroup = topMostGroup) !== null && _topMostGroup !== void 0 ? _topMostGroup : null;
331
+ return topMostGroup ?? null;
334
332
  }
335
333
 
336
334
  /**
@@ -358,9 +356,8 @@ function getProductName(project) {
358
356
  productName = project.productName;
359
357
  } catch {}
360
358
  if (productName === '$(TARGET_NAME)') {
361
- var _project$getFirstTarg, _project$getFirstTarg2;
362
- const targetName = (_project$getFirstTarg = project.getFirstTarget()) === null || _project$getFirstTarg === void 0 ? void 0 : (_project$getFirstTarg2 = _project$getFirstTarg.firstTarget) === null || _project$getFirstTarg2 === void 0 ? void 0 : _project$getFirstTarg2.productName;
363
- productName = targetName !== null && targetName !== void 0 ? targetName : productName;
359
+ const targetName = project.getFirstTarget()?.firstTarget?.productName;
360
+ productName = targetName ?? productName;
364
361
  }
365
362
  return productName;
366
363
  }
@@ -399,16 +396,14 @@ function isNotComment([key]) {
399
396
 
400
397
  // Remove surrounding double quotes if they exist.
401
398
  function unquote(value) {
402
- var _value$match$, _value$match;
403
399
  // projects with numeric names will fail due to a bug in the xcode package.
404
400
  if (typeof value === 'number') {
405
401
  value = String(value);
406
402
  }
407
- return (_value$match$ = (_value$match = value.match(/^"(.*)"$/)) === null || _value$match === void 0 ? void 0 : _value$match[1]) !== null && _value$match$ !== void 0 ? _value$match$ : value;
403
+ return value.match(/^"(.*)"$/)?.[1] ?? value;
408
404
  }
409
405
  function resolveXcodeBuildSetting(value, lookup) {
410
- const parsedValue = value === null || value === void 0 ? void 0 : value.replace(/\$\(([^()]*|\([^)]*\))\)/g, match => {
411
- var _resolved5;
406
+ const parsedValue = value?.replace(/\$\(([^()]*|\([^)]*\))\)/g, match => {
412
407
  // Remove the `$(` and `)`, then split modifier(s) from the variable name.
413
408
  const [variable, ...transformations] = match.slice(2, -1).split(':');
414
409
  // Resolve the variable recursively.
@@ -420,15 +415,14 @@ function resolveXcodeBuildSetting(value, lookup) {
420
415
 
421
416
  // Ref: http://codeworkshop.net/posts/xcode-build-setting-transformations
422
417
  transformations.forEach(modifier => {
423
- var _resolved, _resolved2, _resolved3, _resolved4, _modifier$match;
424
418
  switch (modifier) {
425
419
  case 'lower':
426
420
  // A lowercase representation.
427
- resolved = (_resolved = resolved) === null || _resolved === void 0 ? void 0 : _resolved.toLowerCase();
421
+ resolved = resolved?.toLowerCase();
428
422
  break;
429
423
  case 'upper':
430
424
  // An uppercase representation.
431
- resolved = (_resolved2 = resolved) === null || _resolved2 === void 0 ? void 0 : _resolved2.toUpperCase();
425
+ resolved = resolved?.toUpperCase();
432
426
  break;
433
427
  case 'suffix':
434
428
  if (resolved) {
@@ -460,13 +454,13 @@ function resolveXcodeBuildSetting(value, lookup) {
460
454
  // A representation suitable for use in a DNS name.
461
455
 
462
456
  // TODO: Check the spec if there is one, this is just what we had before.
463
- resolved = (_resolved3 = resolved) === null || _resolved3 === void 0 ? void 0 : _resolved3.replace(/[^a-zA-Z0-9]/g, '-');
457
+ resolved = resolved?.replace(/[^a-zA-Z0-9]/g, '-');
464
458
  // resolved = resolved.replace(/[\/\*\s]/g, '-');
465
459
  break;
466
460
  case 'c99extidentifier':
467
461
  // Like identifier, but with support for extended characters allowed by C99. Added in Xcode 6.
468
462
  // TODO: Check the spec if there is one.
469
- resolved = (_resolved4 = resolved) === null || _resolved4 === void 0 ? void 0 : _resolved4.replace(/[-\s]/g, '_');
463
+ resolved = resolved?.replace(/[-\s]/g, '_');
470
464
  break;
471
465
  case 'standardizepath':
472
466
  if (resolved) {
@@ -476,11 +470,11 @@ function resolveXcodeBuildSetting(value, lookup) {
476
470
  }
477
471
  break;
478
472
  default:
479
- resolved || (resolved = (_modifier$match = modifier.match(/default=(.*)/)) === null || _modifier$match === void 0 ? void 0 : _modifier$match[1]);
473
+ resolved ||= modifier.match(/default=(.*)/)?.[1];
480
474
  break;
481
475
  }
482
476
  });
483
- return resolveXcodeBuildSetting((_resolved5 = resolved) !== null && _resolved5 !== void 0 ? _resolved5 : '', lookup);
477
+ return resolveXcodeBuildSetting(resolved ?? '', lookup);
484
478
  });
485
479
  if (parsedValue !== value) {
486
480
  return resolveXcodeBuildSetting(parsedValue, lookup);
@@ -1 +1 @@
1
- {"version":3,"file":"Xcodeproj.js","names":["_assert","data","_interopRequireDefault","require","_path","_slugify","_xcode","_pbxFile","_string","_warnings","Paths","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","getProjectName","projectRoot","sourceRoot","getSourceRoot","path","basename","resolvePathOrProject","projectRootOrProject","getPbxproj","sanitizedName","name","sanitizedNameForProjects","slugify","replace","normalize","getHackyProjectName","config","projectName","assert","createProjectFileForGroup","filepath","group","file","pbxFile","conflictingFile","children","find","child","comment","addResourceFileToGroup","groupName","isBuildFile","project","verbose","targetUuid","addFileToGroupAndLink","addFileToProject","addToPbxFileReferenceSection","addToPbxBuildFileSection","addToPbxResourcesBuildPhase","addBuildSourceFileToGroup","addToPbxSourcesBuildPhase","pbxGroupByPathOrAssert","addWarningIOS","target","applicationNativeTarget","getTarget","uuid","generateUuid","fileRef","push","value","getApplicationNativeTarget","String","addFramework","framework","splitPath","split","findGroup","undefined","findGroupInsideGroup","foundGroup","_project$getPBXGroupB","getPBXGroupByKey","firstProject","getFirstProject","mainGroup","components","nextGroup","Error","ensureGroupRecursively","_topMostGroup","hasChild","topMostGroup","pathComponent","pbxCreateGroup","pbxGroupByName","projectPath","getPBXProjectPath","xcode","parseSync","getProductName","productName","_project$getFirstTarg","_project$getFirstTarg2","targetName","getFirstTarget","firstTarget","getProjectSection","pbxProjectSection","getXCConfigurationListEntries","lists","pbxXCConfigurationList","entries","filter","isNotComment","getBuildConfigurationsForListId","configurationListId","configurationListEntries","configurationList","buildConfigurations","map","i","pbxXCBuildConfigurationSection","isBuildConfig","includes","getBuildConfigurationForListIdAndName","buildConfiguration","xcBuildConfigurationEntry","trimQuotes","sectionItem","isa","isNotTestHost","buildSettings","TEST_HOST","endsWith","unquote","_value$match$","_value$match","match","resolveXcodeBuildSetting","lookup","parsedValue","_resolved5","variable","transformations","slice","lookedUp","resolved","forEach","modifier","_resolved","_resolved2","_resolved3","_resolved4","_modifier$match","toLowerCase","toUpperCase","extname","dirname","b","extensionIndex","lastIndexOf","resolve"],"sources":["../../../src/ios/utils/Xcodeproj.ts"],"sourcesContent":["/**\n * Copyright © 2023-present 650 Industries, Inc. (aka Expo)\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { ExpoConfig } from '@expo/config-types';\nimport assert from 'assert';\nimport path from 'path';\nimport slugify from 'slugify';\nimport xcode, {\n PBXFile,\n PBXGroup,\n PBXNativeTarget,\n PBXProject,\n UUID,\n XCBuildConfiguration,\n XCConfigurationList,\n XcodeProject,\n} from 'xcode';\nimport pbxFile from 'xcode/lib/pbxFile';\n\nimport { trimQuotes } from './string';\nimport { addWarningIOS } from '../../utils/warnings';\nimport * as Paths from '../Paths';\n\nexport type ProjectSectionEntry = [string, PBXProject];\n\nexport type NativeTargetSection = Record<string, PBXNativeTarget>;\n\nexport type NativeTargetSectionEntry = [string, PBXNativeTarget];\n\nexport type ConfigurationLists = Record<string, XCConfigurationList>;\n\nexport type ConfigurationListEntry = [string, XCConfigurationList];\n\nexport type ConfigurationSectionEntry = [string, XCBuildConfiguration];\n\nexport function getProjectName(projectRoot: string) {\n const sourceRoot = Paths.getSourceRoot(projectRoot);\n return path.basename(sourceRoot);\n}\n\nexport function resolvePathOrProject(\n projectRootOrProject: string | XcodeProject\n): XcodeProject | null {\n if (typeof projectRootOrProject === 'string') {\n try {\n return getPbxproj(projectRootOrProject);\n } catch {\n return null;\n }\n }\n return projectRootOrProject;\n}\n\n// TODO: come up with a better solution for using app.json expo.name in various places\nexport function sanitizedName(name: string) {\n // Default to the name `app` when every safe character has been sanitized\n return sanitizedNameForProjects(name) || sanitizedNameForProjects(slugify(name)) || 'app';\n}\n\nfunction sanitizedNameForProjects(name: string) {\n return name\n .replace(/[\\W_]+/g, '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n}\n\n// TODO: it's silly and kind of fragile that we look at app config to determine\n// the ios project paths. Overall this function needs to be revamped, just a\n// placeholder for now! Make this more robust when we support applying config\n// at any time (currently it's only applied on eject).\nexport function getHackyProjectName(projectRoot: string, config: ExpoConfig): string {\n // Attempt to get the current ios folder name (apply).\n try {\n return getProjectName(projectRoot);\n } catch {\n // If no iOS project exists then create a new one (eject).\n const projectName = config.name;\n assert(projectName, 'Your project needs a name in app.json/app.config.js.');\n return sanitizedName(projectName);\n }\n}\n\nfunction createProjectFileForGroup({ filepath, group }: { filepath: string; group: PBXGroup }) {\n const file = new pbxFile(filepath);\n\n const conflictingFile = group.children.find((child) => child.comment === file.basename);\n if (conflictingFile) {\n // This can happen when a file like the GoogleService-Info.plist needs to be added and the eject command is run twice.\n // Not much we can do here since it might be a conflicting file.\n return null;\n }\n return file;\n}\n\n/**\n * Add a resource file (ex: `SplashScreen.storyboard`, `Images.xcassets`) to an Xcode project.\n * This is akin to creating a new code file in Xcode with `⌘+n`.\n */\nexport function addResourceFileToGroup({\n filepath,\n groupName,\n // Should add to `PBXBuildFile Section`\n isBuildFile,\n project,\n verbose,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n isBuildFile?: boolean;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n}): XcodeProject {\n return addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n addFileToProject({ project, file }) {\n project.addToPbxFileReferenceSection(file);\n if (isBuildFile) {\n project.addToPbxBuildFileSection(file);\n }\n project.addToPbxResourcesBuildPhase(file);\n },\n });\n}\n\n/**\n * Add a build source file (ex: `AppDelegate.m`, `ViewController.swift`) to an Xcode project.\n * This is akin to creating a new code file in Xcode with `⌘+n`.\n */\nexport function addBuildSourceFileToGroup({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n}): XcodeProject {\n return addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n addFileToProject({ project, file }) {\n project.addToPbxFileReferenceSection(file);\n project.addToPbxBuildFileSection(file);\n project.addToPbxSourcesBuildPhase(file);\n },\n });\n}\n\n// TODO(brentvatne): I couldn't figure out how to do this with an existing\n// higher level function exposed by the xcode library, but we should find out how to do\n// that and replace this with it\nexport function addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n addFileToProject,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n addFileToProject: (props: { file: PBXFile; project: XcodeProject }) => void;\n}): XcodeProject {\n const group = pbxGroupByPathOrAssert(project, groupName);\n\n const file = createProjectFileForGroup({ filepath, group });\n\n if (!file) {\n if (verbose) {\n // This can happen when a file like the GoogleService-Info.plist needs to be added and the eject command is run twice.\n // Not much we can do here since it might be a conflicting file.\n addWarningIOS(\n 'ios-xcode-project',\n `Skipped adding duplicate file \"${filepath}\" to PBXGroup named \"${groupName}\"`\n );\n }\n return project;\n }\n\n if (targetUuid != null) {\n file.target = targetUuid;\n } else {\n const applicationNativeTarget = project.getTarget('com.apple.product-type.application');\n file.target = applicationNativeTarget?.uuid;\n }\n\n file.uuid = project.generateUuid();\n file.fileRef = project.generateUuid();\n\n addFileToProject({ project, file });\n\n group.children.push({\n value: file.fileRef,\n comment: file.basename,\n });\n return project;\n}\n\nexport function getApplicationNativeTarget({\n project,\n projectName,\n}: {\n project: XcodeProject;\n projectName: string;\n}) {\n const applicationNativeTarget = project.getTarget('com.apple.product-type.application');\n assert(\n applicationNativeTarget,\n `Couldn't locate application PBXNativeTarget in '.xcodeproj' file.`\n );\n assert(\n String(applicationNativeTarget.target.name) === projectName,\n `Application native target name mismatch. Expected ${projectName}, but found ${applicationNativeTarget.target.name}.`\n );\n return applicationNativeTarget;\n}\n\n/**\n * Add a framework to the default app native target.\n *\n * @param projectName Name of the PBX project.\n * @param framework String ending in `.framework`, i.e. `StoreKit.framework`\n */\nexport function addFramework({\n project,\n projectName,\n framework,\n}: {\n project: XcodeProject;\n projectName: string;\n framework: string;\n}) {\n const target = getApplicationNativeTarget({ project, projectName });\n return project.addFramework(framework, { target: target.uuid });\n}\n\nfunction splitPath(path: string): string[] {\n // TODO: Should we account for other platforms that may not use `/`\n return path.split('/');\n}\n\nconst findGroup = (\n group: PBXGroup | undefined,\n name: string\n):\n | {\n value: UUID;\n comment?: string;\n }\n | undefined => {\n if (!group) {\n return undefined;\n }\n\n return group.children.find((group) => group.comment === name);\n};\n\nfunction findGroupInsideGroup(\n project: XcodeProject,\n group: PBXGroup | undefined,\n name: string\n): null | PBXGroup {\n const foundGroup = findGroup(group, name);\n if (foundGroup) {\n return project.getPBXGroupByKey(foundGroup.value) ?? null;\n }\n return null;\n}\n\nfunction pbxGroupByPathOrAssert(project: XcodeProject, path: string): PBXGroup {\n const { firstProject } = project.getFirstProject();\n\n let group = project.getPBXGroupByKey(firstProject.mainGroup);\n\n const components = splitPath(path);\n for (const name of components) {\n const nextGroup = findGroupInsideGroup(project, group, name);\n if (nextGroup) {\n group = nextGroup;\n } else {\n break;\n }\n }\n\n if (!group) {\n throw Error(`Xcode PBXGroup with name \"${path}\" could not be found in the Xcode project.`);\n }\n\n return group;\n}\n\nexport function ensureGroupRecursively(project: XcodeProject, filepath: string): PBXGroup | null {\n const components = splitPath(filepath);\n const hasChild = (group: PBXGroup, name: string) =>\n group.children.find(({ comment }) => comment === name);\n const { firstProject } = project.getFirstProject();\n\n let topMostGroup = project.getPBXGroupByKey(firstProject.mainGroup);\n\n for (const pathComponent of components) {\n if (topMostGroup && !hasChild(topMostGroup, pathComponent)) {\n topMostGroup.children.push({\n comment: pathComponent,\n value: project.pbxCreateGroup(pathComponent, '\"\"'),\n });\n }\n topMostGroup = project.pbxGroupByName(pathComponent);\n }\n return topMostGroup ?? null;\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getPbxproj(projectRoot: string): XcodeProject {\n const projectPath = Paths.getPBXProjectPath(projectRoot);\n const project = xcode.project(projectPath);\n project.parseSync();\n return project;\n}\n\n/**\n * Get the productName for a project, if the name is using a variable `$(TARGET_NAME)`, then attempt to get the value of that variable.\n *\n * @param project\n */\nexport function getProductName(project: XcodeProject): string {\n let productName = '$(TARGET_NAME)';\n try {\n // If the product name is numeric, this will fail (it's a getter).\n // If the bundle identifier' final component is only numeric values, then the PRODUCT_NAME\n // will be a numeric value, this results in a bug where the product name isn't useful,\n // i.e. `com.bacon.001` -> `1` -- in this case, use the first target name.\n productName = project.productName;\n } catch {}\n\n if (productName === '$(TARGET_NAME)') {\n const targetName = project.getFirstTarget()?.firstTarget?.productName;\n productName = targetName ?? productName;\n }\n\n return productName;\n}\n\nexport function getProjectSection(project: XcodeProject) {\n return project.pbxProjectSection();\n}\n\nexport function getXCConfigurationListEntries(project: XcodeProject): ConfigurationListEntry[] {\n const lists = project.pbxXCConfigurationList();\n return Object.entries(lists).filter(isNotComment);\n}\n\nexport function getBuildConfigurationsForListId(\n project: XcodeProject,\n configurationListId: string\n): ConfigurationSectionEntry[] {\n const configurationListEntries = getXCConfigurationListEntries(project);\n const [, configurationList] = configurationListEntries.find(\n ([key]) => key === configurationListId\n ) as ConfigurationListEntry;\n\n const buildConfigurations = configurationList.buildConfigurations.map((i) => i.value);\n\n return Object.entries(project.pbxXCBuildConfigurationSection())\n .filter(isNotComment)\n .filter(isBuildConfig)\n .filter(([key]: ConfigurationSectionEntry) => buildConfigurations.includes(key));\n}\n\nexport function getBuildConfigurationForListIdAndName(\n project: XcodeProject,\n {\n configurationListId,\n buildConfiguration,\n }: { configurationListId: string; buildConfiguration: string }\n): ConfigurationSectionEntry {\n const xcBuildConfigurationEntry = getBuildConfigurationsForListId(\n project,\n configurationListId\n ).find((i) => trimQuotes(i[1].name) === buildConfiguration);\n if (!xcBuildConfigurationEntry) {\n throw new Error(\n `Build configuration '${buildConfiguration}' does not exist in list with id '${configurationListId}'`\n );\n }\n return xcBuildConfigurationEntry;\n}\n\nexport function isBuildConfig([, sectionItem]: ConfigurationSectionEntry): boolean {\n return sectionItem.isa === 'XCBuildConfiguration';\n}\n\nexport function isNotTestHost([, sectionItem]: ConfigurationSectionEntry): boolean {\n return !sectionItem.buildSettings.TEST_HOST;\n}\n\nexport function isNotComment([key]:\n | ConfigurationSectionEntry\n | ProjectSectionEntry\n | ConfigurationListEntry\n | NativeTargetSectionEntry): boolean {\n return !key.endsWith(`_comment`);\n}\n\n// Remove surrounding double quotes if they exist.\nexport function unquote(value: string): string {\n // projects with numeric names will fail due to a bug in the xcode package.\n if (typeof value === 'number') {\n value = String(value);\n }\n return value.match(/^\"(.*)\"$/)?.[1] ?? value;\n}\n\nexport function resolveXcodeBuildSetting(\n value: string,\n lookup: (buildSetting: string) => string | undefined\n): string {\n const parsedValue = value?.replace(/\\$\\(([^()]*|\\([^)]*\\))\\)/g, (match) => {\n // Remove the `$(` and `)`, then split modifier(s) from the variable name.\n const [variable, ...transformations] = match.slice(2, -1).split(':');\n // Resolve the variable recursively.\n let lookedUp = lookup(variable);\n if (lookedUp) {\n lookedUp = resolveXcodeBuildSetting(lookedUp, lookup);\n }\n let resolved = lookedUp;\n\n // Ref: http://codeworkshop.net/posts/xcode-build-setting-transformations\n transformations.forEach((modifier) => {\n switch (modifier) {\n case 'lower':\n // A lowercase representation.\n resolved = resolved?.toLowerCase();\n break;\n case 'upper':\n // An uppercase representation.\n resolved = resolved?.toUpperCase();\n break;\n case 'suffix':\n if (resolved) {\n // The extension of a path including the '.' divider.\n resolved = path.extname(resolved);\n }\n break;\n case 'file':\n if (resolved) {\n // The file portion of a path.\n resolved = path.basename(resolved);\n }\n break;\n case 'dir':\n if (resolved) {\n // The directory portion of a path.\n resolved = path.dirname(resolved);\n }\n break;\n case 'base':\n if (resolved) {\n // The base name of a path - the last path component with any extension removed.\n const b = path.basename(resolved);\n const extensionIndex = b.lastIndexOf('.');\n resolved = extensionIndex === -1 ? b : b.slice(0, extensionIndex);\n }\n break;\n case 'rfc1034identifier':\n // A representation suitable for use in a DNS name.\n\n // TODO: Check the spec if there is one, this is just what we had before.\n resolved = resolved?.replace(/[^a-zA-Z0-9]/g, '-');\n // resolved = resolved.replace(/[\\/\\*\\s]/g, '-');\n break;\n case 'c99extidentifier':\n // Like identifier, but with support for extended characters allowed by C99. Added in Xcode 6.\n // TODO: Check the spec if there is one.\n resolved = resolved?.replace(/[-\\s]/g, '_');\n break;\n case 'standardizepath':\n if (resolved) {\n // The equivalent of calling stringByStandardizingPath on the string.\n // https://developer.apple.com/documentation/foundation/nsstring/1407194-standardizingpath\n resolved = path.resolve(resolved);\n }\n break;\n default:\n resolved ||= modifier.match(/default=(.*)/)?.[1];\n break;\n }\n });\n\n return resolveXcodeBuildSetting(resolved ?? '', lookup);\n });\n\n if (parsedValue !== value) {\n return resolveXcodeBuildSetting(parsedValue, lookup);\n }\n return value;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Xcodeproj.js","names":["_assert","data","_interopRequireDefault","require","_path","_slugify","_xcode","_pbxFile","_string","_warnings","Paths","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","getProjectName","projectRoot","sourceRoot","getSourceRoot","path","basename","resolvePathOrProject","projectRootOrProject","getPbxproj","sanitizedName","name","sanitizedNameForProjects","slugify","replace","normalize","getHackyProjectName","config","projectName","assert","createProjectFileForGroup","filepath","group","file","pbxFile","conflictingFile","children","find","child","comment","addResourceFileToGroup","groupName","isBuildFile","project","verbose","targetUuid","addFileToGroupAndLink","addFileToProject","addToPbxFileReferenceSection","addToPbxBuildFileSection","addToPbxResourcesBuildPhase","addBuildSourceFileToGroup","addToPbxSourcesBuildPhase","pbxGroupByPathOrAssert","addWarningIOS","target","applicationNativeTarget","getTarget","uuid","generateUuid","fileRef","push","value","getApplicationNativeTarget","String","addFramework","framework","splitPath","split","findGroup","undefined","findGroupInsideGroup","foundGroup","getPBXGroupByKey","firstProject","getFirstProject","mainGroup","components","nextGroup","Error","ensureGroupRecursively","hasChild","topMostGroup","pathComponent","pbxCreateGroup","pbxGroupByName","projectPath","getPBXProjectPath","xcode","parseSync","getProductName","productName","targetName","getFirstTarget","firstTarget","getProjectSection","pbxProjectSection","getXCConfigurationListEntries","lists","pbxXCConfigurationList","entries","filter","isNotComment","getBuildConfigurationsForListId","configurationListId","configurationListEntries","configurationList","key","buildConfigurations","map","pbxXCBuildConfigurationSection","isBuildConfig","includes","getBuildConfigurationForListIdAndName","buildConfiguration","xcBuildConfigurationEntry","trimQuotes","sectionItem","isa","isNotTestHost","buildSettings","TEST_HOST","endsWith","unquote","match","resolveXcodeBuildSetting","lookup","parsedValue","variable","transformations","slice","lookedUp","resolved","forEach","modifier","toLowerCase","toUpperCase","extname","dirname","b","extensionIndex","lastIndexOf","resolve"],"sources":["../../../src/ios/utils/Xcodeproj.ts"],"sourcesContent":["/**\n * Copyright © 2023-present 650 Industries, Inc. (aka Expo)\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { ExpoConfig } from '@expo/config-types';\nimport assert from 'assert';\nimport path from 'path';\nimport slugify from 'slugify';\nimport xcode, {\n PBXFile,\n PBXGroup,\n PBXNativeTarget,\n PBXProject,\n UUID,\n XCBuildConfiguration,\n XCConfigurationList,\n XcodeProject,\n} from 'xcode';\nimport pbxFile from 'xcode/lib/pbxFile';\n\nimport { trimQuotes } from './string';\nimport { addWarningIOS } from '../../utils/warnings';\nimport * as Paths from '../Paths';\n\nexport type ProjectSectionEntry = [string, PBXProject];\n\nexport type NativeTargetSection = Record<string, PBXNativeTarget>;\n\nexport type NativeTargetSectionEntry = [string, PBXNativeTarget];\n\nexport type ConfigurationLists = Record<string, XCConfigurationList>;\n\nexport type ConfigurationListEntry = [string, XCConfigurationList];\n\nexport type ConfigurationSectionEntry = [string, XCBuildConfiguration];\n\nexport function getProjectName(projectRoot: string) {\n const sourceRoot = Paths.getSourceRoot(projectRoot);\n return path.basename(sourceRoot);\n}\n\nexport function resolvePathOrProject(\n projectRootOrProject: string | XcodeProject\n): XcodeProject | null {\n if (typeof projectRootOrProject === 'string') {\n try {\n return getPbxproj(projectRootOrProject);\n } catch {\n return null;\n }\n }\n return projectRootOrProject;\n}\n\n// TODO: come up with a better solution for using app.json expo.name in various places\nexport function sanitizedName(name: string) {\n // Default to the name `app` when every safe character has been sanitized\n return sanitizedNameForProjects(name) || sanitizedNameForProjects(slugify(name)) || 'app';\n}\n\nfunction sanitizedNameForProjects(name: string) {\n return name\n .replace(/[\\W_]+/g, '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n}\n\n// TODO: it's silly and kind of fragile that we look at app config to determine\n// the ios project paths. Overall this function needs to be revamped, just a\n// placeholder for now! Make this more robust when we support applying config\n// at any time (currently it's only applied on eject).\nexport function getHackyProjectName(projectRoot: string, config: ExpoConfig): string {\n // Attempt to get the current ios folder name (apply).\n try {\n return getProjectName(projectRoot);\n } catch {\n // If no iOS project exists then create a new one (eject).\n const projectName = config.name;\n assert(projectName, 'Your project needs a name in app.json/app.config.js.');\n return sanitizedName(projectName);\n }\n}\n\nfunction createProjectFileForGroup({ filepath, group }: { filepath: string; group: PBXGroup }) {\n const file = new pbxFile(filepath);\n\n const conflictingFile = group.children.find((child) => child.comment === file.basename);\n if (conflictingFile) {\n // This can happen when a file like the GoogleService-Info.plist needs to be added and the eject command is run twice.\n // Not much we can do here since it might be a conflicting file.\n return null;\n }\n return file;\n}\n\n/**\n * Add a resource file (ex: `SplashScreen.storyboard`, `Images.xcassets`) to an Xcode project.\n * This is akin to creating a new code file in Xcode with `⌘+n`.\n */\nexport function addResourceFileToGroup({\n filepath,\n groupName,\n // Should add to `PBXBuildFile Section`\n isBuildFile,\n project,\n verbose,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n isBuildFile?: boolean;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n}): XcodeProject {\n return addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n addFileToProject({ project, file }) {\n project.addToPbxFileReferenceSection(file);\n if (isBuildFile) {\n project.addToPbxBuildFileSection(file);\n }\n project.addToPbxResourcesBuildPhase(file);\n },\n });\n}\n\n/**\n * Add a build source file (ex: `AppDelegate.m`, `ViewController.swift`) to an Xcode project.\n * This is akin to creating a new code file in Xcode with `⌘+n`.\n */\nexport function addBuildSourceFileToGroup({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n}): XcodeProject {\n return addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n addFileToProject({ project, file }) {\n project.addToPbxFileReferenceSection(file);\n project.addToPbxBuildFileSection(file);\n project.addToPbxSourcesBuildPhase(file);\n },\n });\n}\n\n// TODO(brentvatne): I couldn't figure out how to do this with an existing\n// higher level function exposed by the xcode library, but we should find out how to do\n// that and replace this with it\nexport function addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n addFileToProject,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n addFileToProject: (props: { file: PBXFile; project: XcodeProject }) => void;\n}): XcodeProject {\n const group = pbxGroupByPathOrAssert(project, groupName);\n\n const file = createProjectFileForGroup({ filepath, group });\n\n if (!file) {\n if (verbose) {\n // This can happen when a file like the GoogleService-Info.plist needs to be added and the eject command is run twice.\n // Not much we can do here since it might be a conflicting file.\n addWarningIOS(\n 'ios-xcode-project',\n `Skipped adding duplicate file \"${filepath}\" to PBXGroup named \"${groupName}\"`\n );\n }\n return project;\n }\n\n if (targetUuid != null) {\n file.target = targetUuid;\n } else {\n const applicationNativeTarget = project.getTarget('com.apple.product-type.application');\n file.target = applicationNativeTarget?.uuid;\n }\n\n file.uuid = project.generateUuid();\n file.fileRef = project.generateUuid();\n\n addFileToProject({ project, file });\n\n group.children.push({\n value: file.fileRef,\n comment: file.basename,\n });\n return project;\n}\n\nexport function getApplicationNativeTarget({\n project,\n projectName,\n}: {\n project: XcodeProject;\n projectName: string;\n}) {\n const applicationNativeTarget = project.getTarget('com.apple.product-type.application');\n assert(\n applicationNativeTarget,\n `Couldn't locate application PBXNativeTarget in '.xcodeproj' file.`\n );\n assert(\n String(applicationNativeTarget.target.name) === projectName,\n `Application native target name mismatch. Expected ${projectName}, but found ${applicationNativeTarget.target.name}.`\n );\n return applicationNativeTarget;\n}\n\n/**\n * Add a framework to the default app native target.\n *\n * @param projectName Name of the PBX project.\n * @param framework String ending in `.framework`, i.e. `StoreKit.framework`\n */\nexport function addFramework({\n project,\n projectName,\n framework,\n}: {\n project: XcodeProject;\n projectName: string;\n framework: string;\n}) {\n const target = getApplicationNativeTarget({ project, projectName });\n return project.addFramework(framework, { target: target.uuid });\n}\n\nfunction splitPath(path: string): string[] {\n // TODO: Should we account for other platforms that may not use `/`\n return path.split('/');\n}\n\nconst findGroup = (\n group: PBXGroup | undefined,\n name: string\n):\n | {\n value: UUID;\n comment?: string;\n }\n | undefined => {\n if (!group) {\n return undefined;\n }\n\n return group.children.find((group) => group.comment === name);\n};\n\nfunction findGroupInsideGroup(\n project: XcodeProject,\n group: PBXGroup | undefined,\n name: string\n): null | PBXGroup {\n const foundGroup = findGroup(group, name);\n if (foundGroup) {\n return project.getPBXGroupByKey(foundGroup.value) ?? null;\n }\n return null;\n}\n\nfunction pbxGroupByPathOrAssert(project: XcodeProject, path: string): PBXGroup {\n const { firstProject } = project.getFirstProject();\n\n let group = project.getPBXGroupByKey(firstProject.mainGroup);\n\n const components = splitPath(path);\n for (const name of components) {\n const nextGroup = findGroupInsideGroup(project, group, name);\n if (nextGroup) {\n group = nextGroup;\n } else {\n break;\n }\n }\n\n if (!group) {\n throw Error(`Xcode PBXGroup with name \"${path}\" could not be found in the Xcode project.`);\n }\n\n return group;\n}\n\nexport function ensureGroupRecursively(project: XcodeProject, filepath: string): PBXGroup | null {\n const components = splitPath(filepath);\n const hasChild = (group: PBXGroup, name: string) =>\n group.children.find(({ comment }) => comment === name);\n const { firstProject } = project.getFirstProject();\n\n let topMostGroup = project.getPBXGroupByKey(firstProject.mainGroup);\n\n for (const pathComponent of components) {\n if (topMostGroup && !hasChild(topMostGroup, pathComponent)) {\n topMostGroup.children.push({\n comment: pathComponent,\n value: project.pbxCreateGroup(pathComponent, '\"\"'),\n });\n }\n topMostGroup = project.pbxGroupByName(pathComponent);\n }\n return topMostGroup ?? null;\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getPbxproj(projectRoot: string): XcodeProject {\n const projectPath = Paths.getPBXProjectPath(projectRoot);\n const project = xcode.project(projectPath);\n project.parseSync();\n return project;\n}\n\n/**\n * Get the productName for a project, if the name is using a variable `$(TARGET_NAME)`, then attempt to get the value of that variable.\n *\n * @param project\n */\nexport function getProductName(project: XcodeProject): string {\n let productName = '$(TARGET_NAME)';\n try {\n // If the product name is numeric, this will fail (it's a getter).\n // If the bundle identifier' final component is only numeric values, then the PRODUCT_NAME\n // will be a numeric value, this results in a bug where the product name isn't useful,\n // i.e. `com.bacon.001` -> `1` -- in this case, use the first target name.\n productName = project.productName;\n } catch {}\n\n if (productName === '$(TARGET_NAME)') {\n const targetName = project.getFirstTarget()?.firstTarget?.productName;\n productName = targetName ?? productName;\n }\n\n return productName;\n}\n\nexport function getProjectSection(project: XcodeProject) {\n return project.pbxProjectSection();\n}\n\nexport function getXCConfigurationListEntries(project: XcodeProject): ConfigurationListEntry[] {\n const lists = project.pbxXCConfigurationList();\n return Object.entries(lists).filter(isNotComment);\n}\n\nexport function getBuildConfigurationsForListId(\n project: XcodeProject,\n configurationListId: string\n): ConfigurationSectionEntry[] {\n const configurationListEntries = getXCConfigurationListEntries(project);\n const [, configurationList] = configurationListEntries.find(\n ([key]) => key === configurationListId\n ) as ConfigurationListEntry;\n\n const buildConfigurations = configurationList.buildConfigurations.map((i) => i.value);\n\n return Object.entries(project.pbxXCBuildConfigurationSection())\n .filter(isNotComment)\n .filter(isBuildConfig)\n .filter(([key]: ConfigurationSectionEntry) => buildConfigurations.includes(key));\n}\n\nexport function getBuildConfigurationForListIdAndName(\n project: XcodeProject,\n {\n configurationListId,\n buildConfiguration,\n }: { configurationListId: string; buildConfiguration: string }\n): ConfigurationSectionEntry {\n const xcBuildConfigurationEntry = getBuildConfigurationsForListId(\n project,\n configurationListId\n ).find((i) => trimQuotes(i[1].name) === buildConfiguration);\n if (!xcBuildConfigurationEntry) {\n throw new Error(\n `Build configuration '${buildConfiguration}' does not exist in list with id '${configurationListId}'`\n );\n }\n return xcBuildConfigurationEntry;\n}\n\nexport function isBuildConfig([, sectionItem]: ConfigurationSectionEntry): boolean {\n return sectionItem.isa === 'XCBuildConfiguration';\n}\n\nexport function isNotTestHost([, sectionItem]: ConfigurationSectionEntry): boolean {\n return !sectionItem.buildSettings.TEST_HOST;\n}\n\nexport function isNotComment([key]:\n | ConfigurationSectionEntry\n | ProjectSectionEntry\n | ConfigurationListEntry\n | NativeTargetSectionEntry): boolean {\n return !key.endsWith(`_comment`);\n}\n\n// Remove surrounding double quotes if they exist.\nexport function unquote(value: string): string {\n // projects with numeric names will fail due to a bug in the xcode package.\n if (typeof value === 'number') {\n value = String(value);\n }\n return value.match(/^\"(.*)\"$/)?.[1] ?? value;\n}\n\nexport function resolveXcodeBuildSetting(\n value: string,\n lookup: (buildSetting: string) => string | undefined\n): string {\n const parsedValue = value?.replace(/\\$\\(([^()]*|\\([^)]*\\))\\)/g, (match) => {\n // Remove the `$(` and `)`, then split modifier(s) from the variable name.\n const [variable, ...transformations] = match.slice(2, -1).split(':');\n // Resolve the variable recursively.\n let lookedUp = lookup(variable);\n if (lookedUp) {\n lookedUp = resolveXcodeBuildSetting(lookedUp, lookup);\n }\n let resolved = lookedUp;\n\n // Ref: http://codeworkshop.net/posts/xcode-build-setting-transformations\n transformations.forEach((modifier) => {\n switch (modifier) {\n case 'lower':\n // A lowercase representation.\n resolved = resolved?.toLowerCase();\n break;\n case 'upper':\n // An uppercase representation.\n resolved = resolved?.toUpperCase();\n break;\n case 'suffix':\n if (resolved) {\n // The extension of a path including the '.' divider.\n resolved = path.extname(resolved);\n }\n break;\n case 'file':\n if (resolved) {\n // The file portion of a path.\n resolved = path.basename(resolved);\n }\n break;\n case 'dir':\n if (resolved) {\n // The directory portion of a path.\n resolved = path.dirname(resolved);\n }\n break;\n case 'base':\n if (resolved) {\n // The base name of a path - the last path component with any extension removed.\n const b = path.basename(resolved);\n const extensionIndex = b.lastIndexOf('.');\n resolved = extensionIndex === -1 ? b : b.slice(0, extensionIndex);\n }\n break;\n case 'rfc1034identifier':\n // A representation suitable for use in a DNS name.\n\n // TODO: Check the spec if there is one, this is just what we had before.\n resolved = resolved?.replace(/[^a-zA-Z0-9]/g, '-');\n // resolved = resolved.replace(/[\\/\\*\\s]/g, '-');\n break;\n case 'c99extidentifier':\n // Like identifier, but with support for extended characters allowed by C99. Added in Xcode 6.\n // TODO: Check the spec if there is one.\n resolved = resolved?.replace(/[-\\s]/g, '_');\n break;\n case 'standardizepath':\n if (resolved) {\n // The equivalent of calling stringByStandardizingPath on the string.\n // https://developer.apple.com/documentation/foundation/nsstring/1407194-standardizingpath\n resolved = path.resolve(resolved);\n }\n break;\n default:\n resolved ||= modifier.match(/default=(.*)/)?.[1];\n break;\n }\n });\n\n return resolveXcodeBuildSetting(resolved ?? '', lookup);\n });\n\n if (parsedValue !== value) {\n return resolveXcodeBuildSetting(parsedValue, lookup);\n }\n return value;\n}\n"],"mappings":"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"}
@@ -44,7 +44,6 @@ function getInfoPlistPathFromPbxproj(projectRootOrProject, {
44
44
  return sanitizeInfoPlistBuildProperty(xcBuildConfiguration.buildSettings.INFOPLIST_FILE);
45
45
  }
46
46
  function sanitizeInfoPlistBuildProperty(infoPlist) {
47
- var _infoPlist$replace$re;
48
- return (_infoPlist$replace$re = infoPlist === null || infoPlist === void 0 ? void 0 : infoPlist.replace(/"/g, '').replace('$(SRCROOT)', '')) !== null && _infoPlist$replace$re !== void 0 ? _infoPlist$replace$re : null;
47
+ return infoPlist?.replace(/"/g, '').replace('$(SRCROOT)', '') ?? null;
49
48
  }
50
49
  //# sourceMappingURL=getInfoPlistPath.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getInfoPlistPath.js","names":["_Xcodeproj","data","require","_Target","getInfoPlistPathFromPbxproj","projectRootOrProject","targetName","buildConfiguration","project","resolvePathOrProject","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","sanitizeInfoPlistBuildProperty","buildSettings","INFOPLIST_FILE","infoPlist","_infoPlist$replace$re","replace"],"sources":["../../../src/ios/utils/getInfoPlistPath.ts"],"sourcesContent":["import { XcodeProject } from 'xcode';\n\nimport { resolvePathOrProject } from './Xcodeproj';\nimport { getXCBuildConfigurationFromPbxproj } from '../Target';\n\n/**\n * Find the Info.plist path linked to a specific build configuration.\n *\n * @param projectRoot\n * @param param1\n * @returns\n */\nexport function getInfoPlistPathFromPbxproj(\n projectRootOrProject: string | XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string | 'Release' | 'Debug' } = {}\n): string | null {\n const project = resolvePathOrProject(projectRootOrProject);\n if (!project) {\n return null;\n }\n\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n // The `INFOPLIST_FILE` is relative to the project folder, ex: app/Info.plist.\n return sanitizeInfoPlistBuildProperty(xcBuildConfiguration.buildSettings.INFOPLIST_FILE);\n}\n\nfunction sanitizeInfoPlistBuildProperty(infoPlist?: string): string | null {\n return infoPlist?.replace(/\"/g, '').replace('$(SRCROOT)', '') ?? null;\n}\n"],"mappings":";;;;;;AAEA,SAAAA,WAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,UAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,QAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,2BAA2BA,CACzCC,oBAA2C,EAC3C;EACEC,UAAU;EACVC,kBAAkB,GAAG;AACqD,CAAC,GAAG,CAAC,CAAC,EACnE;EACf,MAAMC,OAAO,GAAG,IAAAC,iCAAoB,EAACJ,oBAAoB,CAAC;EAC1D,IAAI,CAACG,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EAEA,MAAME,oBAAoB,GAAG,IAAAC,4CAAkC,EAACH,OAAO,EAAE;IACvEF,UAAU;IACVC;EACF,CAAC,CAAC;EACF,IAAI,CAACG,oBAAoB,EAAE;IACzB,OAAO,IAAI;EACb;EACA;EACA,OAAOE,8BAA8B,CAACF,oBAAoB,CAACG,aAAa,CAACC,cAAc,CAAC;AAC1F;AAEA,SAASF,8BAA8BA,CAACG,SAAkB,EAAiB;EAAA,IAAAC,qBAAA;EACzE,QAAAA,qBAAA,GAAOD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,cAAAD,qBAAA,cAAAA,qBAAA,GAAI,IAAI;AACvE"}
1
+ {"version":3,"file":"getInfoPlistPath.js","names":["_Xcodeproj","data","require","_Target","getInfoPlistPathFromPbxproj","projectRootOrProject","targetName","buildConfiguration","project","resolvePathOrProject","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","sanitizeInfoPlistBuildProperty","buildSettings","INFOPLIST_FILE","infoPlist","replace"],"sources":["../../../src/ios/utils/getInfoPlistPath.ts"],"sourcesContent":["import { XcodeProject } from 'xcode';\n\nimport { resolvePathOrProject } from './Xcodeproj';\nimport { getXCBuildConfigurationFromPbxproj } from '../Target';\n\n/**\n * Find the Info.plist path linked to a specific build configuration.\n *\n * @param projectRoot\n * @param param1\n * @returns\n */\nexport function getInfoPlistPathFromPbxproj(\n projectRootOrProject: string | XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string | 'Release' | 'Debug' } = {}\n): string | null {\n const project = resolvePathOrProject(projectRootOrProject);\n if (!project) {\n return null;\n }\n\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n // The `INFOPLIST_FILE` is relative to the project folder, ex: app/Info.plist.\n return sanitizeInfoPlistBuildProperty(xcBuildConfiguration.buildSettings.INFOPLIST_FILE);\n}\n\nfunction sanitizeInfoPlistBuildProperty(infoPlist?: string): string | null {\n return infoPlist?.replace(/\"/g, '').replace('$(SRCROOT)', '') ?? null;\n}\n"],"mappings":";;;;;;AAEA,SAAAA,WAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,UAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,QAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,2BAA2BA,CACzCC,oBAA2C,EAC3C;EACEC,UAAU;EACVC,kBAAkB,GAAG;AACqD,CAAC,GAAG,CAAC,CAAC,EACnE;EACf,MAAMC,OAAO,GAAG,IAAAC,iCAAoB,EAACJ,oBAAoB,CAAC;EAC1D,IAAI,CAACG,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EAEA,MAAME,oBAAoB,GAAG,IAAAC,4CAAkC,EAACH,OAAO,EAAE;IACvEF,UAAU;IACVC;EACF,CAAC,CAAC;EACF,IAAI,CAACG,oBAAoB,EAAE;IACzB,OAAO,IAAI;EACb;EACA;EACA,OAAOE,8BAA8B,CAACF,oBAAoB,CAACG,aAAa,CAACC,cAAc,CAAC;AAC1F;AAEA,SAASF,8BAA8BA,CAACG,SAAkB,EAAiB;EACzE,OAAOA,SAAS,EAAEC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,IAAI;AACvE"}
@@ -34,13 +34,12 @@ function createBaseMod({
34
34
  isIntrospective
35
35
  }) {
36
36
  const withUnknown = (config, _props) => {
37
- var _props$skipEmptyMod, _props$saveToInternal;
38
37
  const props = _props || {};
39
38
  return (0, _withMod().withBaseMod)(config, {
40
39
  platform,
41
40
  mod: modName,
42
- skipEmptyMod: (_props$skipEmptyMod = props.skipEmptyMod) !== null && _props$skipEmptyMod !== void 0 ? _props$skipEmptyMod : true,
43
- saveToInternal: (_props$saveToInternal = props.saveToInternal) !== null && _props$saveToInternal !== void 0 ? _props$saveToInternal : false,
41
+ skipEmptyMod: props.skipEmptyMod ?? true,
42
+ saveToInternal: props.saveToInternal ?? false,
44
43
  isProvider: true,
45
44
  isIntrospective,
46
45
  async action({
@@ -86,7 +85,7 @@ function assertModResults(results, platformName, modName) {
86
85
  const ensuredResults = results;
87
86
 
88
87
  // Sanity check to help locate non compliant mods.
89
- if (!ensuredResults || typeof ensuredResults !== 'object' || !(ensuredResults !== null && ensuredResults !== void 0 && ensuredResults.mods)) {
88
+ if (!ensuredResults || typeof ensuredResults !== 'object' || !ensuredResults?.mods) {
90
89
  throw new Error(`Mod \`mods.${platformName}.${modName}\` evaluated to an object that is not a valid project config. Instead got: ${JSON.stringify(ensuredResults)}`);
91
90
  }
92
91
  return ensuredResults;
@@ -1 +1 @@
1
- {"version":3,"file":"createBaseMod.js","names":["_debug","data","_interopRequireDefault","require","_withMod","obj","__esModule","default","debug","Debug","createBaseMod","methodName","platform","modName","getFilePath","read","write","isIntrospective","withUnknown","config","_props","_props$skipEmptyMod","_props$saveToInternal","props","withBaseMod","mod","skipEmptyMod","saveToInternal","isProvider","action","modRequest","nextMod","results","filePath","modResults","assertModResults","error","message","Object","defineProperty","value","platformName","ensuredResults","mods","Error","JSON","stringify","upperFirst","name","charAt","toUpperCase","slice","createPlatformBaseMod","provider","withGeneratedBaseMods","providers","entries","reduce","baseMod"],"sources":["../../src/plugins/createBaseMod.ts"],"sourcesContent":["import Debug from 'debug';\n\nimport { BaseModOptions, withBaseMod } from './withMod';\nimport {\n ConfigPlugin,\n ExportedConfig,\n ExportedConfigWithProps,\n ModPlatform,\n} from '../Plugin.types';\n\nconst debug = Debug('expo:config-plugins:base-mods');\n\nexport type ForwardedBaseModOptions = Partial<\n Pick<BaseModOptions, 'saveToInternal' | 'skipEmptyMod'>\n>;\n\nexport type BaseModProviderMethods<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n> = {\n getFilePath: (config: ExportedConfigWithProps<ModType>, props: Props) => Promise<string> | string;\n read: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<ModType> | ModType;\n write: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<void> | void;\n /**\n * If the mod supports introspection, and avoids making any filesystem modifications during compilation.\n * By enabling, this mod, and all of its descendants will be run in introspection mode.\n * This should only be used for static files like JSON or XML, and not for application files that require regexes,\n * or complex static files that require other files to be generated like Xcode `.pbxproj`.\n */\n isIntrospective?: boolean;\n};\n\nexport type CreateBaseModProps<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n> = {\n methodName: string;\n platform: ModPlatform;\n modName: string;\n} & BaseModProviderMethods<ModType, Props>;\n\nexport function createBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n>({\n methodName,\n platform,\n modName,\n getFilePath,\n read,\n write,\n isIntrospective,\n}: CreateBaseModProps<ModType, Props>): ConfigPlugin<Props | void> {\n const withUnknown: ConfigPlugin<Props | void> = (config, _props) => {\n const props = _props || ({} as Props);\n return withBaseMod<ModType>(config, {\n platform,\n mod: modName,\n skipEmptyMod: props.skipEmptyMod ?? true,\n saveToInternal: props.saveToInternal ?? false,\n isProvider: true,\n isIntrospective,\n async action({ modRequest: { nextMod, ...modRequest }, ...config }) {\n try {\n let results: ExportedConfigWithProps<ModType> = {\n ...config,\n modRequest,\n };\n\n const filePath = await getFilePath(results, props);\n debug(`mods.${platform}.${modName}: file path: ${filePath || '[skipped]'}`);\n const modResults = await read(filePath, results, props);\n\n results = await nextMod!({\n ...results,\n modResults,\n modRequest,\n });\n\n assertModResults(results, modRequest.platform, modRequest.modName);\n\n await write(filePath, results, props);\n return results;\n } catch (error: any) {\n error.message = `[${platform}.${modName}]: ${methodName}: ${error.message}`;\n throw error;\n }\n },\n });\n };\n\n if (methodName) {\n Object.defineProperty(withUnknown, 'name', {\n value: methodName,\n });\n }\n\n return withUnknown;\n}\n\nexport function assertModResults(results: any, platformName: string, modName: string) {\n // If the results came from a mod, they'd be in the form of [config, data].\n // Ensure the results are an array and omit the data since it should've been written by a data provider plugin.\n const ensuredResults = results;\n\n // Sanity check to help locate non compliant mods.\n if (!ensuredResults || typeof ensuredResults !== 'object' || !ensuredResults?.mods) {\n throw new Error(\n `Mod \\`mods.${platformName}.${modName}\\` evaluated to an object that is not a valid project config. Instead got: ${JSON.stringify(\n ensuredResults\n )}`\n );\n }\n return ensuredResults;\n}\n\nfunction upperFirst(name: string): string {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n\nexport function createPlatformBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n>({ modName, ...props }: Omit<CreateBaseModProps<ModType, Props>, 'methodName'>) {\n // Generate the function name to ensure it's uniform and also to improve stack traces.\n const methodName = `with${upperFirst(props.platform)}${upperFirst(modName)}BaseMod`;\n return createBaseMod<ModType, Props>({\n methodName,\n modName,\n ...props,\n });\n}\n\n/** A TS wrapper for creating provides */\nexport function provider<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions>(\n props: BaseModProviderMethods<ModType, Props>\n) {\n return props;\n}\n\n/** Plugin to create and append base mods from file providers */\nexport function withGeneratedBaseMods<ModName extends string>(\n config: ExportedConfig,\n {\n platform,\n providers,\n ...props\n }: ForwardedBaseModOptions & {\n /** Officially supports `'ios' | 'android'` (`ModPlatform`). Arbitrary strings are supported for adding out-of-tree platforms. */\n platform: ModPlatform & string;\n providers: Partial<Record<ModName, BaseModProviderMethods<any, any>>>;\n }\n): ExportedConfig {\n return Object.entries(providers).reduce((config, [modName, value]) => {\n const baseMod = createPlatformBaseMod({ platform, modName, ...(value as any) });\n return baseMod(config, props);\n }, config);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"createBaseMod.js","names":["_debug","data","_interopRequireDefault","require","_withMod","obj","__esModule","default","debug","Debug","createBaseMod","methodName","platform","modName","getFilePath","read","write","isIntrospective","withUnknown","config","_props","props","withBaseMod","mod","skipEmptyMod","saveToInternal","isProvider","action","modRequest","nextMod","results","filePath","modResults","assertModResults","error","message","Object","defineProperty","value","platformName","ensuredResults","mods","Error","JSON","stringify","upperFirst","name","charAt","toUpperCase","slice","createPlatformBaseMod","provider","withGeneratedBaseMods","providers","entries","reduce","baseMod"],"sources":["../../src/plugins/createBaseMod.ts"],"sourcesContent":["import Debug from 'debug';\n\nimport { BaseModOptions, withBaseMod } from './withMod';\nimport {\n ConfigPlugin,\n ExportedConfig,\n ExportedConfigWithProps,\n ModPlatform,\n} from '../Plugin.types';\n\nconst debug = Debug('expo:config-plugins:base-mods');\n\nexport type ForwardedBaseModOptions = Partial<\n Pick<BaseModOptions, 'saveToInternal' | 'skipEmptyMod'>\n>;\n\nexport type BaseModProviderMethods<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n> = {\n getFilePath: (config: ExportedConfigWithProps<ModType>, props: Props) => Promise<string> | string;\n read: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<ModType> | ModType;\n write: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<void> | void;\n /**\n * If the mod supports introspection, and avoids making any filesystem modifications during compilation.\n * By enabling, this mod, and all of its descendants will be run in introspection mode.\n * This should only be used for static files like JSON or XML, and not for application files that require regexes,\n * or complex static files that require other files to be generated like Xcode `.pbxproj`.\n */\n isIntrospective?: boolean;\n};\n\nexport type CreateBaseModProps<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n> = {\n methodName: string;\n platform: ModPlatform;\n modName: string;\n} & BaseModProviderMethods<ModType, Props>;\n\nexport function createBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n>({\n methodName,\n platform,\n modName,\n getFilePath,\n read,\n write,\n isIntrospective,\n}: CreateBaseModProps<ModType, Props>): ConfigPlugin<Props | void> {\n const withUnknown: ConfigPlugin<Props | void> = (config, _props) => {\n const props = _props || ({} as Props);\n return withBaseMod<ModType>(config, {\n platform,\n mod: modName,\n skipEmptyMod: props.skipEmptyMod ?? true,\n saveToInternal: props.saveToInternal ?? false,\n isProvider: true,\n isIntrospective,\n async action({ modRequest: { nextMod, ...modRequest }, ...config }) {\n try {\n let results: ExportedConfigWithProps<ModType> = {\n ...config,\n modRequest,\n };\n\n const filePath = await getFilePath(results, props);\n debug(`mods.${platform}.${modName}: file path: ${filePath || '[skipped]'}`);\n const modResults = await read(filePath, results, props);\n\n results = await nextMod!({\n ...results,\n modResults,\n modRequest,\n });\n\n assertModResults(results, modRequest.platform, modRequest.modName);\n\n await write(filePath, results, props);\n return results;\n } catch (error: any) {\n error.message = `[${platform}.${modName}]: ${methodName}: ${error.message}`;\n throw error;\n }\n },\n });\n };\n\n if (methodName) {\n Object.defineProperty(withUnknown, 'name', {\n value: methodName,\n });\n }\n\n return withUnknown;\n}\n\nexport function assertModResults(results: any, platformName: string, modName: string) {\n // If the results came from a mod, they'd be in the form of [config, data].\n // Ensure the results are an array and omit the data since it should've been written by a data provider plugin.\n const ensuredResults = results;\n\n // Sanity check to help locate non compliant mods.\n if (!ensuredResults || typeof ensuredResults !== 'object' || !ensuredResults?.mods) {\n throw new Error(\n `Mod \\`mods.${platformName}.${modName}\\` evaluated to an object that is not a valid project config. Instead got: ${JSON.stringify(\n ensuredResults\n )}`\n );\n }\n return ensuredResults;\n}\n\nfunction upperFirst(name: string): string {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n\nexport function createPlatformBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions,\n>({ modName, ...props }: Omit<CreateBaseModProps<ModType, Props>, 'methodName'>) {\n // Generate the function name to ensure it's uniform and also to improve stack traces.\n const methodName = `with${upperFirst(props.platform)}${upperFirst(modName)}BaseMod`;\n return createBaseMod<ModType, Props>({\n methodName,\n modName,\n ...props,\n });\n}\n\n/** A TS wrapper for creating provides */\nexport function provider<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions>(\n props: BaseModProviderMethods<ModType, Props>\n) {\n return props;\n}\n\n/** Plugin to create and append base mods from file providers */\nexport function withGeneratedBaseMods<ModName extends string>(\n config: ExportedConfig,\n {\n platform,\n providers,\n ...props\n }: ForwardedBaseModOptions & {\n /** Officially supports `'ios' | 'android'` (`ModPlatform`). Arbitrary strings are supported for adding out-of-tree platforms. */\n platform: ModPlatform & string;\n providers: Partial<Record<ModName, BaseModProviderMethods<any, any>>>;\n }\n): ExportedConfig {\n return Object.entries(providers).reduce((config, [modName, value]) => {\n const baseMod = createPlatformBaseMod({ platform, modName, ...(value as any) });\n return baseMod(config, props);\n }, config);\n}\n"],"mappings":"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"}
@@ -47,10 +47,9 @@ function createInfoPlistPlugin(action, name) {
47
47
  }
48
48
  function createInfoPlistPluginWithPropertyGuard(action, settings, name) {
49
49
  const withUnknown = config => withInfoPlist(config, async config => {
50
- var _config$modRawConfig$, _config$modRawConfig$2;
51
50
  const existingProperty = settings.expoPropertyGetter ? settings.expoPropertyGetter(config) : (0, _obj().get)(config, settings.expoConfigProperty);
52
51
  // If the user explicitly sets a value in the infoPlist, we should respect that.
53
- 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) {
52
+ if (config.modRawConfig.ios?.infoPlist?.[settings.infoPlistProperty] === undefined) {
54
53
  config.modResults = await action(config, config.modResults);
55
54
  } else if (existingProperty !== undefined) {
56
55
  // Only warn if there is a conflict.
@@ -1 +1 @@
1
- {"version":3,"file":"ios-plugins.js","names":["_withMod","data","require","_obj","_warnings","createInfoPlistPlugin","action","name","withUnknown","config","withInfoPlist","modResults","Object","defineProperty","value","createInfoPlistPluginWithPropertyGuard","settings","_config$modRawConfig$","_config$modRawConfig$2","existingProperty","expoPropertyGetter","get","expoConfigProperty","modRawConfig","ios","infoPlist","infoPlistProperty","undefined","addWarningIOS","createEntitlementsPlugin","withEntitlementsPlist","withAppDelegate","withMod","platform","mod","exports","entitlements","withExpoPlist","withXcodeProject","withPodfileProperties"],"sources":["../../src/plugins/ios-plugins.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\nimport type { JSONObject } from '@expo/json-file';\nimport type { XcodeProject } from 'xcode';\n\nimport { withMod } from './withMod';\nimport type { ConfigPlugin, Mod } from '../Plugin.types';\nimport type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';\nimport type { AppDelegateProjectFile } from '../ios/Paths';\nimport { get } from '../utils/obj';\nimport { addWarningIOS } from '../utils/warnings';\n\ntype MutateInfoPlistAction = (\n expo: ExpoConfig,\n infoPlist: InfoPlist\n) => Promise<InfoPlist> | InfoPlist;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createInfoPlistPluginWithPropertyGuard(\n action: MutateInfoPlistAction,\n settings: {\n infoPlistProperty: string;\n expoConfigProperty: string;\n expoPropertyGetter?: (config: ExpoConfig) => string;\n },\n name?: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n const existingProperty = settings.expoPropertyGetter\n ? settings.expoPropertyGetter(config)\n : get(config, settings.expoConfigProperty);\n // If the user explicitly sets a value in the infoPlist, we should respect that.\n if (config.modRawConfig.ios?.infoPlist?.[settings.infoPlistProperty] === undefined) {\n config.modResults = await action(config, config.modResults);\n } else if (existingProperty !== undefined) {\n // Only warn if there is a conflict.\n addWarningIOS(\n settings.expoConfigProperty,\n `\"ios.infoPlist.${settings.infoPlistProperty}\" is set in the config. Ignoring abstract property \"${settings.expoConfigProperty}\": ${existingProperty}`\n );\n }\n\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\ntype MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createEntitlementsPlugin(\n action: MutateEntitlementsPlistAction,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withEntitlementsPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AppDelegate file for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppDelegate: ConfigPlugin<Mod<AppDelegateProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'appDelegate',\n action,\n });\n};\n\n/**\n * Provides the Info.plist file for modification.\n * Keeps the config's expo.ios.infoPlist object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withInfoPlist: ConfigPlugin<Mod<InfoPlist>> = (config, action) => {\n return withMod<InfoPlist>(config, {\n platform: 'ios',\n mod: 'infoPlist',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the main .entitlements file for modification.\n * Keeps the config's expo.ios.entitlements object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withEntitlementsPlist: ConfigPlugin<Mod<JSONObject>> = (config, action) => {\n return withMod<JSONObject>(config, {\n platform: 'ios',\n mod: 'entitlements',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the Expo.plist for modification.\n *\n * @param config\n * @param action\n */\nexport const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'expoPlist',\n action,\n });\n};\n\n/**\n * Provides the main .xcodeproj for modification.\n *\n * @param config\n * @param action\n */\nexport const withXcodeProject: ConfigPlugin<Mod<XcodeProject>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'xcodeproj',\n action,\n });\n};\n\n/**\n * Provides the Podfile.properties.json for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfileProperties: ConfigPlugin<Mod<Record<string, string>>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfileProperties',\n action,\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ios-plugins.js","names":["_withMod","data","require","_obj","_warnings","createInfoPlistPlugin","action","name","withUnknown","config","withInfoPlist","modResults","Object","defineProperty","value","createInfoPlistPluginWithPropertyGuard","settings","existingProperty","expoPropertyGetter","get","expoConfigProperty","modRawConfig","ios","infoPlist","infoPlistProperty","undefined","addWarningIOS","createEntitlementsPlugin","withEntitlementsPlist","withAppDelegate","withMod","platform","mod","exports","entitlements","withExpoPlist","withXcodeProject","withPodfileProperties"],"sources":["../../src/plugins/ios-plugins.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\nimport type { JSONObject } from '@expo/json-file';\nimport type { XcodeProject } from 'xcode';\n\nimport { withMod } from './withMod';\nimport type { ConfigPlugin, Mod } from '../Plugin.types';\nimport type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';\nimport type { AppDelegateProjectFile } from '../ios/Paths';\nimport { get } from '../utils/obj';\nimport { addWarningIOS } from '../utils/warnings';\n\ntype MutateInfoPlistAction = (\n expo: ExpoConfig,\n infoPlist: InfoPlist\n) => Promise<InfoPlist> | InfoPlist;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createInfoPlistPluginWithPropertyGuard(\n action: MutateInfoPlistAction,\n settings: {\n infoPlistProperty: string;\n expoConfigProperty: string;\n expoPropertyGetter?: (config: ExpoConfig) => string;\n },\n name?: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n const existingProperty = settings.expoPropertyGetter\n ? settings.expoPropertyGetter(config)\n : get(config, settings.expoConfigProperty);\n // If the user explicitly sets a value in the infoPlist, we should respect that.\n if (config.modRawConfig.ios?.infoPlist?.[settings.infoPlistProperty] === undefined) {\n config.modResults = await action(config, config.modResults);\n } else if (existingProperty !== undefined) {\n // Only warn if there is a conflict.\n addWarningIOS(\n settings.expoConfigProperty,\n `\"ios.infoPlist.${settings.infoPlistProperty}\" is set in the config. Ignoring abstract property \"${settings.expoConfigProperty}\": ${existingProperty}`\n );\n }\n\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\ntype MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createEntitlementsPlugin(\n action: MutateEntitlementsPlistAction,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withEntitlementsPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AppDelegate file for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppDelegate: ConfigPlugin<Mod<AppDelegateProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'appDelegate',\n action,\n });\n};\n\n/**\n * Provides the Info.plist file for modification.\n * Keeps the config's expo.ios.infoPlist object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withInfoPlist: ConfigPlugin<Mod<InfoPlist>> = (config, action) => {\n return withMod<InfoPlist>(config, {\n platform: 'ios',\n mod: 'infoPlist',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the main .entitlements file for modification.\n * Keeps the config's expo.ios.entitlements object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withEntitlementsPlist: ConfigPlugin<Mod<JSONObject>> = (config, action) => {\n return withMod<JSONObject>(config, {\n platform: 'ios',\n mod: 'entitlements',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the Expo.plist for modification.\n *\n * @param config\n * @param action\n */\nexport const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'expoPlist',\n action,\n });\n};\n\n/**\n * Provides the main .xcodeproj for modification.\n *\n * @param config\n * @param action\n */\nexport const withXcodeProject: ConfigPlugin<Mod<XcodeProject>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'xcodeproj',\n action,\n });\n};\n\n/**\n * Provides the Podfile.properties.json for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfileProperties: ConfigPlugin<Mod<Record<string, string>>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfileProperties',\n action,\n });\n};\n"],"mappings":"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"}
@@ -64,8 +64,8 @@ function Warnings() {
64
64
  };
65
65
  return data;
66
66
  }
67
- function _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); }
68
- function _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; }
67
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
68
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
69
69
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
70
70
  const debug = (0, _debug().default)('expo:config-plugins:mod-compiler');
71
71
  function withDefaultBaseMods(config, props = {}) {
@@ -97,13 +97,11 @@ function withIntrospectionBaseMods(config, props = {}) {
97
97
  for (const platform of Object.keys(config.mods)) {
98
98
  // const platformPreserve = preserve[platform];
99
99
  for (const key of Object.keys(config.mods[platform] || {})) {
100
- var _config$mods$platform, _config$mods$platform2;
101
100
  // @ts-ignore
102
- if (!((_config$mods$platform = config.mods[platform]) !== null && _config$mods$platform !== void 0 && (_config$mods$platform2 = _config$mods$platform[key]) !== null && _config$mods$platform2 !== void 0 && _config$mods$platform2.isIntrospective)) {
103
- var _config$mods$platform3;
101
+ if (!config.mods[platform]?.[key]?.isIntrospective) {
104
102
  debug(`removing non-idempotent mod: ${platform}.${key}`);
105
103
  // @ts-ignore
106
- (_config$mods$platform3 = config.mods[platform]) === null || _config$mods$platform3 === void 0 ? true : delete _config$mods$platform3[key];
104
+ delete config.mods[platform]?.[key];
107
105
  }
108
106
  }
109
107
  }
@@ -168,18 +166,16 @@ async function evalModsAsync(config, {
168
166
  ignoreExistingNativeFiles = false
169
167
  }) {
170
168
  const modRawConfig = getRawClone(config);
171
- for (const [platformName, platform] of Object.entries((_config$mods = config.mods) !== null && _config$mods !== void 0 ? _config$mods : {})) {
172
- var _config$mods;
169
+ for (const [platformName, platform] of Object.entries(config.mods ?? {})) {
173
170
  if (platforms && !platforms.includes(platformName)) {
174
171
  debug(`skip platform: ${platformName}`);
175
172
  continue;
176
173
  }
177
174
  let entries = Object.entries(platform);
178
175
  if (entries.length) {
179
- var _precedences$platform;
180
176
  // Move dangerous item to the first position and finalized item to the last position if it exists.
181
177
  // This ensures that all dangerous code runs first and finalized applies last.
182
- entries = sortMods(entries, (_precedences$platform = precedences[platformName]) !== null && _precedences$platform !== void 0 ? _precedences$platform : {
178
+ entries = sortMods(entries, precedences[platformName] ?? {
183
179
  dangerous: -1,
184
180
  finalized: 1
185
181
  });