@expo/config-plugins 4.1.1 → 4.1.2

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 (48) hide show
  1. package/build/android/BuildProperties.d.ts +28 -0
  2. package/build/android/BuildProperties.js +96 -0
  3. package/build/android/BuildProperties.js.map +1 -0
  4. package/build/android/Package.js +1 -1
  5. package/build/android/Package.js.map +1 -1
  6. package/build/android/index.d.ts +2 -2
  7. package/build/android/index.js +18 -18
  8. package/build/android/index.js.map +1 -1
  9. package/build/ios/BuildProperties.d.ts +27 -0
  10. package/build/ios/BuildProperties.js +83 -0
  11. package/build/ios/BuildProperties.js.map +1 -0
  12. package/build/ios/BuildScheme.js +6 -3
  13. package/build/ios/BuildScheme.js.map +1 -1
  14. package/build/ios/Entitlements.d.ts +5 -1
  15. package/build/ios/Entitlements.js +57 -58
  16. package/build/ios/Entitlements.js.map +1 -1
  17. package/build/ios/Locales.js +1 -1
  18. package/build/ios/Locales.js.map +1 -1
  19. package/build/ios/Paths.d.ts +1 -3
  20. package/build/ios/Paths.js +12 -16
  21. package/build/ios/Paths.js.map +1 -1
  22. package/build/ios/Target.d.ts +1 -0
  23. package/build/ios/Target.js +11 -1
  24. package/build/ios/Target.js.map +1 -1
  25. package/build/ios/index.d.ts +2 -2
  26. package/build/ios/index.js +19 -19
  27. package/build/ios/index.js.map +1 -1
  28. package/build/ios/utils/Xcodeproj.d.ts +2 -1
  29. package/build/ios/utils/Xcodeproj.js +4 -1
  30. package/build/ios/utils/Xcodeproj.js.map +1 -1
  31. package/build/plugins/ios-plugins.d.ts +2 -2
  32. package/build/plugins/ios-plugins.js.map +1 -1
  33. package/build/plugins/withIosBaseMods.js +27 -7
  34. package/build/plugins/withIosBaseMods.js.map +1 -1
  35. package/build/utils/BuildProperties.types.d.ts +25 -0
  36. package/build/utils/BuildProperties.types.js +2 -0
  37. package/build/utils/BuildProperties.types.js.map +1 -0
  38. package/build/utils/modules.js +1 -1
  39. package/build/utils/modules.js.map +1 -1
  40. package/build/utils/versions.js +2 -2
  41. package/build/utils/versions.js.map +1 -1
  42. package/package.json +2 -2
  43. package/build/android/JsEngine.d.ts +0 -8
  44. package/build/android/JsEngine.js +0 -59
  45. package/build/android/JsEngine.js.map +0 -1
  46. package/build/ios/JsEngine.d.ts +0 -8
  47. package/build/ios/JsEngine.js +0 -47
  48. package/build/ios/JsEngine.js.map +0 -1
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.ensureApplicationTargetEntitlementsFileConfigured = ensureApplicationTargetEntitlementsFileConfigured;
6
7
  exports.getEntitlementsPath = getEntitlementsPath;
7
8
  exports.setAssociatedDomains = setAssociatedDomains;
8
9
  exports.withAssociatedDomains = void 0;
@@ -47,40 +48,36 @@ function _iosPlugins() {
47
48
  return data;
48
49
  }
49
50
 
50
- function _fs2() {
51
- const data = require("../utils/fs");
51
+ function _Target() {
52
+ const data = require("./Target");
52
53
 
53
- _fs2 = function () {
54
+ _Target = function () {
54
55
  return data;
55
56
  };
56
57
 
57
58
  return data;
58
59
  }
59
60
 
60
- function Paths() {
61
- const data = _interopRequireWildcard(require("./Paths"));
61
+ function _Xcodeproj() {
62
+ const data = require("./utils/Xcodeproj");
62
63
 
63
- Paths = function () {
64
+ _Xcodeproj = function () {
64
65
  return data;
65
66
  };
66
67
 
67
68
  return data;
68
69
  }
69
70
 
70
- function _Xcodeproj() {
71
- const data = require("./utils/Xcodeproj");
71
+ function _string() {
72
+ const data = require("./utils/string");
72
73
 
73
- _Xcodeproj = function () {
74
+ _string = function () {
74
75
  return data;
75
76
  };
76
77
 
77
78
  return data;
78
79
  }
79
80
 
80
- 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); }
81
-
82
- 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
-
84
81
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
85
82
 
86
83
  const withAssociatedDomains = (0, _iosPlugins().createEntitlementsPlugin)(setAssociatedDomains, 'withAssociatedDomains');
@@ -101,68 +98,70 @@ function setAssociatedDomains(config, {
101
98
  return entitlementsPlist;
102
99
  }
103
100
 
104
- function getEntitlementsPath(projectRoot) {
105
- const paths = Paths().getAllEntitlementsPaths(projectRoot);
106
- let targetPath = null;
107
- /**
108
- * Add file to pbxproj under CODE_SIGN_ENTITLEMENTS
109
- */
110
-
101
+ function getEntitlementsPath(projectRoot, {
102
+ targetName,
103
+ buildConfiguration = 'Release'
104
+ } = {}) {
111
105
  const project = (0, _Xcodeproj().getPbxproj)(projectRoot);
112
- const projectName = (0, _Xcodeproj().getProjectName)(projectRoot);
113
- const productName = (0, _Xcodeproj().getProductName)(project); // Use posix formatted path, even on Windows
106
+ const xcBuildConfiguration = (0, _Target().getXCBuildConfigurationFromPbxproj)(project, {
107
+ targetName,
108
+ buildConfiguration
109
+ });
114
110
 
115
- const entitlementsRelativePath = (0, _slash().default)(_path().default.join(projectName, `${productName}.entitlements`));
116
- const entitlementsPath = (0, _slash().default)(_path().default.normalize(_path().default.join(projectRoot, 'ios', entitlementsRelativePath)));
117
- const pathsToDelete = [];
111
+ if (!xcBuildConfiguration) {
112
+ return null;
113
+ }
118
114
 
119
- while (paths.length) {
120
- const last = (0, _slash().default)(_path().default.normalize(paths.pop()));
115
+ const entitlementsPath = getEntitlementsPathFromBuildConfiguration(projectRoot, xcBuildConfiguration);
116
+ return entitlementsPath && _fs().default.existsSync(entitlementsPath) ? entitlementsPath : null;
117
+ }
121
118
 
122
- if (last !== entitlementsPath) {
123
- pathsToDelete.push(last);
124
- } else {
125
- targetPath = last;
126
- }
127
- } // Create a new entitlements file
119
+ function getEntitlementsPathFromBuildConfiguration(projectRoot, xcBuildConfiguration) {
120
+ var _xcBuildConfiguration;
121
+
122
+ const entitlementsPathRaw = xcBuildConfiguration === null || xcBuildConfiguration === void 0 ? void 0 : (_xcBuildConfiguration = xcBuildConfiguration.buildSettings) === null || _xcBuildConfiguration === void 0 ? void 0 : _xcBuildConfiguration.CODE_SIGN_ENTITLEMENTS;
128
123
 
124
+ if (entitlementsPathRaw) {
125
+ return _path().default.normalize(_path().default.join(projectRoot, 'ios', (0, _string().trimQuotes)(entitlementsPathRaw)));
126
+ } else {
127
+ return null;
128
+ }
129
+ }
129
130
 
130
- if (!targetPath) {
131
- targetPath = entitlementsPath; // Use the default template
131
+ function ensureApplicationTargetEntitlementsFileConfigured(projectRoot) {
132
+ const project = (0, _Xcodeproj().getPbxproj)(projectRoot);
133
+ const projectName = (0, _Xcodeproj().getProjectName)(projectRoot);
134
+ const productName = (0, _Xcodeproj().getProductName)(project);
135
+ const [, applicationTarget] = (0, _Target().findFirstNativeTarget)(project);
136
+ const buildConfigurations = (0, _Xcodeproj().getBuildConfigurationsForListId)(project, applicationTarget.buildConfigurationList);
137
+ let hasChangesToWrite = false;
132
138
 
133
- let template = ENTITLEMENTS_TEMPLATE; // If an old entitlements file exists, copy it's contents into the new file.
139
+ for (const [, xcBuildConfiguration] of buildConfigurations) {
140
+ const oldEntitlementPath = getEntitlementsPathFromBuildConfiguration(projectRoot, xcBuildConfiguration);
134
141
 
135
- if (pathsToDelete.length) {
136
- // Get the last entitlements file and use it as the template
137
- const last = pathsToDelete[pathsToDelete.length - 1];
138
- template = _fs().default.readFileSync(last, 'utf8');
142
+ if (oldEntitlementPath && _fs().default.existsSync(oldEntitlementPath)) {
143
+ return;
139
144
  }
140
145
 
146
+ hasChangesToWrite = true; // Use posix formatted path, even on Windows
147
+
148
+ const entitlementsRelativePath = (0, _slash().default)(_path().default.join(projectName, `${productName}.entitlements`));
149
+
150
+ const entitlementsPath = _path().default.normalize(_path().default.join(projectRoot, 'ios', entitlementsRelativePath));
151
+
141
152
  _fs().default.mkdirSync(_path().default.dirname(entitlementsPath), {
142
153
  recursive: true
143
154
  });
144
155
 
145
- _fs().default.writeFileSync(entitlementsPath, template);
156
+ if (!_fs().default.existsSync(entitlementsPath)) {
157
+ _fs().default.writeFileSync(entitlementsPath, ENTITLEMENTS_TEMPLATE);
158
+ }
146
159
 
147
- Object.entries(project.pbxXCBuildConfigurationSection()).filter(_Xcodeproj().isNotComment).filter(_Xcodeproj().isBuildConfig).filter(_Xcodeproj().isNotTestHost).forEach(({
148
- 1: {
149
- buildSettings
150
- }
151
- }) => {
152
- buildSettings.CODE_SIGN_ENTITLEMENTS = `"${entitlementsRelativePath}"`;
153
- });
160
+ xcBuildConfiguration.buildSettings.CODE_SIGN_ENTITLEMENTS = entitlementsRelativePath;
161
+ }
154
162
 
163
+ if (hasChangesToWrite) {
155
164
  _fs().default.writeFileSync(project.filepath, project.writeSync());
156
- } // Clean up others
157
-
158
-
159
- deleteEntitlementsFiles(pathsToDelete);
160
- return entitlementsPath;
161
- }
162
-
163
- function deleteEntitlementsFiles(entitlementsPaths) {
164
- for (const path of entitlementsPaths) {
165
- (0, _fs2().removeFile)(path);
166
165
  }
167
166
  }
168
167
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ios/Entitlements.ts"],"names":["withAssociatedDomains","setAssociatedDomains","config","_","entitlementsPlist","ios","associatedDomains","getEntitlementsPath","projectRoot","paths","Paths","getAllEntitlementsPaths","targetPath","project","projectName","productName","entitlementsRelativePath","path","join","entitlementsPath","normalize","pathsToDelete","length","last","pop","push","template","ENTITLEMENTS_TEMPLATE","fs","readFileSync","mkdirSync","dirname","recursive","writeFileSync","Object","entries","pbxXCBuildConfigurationSection","filter","isNotComment","isBuildConfig","isNotTestHost","forEach","buildSettings","CODE_SIGN_ENTITLEMENTS","filepath","writeSync","deleteEntitlementsFiles","entitlementsPaths"],"mappings":"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","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport fs from 'fs';\nimport path from 'path';\nimport slash from 'slash';\n\nimport { createEntitlementsPlugin } from '../plugins/ios-plugins';\nimport { removeFile } from '../utils/fs';\nimport * as Paths from './Paths';\nimport {\n getPbxproj,\n getProductName,\n getProjectName,\n isBuildConfig,\n isNotComment,\n isNotTestHost,\n} from './utils/Xcodeproj';\n\nexport const withAssociatedDomains = createEntitlementsPlugin(\n setAssociatedDomains,\n 'withAssociatedDomains'\n);\n\nexport function setAssociatedDomains(\n config: ExpoConfig,\n { 'com.apple.developer.associated-domains': _, ...entitlementsPlist }: JSONObject\n): JSONObject {\n if (config.ios?.associatedDomains) {\n return {\n ...entitlementsPlist,\n 'com.apple.developer.associated-domains': config.ios.associatedDomains,\n };\n }\n\n return entitlementsPlist;\n}\n\nexport function getEntitlementsPath(projectRoot: string): string {\n const paths = Paths.getAllEntitlementsPaths(projectRoot);\n let targetPath: string | null = null;\n\n /**\n * Add file to pbxproj under CODE_SIGN_ENTITLEMENTS\n */\n const project = getPbxproj(projectRoot);\n const projectName = getProjectName(projectRoot);\n const productName = getProductName(project);\n\n // Use posix formatted path, even on Windows\n const entitlementsRelativePath = slash(path.join(projectName, `${productName}.entitlements`));\n const entitlementsPath = slash(\n path.normalize(path.join(projectRoot, 'ios', entitlementsRelativePath))\n );\n\n const pathsToDelete: string[] = [];\n\n while (paths.length) {\n const last = slash(path.normalize(paths.pop()!));\n if (last !== entitlementsPath) {\n pathsToDelete.push(last);\n } else {\n targetPath = last;\n }\n }\n\n // Create a new entitlements file\n if (!targetPath) {\n targetPath = entitlementsPath;\n\n // Use the default template\n let template = ENTITLEMENTS_TEMPLATE;\n\n // If an old entitlements file exists, copy it's contents into the new file.\n if (pathsToDelete.length) {\n // Get the last entitlements file and use it as the template\n const last = pathsToDelete[pathsToDelete.length - 1]!;\n template = fs.readFileSync(last, 'utf8');\n }\n\n fs.mkdirSync(path.dirname(entitlementsPath), { recursive: true });\n fs.writeFileSync(entitlementsPath, template);\n\n Object.entries(project.pbxXCBuildConfigurationSection())\n .filter(isNotComment)\n .filter(isBuildConfig)\n .filter(isNotTestHost)\n .forEach(({ 1: { buildSettings } }: any) => {\n buildSettings.CODE_SIGN_ENTITLEMENTS = `\"${entitlementsRelativePath}\"`;\n });\n fs.writeFileSync(project.filepath, project.writeSync());\n }\n\n // Clean up others\n deleteEntitlementsFiles(pathsToDelete);\n\n return entitlementsPath;\n}\n\nfunction deleteEntitlementsFiles(entitlementsPaths: string[]) {\n for (const path of entitlementsPaths) {\n removeFile(path);\n }\n}\n\nconst ENTITLEMENTS_TEMPLATE = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n</dict>\n</plist>\n`;\n"],"file":"Entitlements.js"}
1
+ {"version":3,"sources":["../../src/ios/Entitlements.ts"],"names":["withAssociatedDomains","setAssociatedDomains","config","_","entitlementsPlist","ios","associatedDomains","getEntitlementsPath","projectRoot","targetName","buildConfiguration","project","xcBuildConfiguration","entitlementsPath","getEntitlementsPathFromBuildConfiguration","fs","existsSync","entitlementsPathRaw","buildSettings","CODE_SIGN_ENTITLEMENTS","path","normalize","join","ensureApplicationTargetEntitlementsFileConfigured","projectName","productName","applicationTarget","buildConfigurations","buildConfigurationList","hasChangesToWrite","oldEntitlementPath","entitlementsRelativePath","mkdirSync","dirname","recursive","writeFileSync","ENTITLEMENTS_TEMPLATE","filepath","writeSync"],"mappings":"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","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport fs from 'fs';\nimport path from 'path';\nimport slash from 'slash';\nimport { XCBuildConfiguration } from 'xcode';\n\nimport { createEntitlementsPlugin } from '../plugins/ios-plugins';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport {\n getBuildConfigurationsForListId,\n getPbxproj,\n getProductName,\n getProjectName,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withAssociatedDomains = createEntitlementsPlugin(\n setAssociatedDomains,\n 'withAssociatedDomains'\n);\n\nexport function setAssociatedDomains(\n config: ExpoConfig,\n { 'com.apple.developer.associated-domains': _, ...entitlementsPlist }: JSONObject\n): JSONObject {\n if (config.ios?.associatedDomains) {\n return {\n ...entitlementsPlist,\n 'com.apple.developer.associated-domains': config.ios.associatedDomains,\n };\n }\n\n return entitlementsPlist;\n}\n\nexport function getEntitlementsPath(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n const project = getPbxproj(projectRoot);\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n const entitlementsPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n return entitlementsPath && fs.existsSync(entitlementsPath) ? entitlementsPath : null;\n}\n\nfunction getEntitlementsPathFromBuildConfiguration(\n projectRoot: string,\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const entitlementsPathRaw = xcBuildConfiguration?.buildSettings?.CODE_SIGN_ENTITLEMENTS as\n | string\n | undefined;\n if (entitlementsPathRaw) {\n return path.normalize(path.join(projectRoot, 'ios', trimQuotes(entitlementsPathRaw)));\n } else {\n return null;\n }\n}\n\nexport function ensureApplicationTargetEntitlementsFileConfigured(projectRoot: string): void {\n const project = getPbxproj(projectRoot);\n const projectName = getProjectName(projectRoot);\n const productName = getProductName(project);\n\n const [, applicationTarget] = findFirstNativeTarget(project);\n const buildConfigurations = getBuildConfigurationsForListId(\n project,\n applicationTarget.buildConfigurationList\n );\n let hasChangesToWrite = false;\n for (const [, xcBuildConfiguration] of buildConfigurations) {\n const oldEntitlementPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n if (oldEntitlementPath && fs.existsSync(oldEntitlementPath)) {\n return;\n }\n hasChangesToWrite = true;\n // Use posix formatted path, even on Windows\n const entitlementsRelativePath = slash(path.join(projectName, `${productName}.entitlements`));\n const entitlementsPath = path.normalize(\n path.join(projectRoot, 'ios', entitlementsRelativePath)\n );\n fs.mkdirSync(path.dirname(entitlementsPath), { recursive: true });\n if (!fs.existsSync(entitlementsPath)) {\n fs.writeFileSync(entitlementsPath, ENTITLEMENTS_TEMPLATE);\n }\n xcBuildConfiguration.buildSettings.CODE_SIGN_ENTITLEMENTS = entitlementsRelativePath;\n }\n if (hasChangesToWrite) {\n fs.writeFileSync(project.filepath, project.writeSync());\n }\n}\n\nconst ENTITLEMENTS_TEMPLATE = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n</dict>\n</plist>\n`;\n"],"file":"Entitlements.js"}
@@ -148,7 +148,7 @@ async function getResolvedLocalesAsync(projectRoot, input) {
148
148
  if (typeof localeJsonPath === 'string') {
149
149
  try {
150
150
  locales[lang] = await _jsonFile().default.readAsync((0, _path().join)(projectRoot, localeJsonPath));
151
- } catch (e) {
151
+ } catch {
152
152
  // Add a warning when a json file cannot be parsed.
153
153
  (0, _warnings().addWarningIOS)(`locales.${lang}`, `Failed to parse JSON of locale file for language: ${lang}`, 'https://docs.expo.dev/distribution/app-stores/#localizing-your-ios-app');
154
154
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ios/Locales.ts"],"names":["withLocales","config","modResults","setLocalesAsync","projectRoot","modRequest","project","getLocales","locales","localesMap","getResolvedLocalesAsync","projectName","supportingDirectory","stringName","lang","localizationObj","Object","entries","dir","fs","promises","mkdir","recursive","strings","buffer","plistKey","localVersion","push","writeFile","join","groupName","group","children","some","comment","filepath","isBuildFile","verbose","input","localeJsonPath","JsonFile","readAsync","e"],"mappings":"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","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport JsonFile from '@expo/json-file';\nimport fs from 'fs';\nimport { join, relative } from 'path';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\nimport { addResourceFileToGroup, ensureGroupRecursively, getProjectName } from './utils/Xcodeproj';\n\ntype LocaleJson = Record<string, string>;\ntype ResolvedLocalesJson = Record<string, LocaleJson>;\ntype ExpoConfigLocales = NonNullable<ExpoConfig['locales']>;\n\nexport const withLocales: ConfigPlugin = config => {\n return withXcodeProject(config, async config => {\n config.modResults = await setLocalesAsync(config, {\n projectRoot: config.modRequest.projectRoot,\n project: config.modResults,\n });\n return config;\n });\n};\n\nexport function getLocales(\n config: Pick<ExpoConfig, 'locales'>\n): Record<string, string | LocaleJson> | null {\n return config.locales ?? null;\n}\n\nexport async function setLocalesAsync(\n config: Pick<ExpoConfig, 'locales'>,\n { projectRoot, project }: { projectRoot: string; project: XcodeProject }\n): Promise<XcodeProject> {\n const locales = getLocales(config);\n if (!locales) {\n return project;\n }\n // possibly validate CFBundleAllowMixedLocalizations is enabled\n const localesMap = await getResolvedLocalesAsync(projectRoot, locales);\n\n const projectName = getProjectName(projectRoot);\n const supportingDirectory = join(projectRoot, 'ios', projectName, 'Supporting');\n\n // TODO: Should we delete all before running? Revisit after we land on a lock file.\n const stringName = 'InfoPlist.strings';\n\n for (const [lang, localizationObj] of Object.entries(localesMap)) {\n const dir = join(supportingDirectory, `${lang}.lproj`);\n // await fs.ensureDir(dir);\n await fs.promises.mkdir(dir, { recursive: true });\n\n const strings = join(dir, stringName);\n const buffer = [];\n for (const [plistKey, localVersion] of Object.entries(localizationObj)) {\n buffer.push(`${plistKey} = \"${localVersion}\";`);\n }\n // Write the file to the file system.\n await fs.promises.writeFile(strings, buffer.join('\\n'));\n\n const groupName = `${projectName}/Supporting/${lang}.lproj`;\n // deep find the correct folder\n const group = ensureGroupRecursively(project, groupName);\n\n // Ensure the file doesn't already exist\n if (!group?.children.some(({ comment }) => comment === stringName)) {\n // Only write the file if it doesn't already exist.\n project = addResourceFileToGroup({\n filepath: relative(supportingDirectory, strings),\n groupName,\n project,\n isBuildFile: true,\n verbose: true,\n });\n }\n }\n\n return project;\n}\n\nexport async function getResolvedLocalesAsync(\n projectRoot: string,\n input: ExpoConfigLocales\n): Promise<ResolvedLocalesJson> {\n const locales: ResolvedLocalesJson = {};\n for (const [lang, localeJsonPath] of Object.entries(input)) {\n if (typeof localeJsonPath === 'string') {\n try {\n locales[lang] = await JsonFile.readAsync(join(projectRoot, localeJsonPath));\n } catch (e) {\n // Add a warning when a json file cannot be parsed.\n addWarningIOS(\n `locales.${lang}`,\n `Failed to parse JSON of locale file for language: ${lang}`,\n 'https://docs.expo.dev/distribution/app-stores/#localizing-your-ios-app'\n );\n }\n } else {\n // In the off chance that someone defined the locales json in the config, pass it directly to the object.\n // We do this to make the types more elegant.\n locales[lang] = localeJsonPath;\n }\n }\n\n return locales;\n}\n"],"file":"Locales.js"}
1
+ {"version":3,"sources":["../../src/ios/Locales.ts"],"names":["withLocales","config","modResults","setLocalesAsync","projectRoot","modRequest","project","getLocales","locales","localesMap","getResolvedLocalesAsync","projectName","supportingDirectory","stringName","lang","localizationObj","Object","entries","dir","fs","promises","mkdir","recursive","strings","buffer","plistKey","localVersion","push","writeFile","join","groupName","group","children","some","comment","filepath","isBuildFile","verbose","input","localeJsonPath","JsonFile","readAsync"],"mappings":"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","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport JsonFile from '@expo/json-file';\nimport fs from 'fs';\nimport { join, relative } from 'path';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\nimport { addResourceFileToGroup, ensureGroupRecursively, getProjectName } from './utils/Xcodeproj';\n\ntype LocaleJson = Record<string, string>;\ntype ResolvedLocalesJson = Record<string, LocaleJson>;\ntype ExpoConfigLocales = NonNullable<ExpoConfig['locales']>;\n\nexport const withLocales: ConfigPlugin = config => {\n return withXcodeProject(config, async config => {\n config.modResults = await setLocalesAsync(config, {\n projectRoot: config.modRequest.projectRoot,\n project: config.modResults,\n });\n return config;\n });\n};\n\nexport function getLocales(\n config: Pick<ExpoConfig, 'locales'>\n): Record<string, string | LocaleJson> | null {\n return config.locales ?? null;\n}\n\nexport async function setLocalesAsync(\n config: Pick<ExpoConfig, 'locales'>,\n { projectRoot, project }: { projectRoot: string; project: XcodeProject }\n): Promise<XcodeProject> {\n const locales = getLocales(config);\n if (!locales) {\n return project;\n }\n // possibly validate CFBundleAllowMixedLocalizations is enabled\n const localesMap = await getResolvedLocalesAsync(projectRoot, locales);\n\n const projectName = getProjectName(projectRoot);\n const supportingDirectory = join(projectRoot, 'ios', projectName, 'Supporting');\n\n // TODO: Should we delete all before running? Revisit after we land on a lock file.\n const stringName = 'InfoPlist.strings';\n\n for (const [lang, localizationObj] of Object.entries(localesMap)) {\n const dir = join(supportingDirectory, `${lang}.lproj`);\n // await fs.ensureDir(dir);\n await fs.promises.mkdir(dir, { recursive: true });\n\n const strings = join(dir, stringName);\n const buffer = [];\n for (const [plistKey, localVersion] of Object.entries(localizationObj)) {\n buffer.push(`${plistKey} = \"${localVersion}\";`);\n }\n // Write the file to the file system.\n await fs.promises.writeFile(strings, buffer.join('\\n'));\n\n const groupName = `${projectName}/Supporting/${lang}.lproj`;\n // deep find the correct folder\n const group = ensureGroupRecursively(project, groupName);\n\n // Ensure the file doesn't already exist\n if (!group?.children.some(({ comment }) => comment === stringName)) {\n // Only write the file if it doesn't already exist.\n project = addResourceFileToGroup({\n filepath: relative(supportingDirectory, strings),\n groupName,\n project,\n isBuildFile: true,\n verbose: true,\n });\n }\n }\n\n return project;\n}\n\nexport async function getResolvedLocalesAsync(\n projectRoot: string,\n input: ExpoConfigLocales\n): Promise<ResolvedLocalesJson> {\n const locales: ResolvedLocalesJson = {};\n for (const [lang, localeJsonPath] of Object.entries(input)) {\n if (typeof localeJsonPath === 'string') {\n try {\n locales[lang] = await JsonFile.readAsync(join(projectRoot, localeJsonPath));\n } catch {\n // Add a warning when a json file cannot be parsed.\n addWarningIOS(\n `locales.${lang}`,\n `Failed to parse JSON of locale file for language: ${lang}`,\n 'https://docs.expo.dev/distribution/app-stores/#localizing-your-ios-app'\n );\n }\n } else {\n // In the off chance that someone defined the locales json in the config, pass it directly to the object.\n // We do this to make the types more elegant.\n locales[lang] = localeJsonPath;\n }\n }\n\n return locales;\n}\n"],"file":"Locales.js"}
@@ -28,9 +28,7 @@ export declare function getAllInfoPlistPaths(projectRoot: string): string[];
28
28
  export declare function getInfoPlistPath(projectRoot: string): string;
29
29
  export declare function getAllEntitlementsPaths(projectRoot: string): string[];
30
30
  /**
31
- * Get the entitlements file path if it exists.
32
- *
33
- * @param projectRoot
31
+ * @deprecated: use Entitlements.getEntitlementsPath instead
34
32
  */
35
33
  export declare function getEntitlementsPath(projectRoot: string): string | null;
36
34
  export declare function getSupportingPath(projectRoot: string): string;
@@ -72,6 +72,16 @@ function _warnings() {
72
72
  return data;
73
73
  }
74
74
 
75
+ function Entitlements() {
76
+ const data = _interopRequireWildcard(require("./Entitlements"));
77
+
78
+ Entitlements = function () {
79
+ return data;
80
+ };
81
+
82
+ return data;
83
+ }
84
+
75
85
  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); }
76
86
 
77
87
  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; }
@@ -311,26 +321,12 @@ function getAllEntitlementsPaths(projectRoot) {
311
321
  return paths;
312
322
  }
313
323
  /**
314
- * Get the entitlements file path if it exists.
315
- *
316
- * @param projectRoot
324
+ * @deprecated: use Entitlements.getEntitlementsPath instead
317
325
  */
318
326
 
319
327
 
320
328
  function getEntitlementsPath(projectRoot) {
321
- const [using, ...extra] = getAllEntitlementsPaths(projectRoot);
322
-
323
- if (extra.length) {
324
- warnMultipleFiles({
325
- tag: 'entitlements',
326
- fileName: '*.entitlements',
327
- projectRoot,
328
- using,
329
- extra
330
- });
331
- }
332
-
333
- return using !== null && using !== void 0 ? using : null;
329
+ return Entitlements().getEntitlementsPath(projectRoot);
334
330
  }
335
331
 
336
332
  function getSupportingPath(projectRoot) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ios/Paths.ts"],"names":["ignoredPaths","getAppDelegateHeaderFilePath","projectRoot","using","extra","absolute","cwd","ignore","UnexpectedError","length","warnMultipleFiles","tag","fileName","getAppDelegateFilePath","getAppDelegateObjcHeaderFilePath","getLanguage","filePath","extension","path","extname","getFileInfo","normalize","contents","language","getAppDelegate","getSourceRoot","appDelegate","dirname","findSchemePaths","findSchemeNames","schemePaths","map","schemePath","parse","name","getAllXcodeProjectPaths","iosFolder","pbxprojPaths","filter","project","test","sort","a","b","isAInIos","isBInIos","value","join","getXcodeProjectPath","getAllPBXProjectPaths","projectPaths","paths","getPBXProjectPath","getAllInfoPlistPaths","getInfoPlistPath","getAllEntitlementsPaths","getEntitlementsPath","getSupportingPath","resolve","basename","getExpoPlistPath","supportingPath","usingPath","relative","extraPaths","v","JSON","stringify"],"mappings":"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","sourcesContent":["import { existsSync, readFileSync } from 'fs';\nimport { sync as globSync } from 'glob';\nimport * as path from 'path';\n\nimport { UnexpectedError } from '../utils/errors';\nimport { addWarningIOS } from '../utils/warnings';\n\nconst ignoredPaths = ['**/@(Carthage|Pods|vendor|node_modules)/**'];\n\ninterface ProjectFile<L extends string = string> {\n path: string;\n language: L;\n contents: string;\n}\n\ntype AppleLanguage = 'objc' | 'objcpp' | 'swift';\n\nexport type AppDelegateProjectFile = ProjectFile<AppleLanguage>;\n\nexport function getAppDelegateHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(\n `Could not locate a valid AppDelegate header at root: \"${projectRoot}\"`\n );\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-header',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.@(m|mm|swift)', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateObjcHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate.h at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-objc-header',\n fileName: 'AppDelegate.h',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nfunction getLanguage(filePath: string): AppleLanguage {\n const extension = path.extname(filePath);\n switch (extension) {\n case '.mm':\n return 'objcpp';\n case '.m':\n case '.h':\n return 'objc';\n case '.swift':\n return 'swift';\n default:\n throw new UnexpectedError(`Unexpected iOS file extension: ${extension}`);\n }\n}\n\nexport function getFileInfo(filePath: string) {\n return {\n path: path.normalize(filePath),\n contents: readFileSync(filePath, 'utf8'),\n language: getLanguage(filePath),\n };\n}\n\nexport function getAppDelegate(projectRoot: string): AppDelegateProjectFile {\n const filePath = getAppDelegateFilePath(projectRoot);\n return getFileInfo(filePath);\n}\n\nexport function getSourceRoot(projectRoot: string): string {\n const appDelegate = getAppDelegate(projectRoot);\n return path.dirname(appDelegate.path);\n}\n\nexport function findSchemePaths(projectRoot: string): string[] {\n return globSync('ios/*.xcodeproj/xcshareddata/xcschemes/*.xcscheme', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n}\n\nexport function findSchemeNames(projectRoot: string): string[] {\n const schemePaths = findSchemePaths(projectRoot);\n return schemePaths.map(schemePath => path.parse(schemePath).name);\n}\n\nexport function getAllXcodeProjectPaths(projectRoot: string): string[] {\n const iosFolder = 'ios';\n const pbxprojPaths = globSync('ios/**/*.xcodeproj', { cwd: projectRoot, ignore: ignoredPaths })\n .filter(project => !/test|example|sample/i.test(project) || path.dirname(project) === iosFolder)\n // sort alphabetically to ensure this works the same across different devices (Fail in CI (linux) without this)\n .sort()\n .sort((a, b) => {\n const isAInIos = path.dirname(a) === iosFolder;\n const isBInIos = path.dirname(b) === iosFolder;\n // preserve previous sort order\n if ((isAInIos && isBInIos) || (!isAInIos && !isBInIos)) {\n return 0;\n }\n return isAInIos ? -1 : 1;\n });\n\n if (!pbxprojPaths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj files relative to path \"${projectRoot}\".`\n );\n }\n return pbxprojPaths.map(value => path.join(projectRoot, value));\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getXcodeProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllXcodeProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'xcodeproj',\n fileName: '*.xcodeproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllPBXProjectPaths(projectRoot: string): string[] {\n const projectPaths = getAllXcodeProjectPaths(projectRoot);\n const paths = projectPaths\n .map(value => path.join(value, 'project.pbxproj'))\n .filter(value => existsSync(value));\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj/project.pbxproj files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getPBXProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllPBXProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'project-pbxproj',\n fileName: 'project.pbxproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllInfoPlistPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/Info.plist', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n }).sort(\n // longer name means more suffixes, we want the shortest possible one to be first.\n (a, b) => a.length - b.length\n );\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate Info.plist files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getInfoPlistPath(projectRoot: string): string {\n const [using, ...extra] = getAllInfoPlistPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'info-plist',\n fileName: 'Info.plist',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllEntitlementsPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/*.entitlements', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n return paths;\n}\n\n/**\n * Get the entitlements file path if it exists.\n *\n * @param projectRoot\n */\nexport function getEntitlementsPath(projectRoot: string): string | null {\n const [using, ...extra] = getAllEntitlementsPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'entitlements',\n fileName: '*.entitlements',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using ?? null;\n}\n\nexport function getSupportingPath(projectRoot: string): string {\n return path.resolve(projectRoot, 'ios', path.basename(getSourceRoot(projectRoot)), 'Supporting');\n}\n\nexport function getExpoPlistPath(projectRoot: string): string {\n const supportingPath = getSupportingPath(projectRoot);\n return path.join(supportingPath, 'Expo.plist');\n}\n\nfunction warnMultipleFiles({\n tag,\n fileName,\n projectRoot,\n using,\n extra,\n}: {\n tag: string;\n fileName: string;\n projectRoot?: string;\n using: string;\n extra: string[];\n}) {\n const usingPath = projectRoot ? path.relative(projectRoot, using) : using;\n const extraPaths = projectRoot ? extra.map(v => path.relative(projectRoot, v)) : extra;\n addWarningIOS(\n `paths-${tag}`,\n `Found multiple ${fileName} file paths, using \"${usingPath}\". Ignored paths: ${JSON.stringify(\n extraPaths\n )}`\n );\n}\n"],"file":"Paths.js"}
1
+ {"version":3,"sources":["../../src/ios/Paths.ts"],"names":["ignoredPaths","getAppDelegateHeaderFilePath","projectRoot","using","extra","absolute","cwd","ignore","UnexpectedError","length","warnMultipleFiles","tag","fileName","getAppDelegateFilePath","getAppDelegateObjcHeaderFilePath","getLanguage","filePath","extension","path","extname","getFileInfo","normalize","contents","language","getAppDelegate","getSourceRoot","appDelegate","dirname","findSchemePaths","findSchemeNames","schemePaths","map","schemePath","parse","name","getAllXcodeProjectPaths","iosFolder","pbxprojPaths","filter","project","test","sort","a","b","isAInIos","isBInIos","value","join","getXcodeProjectPath","getAllPBXProjectPaths","projectPaths","paths","getPBXProjectPath","getAllInfoPlistPaths","getInfoPlistPath","getAllEntitlementsPaths","getEntitlementsPath","Entitlements","getSupportingPath","resolve","basename","getExpoPlistPath","supportingPath","usingPath","relative","extraPaths","v","JSON","stringify"],"mappings":"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","sourcesContent":["import { existsSync, readFileSync } from 'fs';\nimport { sync as globSync } from 'glob';\nimport * as path from 'path';\n\nimport { UnexpectedError } from '../utils/errors';\nimport { addWarningIOS } from '../utils/warnings';\nimport * as Entitlements from './Entitlements';\n\nconst ignoredPaths = ['**/@(Carthage|Pods|vendor|node_modules)/**'];\n\ninterface ProjectFile<L extends string = string> {\n path: string;\n language: L;\n contents: string;\n}\n\ntype AppleLanguage = 'objc' | 'objcpp' | 'swift';\n\nexport type AppDelegateProjectFile = ProjectFile<AppleLanguage>;\n\nexport function getAppDelegateHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(\n `Could not locate a valid AppDelegate header at root: \"${projectRoot}\"`\n );\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-header',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.@(m|mm|swift)', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateObjcHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate.h at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-objc-header',\n fileName: 'AppDelegate.h',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nfunction getLanguage(filePath: string): AppleLanguage {\n const extension = path.extname(filePath);\n switch (extension) {\n case '.mm':\n return 'objcpp';\n case '.m':\n case '.h':\n return 'objc';\n case '.swift':\n return 'swift';\n default:\n throw new UnexpectedError(`Unexpected iOS file extension: ${extension}`);\n }\n}\n\nexport function getFileInfo(filePath: string) {\n return {\n path: path.normalize(filePath),\n contents: readFileSync(filePath, 'utf8'),\n language: getLanguage(filePath),\n };\n}\n\nexport function getAppDelegate(projectRoot: string): AppDelegateProjectFile {\n const filePath = getAppDelegateFilePath(projectRoot);\n return getFileInfo(filePath);\n}\n\nexport function getSourceRoot(projectRoot: string): string {\n const appDelegate = getAppDelegate(projectRoot);\n return path.dirname(appDelegate.path);\n}\n\nexport function findSchemePaths(projectRoot: string): string[] {\n return globSync('ios/*.xcodeproj/xcshareddata/xcschemes/*.xcscheme', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n}\n\nexport function findSchemeNames(projectRoot: string): string[] {\n const schemePaths = findSchemePaths(projectRoot);\n return schemePaths.map(schemePath => path.parse(schemePath).name);\n}\n\nexport function getAllXcodeProjectPaths(projectRoot: string): string[] {\n const iosFolder = 'ios';\n const pbxprojPaths = globSync('ios/**/*.xcodeproj', { cwd: projectRoot, ignore: ignoredPaths })\n .filter(project => !/test|example|sample/i.test(project) || path.dirname(project) === iosFolder)\n // sort alphabetically to ensure this works the same across different devices (Fail in CI (linux) without this)\n .sort()\n .sort((a, b) => {\n const isAInIos = path.dirname(a) === iosFolder;\n const isBInIos = path.dirname(b) === iosFolder;\n // preserve previous sort order\n if ((isAInIos && isBInIos) || (!isAInIos && !isBInIos)) {\n return 0;\n }\n return isAInIos ? -1 : 1;\n });\n\n if (!pbxprojPaths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj files relative to path \"${projectRoot}\".`\n );\n }\n return pbxprojPaths.map(value => path.join(projectRoot, value));\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getXcodeProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllXcodeProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'xcodeproj',\n fileName: '*.xcodeproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllPBXProjectPaths(projectRoot: string): string[] {\n const projectPaths = getAllXcodeProjectPaths(projectRoot);\n const paths = projectPaths\n .map(value => path.join(value, 'project.pbxproj'))\n .filter(value => existsSync(value));\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj/project.pbxproj files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getPBXProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllPBXProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'project-pbxproj',\n fileName: 'project.pbxproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllInfoPlistPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/Info.plist', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n }).sort(\n // longer name means more suffixes, we want the shortest possible one to be first.\n (a, b) => a.length - b.length\n );\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate Info.plist files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getInfoPlistPath(projectRoot: string): string {\n const [using, ...extra] = getAllInfoPlistPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'info-plist',\n fileName: 'Info.plist',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllEntitlementsPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/*.entitlements', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n return paths;\n}\n\n/**\n * @deprecated: use Entitlements.getEntitlementsPath instead\n */\nexport function getEntitlementsPath(projectRoot: string): string | null {\n return Entitlements.getEntitlementsPath(projectRoot);\n}\n\nexport function getSupportingPath(projectRoot: string): string {\n return path.resolve(projectRoot, 'ios', path.basename(getSourceRoot(projectRoot)), 'Supporting');\n}\n\nexport function getExpoPlistPath(projectRoot: string): string {\n const supportingPath = getSupportingPath(projectRoot);\n return path.join(supportingPath, 'Expo.plist');\n}\n\nfunction warnMultipleFiles({\n tag,\n fileName,\n projectRoot,\n using,\n extra,\n}: {\n tag: string;\n fileName: string;\n projectRoot?: string;\n using: string;\n extra: string[];\n}) {\n const usingPath = projectRoot ? path.relative(projectRoot, using) : using;\n const extraPaths = projectRoot ? extra.map(v => path.relative(projectRoot, v)) : extra;\n addWarningIOS(\n `paths-${tag}`,\n `Found multiple ${fileName} file paths, using \"${usingPath}\". Ignored paths: ${JSON.stringify(\n extraPaths\n )}`\n );\n}\n"],"file":"Paths.js"}
@@ -4,6 +4,7 @@ export declare enum TargetType {
4
4
  APPLICATION = "com.apple.product-type.application",
5
5
  EXTENSION = "com.apple.product-type.app-extension",
6
6
  WATCH = "com.apple.product-type.application.watchapp",
7
+ APP_CLIP = "com.apple.product-type.application.on-demand-install-capable",
7
8
  STICKER_PACK_EXTENSION = "com.apple.product-type.app-extension.messages-sticker-pack",
8
9
  OTHER = "other"
9
10
  }
@@ -49,6 +49,7 @@ exports.TargetType = TargetType;
49
49
  TargetType["APPLICATION"] = "com.apple.product-type.application";
50
50
  TargetType["EXTENSION"] = "com.apple.product-type.app-extension";
51
51
  TargetType["WATCH"] = "com.apple.product-type.application.watchapp";
52
+ TargetType["APP_CLIP"] = "com.apple.product-type.application.on-demand-install-capable";
52
53
  TargetType["STICKER_PACK_EXTENSION"] = "com.apple.product-type.app-extension.messages-sticker-pack";
53
54
  TargetType["OTHER"] = "other";
54
55
  })(TargetType || (exports.TargetType = TargetType = {}));
@@ -109,7 +110,16 @@ function getNativeTargets(project) {
109
110
 
110
111
  function findSignableTargets(project) {
111
112
  const targets = getNativeTargets(project);
112
- const applicationTargets = targets.filter(([, target]) => isTargetOfType(target, TargetType.APPLICATION) || isTargetOfType(target, TargetType.EXTENSION) || isTargetOfType(target, TargetType.WATCH) || isTargetOfType(target, TargetType.STICKER_PACK_EXTENSION));
113
+ const signableTargetTypes = [TargetType.APPLICATION, TargetType.APP_CLIP, TargetType.EXTENSION, TargetType.WATCH, TargetType.STICKER_PACK_EXTENSION];
114
+ const applicationTargets = targets.filter(([, target]) => {
115
+ for (const targetType of signableTargetTypes) {
116
+ if (isTargetOfType(target, targetType)) {
117
+ return true;
118
+ }
119
+ }
120
+
121
+ return false;
122
+ });
113
123
 
114
124
  if (applicationTargets.length === 0) {
115
125
  throw new Error(`Could not find any signable targets in project.pbxproj`);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ios/Target.ts"],"names":["TargetType","getXCBuildConfigurationFromPbxproj","project","targetName","buildConfiguration","nativeTarget","findNativeTargetByName","findFirstNativeTarget","xcBuildConfiguration","configurationListId","buildConfigurationList","findApplicationTargetWithDependenciesAsync","projectRoot","scheme","applicationTargetName","applicationTarget","dependencies","getTargetDependencies","name","type","APPLICATION","parentTarget","length","undefined","map","value","target","targetId","getPBXGroupByKeyAndType","findNativeTargetById","isTargetOfType","EXTENSION","OTHER","targetType","productType","getNativeTargets","section","pbxNativeTargetSection","Object","entries","filter","isNotComment","findSignableTargets","targets","applicationTargets","WATCH","STICKER_PACK_EXTENSION","Error","nativeTargets","nativeTargetEntry","find","i","key"],"mappings":"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","sourcesContent":["import { PBXNativeTarget, PBXTargetDependency, XCBuildConfiguration, XcodeProject } from 'xcode';\n\nimport { getApplicationTargetNameForSchemeAsync } from './BuildScheme';\nimport {\n getBuildConfigurationForListIdAndName,\n getPbxproj,\n isNotComment,\n NativeTargetSectionEntry,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport enum TargetType {\n APPLICATION = 'com.apple.product-type.application',\n EXTENSION = 'com.apple.product-type.app-extension',\n WATCH = 'com.apple.product-type.application.watchapp',\n STICKER_PACK_EXTENSION = 'com.apple.product-type.app-extension.messages-sticker-pack',\n OTHER = 'other',\n}\n\nexport interface Target {\n name: string;\n type: TargetType;\n dependencies?: Target[];\n}\n\nexport function getXCBuildConfigurationFromPbxproj(\n project: XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): XCBuildConfiguration | null {\n const [, nativeTarget] = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [, xcBuildConfiguration] = getBuildConfigurationForListIdAndName(project, {\n configurationListId: nativeTarget.buildConfigurationList,\n buildConfiguration,\n });\n return xcBuildConfiguration ?? null;\n}\n\nexport async function findApplicationTargetWithDependenciesAsync(\n projectRoot: string,\n scheme: string\n): Promise<Target> {\n const applicationTargetName = await getApplicationTargetNameForSchemeAsync(projectRoot, scheme);\n const project = getPbxproj(projectRoot);\n const [, applicationTarget] = findNativeTargetByName(project, applicationTargetName);\n const dependencies = getTargetDependencies(project, applicationTarget);\n return {\n name: trimQuotes(applicationTarget.name),\n type: TargetType.APPLICATION,\n dependencies,\n };\n}\n\nfunction getTargetDependencies(\n project: XcodeProject,\n parentTarget: PBXNativeTarget\n): Target[] | undefined {\n if (!parentTarget.dependencies || parentTarget.dependencies.length === 0) {\n return undefined;\n }\n return parentTarget.dependencies.map(({ value }) => {\n const { target: targetId } = project.getPBXGroupByKeyAndType(\n value,\n 'PBXTargetDependency'\n ) as PBXTargetDependency;\n\n const [, target] = findNativeTargetById(project, targetId);\n\n const type = isTargetOfType(target, TargetType.EXTENSION)\n ? TargetType.EXTENSION\n : TargetType.OTHER;\n return {\n name: trimQuotes(target.name),\n type,\n dependencies: getTargetDependencies(project, target),\n };\n });\n}\n\nexport function isTargetOfType(target: PBXNativeTarget, targetType: TargetType): boolean {\n return trimQuotes(target.productType) === targetType;\n}\n\nexport function getNativeTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const section = project.pbxNativeTargetSection();\n return Object.entries(section).filter(isNotComment);\n}\n\nexport function findSignableTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(\n ([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION) ||\n isTargetOfType(target, TargetType.EXTENSION) ||\n isTargetOfType(target, TargetType.WATCH) ||\n isTargetOfType(target, TargetType.STICKER_PACK_EXTENSION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any signable targets in project.pbxproj`);\n }\n return applicationTargets;\n}\n\nexport function findFirstNativeTarget(project: XcodeProject): NativeTargetSectionEntry {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any application target in project.pbxproj`);\n }\n return applicationTargets[0];\n}\n\nexport function findNativeTargetByName(\n project: XcodeProject,\n targetName: string\n): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([, i]) => trimQuotes(i.name) === targetName);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target '${targetName}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n\nfunction findNativeTargetById(project: XcodeProject, targetId: string): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([key]) => key === targetId);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target with id '${targetId}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n"],"file":"Target.js"}
1
+ {"version":3,"sources":["../../src/ios/Target.ts"],"names":["TargetType","getXCBuildConfigurationFromPbxproj","project","targetName","buildConfiguration","nativeTarget","findNativeTargetByName","findFirstNativeTarget","xcBuildConfiguration","configurationListId","buildConfigurationList","findApplicationTargetWithDependenciesAsync","projectRoot","scheme","applicationTargetName","applicationTarget","dependencies","getTargetDependencies","name","type","APPLICATION","parentTarget","length","undefined","map","value","target","targetId","getPBXGroupByKeyAndType","findNativeTargetById","isTargetOfType","EXTENSION","OTHER","targetType","productType","getNativeTargets","section","pbxNativeTargetSection","Object","entries","filter","isNotComment","findSignableTargets","targets","signableTargetTypes","APP_CLIP","WATCH","STICKER_PACK_EXTENSION","applicationTargets","Error","nativeTargets","nativeTargetEntry","find","i","key"],"mappings":"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","sourcesContent":["import { PBXNativeTarget, PBXTargetDependency, XCBuildConfiguration, XcodeProject } from 'xcode';\n\nimport { getApplicationTargetNameForSchemeAsync } from './BuildScheme';\nimport {\n getBuildConfigurationForListIdAndName,\n getPbxproj,\n isNotComment,\n NativeTargetSectionEntry,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport enum TargetType {\n APPLICATION = 'com.apple.product-type.application',\n EXTENSION = 'com.apple.product-type.app-extension',\n WATCH = 'com.apple.product-type.application.watchapp',\n APP_CLIP = 'com.apple.product-type.application.on-demand-install-capable',\n STICKER_PACK_EXTENSION = 'com.apple.product-type.app-extension.messages-sticker-pack',\n OTHER = 'other',\n}\n\nexport interface Target {\n name: string;\n type: TargetType;\n dependencies?: Target[];\n}\n\nexport function getXCBuildConfigurationFromPbxproj(\n project: XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): XCBuildConfiguration | null {\n const [, nativeTarget] = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [, xcBuildConfiguration] = getBuildConfigurationForListIdAndName(project, {\n configurationListId: nativeTarget.buildConfigurationList,\n buildConfiguration,\n });\n return xcBuildConfiguration ?? null;\n}\n\nexport async function findApplicationTargetWithDependenciesAsync(\n projectRoot: string,\n scheme: string\n): Promise<Target> {\n const applicationTargetName = await getApplicationTargetNameForSchemeAsync(projectRoot, scheme);\n const project = getPbxproj(projectRoot);\n const [, applicationTarget] = findNativeTargetByName(project, applicationTargetName);\n const dependencies = getTargetDependencies(project, applicationTarget);\n return {\n name: trimQuotes(applicationTarget.name),\n type: TargetType.APPLICATION,\n dependencies,\n };\n}\n\nfunction getTargetDependencies(\n project: XcodeProject,\n parentTarget: PBXNativeTarget\n): Target[] | undefined {\n if (!parentTarget.dependencies || parentTarget.dependencies.length === 0) {\n return undefined;\n }\n return parentTarget.dependencies.map(({ value }) => {\n const { target: targetId } = project.getPBXGroupByKeyAndType(\n value,\n 'PBXTargetDependency'\n ) as PBXTargetDependency;\n\n const [, target] = findNativeTargetById(project, targetId);\n\n const type = isTargetOfType(target, TargetType.EXTENSION)\n ? TargetType.EXTENSION\n : TargetType.OTHER;\n return {\n name: trimQuotes(target.name),\n type,\n dependencies: getTargetDependencies(project, target),\n };\n });\n}\n\nexport function isTargetOfType(target: PBXNativeTarget, targetType: TargetType): boolean {\n return trimQuotes(target.productType) === targetType;\n}\n\nexport function getNativeTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const section = project.pbxNativeTargetSection();\n return Object.entries(section).filter(isNotComment);\n}\n\nexport function findSignableTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const targets = getNativeTargets(project);\n\n const signableTargetTypes = [\n TargetType.APPLICATION,\n TargetType.APP_CLIP,\n TargetType.EXTENSION,\n TargetType.WATCH,\n TargetType.STICKER_PACK_EXTENSION,\n ];\n\n const applicationTargets = targets.filter(([, target]) => {\n for (const targetType of signableTargetTypes) {\n if (isTargetOfType(target, targetType)) {\n return true;\n }\n }\n return false;\n });\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any signable targets in project.pbxproj`);\n }\n return applicationTargets;\n}\n\nexport function findFirstNativeTarget(project: XcodeProject): NativeTargetSectionEntry {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any application target in project.pbxproj`);\n }\n return applicationTargets[0];\n}\n\nexport function findNativeTargetByName(\n project: XcodeProject,\n targetName: string\n): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([, i]) => trimQuotes(i.name) === targetName);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target '${targetName}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n\nfunction findNativeTargetById(project: XcodeProject, targetId: string): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([key]) => key === targetId);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target with id '${targetId}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n"],"file":"Target.js"}
@@ -1,11 +1,11 @@
1
1
  import * as Bitcode from './Bitcode';
2
+ import * as BuildProperties from './BuildProperties';
2
3
  import * as BuildScheme from './BuildScheme';
3
4
  import * as BundleIdentifier from './BundleIdentifier';
4
5
  import * as DeviceFamily from './DeviceFamily';
5
6
  import * as Entitlements from './Entitlements';
6
7
  import * as Google from './Google';
7
8
  import { ExpoPlist, InfoPlist } from './IosConfig.types';
8
- import * as JsEngine from './JsEngine';
9
9
  import * as Locales from './Locales';
10
10
  import * as Maps from './Maps';
11
11
  import * as Name from './Name';
@@ -23,4 +23,4 @@ import * as Version from './Version';
23
23
  import * as XcodeProjectFile from './XcodeProjectFile';
24
24
  import * as XcodeUtils from './utils/Xcodeproj';
25
25
  export { InfoPlist, ExpoPlist, Entitlements, Paths, Permissions, XcodeUtils };
26
- export { Bitcode, BundleIdentifier, BuildScheme, DeviceFamily, Google, Maps, Locales, JsEngine, Name, Orientation, ProvisioningProfile, RequiresFullScreen, Scheme, Swift, Target, Updates, UsesNonExemptEncryption, Version, XcodeProjectFile, };
26
+ export { Bitcode, BundleIdentifier, BuildProperties, BuildScheme, DeviceFamily, Google, Maps, Locales, Name, Orientation, ProvisioningProfile, RequiresFullScreen, Scheme, Swift, Target, Updates, UsesNonExemptEncryption, Version, XcodeProjectFile, };
@@ -3,7 +3,7 @@
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
+ exports.Entitlements = exports.DeviceFamily = exports.BundleIdentifier = exports.BuildScheme = exports.BuildProperties = exports.Bitcode = void 0;
7
7
  Object.defineProperty(exports, "ExpoPlist", {
8
8
  enumerable: true,
9
9
  get: function () {
@@ -17,7 +17,7 @@ Object.defineProperty(exports, "InfoPlist", {
17
17
  return _IosConfig().InfoPlist;
18
18
  }
19
19
  });
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;
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 = void 0;
21
21
 
22
22
  function Bitcode() {
23
23
  const data = _interopRequireWildcard(require("./Bitcode"));
@@ -36,6 +36,23 @@ Object.defineProperty(exports, "Bitcode", {
36
36
  }
37
37
  });
38
38
 
39
+ function BuildProperties() {
40
+ const data = _interopRequireWildcard(require("./BuildProperties"));
41
+
42
+ BuildProperties = function () {
43
+ return data;
44
+ };
45
+
46
+ return data;
47
+ }
48
+
49
+ Object.defineProperty(exports, "BuildProperties", {
50
+ enumerable: true,
51
+ get: function () {
52
+ return BuildProperties();
53
+ }
54
+ });
55
+
39
56
  function BuildScheme() {
40
57
  const data = _interopRequireWildcard(require("./BuildScheme"));
41
58
 
@@ -131,23 +148,6 @@ function _IosConfig() {
131
148
  return data;
132
149
  }
133
150
 
134
- function JsEngine() {
135
- const data = _interopRequireWildcard(require("./JsEngine"));
136
-
137
- JsEngine = function () {
138
- return data;
139
- };
140
-
141
- return data;
142
- }
143
-
144
- Object.defineProperty(exports, "JsEngine", {
145
- enumerable: true,
146
- get: function () {
147
- return JsEngine();
148
- }
149
- });
150
-
151
151
  function Locales() {
152
152
  const data = _interopRequireWildcard(require("./Locales"));
153
153
 
@@ -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","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"}
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 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 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};\n"],"file":"index.js"}