@expo/config-plugins 4.0.3 → 4.0.8

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 (109) hide show
  1. package/README.md +14 -0
  2. package/build/Plugin.types.js +6 -6
  3. package/build/android/AllowBackup.js +1 -1
  4. package/build/android/Colors.js +3 -3
  5. package/build/android/EasBuild.js +1 -1
  6. package/build/android/GoogleServices.js +3 -3
  7. package/build/android/IntentFilters.js +1 -1
  8. package/build/android/JsEngine.js +2 -1
  9. package/build/android/JsEngine.js.map +1 -1
  10. package/build/android/Manifest.js +10 -10
  11. package/build/android/Name.d.ts +2 -1
  12. package/build/android/Name.js +7 -4
  13. package/build/android/Name.js.map +1 -1
  14. package/build/android/Orientation.js +2 -1
  15. package/build/android/Orientation.js.map +1 -1
  16. package/build/android/Package.js +4 -4
  17. package/build/android/Package.js.map +1 -1
  18. package/build/android/Paths.js +9 -9
  19. package/build/android/Permissions.js +6 -6
  20. package/build/android/Resources.js +5 -5
  21. package/build/android/Scheme.js +3 -3
  22. package/build/android/StatusBar.js +3 -3
  23. package/build/android/Strings.js +1 -1
  24. package/build/android/Styles.js +5 -5
  25. package/build/android/Updates.d.ts +0 -5
  26. package/build/android/Updates.js +14 -23
  27. package/build/android/Updates.js.map +1 -1
  28. package/build/android/Version.js +2 -2
  29. package/build/android/WindowSoftInputMode.js +1 -1
  30. package/build/android/codeMod.js +2 -2
  31. package/build/android/index.d.ts +1 -4
  32. package/build/android/index.js +1 -52
  33. package/build/android/index.js.map +1 -1
  34. package/build/index.js +54 -53
  35. package/build/index.js.map +1 -1
  36. package/build/ios/Bitcode.d.ts +33 -0
  37. package/build/ios/Bitcode.js +131 -0
  38. package/build/ios/Bitcode.js.map +1 -0
  39. package/build/ios/BuildScheme.js +2 -2
  40. package/build/ios/BundleIdentifier.js +3 -3
  41. package/build/ios/DeviceFamily.js +3 -3
  42. package/build/ios/Entitlements.js +2 -2
  43. package/build/ios/Entitlements.js.map +1 -1
  44. package/build/ios/Google.js +2 -2
  45. package/build/ios/JsEngine.js +2 -1
  46. package/build/ios/JsEngine.js.map +1 -1
  47. package/build/ios/Locales.js +1 -1
  48. package/build/ios/Maps.js +32 -18
  49. package/build/ios/Maps.js.map +1 -1
  50. package/build/ios/Orientation.js +2 -1
  51. package/build/ios/Orientation.js.map +1 -1
  52. package/build/ios/Paths.js +14 -14
  53. package/build/ios/Paths.js.map +1 -1
  54. package/build/ios/Permissions.js +1 -1
  55. package/build/ios/Permissions.js.map +1 -1
  56. package/build/ios/Scheme.js +4 -4
  57. package/build/ios/Swift.js +2 -2
  58. package/build/ios/Target.js +5 -5
  59. package/build/ios/Updates.d.ts +0 -5
  60. package/build/ios/Updates.js +14 -23
  61. package/build/ios/Updates.js.map +1 -1
  62. package/build/ios/Version.js +3 -3
  63. package/build/ios/codeMod.js +2 -2
  64. package/build/ios/index.d.ts +2 -3
  65. package/build/ios/index.js +20 -35
  66. package/build/ios/index.js.map +1 -1
  67. package/build/ios/utils/Xcodeproj.js +9 -9
  68. package/build/plugins/android-plugins.js +1 -1
  69. package/build/plugins/createBaseMod.js +2 -2
  70. package/build/plugins/createBaseMod.js.map +1 -1
  71. package/build/plugins/ios-plugins.js +2 -2
  72. package/build/plugins/mod-compiler.js +3 -3
  73. package/build/plugins/mod-compiler.js.map +1 -1
  74. package/build/plugins/withAndroidBaseMods.js +1 -1
  75. package/build/plugins/withIosBaseMods.js +1 -1
  76. package/build/plugins/withStaticPlugin.js +16 -5
  77. package/build/plugins/withStaticPlugin.js.map +1 -1
  78. package/build/utils/Updates.d.ts +1 -0
  79. package/build/utils/Updates.js +24 -1
  80. package/build/utils/Updates.js.map +1 -1
  81. package/build/utils/XML.d.ts +6 -0
  82. package/build/utils/XML.js +57 -10
  83. package/build/utils/XML.js.map +1 -1
  84. package/build/utils/errors.js +1 -1
  85. package/build/utils/generateCode.js +2 -2
  86. package/build/utils/history.js +1 -1
  87. package/build/utils/modules.js +1 -1
  88. package/build/utils/plugin-resolver.js +4 -4
  89. package/build/utils/sortObject.js +2 -2
  90. package/build/utils/warnings.js +1 -1
  91. package/package.json +4 -4
  92. package/build/android/NavigationBar.d.ts +0 -9
  93. package/build/android/NavigationBar.js +0 -141
  94. package/build/android/NavigationBar.js.map +0 -1
  95. package/build/android/RootViewBackgroundColor.d.ts +0 -6
  96. package/build/android/RootViewBackgroundColor.js +0 -81
  97. package/build/android/RootViewBackgroundColor.js.map +0 -1
  98. package/build/android/UserInterfaceStyle.d.ts +0 -10
  99. package/build/android/UserInterfaceStyle.js +0 -119
  100. package/build/android/UserInterfaceStyle.js.map +0 -1
  101. package/build/ios/RootViewBackgroundColor.d.ts +0 -6
  102. package/build/ios/RootViewBackgroundColor.js +0 -70
  103. package/build/ios/RootViewBackgroundColor.js.map +0 -1
  104. package/build/ios/UserInterfaceStyle.d.ts +0 -5
  105. package/build/ios/UserInterfaceStyle.js +0 -59
  106. package/build/ios/UserInterfaceStyle.js.map +0 -1
  107. package/build/utils/resolvePackageRootFolder.d.ts +0 -1
  108. package/build/utils/resolvePackageRootFolder.js +0 -57
  109. package/build/utils/resolvePackageRootFolder.js.map +0 -1
@@ -3,20 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getRuntimeVersionNullable = getRuntimeVersionNullable;
6
+ exports.Config = void 0;
7
+ exports.ensureBundleReactNativePhaseContainsConfigurationScript = ensureBundleReactNativePhaseContainsConfigurationScript;
8
+ exports.getBundleReactNativePhase = getBundleReactNativePhase;
7
9
  exports.getSDKVersion = getSDKVersion;
10
+ exports.getUpdatesCheckOnLaunch = getUpdatesCheckOnLaunch;
8
11
  exports.getUpdatesEnabled = getUpdatesEnabled;
9
12
  exports.getUpdatesTimeout = getUpdatesTimeout;
10
- exports.getUpdatesCheckOnLaunch = getUpdatesCheckOnLaunch;
11
- exports.setUpdatesConfig = setUpdatesConfig;
12
- exports.setVersionsConfig = setVersionsConfig;
13
- exports.getBundleReactNativePhase = getBundleReactNativePhase;
14
- exports.ensureBundleReactNativePhaseContainsConfigurationScript = ensureBundleReactNativePhaseContainsConfigurationScript;
15
- exports.isShellScriptBuildPhaseConfigured = isShellScriptBuildPhaseConfigured;
16
13
  exports.isPlistConfigurationSet = isPlistConfigurationSet;
17
14
  exports.isPlistConfigurationSynced = isPlistConfigurationSynced;
18
15
  exports.isPlistVersionConfigurationSynced = isPlistVersionConfigurationSynced;
19
- exports.withUpdates = exports.Config = void 0;
16
+ exports.isShellScriptBuildPhaseConfigured = isShellScriptBuildPhaseConfigured;
17
+ exports.setUpdatesConfig = setUpdatesConfig;
18
+ exports.setVersionsConfig = setVersionsConfig;
19
+ exports.withUpdates = void 0;
20
20
 
21
21
  function path() {
22
22
  const data = _interopRequireWildcard(require("path"));
@@ -66,11 +66,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
66
66
 
67
67
  const CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';
68
68
  let Config;
69
- /**
70
- * runtime version maybe null in projects using classic updates. In that
71
- * case we use SDK version
72
- */
73
-
74
69
  exports.Config = Config;
75
70
 
76
71
  (function (Config) {
@@ -84,14 +79,6 @@ exports.Config = Config;
84
79
  Config["UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY"] = "EXUpdatesRequestHeaders";
85
80
  })(Config || (exports.Config = Config = {}));
86
81
 
87
- function getRuntimeVersionNullable(config) {
88
- try {
89
- return (0, _Updates().getRuntimeVersion)(config, 'ios');
90
- } catch (e) {
91
- return null;
92
- }
93
- }
94
-
95
82
  function getSDKVersion(config) {
96
83
  return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;
97
84
  }
@@ -151,13 +138,17 @@ function setUpdatesConfig(config, expoPlist, username) {
151
138
  function setVersionsConfig(config, expoPlist) {
152
139
  const newExpoPlist = { ...expoPlist
153
140
  };
154
- const runtimeVersion = getRuntimeVersionNullable(config);
141
+ const runtimeVersion = (0, _Updates().getRuntimeVersionNullable)(config, 'ios');
155
142
  const sdkVersion = getSDKVersion(config);
156
143
 
157
144
  if (runtimeVersion) {
158
145
  delete newExpoPlist[Config.SDK_VERSION];
159
146
  newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;
160
147
  } else if (sdkVersion) {
148
+ /**
149
+ * runtime version maybe null in projects using classic updates. In that
150
+ * case we use SDK version
151
+ */
161
152
  delete newExpoPlist[Config.RUNTIME_VERSION];
162
153
  newExpoPlist[Config.SDK_VERSION] = sdkVersion;
163
154
  } else {
@@ -224,7 +215,7 @@ function isPlistConfigurationSynced(config, expoPlist, username) {
224
215
  function isPlistVersionConfigurationSynced(config, expoPlist) {
225
216
  var _expoPlist$EXUpdatesR, _expoPlist$EXUpdatesS;
226
217
 
227
- const expectedRuntimeVersion = getRuntimeVersionNullable(config);
218
+ const expectedRuntimeVersion = (0, _Updates().getRuntimeVersionNullable)(config, 'ios');
228
219
  const expectedSdkVersion = getSDKVersion(config);
229
220
  const currentRuntimeVersion = (_expoPlist$EXUpdatesR = expoPlist.EXUpdatesRuntimeVersion) !== null && _expoPlist$EXUpdatesR !== void 0 ? _expoPlist$EXUpdatesR : null;
230
221
  const currentSdkVersion = (_expoPlist$EXUpdatesS = expoPlist.EXUpdatesSDKVersion) !== null && _expoPlist$EXUpdatesS !== void 0 ? _expoPlist$EXUpdatesS : null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ios/Updates.ts"],"names":["CREATE_MANIFEST_IOS_PATH","Config","getRuntimeVersionNullable","config","e","getSDKVersion","sdkVersion","getUpdatesEnabled","updates","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","checkAutomatically","withUpdates","expoUsername","modResults","setUpdatesConfig","expoPlist","username","newExpoPlist","ENABLED","CHECK_ON_LAUNCH","LAUNCH_WAIT_MS","updateUrl","UPDATE_URL","setVersionsConfig","runtimeVersion","SDK_VERSION","RUNTIME_VERSION","formatConfigurationScriptPath","projectRoot","buildScriptPath","resolveFrom","silent","Error","relativePath","path","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","Object","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSynced","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","isPlistVersionConfigurationSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport xcode from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport { ExpoConfigUpdates, getRuntimeVersion, getUpdateUrl } from '../utils/Updates';\nimport { ExpoPlist } from './IosConfig.types';\n\nconst CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n SDK_VERSION = 'EXUpdatesSDKVersion',\n UPDATE_URL = 'EXUpdatesURL',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n}\n\n/**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\nexport function getRuntimeVersionNullable(\n config: Pick<ExpoConfigUpdates, 'runtimeVersion'>\n): string | null {\n try {\n return getRuntimeVersion(config, 'ios');\n } catch (e) {\n return null;\n }\n}\n\nexport function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null {\n return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;\n}\n\nexport function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean {\n return config.updates?.enabled !== false;\n}\n\nexport function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>) {\n return config.updates?.fallbackToCacheTimeout ?? 0;\n}\n\nexport function getUpdatesCheckOnLaunch(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): 'NEVER' | 'ALWAYS' {\n if (config.updates?.checkAutomatically === 'ON_ERROR_RECOVERY') {\n return 'NEVER';\n } else if (config.updates?.checkAutomatically === 'ON_LOAD') {\n return 'ALWAYS';\n }\n return 'ALWAYS';\n}\n\nexport const withUpdates: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withExpoPlist(config, config => {\n config.modResults = setUpdatesConfig(config, config.modResults, expoUsername);\n return config;\n });\n};\n\nexport function setUpdatesConfig(\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null\n): ExpoPlist {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config, username);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n return setVersionsConfig(config, newExpoPlist);\n}\n\nexport function setVersionsConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist): ExpoPlist {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = getRuntimeVersionNullable(config);\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n buildPhase => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport function isPlistConfigurationSynced(\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null\n): boolean {\n return (\n getUpdateUrl(config, username) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\n isPlistVersionConfigurationSynced(config, expoPlist)\n );\n}\n\nexport function isPlistVersionConfigurationSynced(\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n expoPlist: ExpoPlist\n): boolean {\n const expectedRuntimeVersion = getRuntimeVersionNullable(config);\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = expoPlist.EXUpdatesRuntimeVersion ?? null;\n const currentSdkVersion = expoPlist.EXUpdatesSDKVersion ?? null;\n\n if (expectedRuntimeVersion !== null) {\n return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;\n } else if (expectedSdkVersion !== null) {\n return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;\n } else {\n return true;\n }\n}\n"],"file":"Updates.js"}
1
+ {"version":3,"sources":["../../src/ios/Updates.ts"],"names":["CREATE_MANIFEST_IOS_PATH","Config","getSDKVersion","config","sdkVersion","getUpdatesEnabled","updates","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","checkAutomatically","withUpdates","expoUsername","modResults","setUpdatesConfig","expoPlist","username","newExpoPlist","ENABLED","CHECK_ON_LAUNCH","LAUNCH_WAIT_MS","updateUrl","UPDATE_URL","setVersionsConfig","runtimeVersion","SDK_VERSION","RUNTIME_VERSION","formatConfigurationScriptPath","projectRoot","buildScriptPath","resolveFrom","silent","Error","relativePath","path","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","Object","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSynced","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","isPlistVersionConfigurationSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport xcode from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport { ExpoConfigUpdates, getRuntimeVersionNullable, getUpdateUrl } from '../utils/Updates';\nimport { ExpoPlist } from './IosConfig.types';\n\nconst CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n SDK_VERSION = 'EXUpdatesSDKVersion',\n UPDATE_URL = 'EXUpdatesURL',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n}\n\nexport function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null {\n return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;\n}\n\nexport function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean {\n return config.updates?.enabled !== false;\n}\n\nexport function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>) {\n return config.updates?.fallbackToCacheTimeout ?? 0;\n}\n\nexport function getUpdatesCheckOnLaunch(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): 'NEVER' | 'ALWAYS' {\n if (config.updates?.checkAutomatically === 'ON_ERROR_RECOVERY') {\n return 'NEVER';\n } else if (config.updates?.checkAutomatically === 'ON_LOAD') {\n return 'ALWAYS';\n }\n return 'ALWAYS';\n}\n\nexport const withUpdates: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withExpoPlist(config, config => {\n config.modResults = setUpdatesConfig(config, config.modResults, expoUsername);\n return config;\n });\n};\n\nexport function setUpdatesConfig(\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null\n): ExpoPlist {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config, username);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n return setVersionsConfig(config, newExpoPlist);\n}\n\nexport function setVersionsConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist): ExpoPlist {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = getRuntimeVersionNullable(config, 'ios');\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n /**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n buildPhase => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport function isPlistConfigurationSynced(\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null\n): boolean {\n return (\n getUpdateUrl(config, username) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\n isPlistVersionConfigurationSynced(config, expoPlist)\n );\n}\n\nexport function isPlistVersionConfigurationSynced(\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n expoPlist: ExpoPlist\n): boolean {\n const expectedRuntimeVersion = getRuntimeVersionNullable(config, 'ios');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = expoPlist.EXUpdatesRuntimeVersion ?? null;\n const currentSdkVersion = expoPlist.EXUpdatesSDKVersion ?? null;\n\n if (expectedRuntimeVersion !== null) {\n return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;\n } else if (expectedSdkVersion !== null) {\n return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;\n } else {\n return true;\n }\n}\n"],"file":"Updates.js"}
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getVersion = getVersion;
7
- exports.setVersion = setVersion;
8
6
  exports.getBuildNumber = getBuildNumber;
7
+ exports.getVersion = getVersion;
9
8
  exports.setBuildNumber = setBuildNumber;
10
- exports.withBuildNumber = exports.withVersion = void 0;
9
+ exports.setVersion = setVersion;
10
+ exports.withVersion = exports.withBuildNumber = void 0;
11
11
 
12
12
  function _iosPlugins() {
13
13
  const data = require("../plugins/ios-plugins");
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.addObjcImports = addObjcImports;
7
- exports.findObjcInterfaceCodeBlock = findObjcInterfaceCodeBlock;
8
7
  exports.findObjcFunctionCodeBlock = findObjcFunctionCodeBlock;
8
+ exports.findObjcInterfaceCodeBlock = findObjcInterfaceCodeBlock;
9
+ exports.findSwiftFunctionCodeBlock = findSwiftFunctionCodeBlock;
9
10
  exports.insertContentsInsideObjcFunctionBlock = insertContentsInsideObjcFunctionBlock;
10
11
  exports.insertContentsInsideObjcInterfaceBlock = insertContentsInsideObjcInterfaceBlock;
11
- exports.findSwiftFunctionCodeBlock = findSwiftFunctionCodeBlock;
12
12
  exports.insertContentsInsideSwiftClassBlock = insertContentsInsideSwiftClassBlock;
13
13
  exports.insertContentsInsideSwiftFunctionBlock = insertContentsInsideSwiftFunctionBlock;
14
14
 
@@ -1,3 +1,4 @@
1
+ import * as Bitcode from './Bitcode';
1
2
  import * as BuildScheme from './BuildScheme';
2
3
  import * as BundleIdentifier from './BundleIdentifier';
3
4
  import * as DeviceFamily from './DeviceFamily';
@@ -13,15 +14,13 @@ import * as Paths from './Paths';
13
14
  import * as Permissions from './Permissions';
14
15
  import * as ProvisioningProfile from './ProvisioningProfile';
15
16
  import * as RequiresFullScreen from './RequiresFullScreen';
16
- import * as RootViewBackgroundColor from './RootViewBackgroundColor';
17
17
  import * as Scheme from './Scheme';
18
18
  import * as Swift from './Swift';
19
19
  import * as Target from './Target';
20
20
  import * as Updates from './Updates';
21
- import * as UserInterfaceStyle from './UserInterfaceStyle';
22
21
  import * as UsesNonExemptEncryption from './UsesNonExemptEncryption';
23
22
  import * as Version from './Version';
24
23
  import * as XcodeProjectFile from './XcodeProjectFile';
25
24
  import * as XcodeUtils from './utils/Xcodeproj';
26
25
  export { InfoPlist, ExpoPlist, Entitlements, Paths, Permissions, XcodeUtils };
27
- export { BundleIdentifier, BuildScheme, DeviceFamily, Google, Maps, Locales, JsEngine, Name, Orientation, ProvisioningProfile, RequiresFullScreen, RootViewBackgroundColor, Scheme, Swift, Target, Updates, UserInterfaceStyle, UsesNonExemptEncryption, Version, XcodeProjectFile, };
26
+ export { Bitcode, BundleIdentifier, BuildScheme, DeviceFamily, Google, Maps, Locales, JsEngine, Name, Orientation, ProvisioningProfile, RequiresFullScreen, Scheme, Swift, Target, Updates, UsesNonExemptEncryption, Version, XcodeProjectFile, };
@@ -3,19 +3,38 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.Entitlements = exports.DeviceFamily = exports.BundleIdentifier = exports.BuildScheme = exports.Bitcode = void 0;
6
7
  Object.defineProperty(exports, "ExpoPlist", {
7
8
  enumerable: true,
8
9
  get: function () {
9
10
  return _IosConfig().ExpoPlist;
10
11
  }
11
12
  });
13
+ exports.Google = void 0;
12
14
  Object.defineProperty(exports, "InfoPlist", {
13
15
  enumerable: true,
14
16
  get: function () {
15
17
  return _IosConfig().InfoPlist;
16
18
  }
17
19
  });
18
- exports.XcodeUtils = exports.XcodeProjectFile = exports.Version = exports.UsesNonExemptEncryption = exports.UserInterfaceStyle = exports.Updates = exports.Target = exports.Swift = exports.Scheme = exports.RootViewBackgroundColor = exports.RequiresFullScreen = exports.ProvisioningProfile = exports.Permissions = exports.Paths = exports.Orientation = exports.Name = exports.Maps = exports.Locales = exports.JsEngine = exports.Google = exports.Entitlements = exports.DeviceFamily = exports.BundleIdentifier = exports.BuildScheme = void 0;
20
+ exports.XcodeUtils = exports.XcodeProjectFile = exports.Version = exports.UsesNonExemptEncryption = exports.Updates = exports.Target = exports.Swift = exports.Scheme = exports.RequiresFullScreen = exports.ProvisioningProfile = exports.Permissions = exports.Paths = exports.Orientation = exports.Name = exports.Maps = exports.Locales = exports.JsEngine = void 0;
21
+
22
+ function Bitcode() {
23
+ const data = _interopRequireWildcard(require("./Bitcode"));
24
+
25
+ Bitcode = function () {
26
+ return data;
27
+ };
28
+
29
+ return data;
30
+ }
31
+
32
+ Object.defineProperty(exports, "Bitcode", {
33
+ enumerable: true,
34
+ get: function () {
35
+ return Bitcode();
36
+ }
37
+ });
19
38
 
20
39
  function BuildScheme() {
21
40
  const data = _interopRequireWildcard(require("./BuildScheme"));
@@ -265,23 +284,6 @@ Object.defineProperty(exports, "RequiresFullScreen", {
265
284
  }
266
285
  });
267
286
 
268
- function RootViewBackgroundColor() {
269
- const data = _interopRequireWildcard(require("./RootViewBackgroundColor"));
270
-
271
- RootViewBackgroundColor = function () {
272
- return data;
273
- };
274
-
275
- return data;
276
- }
277
-
278
- Object.defineProperty(exports, "RootViewBackgroundColor", {
279
- enumerable: true,
280
- get: function () {
281
- return RootViewBackgroundColor();
282
- }
283
- });
284
-
285
287
  function Scheme() {
286
288
  const data = _interopRequireWildcard(require("./Scheme"));
287
289
 
@@ -350,23 +352,6 @@ Object.defineProperty(exports, "Updates", {
350
352
  }
351
353
  });
352
354
 
353
- function UserInterfaceStyle() {
354
- const data = _interopRequireWildcard(require("./UserInterfaceStyle"));
355
-
356
- UserInterfaceStyle = function () {
357
- return data;
358
- };
359
-
360
- return data;
361
- }
362
-
363
- Object.defineProperty(exports, "UserInterfaceStyle", {
364
- enumerable: true,
365
- get: function () {
366
- return UserInterfaceStyle();
367
- }
368
- });
369
-
370
355
  function UsesNonExemptEncryption() {
371
356
  const data = _interopRequireWildcard(require("./UsesNonExemptEncryption"));
372
357
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ios/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["import * 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 JsEngine from './JsEngine';\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 ProvisioningProfile from './ProvisioningProfile';\nimport * as RequiresFullScreen from './RequiresFullScreen';\nimport * as RootViewBackgroundColor from './RootViewBackgroundColor';\nimport * as Scheme from './Scheme';\nimport * as Swift from './Swift';\nimport * as Target from './Target';\nimport * as Updates from './Updates';\nimport * as UserInterfaceStyle from './UserInterfaceStyle';\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 BundleIdentifier,\n BuildScheme,\n DeviceFamily,\n Google,\n Maps,\n Locales,\n JsEngine,\n Name,\n Orientation,\n ProvisioningProfile,\n RequiresFullScreen,\n RootViewBackgroundColor,\n Scheme,\n Swift,\n Target,\n Updates,\n UserInterfaceStyle,\n UsesNonExemptEncryption,\n Version,\n XcodeProjectFile,\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/ios/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["import * as Bitcode from './Bitcode';\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 JsEngine from './JsEngine';\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 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 BuildScheme,\n DeviceFamily,\n Google,\n Maps,\n Locales,\n JsEngine,\n Name,\n Orientation,\n ProvisioningProfile,\n RequiresFullScreen,\n Scheme,\n Swift,\n Target,\n Updates,\n UsesNonExemptEncryption,\n Version,\n XcodeProjectFile,\n};\n"],"file":"index.js"}
@@ -3,25 +3,25 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getProjectName = getProjectName;
7
- exports.resolvePathOrProject = resolvePathOrProject;
8
- exports.sanitizedName = sanitizedName;
9
- exports.getHackyProjectName = getHackyProjectName;
10
- exports.addResourceFileToGroup = addResourceFileToGroup;
11
6
  exports.addBuildSourceFileToGroup = addBuildSourceFileToGroup;
12
7
  exports.addFileToGroupAndLink = addFileToGroupAndLink;
13
- exports.getApplicationNativeTarget = getApplicationNativeTarget;
14
8
  exports.addFramework = addFramework;
9
+ exports.addResourceFileToGroup = addResourceFileToGroup;
15
10
  exports.ensureGroupRecursively = ensureGroupRecursively;
11
+ exports.getApplicationNativeTarget = getApplicationNativeTarget;
12
+ exports.getBuildConfigurationForListIdAndName = getBuildConfigurationForListIdAndName;
13
+ exports.getBuildConfigurationsForListId = getBuildConfigurationsForListId;
14
+ exports.getHackyProjectName = getHackyProjectName;
16
15
  exports.getPbxproj = getPbxproj;
17
16
  exports.getProductName = getProductName;
17
+ exports.getProjectName = getProjectName;
18
18
  exports.getProjectSection = getProjectSection;
19
19
  exports.getXCConfigurationListEntries = getXCConfigurationListEntries;
20
- exports.getBuildConfigurationsForListId = getBuildConfigurationsForListId;
21
- exports.getBuildConfigurationForListIdAndName = getBuildConfigurationForListIdAndName;
22
20
  exports.isBuildConfig = isBuildConfig;
23
- exports.isNotTestHost = isNotTestHost;
24
21
  exports.isNotComment = isNotComment;
22
+ exports.isNotTestHost = isNotTestHost;
23
+ exports.resolvePathOrProject = resolvePathOrProject;
24
+ exports.sanitizedName = sanitizedName;
25
25
  exports.unquote = unquote;
26
26
 
27
27
  function _assert() {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createAndroidManifestPlugin = createAndroidManifestPlugin;
7
7
  exports.createStringsXmlPlugin = createStringsXmlPlugin;
8
- exports.withGradleProperties = exports.withSettingsGradle = exports.withAppBuildGradle = exports.withProjectBuildGradle = exports.withMainApplication = exports.withMainActivity = exports.withAndroidStyles = exports.withAndroidColorsNight = exports.withAndroidColors = exports.withStringsXml = exports.withAndroidManifest = void 0;
8
+ exports.withStringsXml = exports.withSettingsGradle = exports.withProjectBuildGradle = exports.withMainApplication = exports.withMainActivity = exports.withGradleProperties = exports.withAppBuildGradle = exports.withAndroidStyles = exports.withAndroidManifest = exports.withAndroidColorsNight = exports.withAndroidColors = void 0;
9
9
 
10
10
  function _withMod() {
11
11
  const data = require("./withMod");
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createBaseMod = createBaseMod;
7
6
  exports.assertModResults = assertModResults;
7
+ exports.createBaseMod = createBaseMod;
8
8
  exports.createPlatformBaseMod = createPlatformBaseMod;
9
9
  exports.provider = provider;
10
10
  exports.withGeneratedBaseMods = withGeneratedBaseMods;
@@ -31,7 +31,7 @@ function _withMod() {
31
31
 
32
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
33
 
34
- const debug = (0, _debug().default)('config-plugins:base-mods');
34
+ const debug = (0, _debug().default)('expo:config-plugins:base-mods');
35
35
 
36
36
  function createBaseMod({
37
37
  methodName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/createBaseMod.ts"],"names":["debug","createBaseMod","methodName","platform","modName","getFilePath","read","write","isIntrospective","withUnknown","config","_props","props","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"],"mappings":"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","sourcesContent":["import Debug from 'debug';\n\nimport {\n ConfigPlugin,\n ExportedConfig,\n ExportedConfigWithProps,\n ModPlatform,\n} from '../Plugin.types';\nimport { BaseModOptions, withBaseMod } from './withMod';\n\nconst debug = Debug('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 platform: ModPlatform;\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"],"file":"createBaseMod.js"}
1
+ {"version":3,"sources":["../../src/plugins/createBaseMod.ts"],"names":["debug","createBaseMod","methodName","platform","modName","getFilePath","read","write","isIntrospective","withUnknown","config","_props","props","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"],"mappings":"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","sourcesContent":["import Debug from 'debug';\n\nimport {\n ConfigPlugin,\n ExportedConfig,\n ExportedConfigWithProps,\n ModPlatform,\n} from '../Plugin.types';\nimport { BaseModOptions, withBaseMod } from './withMod';\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 platform: ModPlatform;\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"],"file":"createBaseMod.js"}
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createInfoPlistPlugin = createInfoPlistPlugin;
7
6
  exports.createEntitlementsPlugin = createEntitlementsPlugin;
8
- exports.withPodfileProperties = exports.withXcodeProject = exports.withExpoPlist = exports.withEntitlementsPlist = exports.withInfoPlist = exports.withAppDelegate = void 0;
7
+ exports.createInfoPlistPlugin = createInfoPlistPlugin;
8
+ exports.withXcodeProject = exports.withPodfileProperties = exports.withInfoPlist = exports.withExpoPlist = exports.withEntitlementsPlist = exports.withAppDelegate = void 0;
9
9
 
10
10
  function _withMod() {
11
11
  const data = require("./withMod");
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.withDefaultBaseMods = withDefaultBaseMods;
7
- exports.withIntrospectionBaseMods = withIntrospectionBaseMods;
8
6
  exports.compileModsAsync = compileModsAsync;
9
7
  exports.evalModsAsync = evalModsAsync;
8
+ exports.withDefaultBaseMods = withDefaultBaseMods;
9
+ exports.withIntrospectionBaseMods = withIntrospectionBaseMods;
10
10
 
11
11
  function _debug() {
12
12
  const data = _interopRequireDefault(require("debug"));
@@ -94,7 +94,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
94
94
 
95
95
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
96
96
 
97
- const debug = (0, _debug().default)('config-plugins:mod-compiler');
97
+ const debug = (0, _debug().default)('expo:config-plugins:mod-compiler');
98
98
 
99
99
  function withDefaultBaseMods(config, props = {}) {
100
100
  config = (0, _withIosBaseMods().withIosBaseMods)(config, props);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/mod-compiler.ts"],"names":["debug","withDefaultBaseMods","config","props","withIntrospectionBaseMods","saveToInternal","skipEmptyMod","mods","platform","Object","keys","key","isIntrospective","compileModsAsync","introspect","evalModsAsync","sortMods","commands","order","allKeys","map","completeOrder","Set","sorted","length","group","shift","commandSet","find","push","orders","ios","android","projectRoot","platforms","assertMissingModProviders","platformName","entries","includes","name","join","platformProjectRoot","path","projectName","undefined","modName","mod","modRequest","isProvider","errorMessage","PluginError","Warnings","addWarningForPlatform","results","modResults"],"mappings":";;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;AAEA,MAAMA,KAAK,GAAG,sBAAM,6BAAN,CAAd;;AAEO,SAASC,mBAAT,CACLC,MADK,EAELC,KAA8B,GAAG,EAF5B,EAGW;AAChBD,EAAAA,MAAM,GAAG,wCAAgBA,MAAhB,EAAwBC,KAAxB,CAAT;AACAD,EAAAA,MAAM,GAAG,gDAAoBA,MAApB,EAA4BC,KAA5B,CAAT;AACA,SAAOD,MAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASE,yBAAT,CACLF,MADK,EAELC,KAA8B,GAAG,EAF5B,EAGW;AAChBD,EAAAA,MAAM,GAAG,wCAAgBA,MAAhB,EAAwB;AAC/BG,IAAAA,cAAc,EAAE,IADe;AAE/B;AACA;AACAC,IAAAA,YAAY,EAAE,KAJiB;AAK/B,OAAGH;AAL4B,GAAxB,CAAT;AAOAD,EAAAA,MAAM,GAAG,gDAAoBA,MAApB,EAA4B;AACnCG,IAAAA,cAAc,EAAE,IADmB;AAEnCC,IAAAA,YAAY,EAAE,KAFqB;AAGnC,OAAGH;AAHgC,GAA5B,CAAT;;AAMA,MAAID,MAAM,CAACK,IAAX,EAAiB;AACf;AACA,SAAK,MAAMC,QAAX,IAAuBC,MAAM,CAACC,IAAP,CAAYR,MAAM,CAACK,IAAnB,CAAvB,EAAkE;AAChE;AACA,WAAK,MAAMI,GAAX,IAAkBF,MAAM,CAACC,IAAP,CAAYR,MAAM,CAACK,IAAP,CAAYC,QAAZ,KAAyB,EAArC,CAAlB,EAA4D;AAAA;;AAC1D;AACA,YAAI,2BAACN,MAAM,CAACK,IAAP,CAAYC,QAAZ,CAAD,4EAAC,sBAAwBG,GAAxB,CAAD,mDAAC,uBAA8BC,eAA/B,CAAJ,EAAoD;AAAA;;AAClDZ,UAAAA,KAAK,CAAE,gCAA+BQ,QAAS,IAAGG,GAAI,EAAjD,CAAL,CADkD,CAElD;;AACA,oCAAOT,MAAM,CAACK,IAAP,CAAYC,QAAZ,CAAP,gEAAO,uBAAwBG,GAAxB,CAAP;AACD;AACF;AACF;AACF;;AAED,SAAOT,MAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,eAAeW,gBAAf,CACLX,MADK,EAELC,KAFK,EAQoB;AACzB,MAAIA,KAAK,CAACW,UAAN,KAAqB,IAAzB,EAA+B;AAC7BZ,IAAAA,MAAM,GAAGE,yBAAyB,CAACF,MAAD,CAAlC;AACD,GAFD,MAEO;AACLA,IAAAA,MAAM,GAAGD,mBAAmB,CAACC,MAAD,CAA5B;AACD;;AACD,SAAO,MAAMa,aAAa,CAACb,MAAD,EAASC,KAAT,CAA1B;AACD;;AAED,SAASa,QAAT,CAAkBC,QAAlB,EAA6CC,KAA7C,EAA+E;AAC7E,QAAMC,OAAO,GAAGF,QAAQ,CAACG,GAAT,CAAa,CAAC,CAACT,GAAD,CAAD,KAAWA,GAAxB,CAAhB;AACA,QAAMU,aAAa,GAAG,CAAC,GAAG,IAAIC,GAAJ,CAAQ,CAAC,GAAGJ,KAAJ,EAAW,GAAGC,OAAd,CAAR,CAAJ,CAAtB;AACA,QAAMI,MAAuB,GAAG,EAAhC;;AACA,SAAOF,aAAa,CAACG,MAArB,EAA6B;AAC3B,UAAMC,KAAK,GAAGJ,aAAa,CAACK,KAAd,EAAd;AACA,UAAMC,UAAU,GAAGV,QAAQ,CAACW,IAAT,CAAc,CAAC,CAACjB,GAAD,CAAD,KAAWA,GAAG,KAAKc,KAAjC,CAAnB;;AACA,QAAIE,UAAJ,EAAgB;AACdJ,MAAAA,MAAM,CAACM,IAAP,CAAYF,UAAZ;AACD;AACF;;AACD,SAAOJ,MAAP;AACD;;AAED,MAAMO,MAAgC,GAAG;AACvCC,EAAAA,GAAG,EAAE,CACH;AACA,aAFG,EAGH;AACA,aAJG,CADkC;AAOvCC,EAAAA,OAAO,EAAE,CAAC,WAAD;AAP8B,CAAzC;AASA;AACA;AACA;AACA;AACA;;AACO,eAAejB,aAAf,CACLb,MADK,EAEL;AACE+B,EAAAA,WADF;AAEEnB,EAAAA,UAFF;AAGEoB,EAAAA,SAHF;;AAIE;AACJ;AACA;AACA;AACIC,EAAAA;AARF,CAFK,EAiBoB;AACzB,OAAK,MAAM,CAACC,YAAD,EAAe5B,QAAf,CAAX,IAAuCC,MAAM,CAAC4B,OAAP,iBAAenC,MAAM,CAACK,IAAtB,uDAA+B,EAA/B,CAAvC,EAAyF;AAAA;;AACvF,QAAI2B,SAAS,IAAI,CAACA,SAAS,CAACI,QAAV,CAAmBF,YAAnB,CAAlB,EAA2D;AACzDpC,MAAAA,KAAK,CAAE,kBAAiBoC,YAAa,EAAhC,CAAL;AACA;AACD;;AAED,QAAIC,OAAO,GAAG5B,MAAM,CAAC4B,OAAP,CAAe7B,QAAf,CAAd;;AACA,QAAI6B,OAAO,CAACb,MAAZ,EAAoB;AAClB;AACAa,MAAAA,OAAO,GAAGrB,QAAQ,CAACqB,OAAD,EAAUP,MAAM,CAACM,YAAD,CAAhB,CAAlB;AACApC,MAAAA,KAAK,CAAE,iBAAgBqC,OAAO,CAACjB,GAAR,CAAY,CAAC,CAACmB,IAAD,CAAD,KAAYA,IAAxB,EAA8BC,IAA9B,CAAmC,IAAnC,CAAyC,EAA3D,CAAL;;AACA,YAAMC,mBAAmB,GAAGC,gBAAKF,IAAL,CAAUP,WAAV,EAAuBG,YAAvB,CAA5B;;AACA,YAAMO,WAAW,GACfP,YAAY,KAAK,KAAjB,GAAyB,sCAAoBH,WAApB,EAAiC/B,MAAjC,CAAzB,GAAoE0C,SADtE;;AAGA,WAAK,MAAM,CAACC,OAAD,EAAUC,GAAV,CAAX,IAA6BT,OAA7B,EAAsC;AACpC,cAAMU,UAAU,GAAG;AACjBd,UAAAA,WADiB;AAEjBU,UAAAA,WAFiB;AAGjBF,UAAAA,mBAHiB;AAIjBjC,UAAAA,QAAQ,EAAE4B,YAJO;AAKjBS,UAAAA,OALiB;AAMjB/B,UAAAA,UAAU,EAAE,CAAC,CAACA;AANG,SAAnB;;AASA,YAAI,CAAEgC,GAAD,CAAaE,UAAlB,EAA8B;AAC5B;AACA,gBAAMC,YAAY,GAAI,8BAA6Bb,YAAa,IAAGS,OAAQ,6EAA3E;;AACA,cAAIV,yBAAyB,KAAK,KAAlC,EAAyC;AACvC,kBAAM,KAAIe,qBAAJ,EAAgBD,YAAhB,EAA8B,kBAA9B,CAAN;AACD,WAFD,MAEO;AACLE,YAAAA,QAAQ,GAACC,qBAAT,CACEhB,YADF,EAEG,GAAEA,YAAa,IAAGS,OAAQ,EAF7B,EAGG,wCAAuCT,YAAa,IAAGS,OAAQ,kIAHlE,EADK,CAML;;AACA;AACD;AACF;;AAED,cAAMQ,OAAO,GAAG,MAAOP,GAAD,CAAa,EACjC,GAAG5C,MAD8B;AAEjCoD,UAAAA,UAAU,EAAE,IAFqB;AAGjCP,UAAAA;AAHiC,SAAb,CAAtB,CA1BoC,CAgCpC;;AACA7C,QAAAA,MAAM,GAAG,uCAAiBmD,OAAjB,EAA0BjB,YAA1B,EAAwCS,OAAxC,CAAT,CAjCoC,CAkCpC;;AACA,eAAO3C,MAAM,CAACoD,UAAd,CAnCoC,CAoCpC;;AACA,eAAOpD,MAAM,CAAC6C,UAAd;AACD;AACF;AACF;;AAED,SAAO7C,MAAP;AACD","sourcesContent":["import Debug from 'debug';\nimport path from 'path';\n\nimport { ExportedConfig, Mod, ModConfig, ModPlatform } from '../Plugin.types';\nimport { getHackyProjectName } from '../ios/utils/Xcodeproj';\nimport { PluginError } from '../utils/errors';\nimport * as Warnings from '../utils/warnings';\nimport { assertModResults, ForwardedBaseModOptions } from './createBaseMod';\nimport { withAndroidBaseMods } from './withAndroidBaseMods';\nimport { withIosBaseMods } from './withIosBaseMods';\n\nconst debug = Debug('config-plugins:mod-compiler');\n\nexport function withDefaultBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, props);\n config = withAndroidBaseMods(config, props);\n return config;\n}\n\n/**\n * Get a prebuild config that safely evaluates mods without persisting any changes to the file system.\n * Currently this only supports infoPlist, entitlements, androidManifest, strings, gradleProperties, and expoPlist mods.\n * This plugin should be evaluated directly:\n */\nexport function withIntrospectionBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, {\n saveToInternal: true,\n // This writing optimization can be skipped since we never write in introspection mode.\n // Including empty mods will ensure that all mods get introspected.\n skipEmptyMod: false,\n ...props,\n });\n config = withAndroidBaseMods(config, {\n saveToInternal: true,\n skipEmptyMod: false,\n ...props,\n });\n\n if (config.mods) {\n // Remove all mods that don't have an introspection base mod, for instance `dangerous` mods.\n for (const platform of Object.keys(config.mods) as ModPlatform[]) {\n // const platformPreserve = preserve[platform];\n for (const key of Object.keys(config.mods[platform] || {})) {\n // @ts-ignore\n if (!config.mods[platform]?.[key]?.isIntrospective) {\n debug(`removing non-idempotent mod: ${platform}.${key}`);\n // @ts-ignore\n delete config.mods[platform]?.[key];\n }\n }\n }\n }\n\n return config;\n}\n\n/**\n *\n * @param projectRoot\n * @param config\n */\nexport async function compileModsAsync(\n config: ExportedConfig,\n props: {\n projectRoot: string;\n platforms?: ModPlatform[];\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n }\n): Promise<ExportedConfig> {\n if (props.introspect === true) {\n config = withIntrospectionBaseMods(config);\n } else {\n config = withDefaultBaseMods(config);\n }\n return await evalModsAsync(config, props);\n}\n\nfunction sortMods(commands: [string, any][], order: string[]): [string, any][] {\n const allKeys = commands.map(([key]) => key);\n const completeOrder = [...new Set([...order, ...allKeys])];\n const sorted: [string, any][] = [];\n while (completeOrder.length) {\n const group = completeOrder.shift()!;\n const commandSet = commands.find(([key]) => key === group);\n if (commandSet) {\n sorted.push(commandSet);\n }\n }\n return sorted;\n}\n\nconst orders: Record<string, string[]> = {\n ios: [\n // dangerous runs first\n 'dangerous',\n // run the XcodeProject mod second because many plugins attempt to read from it.\n 'xcodeproj',\n ],\n android: ['dangerous'],\n};\n/**\n * A generic plugin compiler.\n *\n * @param config\n */\nexport async function evalModsAsync(\n config: ExportedConfig,\n {\n projectRoot,\n introspect,\n platforms,\n /**\n * Throw errors when mods are missing providers.\n * @default true\n */\n assertMissingModProviders,\n }: {\n projectRoot: string;\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n platforms?: ModPlatform[];\n }\n): Promise<ExportedConfig> {\n for (const [platformName, platform] of Object.entries(config.mods ?? ({} as ModConfig))) {\n if (platforms && !platforms.includes(platformName as any)) {\n debug(`skip platform: ${platformName}`);\n continue;\n }\n\n let entries = Object.entries(platform);\n if (entries.length) {\n // Move dangerous item to the first position if it exists, this ensures that all dangerous code runs first.\n entries = sortMods(entries, orders[platformName]!);\n debug(`run in order: ${entries.map(([name]) => name).join(', ')}`);\n const platformProjectRoot = path.join(projectRoot, platformName);\n const projectName =\n platformName === 'ios' ? getHackyProjectName(projectRoot, config) : undefined;\n\n for (const [modName, mod] of entries) {\n const modRequest = {\n projectRoot,\n projectName,\n platformProjectRoot,\n platform: platformName as ModPlatform,\n modName,\n introspect: !!introspect,\n };\n\n if (!(mod as Mod).isProvider) {\n // In strict mode, throw an error.\n const errorMessage = `Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods`;\n if (assertMissingModProviders !== false) {\n throw new PluginError(errorMessage, 'MISSING_PROVIDER');\n } else {\n Warnings.addWarningForPlatform(\n platformName as ModPlatform,\n `${platformName}.${modName}`,\n `Skipping: Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods. This may be due to an outdated version of Expo CLI.`\n );\n // In loose mode, just skip the mod entirely.\n continue;\n }\n }\n\n const results = await (mod as Mod)({\n ...config,\n modResults: null,\n modRequest,\n });\n\n // Sanity check to help locate non compliant mods.\n config = assertModResults(results, platformName, modName);\n // @ts-ignore: data is added for modifications\n delete config.modResults;\n // @ts-ignore: info is added for modifications\n delete config.modRequest;\n }\n }\n }\n\n return config;\n}\n"],"file":"mod-compiler.js"}
1
+ {"version":3,"sources":["../../src/plugins/mod-compiler.ts"],"names":["debug","withDefaultBaseMods","config","props","withIntrospectionBaseMods","saveToInternal","skipEmptyMod","mods","platform","Object","keys","key","isIntrospective","compileModsAsync","introspect","evalModsAsync","sortMods","commands","order","allKeys","map","completeOrder","Set","sorted","length","group","shift","commandSet","find","push","orders","ios","android","projectRoot","platforms","assertMissingModProviders","platformName","entries","includes","name","join","platformProjectRoot","path","projectName","undefined","modName","mod","modRequest","isProvider","errorMessage","PluginError","Warnings","addWarningForPlatform","results","modResults"],"mappings":"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","sourcesContent":["import Debug from 'debug';\nimport path from 'path';\n\nimport { ExportedConfig, Mod, ModConfig, ModPlatform } from '../Plugin.types';\nimport { getHackyProjectName } from '../ios/utils/Xcodeproj';\nimport { PluginError } from '../utils/errors';\nimport * as Warnings from '../utils/warnings';\nimport { assertModResults, ForwardedBaseModOptions } from './createBaseMod';\nimport { withAndroidBaseMods } from './withAndroidBaseMods';\nimport { withIosBaseMods } from './withIosBaseMods';\n\nconst debug = Debug('expo:config-plugins:mod-compiler');\n\nexport function withDefaultBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, props);\n config = withAndroidBaseMods(config, props);\n return config;\n}\n\n/**\n * Get a prebuild config that safely evaluates mods without persisting any changes to the file system.\n * Currently this only supports infoPlist, entitlements, androidManifest, strings, gradleProperties, and expoPlist mods.\n * This plugin should be evaluated directly:\n */\nexport function withIntrospectionBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, {\n saveToInternal: true,\n // This writing optimization can be skipped since we never write in introspection mode.\n // Including empty mods will ensure that all mods get introspected.\n skipEmptyMod: false,\n ...props,\n });\n config = withAndroidBaseMods(config, {\n saveToInternal: true,\n skipEmptyMod: false,\n ...props,\n });\n\n if (config.mods) {\n // Remove all mods that don't have an introspection base mod, for instance `dangerous` mods.\n for (const platform of Object.keys(config.mods) as ModPlatform[]) {\n // const platformPreserve = preserve[platform];\n for (const key of Object.keys(config.mods[platform] || {})) {\n // @ts-ignore\n if (!config.mods[platform]?.[key]?.isIntrospective) {\n debug(`removing non-idempotent mod: ${platform}.${key}`);\n // @ts-ignore\n delete config.mods[platform]?.[key];\n }\n }\n }\n }\n\n return config;\n}\n\n/**\n *\n * @param projectRoot\n * @param config\n */\nexport async function compileModsAsync(\n config: ExportedConfig,\n props: {\n projectRoot: string;\n platforms?: ModPlatform[];\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n }\n): Promise<ExportedConfig> {\n if (props.introspect === true) {\n config = withIntrospectionBaseMods(config);\n } else {\n config = withDefaultBaseMods(config);\n }\n return await evalModsAsync(config, props);\n}\n\nfunction sortMods(commands: [string, any][], order: string[]): [string, any][] {\n const allKeys = commands.map(([key]) => key);\n const completeOrder = [...new Set([...order, ...allKeys])];\n const sorted: [string, any][] = [];\n while (completeOrder.length) {\n const group = completeOrder.shift()!;\n const commandSet = commands.find(([key]) => key === group);\n if (commandSet) {\n sorted.push(commandSet);\n }\n }\n return sorted;\n}\n\nconst orders: Record<string, string[]> = {\n ios: [\n // dangerous runs first\n 'dangerous',\n // run the XcodeProject mod second because many plugins attempt to read from it.\n 'xcodeproj',\n ],\n android: ['dangerous'],\n};\n/**\n * A generic plugin compiler.\n *\n * @param config\n */\nexport async function evalModsAsync(\n config: ExportedConfig,\n {\n projectRoot,\n introspect,\n platforms,\n /**\n * Throw errors when mods are missing providers.\n * @default true\n */\n assertMissingModProviders,\n }: {\n projectRoot: string;\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n platforms?: ModPlatform[];\n }\n): Promise<ExportedConfig> {\n for (const [platformName, platform] of Object.entries(config.mods ?? ({} as ModConfig))) {\n if (platforms && !platforms.includes(platformName as any)) {\n debug(`skip platform: ${platformName}`);\n continue;\n }\n\n let entries = Object.entries(platform);\n if (entries.length) {\n // Move dangerous item to the first position if it exists, this ensures that all dangerous code runs first.\n entries = sortMods(entries, orders[platformName]!);\n debug(`run in order: ${entries.map(([name]) => name).join(', ')}`);\n const platformProjectRoot = path.join(projectRoot, platformName);\n const projectName =\n platformName === 'ios' ? getHackyProjectName(projectRoot, config) : undefined;\n\n for (const [modName, mod] of entries) {\n const modRequest = {\n projectRoot,\n projectName,\n platformProjectRoot,\n platform: platformName as ModPlatform,\n modName,\n introspect: !!introspect,\n };\n\n if (!(mod as Mod).isProvider) {\n // In strict mode, throw an error.\n const errorMessage = `Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods`;\n if (assertMissingModProviders !== false) {\n throw new PluginError(errorMessage, 'MISSING_PROVIDER');\n } else {\n Warnings.addWarningForPlatform(\n platformName as ModPlatform,\n `${platformName}.${modName}`,\n `Skipping: Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods. This may be due to an outdated version of Expo CLI.`\n );\n // In loose mode, just skip the mod entirely.\n continue;\n }\n }\n\n const results = await (mod as Mod)({\n ...config,\n modResults: null,\n modRequest,\n });\n\n // Sanity check to help locate non compliant mods.\n config = assertModResults(results, platformName, modName);\n // @ts-ignore: data is added for modifications\n delete config.modResults;\n // @ts-ignore: info is added for modifications\n delete config.modRequest;\n }\n }\n }\n\n return config;\n}\n"],"file":"mod-compiler.js"}
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getAndroidModFileProviders = getAndroidModFileProviders;
6
7
  exports.sortAndroidManifest = sortAndroidManifest;
7
8
  exports.withAndroidBaseMods = withAndroidBaseMods;
8
- exports.getAndroidModFileProviders = getAndroidModFileProviders;
9
9
 
10
10
  function _fs() {
11
11
  const data = require("fs");
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.withIosBaseMods = withIosBaseMods;
7
6
  exports.getIosModFileProviders = getIosModFileProviders;
7
+ exports.withIosBaseMods = withIosBaseMods;
8
8
 
9
9
  function _jsonFile() {
10
10
  const data = _interopRequireDefault(require("@expo/json-file"));
@@ -47,8 +47,12 @@ function _pluginResolver() {
47
47
 
48
48
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
49
49
 
50
- const EXPO_DEBUG = (0, _getenv().boolish)('EXPO_DEBUG', false);
51
- const EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS = (0, _getenv().boolish)('EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS', false);
50
+ const EXPO_DEBUG = (0, _getenv().boolish)('EXPO_DEBUG', false); // Show all error info related to plugin resolution.
51
+
52
+ const EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS = (0, _getenv().boolish)('EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS', false); // Force using the fallback unversioned plugin instead of a local versioned copy,
53
+ // this should only be used for testing the CLI.
54
+
55
+ const EXPO_USE_UNVERSIONED_PLUGINS = (0, _getenv().boolish)('EXPO_USE_UNVERSIONED_PLUGINS', false);
52
56
 
53
57
  function isModuleMissingError(name, error) {
54
58
  // @ts-ignore
@@ -93,14 +97,21 @@ const withStaticPlugin = (config, props) => {
93
97
  let [pluginResolve, pluginProps] = (0, _pluginResolver().normalizeStaticPlugin)(props.plugin); // Ensure no one uses this property by accident.
94
98
 
95
99
  (0, _assert().default)(!((_pluginProps = pluginProps) !== null && _pluginProps !== void 0 && _pluginProps._resolverError), `Plugin property '_resolverError' is a reserved property of \`withStaticPlugin\``);
96
- let withPlugin; // Function was provided, no need to resolve: [withPlugin, {}]
100
+ let withPlugin;
97
101
 
98
- if (typeof pluginResolve === 'function') {
102
+ if ( // Function was provided, no need to resolve: [withPlugin, {}]
103
+ typeof pluginResolve === 'function') {
99
104
  withPlugin = pluginResolve;
100
105
  } else if (typeof pluginResolve === 'string') {
101
106
  try {
102
107
  // Resolve and evaluate plugins.
103
- withPlugin = (0, _pluginResolver().resolveConfigPluginFunction)(projectRoot, pluginResolve);
108
+ withPlugin = (0, _pluginResolver().resolveConfigPluginFunction)(projectRoot, pluginResolve); // Only force if the project has the versioned plugin, otherwise use default behavior.
109
+ // This helps see which plugins are being skipped.
110
+
111
+ if (EXPO_USE_UNVERSIONED_PLUGINS && !!withPlugin && !!props._isLegacyPlugin && !!props.fallback) {
112
+ console.log(`Force "${pluginResolve}" to unversioned plugin`);
113
+ withPlugin = props.fallback;
114
+ }
104
115
  } catch (error) {
105
116
  if (EXPO_DEBUG) {
106
117
  if (EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS) {