expo-modules-autolinking 2.1.1 → 2.1.3
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.
- package/CHANGELOG.md +11 -0
- package/android/expo-gradle-plugin/expo-autolinking-settings-plugin/src/main/kotlin/expo/modules/plugin/SettingsManager.kt +1 -1
- package/build/ExpoModuleConfig.js +2 -2
- package/build/ExpoModuleConfig.js.map +1 -1
- package/build/autolinking/findModules.js +1 -2
- package/build/autolinking/findModules.js.map +1 -1
- package/build/autolinking/generatePackageList.js +2 -3
- package/build/autolinking/generatePackageList.js.map +1 -1
- package/build/autolinking/getConfiguration.js +1 -2
- package/build/autolinking/getConfiguration.js.map +1 -1
- package/build/autolinking/index.js +3 -3
- package/build/autolinking/index.js.map +1 -1
- package/build/autolinking/mergeLinkingOptions.js +4 -5
- package/build/autolinking/mergeLinkingOptions.js.map +1 -1
- package/build/autolinking/resolveModules.js +2 -3
- package/build/autolinking/resolveModules.js.map +1 -1
- package/build/autolinking/utils.js +2 -3
- package/build/autolinking/utils.js.map +1 -1
- package/build/autolinking/verifySearchResults.js +1 -2
- package/build/autolinking/verifySearchResults.js.map +1 -1
- package/build/fileUtils.d.ts +0 -1
- package/build/fileUtils.js +3 -4
- package/build/fileUtils.js.map +1 -1
- package/build/index.js.map +1 -1
- package/build/platforms/android.d.ts +1 -0
- package/build/platforms/android.js +22 -13
- package/build/platforms/android.js.map +1 -1
- package/build/platforms/apple.js +5 -6
- package/build/platforms/apple.js.map +1 -1
- package/build/platforms/devtools.js +2 -3
- package/build/platforms/devtools.js.map +1 -1
- package/build/reactNativeConfig/androidResolver.d.ts +0 -1
- package/build/reactNativeConfig/androidResolver.js +7 -8
- package/build/reactNativeConfig/androidResolver.js.map +1 -1
- package/build/reactNativeConfig/config.js +1 -2
- package/build/reactNativeConfig/config.js.map +1 -1
- package/build/reactNativeConfig/iosResolver.js +1 -2
- package/build/reactNativeConfig/iosResolver.js.map +1 -1
- package/build/reactNativeConfig/reactNativeConfig.d.ts +1 -0
- package/build/reactNativeConfig/reactNativeConfig.js +36 -5
- package/build/reactNativeConfig/reactNativeConfig.js.map +1 -1
- package/package.json +3 -3
- package/src/platforms/android.ts +19 -4
- package/src/reactNativeConfig/reactNativeConfig.ts +45 -0
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import commander from 'commander';\nimport path from 'path';\n\nimport {\n findModulesAsync,\n generateModulesProviderAsync,\n generatePackageListAsync,\n getConfiguration,\n getProjectPackageJsonPathAsync,\n mergeLinkingOptionsAsync,\n resolveExtraBuildDependenciesAsync,\n resolveModulesAsync,\n verifySearchResults,\n} from './autolinking';\nimport { type RNConfigCommandOptions, createReactNativeConfigAsync } from './reactNativeConfig';\nimport type {\n ModuleDescriptor,\n CommonNativeModuleDescriptor,\n GenerateModulesProviderOptions,\n GenerateOptions,\n ResolveOptions,\n SearchOptions,\n SearchResults,\n ModuleDescriptorAndroid,\n ModuleDescriptorIos,\n} from './types';\n\nfunction hasCoreFeatures(\n module: ModuleDescriptor\n): module is ModuleDescriptorAndroid | ModuleDescriptorIos {\n return (module as CommonNativeModuleDescriptor).coreFeatures !== undefined;\n}\n\n/**\n * Registers a command that only searches for available expo modules.\n */\nfunction registerSearchCommand<OptionsType extends SearchOptions>(\n commandName: string,\n fn: (search: SearchResults, options: OptionsType) => any\n) {\n return commander\n .command(`${commandName} [paths...]`)\n .option<string[] | null>(\n '-i, --ignore-paths <ignorePaths...>',\n 'Paths to ignore when looking up for modules.',\n (value, previous) => (previous ?? []).concat(value)\n )\n .option<string[] | null>(\n '-e, --exclude <exclude...>',\n 'Package names to exclude when looking up for modules.',\n (value, previous) => (previous ?? []).concat(value)\n )\n .option(\n '-p, --platform [platform]',\n 'The platform that the resulting modules must support. Available options: \"apple\", \"android\"',\n 'apple'\n )\n .option('--silent', 'Silence resolution warnings')\n .addOption(\n new commander.Option(\n '--project-root <projectRoot>',\n 'The path to the root of the project'\n ).default(process.cwd(), 'process.cwd()')\n )\n .option(\n '--only-project-deps',\n 'For a monorepo, include only modules that are the project dependencies.',\n true\n )\n .option('--no-only-project-deps', 'Opposite of --only-project-deps', false)\n .action(async (searchPaths, providedOptions) => {\n const options = await mergeLinkingOptionsAsync<OptionsType>(\n searchPaths.length > 0\n ? {\n ...providedOptions,\n searchPaths,\n }\n : providedOptions\n );\n const searchResults = await findModulesAsync(options);\n return await fn(searchResults, options);\n });\n}\n\n/**\n * Registers a command that searches for modules and then resolves them for specific platform.\n */\nfunction registerResolveCommand<OptionsType extends ResolveOptions>(\n commandName: string,\n fn: (search: SearchResults, options: OptionsType) => any\n) {\n return registerSearchCommand<OptionsType>(commandName, fn);\n}\n\n/**\n * Registry the `react-native-config` command.\n */\nfunction registerReactNativeConfigCommand() {\n return commander\n .command('react-native-config [paths...]')\n .option(\n '-p, --platform [platform]',\n 'The platform that the resulting modules must support. Available options: \"android\", \"ios\"',\n 'ios'\n )\n .addOption(\n new commander.Option(\n '--project-root <projectRoot>',\n 'The path to the root of the project'\n ).default(process.cwd(), 'process.cwd()')\n )\n .option<boolean>('-j, --json', 'Output results in the plain JSON format.', () => true, false)\n .action(async (searchPaths, providedOptions) => {\n if (!['android', 'ios'].includes(providedOptions.platform)) {\n throw new Error(`Unsupported platform: ${providedOptions.platform}`);\n }\n const projectRoot = path.dirname(\n await getProjectPackageJsonPathAsync(providedOptions.projectRoot)\n );\n const linkingOptions = await mergeLinkingOptionsAsync<SearchOptions>(\n searchPaths.length > 0\n ? {\n ...providedOptions,\n projectRoot,\n searchPaths,\n }\n : {\n ...providedOptions,\n projectRoot,\n }\n );\n const options: RNConfigCommandOptions = {\n platform: linkingOptions.platform,\n projectRoot,\n searchPaths: linkingOptions.searchPaths,\n };\n const results = await createReactNativeConfigAsync(options);\n if (providedOptions.json) {\n console.log(JSON.stringify(results));\n } else {\n console.log(require('util').inspect(results, false, null, true));\n }\n });\n}\n\nmodule.exports = async function (args: string[]) {\n // Searches for available expo modules.\n registerSearchCommand<SearchOptions & { json?: boolean }>('search', async (results, options) => {\n if (options.json) {\n console.log(JSON.stringify(results));\n } else {\n console.log(require('util').inspect(results, false, null, true));\n }\n }).option<boolean>('-j, --json', 'Output results in the plain JSON format.', () => true, false);\n\n // Checks whether there are no resolving issues in the current setup.\n registerSearchCommand('verify', (results, options) => {\n const numberOfDuplicates = verifySearchResults(results, options);\n if (!numberOfDuplicates) {\n console.log('✅ Everything is fine!');\n }\n });\n\n // Searches for available expo modules and resolves the results for given platform.\n registerResolveCommand('resolve', async (results, options) => {\n const modules = await resolveModulesAsync(results, options);\n const extraDependencies = await resolveExtraBuildDependenciesAsync(options);\n const configuration = getConfiguration(options);\n\n const coreFeatures = [\n ...modules.reduce<Set<string>>((acc, module) => {\n if (hasCoreFeatures(module)) {\n const features = module.coreFeatures ?? [];\n for (const feature of features) {\n acc.add(feature);\n }\n return acc;\n }\n\n return acc;\n }, new Set()),\n ];\n if (options.json) {\n console.log(\n JSON.stringify({\n extraDependencies,\n coreFeatures,\n modules,\n ...(configuration ? { configuration } : {}),\n })\n );\n } else {\n console.log(\n require('util').inspect(\n {\n extraDependencies,\n coreFeatures,\n modules,\n ...(configuration ? { configuration } : {}),\n },\n false,\n null,\n true\n )\n );\n }\n }).option<boolean>('-j, --json', 'Output results in the plain JSON format.', () => true, false);\n\n // Generates a source file listing all packages to link.\n // It's deprecated for apple platforms, use `generate-modules-provider` instead.\n registerResolveCommand<GenerateOptions>('generate-package-list', async (results, options) => {\n const modules = options.empty ? [] : await resolveModulesAsync(results, options);\n generatePackageListAsync(modules, options);\n })\n .option(\n '-t, --target <path>',\n 'Path to the target file, where the package list should be written to.'\n )\n .option(\n '-n, --namespace <namespace>',\n 'Java package name under which the package list should be placed.'\n )\n .option(\n '--empty',\n 'Whether to only generate an empty list. Might be used when the user opts-out of autolinking.',\n false\n );\n\n // Generates a source file listing all packages to link in the runtime.\n registerResolveCommand<GenerateModulesProviderOptions>(\n 'generate-modules-provider',\n async (results, options) => {\n const packages = options.packages ?? [];\n const modules = await resolveModulesAsync(results, options);\n const filteredModules = modules.filter((module) => packages.includes(module.packageName));\n\n generateModulesProviderAsync(filteredModules, options);\n }\n )\n .option(\n '-t, --target <path>',\n 'Path to the target file, where the package list should be written to.'\n )\n .option('--entitlement <path>', 'Path to the Apple code signing entitlements file.')\n .option(\n '-p, --packages <packages...>',\n 'Names of the packages to include in the generated modules provider.'\n );\n\n registerReactNativeConfigCommand();\n\n await commander\n .version(require('expo-modules-autolinking/package.json').version)\n .description('CLI command that searches for Expo modules to autolink them.')\n .parseAsync(args, { from: 'user' });\n};\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import commander from 'commander';\nimport path from 'path';\n\nimport {\n findModulesAsync,\n generateModulesProviderAsync,\n generatePackageListAsync,\n getConfiguration,\n getProjectPackageJsonPathAsync,\n mergeLinkingOptionsAsync,\n resolveExtraBuildDependenciesAsync,\n resolveModulesAsync,\n verifySearchResults,\n} from './autolinking';\nimport { type RNConfigCommandOptions, createReactNativeConfigAsync } from './reactNativeConfig';\nimport type {\n ModuleDescriptor,\n CommonNativeModuleDescriptor,\n GenerateModulesProviderOptions,\n GenerateOptions,\n ResolveOptions,\n SearchOptions,\n SearchResults,\n ModuleDescriptorAndroid,\n ModuleDescriptorIos,\n} from './types';\n\nfunction hasCoreFeatures(\n module: ModuleDescriptor\n): module is ModuleDescriptorAndroid | ModuleDescriptorIos {\n return (module as CommonNativeModuleDescriptor).coreFeatures !== undefined;\n}\n\n/**\n * Registers a command that only searches for available expo modules.\n */\nfunction registerSearchCommand<OptionsType extends SearchOptions>(\n commandName: string,\n fn: (search: SearchResults, options: OptionsType) => any\n) {\n return commander\n .command(`${commandName} [paths...]`)\n .option<string[] | null>(\n '-i, --ignore-paths <ignorePaths...>',\n 'Paths to ignore when looking up for modules.',\n (value, previous) => (previous ?? []).concat(value)\n )\n .option<string[] | null>(\n '-e, --exclude <exclude...>',\n 'Package names to exclude when looking up for modules.',\n (value, previous) => (previous ?? []).concat(value)\n )\n .option(\n '-p, --platform [platform]',\n 'The platform that the resulting modules must support. Available options: \"apple\", \"android\"',\n 'apple'\n )\n .option('--silent', 'Silence resolution warnings')\n .addOption(\n new commander.Option(\n '--project-root <projectRoot>',\n 'The path to the root of the project'\n ).default(process.cwd(), 'process.cwd()')\n )\n .option(\n '--only-project-deps',\n 'For a monorepo, include only modules that are the project dependencies.',\n true\n )\n .option('--no-only-project-deps', 'Opposite of --only-project-deps', false)\n .action(async (searchPaths, providedOptions) => {\n const options = await mergeLinkingOptionsAsync<OptionsType>(\n searchPaths.length > 0\n ? {\n ...providedOptions,\n searchPaths,\n }\n : providedOptions\n );\n const searchResults = await findModulesAsync(options);\n return await fn(searchResults, options);\n });\n}\n\n/**\n * Registers a command that searches for modules and then resolves them for specific platform.\n */\nfunction registerResolveCommand<OptionsType extends ResolveOptions>(\n commandName: string,\n fn: (search: SearchResults, options: OptionsType) => any\n) {\n return registerSearchCommand<OptionsType>(commandName, fn);\n}\n\n/**\n * Registry the `react-native-config` command.\n */\nfunction registerReactNativeConfigCommand() {\n return commander\n .command('react-native-config [paths...]')\n .option(\n '-p, --platform [platform]',\n 'The platform that the resulting modules must support. Available options: \"android\", \"ios\"',\n 'ios'\n )\n .addOption(\n new commander.Option(\n '--project-root <projectRoot>',\n 'The path to the root of the project'\n ).default(process.cwd(), 'process.cwd()')\n )\n .option<boolean>('-j, --json', 'Output results in the plain JSON format.', () => true, false)\n .action(async (searchPaths, providedOptions) => {\n if (!['android', 'ios'].includes(providedOptions.platform)) {\n throw new Error(`Unsupported platform: ${providedOptions.platform}`);\n }\n const projectRoot = path.dirname(\n await getProjectPackageJsonPathAsync(providedOptions.projectRoot)\n );\n const linkingOptions = await mergeLinkingOptionsAsync<SearchOptions>(\n searchPaths.length > 0\n ? {\n ...providedOptions,\n projectRoot,\n searchPaths,\n }\n : {\n ...providedOptions,\n projectRoot,\n }\n );\n const options: RNConfigCommandOptions = {\n platform: linkingOptions.platform,\n projectRoot,\n searchPaths: linkingOptions.searchPaths,\n };\n const results = await createReactNativeConfigAsync(options);\n if (providedOptions.json) {\n console.log(JSON.stringify(results));\n } else {\n console.log(require('util').inspect(results, false, null, true));\n }\n });\n}\n\nmodule.exports = async function (args: string[]) {\n // Searches for available expo modules.\n registerSearchCommand<SearchOptions & { json?: boolean }>('search', async (results, options) => {\n if (options.json) {\n console.log(JSON.stringify(results));\n } else {\n console.log(require('util').inspect(results, false, null, true));\n }\n }).option<boolean>('-j, --json', 'Output results in the plain JSON format.', () => true, false);\n\n // Checks whether there are no resolving issues in the current setup.\n registerSearchCommand('verify', (results, options) => {\n const numberOfDuplicates = verifySearchResults(results, options);\n if (!numberOfDuplicates) {\n console.log('✅ Everything is fine!');\n }\n });\n\n // Searches for available expo modules and resolves the results for given platform.\n registerResolveCommand('resolve', async (results, options) => {\n const modules = await resolveModulesAsync(results, options);\n const extraDependencies = await resolveExtraBuildDependenciesAsync(options);\n const configuration = getConfiguration(options);\n\n const coreFeatures = [\n ...modules.reduce<Set<string>>((acc, module) => {\n if (hasCoreFeatures(module)) {\n const features = module.coreFeatures ?? [];\n for (const feature of features) {\n acc.add(feature);\n }\n return acc;\n }\n\n return acc;\n }, new Set()),\n ];\n if (options.json) {\n console.log(\n JSON.stringify({\n extraDependencies,\n coreFeatures,\n modules,\n ...(configuration ? { configuration } : {}),\n })\n );\n } else {\n console.log(\n require('util').inspect(\n {\n extraDependencies,\n coreFeatures,\n modules,\n ...(configuration ? { configuration } : {}),\n },\n false,\n null,\n true\n )\n );\n }\n }).option<boolean>('-j, --json', 'Output results in the plain JSON format.', () => true, false);\n\n // Generates a source file listing all packages to link.\n // It's deprecated for apple platforms, use `generate-modules-provider` instead.\n registerResolveCommand<GenerateOptions>('generate-package-list', async (results, options) => {\n const modules = options.empty ? [] : await resolveModulesAsync(results, options);\n generatePackageListAsync(modules, options);\n })\n .option(\n '-t, --target <path>',\n 'Path to the target file, where the package list should be written to.'\n )\n .option(\n '-n, --namespace <namespace>',\n 'Java package name under which the package list should be placed.'\n )\n .option(\n '--empty',\n 'Whether to only generate an empty list. Might be used when the user opts-out of autolinking.',\n false\n );\n\n // Generates a source file listing all packages to link in the runtime.\n registerResolveCommand<GenerateModulesProviderOptions>(\n 'generate-modules-provider',\n async (results, options) => {\n const packages = options.packages ?? [];\n const modules = await resolveModulesAsync(results, options);\n const filteredModules = modules.filter((module) => packages.includes(module.packageName));\n\n generateModulesProviderAsync(filteredModules, options);\n }\n )\n .option(\n '-t, --target <path>',\n 'Path to the target file, where the package list should be written to.'\n )\n .option('--entitlement <path>', 'Path to the Apple code signing entitlements file.')\n .option(\n '-p, --packages <packages...>',\n 'Names of the packages to include in the generated modules provider.'\n );\n\n registerReactNativeConfigCommand();\n\n await commander\n .version(require('expo-modules-autolinking/package.json').version)\n .description('CLI command that searches for Expo modules to autolink them.')\n .parseAsync(args, { from: 'user' });\n};\n"]}
|
|
@@ -7,6 +7,7 @@ export declare function generatePackageListAsync(modules: ModuleDescriptorAndroi
|
|
|
7
7
|
export declare function isAndroidProject(projectRoot: string): boolean;
|
|
8
8
|
export declare function resolveModuleAsync(packageName: string, revision: PackageRevision): Promise<ModuleDescriptorAndroid | null>;
|
|
9
9
|
export declare function resolveExtraBuildDependenciesAsync(projectNativeRoot: string): Promise<ExtraDependencies | null>;
|
|
10
|
+
export declare function resolveGradlePropertyAsync(projectNativeRoot: string, propertyKey: string): Promise<string | null>;
|
|
10
11
|
/**
|
|
11
12
|
* Converts the package name to Android's project name.
|
|
12
13
|
* `/` path will transform as `-`
|
|
@@ -3,7 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.getConfiguration = getConfiguration;
|
|
7
|
+
exports.generatePackageListAsync = generatePackageListAsync;
|
|
8
|
+
exports.isAndroidProject = isAndroidProject;
|
|
9
|
+
exports.resolveModuleAsync = resolveModuleAsync;
|
|
10
|
+
exports.resolveExtraBuildDependenciesAsync = resolveExtraBuildDependenciesAsync;
|
|
11
|
+
exports.resolveGradlePropertyAsync = resolveGradlePropertyAsync;
|
|
12
|
+
exports.convertPackageToProjectName = convertPackageToProjectName;
|
|
13
|
+
exports.convertPackageWithGradleToProjectName = convertPackageWithGradleToProjectName;
|
|
14
|
+
exports.searchGradlePropertyFirst = searchGradlePropertyFirst;
|
|
7
15
|
const fs_1 = __importDefault(require("fs"));
|
|
8
16
|
const glob_1 = require("glob");
|
|
9
17
|
const path_1 = __importDefault(require("path"));
|
|
@@ -16,7 +24,6 @@ function getConfiguration(options) {
|
|
|
16
24
|
}
|
|
17
25
|
return undefined;
|
|
18
26
|
}
|
|
19
|
-
exports.getConfiguration = getConfiguration;
|
|
20
27
|
/**
|
|
21
28
|
* Generates Java file that contains all autolinked packages.
|
|
22
29
|
*/
|
|
@@ -28,12 +35,10 @@ async function generatePackageListAsync(modules, targetPath, namespace) {
|
|
|
28
35
|
}
|
|
29
36
|
await fs_1.default.promises.writeFile(targetPath, generatedFileContent, 'utf8');
|
|
30
37
|
}
|
|
31
|
-
exports.generatePackageListAsync = generatePackageListAsync;
|
|
32
38
|
function isAndroidProject(projectRoot) {
|
|
33
39
|
return (fs_1.default.existsSync(path_1.default.join(projectRoot, 'build.gradle')) ||
|
|
34
40
|
fs_1.default.existsSync(path_1.default.join(projectRoot, 'build.gradle.kts')));
|
|
35
41
|
}
|
|
36
|
-
exports.isAndroidProject = isAndroidProject;
|
|
37
42
|
async function resolveModuleAsync(packageName, revision) {
|
|
38
43
|
// TODO: Relative source dir should be configurable through the module config.
|
|
39
44
|
// Don't link itself... :D
|
|
@@ -94,21 +99,28 @@ async function resolveModuleAsync(packageName, revision) {
|
|
|
94
99
|
...(coreFeatures.length > 0 ? { coreFeatures } : {}),
|
|
95
100
|
};
|
|
96
101
|
}
|
|
97
|
-
exports.resolveModuleAsync = resolveModuleAsync;
|
|
98
102
|
async function resolveExtraBuildDependenciesAsync(projectNativeRoot) {
|
|
103
|
+
const extraMavenReposString = await resolveGradlePropertyAsync(projectNativeRoot, ANDROID_EXTRA_BUILD_DEPS_KEY);
|
|
104
|
+
if (extraMavenReposString) {
|
|
105
|
+
try {
|
|
106
|
+
return JSON.parse(extraMavenReposString);
|
|
107
|
+
}
|
|
108
|
+
catch { }
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
async function resolveGradlePropertyAsync(projectNativeRoot, propertyKey) {
|
|
99
113
|
const propsFile = path_1.default.join(projectNativeRoot, ANDROID_PROPERTIES_FILE);
|
|
100
114
|
try {
|
|
101
115
|
const contents = await fs_1.default.promises.readFile(propsFile, 'utf8');
|
|
102
|
-
const
|
|
103
|
-
if (
|
|
104
|
-
|
|
105
|
-
return extraMavenRepos;
|
|
116
|
+
const propertyValue = searchGradlePropertyFirst(contents, propertyKey);
|
|
117
|
+
if (propertyValue) {
|
|
118
|
+
return propertyValue;
|
|
106
119
|
}
|
|
107
120
|
}
|
|
108
121
|
catch { }
|
|
109
122
|
return null;
|
|
110
123
|
}
|
|
111
|
-
exports.resolveExtraBuildDependenciesAsync = resolveExtraBuildDependenciesAsync;
|
|
112
124
|
/**
|
|
113
125
|
* Generates the string to put into the generated package list.
|
|
114
126
|
*/
|
|
@@ -196,7 +208,6 @@ async function findAndroidPackagesAsync(modules) {
|
|
|
196
208
|
function convertPackageToProjectName(packageName) {
|
|
197
209
|
return packageName.replace(/^@/g, '').replace(/\W+/g, '-');
|
|
198
210
|
}
|
|
199
|
-
exports.convertPackageToProjectName = convertPackageToProjectName;
|
|
200
211
|
/**
|
|
201
212
|
* Converts the package name and gradle file path to Android's project name.
|
|
202
213
|
* `$` to indicate subprojects
|
|
@@ -213,7 +224,6 @@ function convertPackageWithGradleToProjectName(packageName, buildGradleFile) {
|
|
|
213
224
|
const baseDir = path_1.default.dirname(buildGradleFile).replace(/\//g, '-');
|
|
214
225
|
return baseDir === 'android' ? name : `${name}$${baseDir}`;
|
|
215
226
|
}
|
|
216
|
-
exports.convertPackageWithGradleToProjectName = convertPackageWithGradleToProjectName;
|
|
217
227
|
/**
|
|
218
228
|
* Given the contents of a `gradle.properties` file,
|
|
219
229
|
* searches for a property with the given name.
|
|
@@ -237,5 +247,4 @@ function searchGradlePropertyFirst(contents, propertyName) {
|
|
|
237
247
|
}
|
|
238
248
|
return null;
|
|
239
249
|
}
|
|
240
|
-
exports.searchGradlePropertyFirst = searchGradlePropertyFirst;
|
|
241
250
|
//# sourceMappingURL=android.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"android.js","sourceRoot":"","sources":["../../src/platforms/android.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,+BAA4B;AAC5B,gDAAwB;AASxB,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AACpD,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAE/D,SAAgB,gBAAgB,CAAC,OAAuB;IACtD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC;IACzD,IAAI,eAAe,EAAE;QACnB,OAAO,EAAE,eAAe,EAAE,CAAC;KAC5B;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAND,4CAMC;AAED;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAC5C,OAAkC,EAClC,UAAkB,EAClB,SAAiB;IAEjB,MAAM,oBAAoB,GAAG,MAAM,mCAAmC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC3F,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC9B,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1D;IACD,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC;AAXD,4DAWC;AAED,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,OAAO,CACL,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACrD,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAC1D,CAAC;AACJ,CAAC;AALD,4CAKC;AAEM,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,QAAyB;IAEzB,8EAA8E;IAE9E,0BAA0B;IAC1B,IAAI,WAAW,KAAK,kCAAkC,EAAE;QACtD,OAAO,IAAI,CAAC;KACb;IAED,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CACjE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,EAAE;QACF,KAAK;QACL,SAAS,EAAE,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QAC9C,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;KAC/C,CAAC,CACH,CAAC;IAEF,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAEpE,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM;QACrC,EAAE,eAAe,CAAC,kBAAkB,CAAC;QACrC,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACnB,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEL,uFAAuF;IACvF,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,OAAO,IAAI,CAAC;SACb;QAED,OAAO;YACL,WAAW;YACX,OAAO;SACR,CAAC;KACH;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAE3D,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YACxE,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC;YACpC,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAChE,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;gBAC7D,UAAU;aACX,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAChC,MAAM,8BAA8B,GAAG,OAAO,CAAC,8BAA8B;YAC3E,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,8BAA8B,CAAC;YAClE,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,8BAA8B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAE3D,OAAO;QACL,WAAW;QACX,QAAQ;QACR,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC;AACJ,CAAC;AA5ED,gDA4EC;AAEM,KAAK,UAAU,kCAAkC,CACtD,iBAAyB;IAEzB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;IACxE,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QAChG,IAAI,qBAAqB,EAAE;YACzB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC1D,OAAO,eAAe,CAAC;SACxB;KACF;IAAC,MAAM,GAAE;IACV,OAAO,IAAI,CAAC;AACd,CAAC;AAbD,gFAaC;AAED;;GAEG;AACH,KAAK,UAAU,mCAAmC,CAChD,OAAkC,EAClC,SAAiB;IAEjB,mHAAmH;IACnH,MAAM,eAAe,GAAG,MAAM,wBAAwB,CACpD,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,CAC1D,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEzD,OAAO,WAAW,SAAS;;;;;;;;;;;EAW3B,eAAe,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,aAAa,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;;QAI1E,cAAc,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,SAAS,WAAW,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;CAapF,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAkC;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAEpE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IACnF,MAAM,UAAU,GAAI,EAAe,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChG,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAAkC;IACxE,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,sBAAsB,GAAa,EAAE,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE;YAC3C,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAChD;KACF;IAED,MAAM,OAAO,CAAC,GAAG,CACf,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,uBAAuB,EAAE;YAChD,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;QAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,WAAW,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAEnF,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;gBACzB,IAAI,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE;oBACxD,OAAO,uEAAuE,CAAC;iBAChF;qBAAM;oBACL,OAAO,qEAAqE,CAAC;iBAC9E;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,6CAA6C;YAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBACnC,SAAS;aACV;YAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAEnE,IAAI,gBAAgB,EAAE;gBACpB,MAAM,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;aACpD;SACF;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAC,WAAmB;IAC7D,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC;AAFD,kEAEC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,qCAAqC,CACnD,WAAmB,EACnB,eAAuB;IAEvB,MAAM,IAAI,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClE,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;AAC7D,CAAC;AAPD,sFAOC;AAED;;;;;;;GAOG;AACH,SAAgB,yBAAyB,CAAC,QAAgB,EAAE,YAAoB;IAC9E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,GAAG,KAAK,YAAY,EAAE;gBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/C,OAAO,KAAK,CAAC;aACd;SACF;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAdD,8DAcC","sourcesContent":["import fs from 'fs';\nimport { glob } from 'glob';\nimport path from 'path';\n\nimport type {\n ExtraDependencies,\n ModuleDescriptorAndroid,\n PackageRevision,\n ResolveOptions,\n} from '../types';\n\nconst ANDROID_PROPERTIES_FILE = 'gradle.properties';\nconst ANDROID_EXTRA_BUILD_DEPS_KEY = 'android.extraMavenRepos';\n\nexport function getConfiguration(options: ResolveOptions): Record<string, any> | undefined {\n const buildFromSource = options.android?.buildFromSource;\n if (buildFromSource) {\n return { buildFromSource };\n }\n return undefined;\n}\n\n/**\n * Generates Java file that contains all autolinked packages.\n */\nexport async function generatePackageListAsync(\n modules: ModuleDescriptorAndroid[],\n targetPath: string,\n namespace: string\n): Promise<void> {\n const generatedFileContent = await generatePackageListFileContentAsync(modules, namespace);\n const parentPath = path.dirname(targetPath);\n if (!fs.existsSync(parentPath)) {\n await fs.promises.mkdir(parentPath, { recursive: true });\n }\n await fs.promises.writeFile(targetPath, generatedFileContent, 'utf8');\n}\n\nexport function isAndroidProject(projectRoot: string): boolean {\n return (\n fs.existsSync(path.join(projectRoot, 'build.gradle')) ||\n fs.existsSync(path.join(projectRoot, 'build.gradle.kts'))\n );\n}\n\nexport async function resolveModuleAsync(\n packageName: string,\n revision: PackageRevision\n): Promise<ModuleDescriptorAndroid | null> {\n // TODO: Relative source dir should be configurable through the module config.\n\n // Don't link itself... :D\n if (packageName === '@unimodules/react-native-adapter') {\n return null;\n }\n\n const plugins = (revision.config?.androidGradlePlugins() ?? []).map(\n ({ id, group, sourceDir, applyToRootProject }) => ({\n id,\n group,\n sourceDir: path.join(revision.path, sourceDir),\n applyToRootProject: applyToRootProject ?? true,\n })\n );\n\n const defaultProjectName = convertPackageToProjectName(packageName);\n\n const androidProjects = revision.config\n ?.androidProjects(defaultProjectName)\n ?.filter((project) => {\n return !project.isDefault || isAndroidProject(path.join(revision.path, project.path));\n });\n\n // Just in case where the module doesn't have its own `build.gradle`/`settings.gradle`.\n if (!androidProjects?.length) {\n if (!plugins.length) {\n return null;\n }\n\n return {\n packageName,\n plugins,\n };\n }\n\n const projects = androidProjects.map((project) => {\n const projectPath = path.join(revision.path, project.path);\n\n const aarProjects = (project.gradleAarProjects ?? [])?.map((aarProject) => {\n const projectName = aarProject.name;\n const projectDir = path.join(projectPath, 'build', projectName);\n return {\n name: projectName,\n aarFilePath: path.join(revision.path, aarProject.aarFilePath),\n projectDir,\n };\n });\n\n const { publication } = project;\n const shouldUsePublicationScriptPath = project.shouldUsePublicationScriptPath\n ? path.join(revision.path, project.shouldUsePublicationScriptPath)\n : undefined;\n\n return {\n name: project.name,\n sourceDir: projectPath,\n modules: project.modules ?? [],\n ...(shouldUsePublicationScriptPath ? { shouldUsePublicationScriptPath } : {}),\n ...(publication ? { publication } : {}),\n ...(aarProjects?.length > 0 ? { aarProjects } : {}),\n };\n });\n\n const coreFeatures = revision.config?.coreFeatures() ?? [];\n\n return {\n packageName,\n projects,\n ...(plugins?.length > 0 ? { plugins } : {}),\n ...(coreFeatures.length > 0 ? { coreFeatures } : {}),\n };\n}\n\nexport async function resolveExtraBuildDependenciesAsync(\n projectNativeRoot: string\n): Promise<ExtraDependencies | null> {\n const propsFile = path.join(projectNativeRoot, ANDROID_PROPERTIES_FILE);\n try {\n const contents = await fs.promises.readFile(propsFile, 'utf8');\n const extraMavenReposString = searchGradlePropertyFirst(contents, ANDROID_EXTRA_BUILD_DEPS_KEY);\n if (extraMavenReposString) {\n const extraMavenRepos = JSON.parse(extraMavenReposString);\n return extraMavenRepos;\n }\n } catch {}\n return null;\n}\n\n/**\n * Generates the string to put into the generated package list.\n */\nasync function generatePackageListFileContentAsync(\n modules: ModuleDescriptorAndroid[],\n namespace: string\n): Promise<string> {\n // TODO: Instead of ignoring `expo` here, make the package class paths configurable from `expo-module.config.json`.\n const packagesClasses = await findAndroidPackagesAsync(\n modules.filter((module) => module.packageName !== 'expo')\n );\n\n const modulesClasses = await findAndroidModules(modules);\n\n return `package ${namespace};\n\nimport java.util.Arrays;\nimport java.util.List;\nimport expo.modules.core.interfaces.Package;\nimport expo.modules.kotlin.modules.Module;\nimport expo.modules.kotlin.ModulesProvider;\n\npublic class ExpoModulesPackageList implements ModulesProvider {\n private static class LazyHolder {\n static final List<Package> packagesList = Arrays.<Package>asList(\n${packagesClasses.map((packageClass) => ` new ${packageClass}()`).join(',\\n')}\n );\n\n static final List<Class<? extends Module>> modulesList = Arrays.<Class<? extends Module>>asList(\n ${modulesClasses.map((moduleClass) => ` ${moduleClass}.class`).join(',\\n')}\n );\n }\n\n public static List<Package> getPackageList() {\n return LazyHolder.packagesList;\n }\n\n @Override\n public List<Class<? extends Module>> getModulesList() {\n return LazyHolder.modulesList;\n }\n}\n`;\n}\n\nfunction findAndroidModules(modules: ModuleDescriptorAndroid[]): string[] {\n const projects = modules.flatMap((module) => module.projects ?? []);\n\n const modulesToProvide = projects.filter((project) => project.modules?.length > 0);\n const classNames = ([] as string[]).concat(...modulesToProvide.map((module) => module.modules));\n return classNames;\n}\n\nasync function findAndroidPackagesAsync(modules: ModuleDescriptorAndroid[]): Promise<string[]> {\n const classes: string[] = [];\n\n const flattenedSourceDirList: string[] = [];\n for (const module of modules) {\n for (const project of module.projects ?? []) {\n flattenedSourceDirList.push(project.sourceDir);\n }\n }\n\n await Promise.all(\n flattenedSourceDirList.map(async (sourceDir) => {\n const files = await glob('**/*Package.{java,kt}', {\n cwd: sourceDir,\n });\n\n for (const file of files) {\n const fileContent = await fs.promises.readFile(path.join(sourceDir, file), 'utf8');\n\n const packageRegex = (() => {\n if (process.env.EXPO_SHOULD_USE_LEGACY_PACKAGE_INTERFACE) {\n return /\\bimport\\s+org\\.unimodules\\.core\\.(interfaces\\.Package|BasePackage)\\b/;\n } else {\n return /\\bimport\\s+expo\\.modules\\.core\\.(interfaces\\.Package|BasePackage)\\b/;\n }\n })();\n\n // Very naive check to skip non-expo packages\n if (!packageRegex.test(fileContent)) {\n continue;\n }\n\n const classPathMatches = fileContent.match(/^package ([\\w.]+)\\b/m);\n\n if (classPathMatches) {\n const basename = path.basename(file, path.extname(file));\n classes.push(`${classPathMatches[1]}.${basename}`);\n }\n }\n })\n );\n return classes.sort();\n}\n\n/**\n * Converts the package name to Android's project name.\n * `/` path will transform as `-`\n *\n * Example: `@expo/example` + `android/build.gradle` → `expo-example`\n */\nexport function convertPackageToProjectName(packageName: string): string {\n return packageName.replace(/^@/g, '').replace(/\\W+/g, '-');\n}\n\n/**\n * Converts the package name and gradle file path to Android's project name.\n * `$` to indicate subprojects\n * `/` path will transform as `-`\n *\n * Example: `@expo/example` + `android/build.gradle` → `expo-example`\n *\n * Example: multiple projects\n * - `expo-test` + `android/build.gradle` → `react-native-third-party`\n * - `expo-test` + `subproject/build.gradle` → `react-native-third-party$subproject`\n */\nexport function convertPackageWithGradleToProjectName(\n packageName: string,\n buildGradleFile: string\n): string {\n const name = convertPackageToProjectName(packageName);\n const baseDir = path.dirname(buildGradleFile).replace(/\\//g, '-');\n return baseDir === 'android' ? name : `${name}$${baseDir}`;\n}\n\n/**\n * Given the contents of a `gradle.properties` file,\n * searches for a property with the given name.\n *\n * This function will return the first property found with the given name.\n * The implementation follows config-plugins and\n * tries to align the behavior with the `withGradleProperties` plugin.\n */\nexport function searchGradlePropertyFirst(contents: string, propertyName: string): string | null {\n const lines = contents.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n if (line && !line.startsWith('#')) {\n const eok = line.indexOf('=');\n const key = line.slice(0, eok);\n if (key === propertyName) {\n const value = line.slice(eok + 1, line.length);\n return value;\n }\n }\n }\n return null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"android.js","sourceRoot":"","sources":["../../src/platforms/android.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs';\nimport { glob } from 'glob';\nimport path from 'path';\n\nimport type {\n ExtraDependencies,\n ModuleDescriptorAndroid,\n PackageRevision,\n ResolveOptions,\n} from '../types';\n\nconst ANDROID_PROPERTIES_FILE = 'gradle.properties';\nconst ANDROID_EXTRA_BUILD_DEPS_KEY = 'android.extraMavenRepos';\n\nexport function getConfiguration(options: ResolveOptions): Record<string, any> | undefined {\n const buildFromSource = options.android?.buildFromSource;\n if (buildFromSource) {\n return { buildFromSource };\n }\n return undefined;\n}\n\n/**\n * Generates Java file that contains all autolinked packages.\n */\nexport async function generatePackageListAsync(\n modules: ModuleDescriptorAndroid[],\n targetPath: string,\n namespace: string\n): Promise<void> {\n const generatedFileContent = await generatePackageListFileContentAsync(modules, namespace);\n const parentPath = path.dirname(targetPath);\n if (!fs.existsSync(parentPath)) {\n await fs.promises.mkdir(parentPath, { recursive: true });\n }\n await fs.promises.writeFile(targetPath, generatedFileContent, 'utf8');\n}\n\nexport function isAndroidProject(projectRoot: string): boolean {\n return (\n fs.existsSync(path.join(projectRoot, 'build.gradle')) ||\n fs.existsSync(path.join(projectRoot, 'build.gradle.kts'))\n );\n}\n\nexport async function resolveModuleAsync(\n packageName: string,\n revision: PackageRevision\n): Promise<ModuleDescriptorAndroid | null> {\n // TODO: Relative source dir should be configurable through the module config.\n\n // Don't link itself... :D\n if (packageName === '@unimodules/react-native-adapter') {\n return null;\n }\n\n const plugins = (revision.config?.androidGradlePlugins() ?? []).map(\n ({ id, group, sourceDir, applyToRootProject }) => ({\n id,\n group,\n sourceDir: path.join(revision.path, sourceDir),\n applyToRootProject: applyToRootProject ?? true,\n })\n );\n\n const defaultProjectName = convertPackageToProjectName(packageName);\n\n const androidProjects = revision.config\n ?.androidProjects(defaultProjectName)\n ?.filter((project) => {\n return !project.isDefault || isAndroidProject(path.join(revision.path, project.path));\n });\n\n // Just in case where the module doesn't have its own `build.gradle`/`settings.gradle`.\n if (!androidProjects?.length) {\n if (!plugins.length) {\n return null;\n }\n\n return {\n packageName,\n plugins,\n };\n }\n\n const projects = androidProjects.map((project) => {\n const projectPath = path.join(revision.path, project.path);\n\n const aarProjects = (project.gradleAarProjects ?? [])?.map((aarProject) => {\n const projectName = aarProject.name;\n const projectDir = path.join(projectPath, 'build', projectName);\n return {\n name: projectName,\n aarFilePath: path.join(revision.path, aarProject.aarFilePath),\n projectDir,\n };\n });\n\n const { publication } = project;\n const shouldUsePublicationScriptPath = project.shouldUsePublicationScriptPath\n ? path.join(revision.path, project.shouldUsePublicationScriptPath)\n : undefined;\n\n return {\n name: project.name,\n sourceDir: projectPath,\n modules: project.modules ?? [],\n ...(shouldUsePublicationScriptPath ? { shouldUsePublicationScriptPath } : {}),\n ...(publication ? { publication } : {}),\n ...(aarProjects?.length > 0 ? { aarProjects } : {}),\n };\n });\n\n const coreFeatures = revision.config?.coreFeatures() ?? [];\n\n return {\n packageName,\n projects,\n ...(plugins?.length > 0 ? { plugins } : {}),\n ...(coreFeatures.length > 0 ? { coreFeatures } : {}),\n };\n}\n\nexport async function resolveExtraBuildDependenciesAsync(\n projectNativeRoot: string\n): Promise<ExtraDependencies | null> {\n const extraMavenReposString = await resolveGradlePropertyAsync(\n projectNativeRoot,\n ANDROID_EXTRA_BUILD_DEPS_KEY\n );\n if (extraMavenReposString) {\n try {\n return JSON.parse(extraMavenReposString);\n } catch {}\n }\n return null;\n}\n\nexport async function resolveGradlePropertyAsync(\n projectNativeRoot: string,\n propertyKey: string\n): Promise<string | null> {\n const propsFile = path.join(projectNativeRoot, ANDROID_PROPERTIES_FILE);\n try {\n const contents = await fs.promises.readFile(propsFile, 'utf8');\n const propertyValue = searchGradlePropertyFirst(contents, propertyKey);\n if (propertyValue) {\n return propertyValue;\n }\n } catch {}\n return null;\n}\n\n/**\n * Generates the string to put into the generated package list.\n */\nasync function generatePackageListFileContentAsync(\n modules: ModuleDescriptorAndroid[],\n namespace: string\n): Promise<string> {\n // TODO: Instead of ignoring `expo` here, make the package class paths configurable from `expo-module.config.json`.\n const packagesClasses = await findAndroidPackagesAsync(\n modules.filter((module) => module.packageName !== 'expo')\n );\n\n const modulesClasses = await findAndroidModules(modules);\n\n return `package ${namespace};\n\nimport java.util.Arrays;\nimport java.util.List;\nimport expo.modules.core.interfaces.Package;\nimport expo.modules.kotlin.modules.Module;\nimport expo.modules.kotlin.ModulesProvider;\n\npublic class ExpoModulesPackageList implements ModulesProvider {\n private static class LazyHolder {\n static final List<Package> packagesList = Arrays.<Package>asList(\n${packagesClasses.map((packageClass) => ` new ${packageClass}()`).join(',\\n')}\n );\n\n static final List<Class<? extends Module>> modulesList = Arrays.<Class<? extends Module>>asList(\n ${modulesClasses.map((moduleClass) => ` ${moduleClass}.class`).join(',\\n')}\n );\n }\n\n public static List<Package> getPackageList() {\n return LazyHolder.packagesList;\n }\n\n @Override\n public List<Class<? extends Module>> getModulesList() {\n return LazyHolder.modulesList;\n }\n}\n`;\n}\n\nfunction findAndroidModules(modules: ModuleDescriptorAndroid[]): string[] {\n const projects = modules.flatMap((module) => module.projects ?? []);\n\n const modulesToProvide = projects.filter((project) => project.modules?.length > 0);\n const classNames = ([] as string[]).concat(...modulesToProvide.map((module) => module.modules));\n return classNames;\n}\n\nasync function findAndroidPackagesAsync(modules: ModuleDescriptorAndroid[]): Promise<string[]> {\n const classes: string[] = [];\n\n const flattenedSourceDirList: string[] = [];\n for (const module of modules) {\n for (const project of module.projects ?? []) {\n flattenedSourceDirList.push(project.sourceDir);\n }\n }\n\n await Promise.all(\n flattenedSourceDirList.map(async (sourceDir) => {\n const files = await glob('**/*Package.{java,kt}', {\n cwd: sourceDir,\n });\n\n for (const file of files) {\n const fileContent = await fs.promises.readFile(path.join(sourceDir, file), 'utf8');\n\n const packageRegex = (() => {\n if (process.env.EXPO_SHOULD_USE_LEGACY_PACKAGE_INTERFACE) {\n return /\\bimport\\s+org\\.unimodules\\.core\\.(interfaces\\.Package|BasePackage)\\b/;\n } else {\n return /\\bimport\\s+expo\\.modules\\.core\\.(interfaces\\.Package|BasePackage)\\b/;\n }\n })();\n\n // Very naive check to skip non-expo packages\n if (!packageRegex.test(fileContent)) {\n continue;\n }\n\n const classPathMatches = fileContent.match(/^package ([\\w.]+)\\b/m);\n\n if (classPathMatches) {\n const basename = path.basename(file, path.extname(file));\n classes.push(`${classPathMatches[1]}.${basename}`);\n }\n }\n })\n );\n return classes.sort();\n}\n\n/**\n * Converts the package name to Android's project name.\n * `/` path will transform as `-`\n *\n * Example: `@expo/example` + `android/build.gradle` → `expo-example`\n */\nexport function convertPackageToProjectName(packageName: string): string {\n return packageName.replace(/^@/g, '').replace(/\\W+/g, '-');\n}\n\n/**\n * Converts the package name and gradle file path to Android's project name.\n * `$` to indicate subprojects\n * `/` path will transform as `-`\n *\n * Example: `@expo/example` + `android/build.gradle` → `expo-example`\n *\n * Example: multiple projects\n * - `expo-test` + `android/build.gradle` → `react-native-third-party`\n * - `expo-test` + `subproject/build.gradle` → `react-native-third-party$subproject`\n */\nexport function convertPackageWithGradleToProjectName(\n packageName: string,\n buildGradleFile: string\n): string {\n const name = convertPackageToProjectName(packageName);\n const baseDir = path.dirname(buildGradleFile).replace(/\\//g, '-');\n return baseDir === 'android' ? name : `${name}$${baseDir}`;\n}\n\n/**\n * Given the contents of a `gradle.properties` file,\n * searches for a property with the given name.\n *\n * This function will return the first property found with the given name.\n * The implementation follows config-plugins and\n * tries to align the behavior with the `withGradleProperties` plugin.\n */\nexport function searchGradlePropertyFirst(contents: string, propertyName: string): string | null {\n const lines = contents.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n if (line && !line.startsWith('#')) {\n const eok = line.indexOf('=');\n const key = line.slice(0, eok);\n if (key === propertyName) {\n const value = line.slice(eok + 1, line.length);\n return value;\n }\n }\n }\n return null;\n}\n"]}
|
package/build/platforms/apple.js
CHANGED
|
@@ -3,7 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.getSwiftModuleNames = getSwiftModuleNames;
|
|
7
|
+
exports.resolveModuleAsync = resolveModuleAsync;
|
|
8
|
+
exports.resolveExtraBuildDependenciesAsync = resolveExtraBuildDependenciesAsync;
|
|
9
|
+
exports.generateModulesProviderAsync = generateModulesProviderAsync;
|
|
10
|
+
exports.formatArrayOfReactDelegateHandler = formatArrayOfReactDelegateHandler;
|
|
7
11
|
const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
|
|
8
12
|
const fs_1 = __importDefault(require("fs"));
|
|
9
13
|
const glob_1 = require("glob");
|
|
@@ -30,7 +34,6 @@ function getSwiftModuleNames(pods, swiftModuleNames) {
|
|
|
30
34
|
// by default, non-alphanumeric characters in the pod name are replaced by _ in the module name
|
|
31
35
|
return pods.map((pod) => pod.podName.replace(/[^a-zA-Z0-9]/g, '_'));
|
|
32
36
|
}
|
|
33
|
-
exports.getSwiftModuleNames = getSwiftModuleNames;
|
|
34
37
|
/**
|
|
35
38
|
* Resolves module search result with additional details required for iOS platform.
|
|
36
39
|
*/
|
|
@@ -57,7 +60,6 @@ async function resolveModuleAsync(packageName, revision, options) {
|
|
|
57
60
|
...(coreFeatures.length > 0 ? { coreFeatures } : {}),
|
|
58
61
|
};
|
|
59
62
|
}
|
|
60
|
-
exports.resolveModuleAsync = resolveModuleAsync;
|
|
61
63
|
async function resolveExtraBuildDependenciesAsync(projectNativeRoot) {
|
|
62
64
|
const propsFile = path_1.default.join(projectNativeRoot, APPLE_PROPERTIES_FILE);
|
|
63
65
|
try {
|
|
@@ -72,7 +74,6 @@ async function resolveExtraBuildDependenciesAsync(projectNativeRoot) {
|
|
|
72
74
|
catch { }
|
|
73
75
|
return null;
|
|
74
76
|
}
|
|
75
|
-
exports.resolveExtraBuildDependenciesAsync = resolveExtraBuildDependenciesAsync;
|
|
76
77
|
/**
|
|
77
78
|
* Generates Swift file that contains all autolinked Swift packages.
|
|
78
79
|
*/
|
|
@@ -84,7 +85,6 @@ async function generateModulesProviderAsync(modules, targetPath, entitlementPath
|
|
|
84
85
|
await fs_1.default.promises.mkdir(parentPath, { recursive: true });
|
|
85
86
|
await fs_1.default.promises.writeFile(targetPath, generatedFileContent, 'utf8');
|
|
86
87
|
}
|
|
87
|
-
exports.generateModulesProviderAsync = generateModulesProviderAsync;
|
|
88
88
|
/**
|
|
89
89
|
* Generates the string to put into the generated package list.
|
|
90
90
|
*/
|
|
@@ -187,7 +187,6 @@ function formatArrayOfReactDelegateHandler(modules) {
|
|
|
187
187
|
return `[${values.map((value) => `\n${indent.repeat(3)}${value}`).join(',')}
|
|
188
188
|
${indent.repeat(2)}]`;
|
|
189
189
|
}
|
|
190
|
-
exports.formatArrayOfReactDelegateHandler = formatArrayOfReactDelegateHandler;
|
|
191
190
|
function wrapInDebugConfigurationCheck(indentationLevel, debugBlock, releaseBlock = null) {
|
|
192
191
|
if (releaseBlock) {
|
|
193
192
|
return `${indent.repeat(indentationLevel)}#if EXPO_CONFIGURATION_DEBUG\n${indent.repeat(indentationLevel)}${debugBlock}\n${indent.repeat(indentationLevel)}#else\n${indent.repeat(indentationLevel)}${releaseBlock}\n${indent.repeat(indentationLevel)}#endif`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apple.js","sourceRoot":"","sources":["../../src/platforms/apple.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAC3C,4CAAoB;AACpB,+BAA4B;AAC5B,gDAAwB;AAExB,4CAA+C;AAU/C,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AACxD,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;AAErD,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,KAAK,UAAU,gBAAgB,CAAC,QAAyB;IACvD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAChE,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,EAAE;QACnD,OAAO,kBAAkB,CAAC;KAC3B;IAED,MAAM,YAAY,GAAG,MAAM,IAAA,WAAI,EAAC,aAAa,EAAE;QAC7C,GAAG,EAAE,QAAQ,CAAC,IAAI;QAClB,MAAM,EAAE,CAAC,oBAAoB,CAAC;KAC/B,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,mBAAmB,CACjC,IAA4B,EAC5B,gBAAsC;IAEtC,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,EAAE;QAC/C,OAAO,gBAAgB,CAAC;KACzB;IACD,+FAA+F;IAC/F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AATD,kDASC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,QAAyB,EACzB,OAAsB;IAEtB,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACxB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC9C,OAAO,EAAE,cAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9D,UAAU,EAAE,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;KAChE,CAAC,CAAC,CAAC;IAEJ,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC7F,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAE3D,OAAO;QACL,WAAW;QACX,IAAI;QACJ,gBAAgB;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE;QAC9C,sBAAsB,EAAE,QAAQ,CAAC,MAAM,EAAE,2BAA2B,EAAE,IAAI,EAAE;QAC5E,qBAAqB,EAAE,QAAQ,CAAC,MAAM,EAAE,0BAA0B,EAAE,IAAI,EAAE;QAC1E,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,KAAK;QACrD,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC;AACJ,CAAC;AA7BD,gDA6BC;AAEM,KAAK,UAAU,kCAAkC,CACtD,iBAAyB;IAEzB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;IACtE,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,WAAW,CAAC,0BAA0B,CAAC,EAAE;YAC3C,gGAAgG;YAChG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACtE,OAAO,SAAS,CAAC;SAClB;KACF;IAAC,MAAM,GAAE;IACV,OAAO,IAAI,CAAC;AACd,CAAC;AAdD,gFAcC;AAED;;GAEG;AACI,KAAK,UAAU,4BAA4B,CAChD,OAA8B,EAC9B,UAAkB,EAClB,eAAuB;IAEvB,MAAM,SAAS,GAAG,cAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,eAAe,CAAC,CAAC;IACnE,MAAM,oBAAoB,GAAG,MAAM,mCAAmC,CACpE,OAAO,EACP,SAAS,EACT,YAAY,CACb,CAAC;IACF,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC;AAfD,oEAeC;AAED;;GAEG;AACH,KAAK,UAAU,mCAAmC,CAChD,OAA8B,EAC9B,SAAiB,EACjB,YAAuC;IAEvC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,OAAO,CAAC,MAAM;QACrB,MAAM,CAAC,sBAAsB,CAAC,MAAM;QACpC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CACtC,CAAC;IAEF,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEzE,MAAM,YAAY,GAAI,EAAe;SAClC,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;SACnE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,qBAAqB,GAAI,EAAe;SAC3C,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;SACpE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,iBAAiB,GAAI,EAAe;SACvC,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC1D,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,0BAA0B,GAAI,EAAe;SAChD,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC3D,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,sBAAsB,GAAI,EAAe,CAAC,MAAM,CACpD,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAClE,CAAC;IAEF,MAAM,+BAA+B,GAAI,EAAe,CAAC,MAAM,CAC7D,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CACnE,CAAC;IAEF,MAAM,2BAA2B,GAAG,eAAe,CAAC,MAAM,CACxD,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAClD,CAAC;IAEF,MAAM,oCAAoC,GAAG,gBAAgB,CAAC,MAAM,CAClE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAClD,CAAC;IAEF,OAAO;;;;;;;;EAQP,wBAAwB,CAAC,YAAY,CAAC;EACtC,2BAA2B,CAAC,qBAAqB,CAAC;QAC5C,SAAS;eACF,SAAS;;EAEtB,qBAAqB,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;;;;EAIpE,qBAAqB,CAAC,sBAAsB,EAAE,+BAA+B,CAAC;;;;EAI9E,6BAA6B,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;;;;kDAIhD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;;CAG7E,CAAC;AACF,CAAC;AAED,SAAS,wBAAwB,CAAC,YAAsB;IACtD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,2BAA2B,CAAC,YAAsB;IACzD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACxB,OAAO,EAAE,CAAC;KACX;IAED,OAAO,CACL,6BAA6B,CAC3B,CAAC,EACD,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACpE,GAAG,IAAI,CACT,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAoB,EAAE,kBAA4B;IAC/E,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,OAAO,6BAA6B,CAClC,CAAC,EACD,UAAU,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAC1E,UAAU,gBAAgB,EAAE,CAC7B,CAAC;KACH;SAAM;QACL,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,gBAAgB,EAAE,CAAC;KACxD;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,UAAoB;IACnD,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;EAC5F,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACtB,CAAC;AAED,SAAS,6BAA6B,CACpC,MAA6B,EAC7B,gBAAuC;IAEvC,MAAM,aAAa,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/B,OAAO,6BAA6B,CAClC,CAAC,EACD,UAAU,iCAAiC,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAC9E,UAAU,aAAa,EAAE,CAC1B,CAAC;KACH;SAAM;QACL,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,aAAa,EAAE,CAAC;KACrD;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,iCAAiC,CAAC,OAA8B;IAC9E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,qBAAqB,EAAE;YAClD,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,WAAW,eAAe,OAAO,QAAQ,CAAC,CAAC;SACjF;KACF;IACD,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;EAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACtB,CAAC;AATD,8EASC;AAED,SAAS,6BAA6B,CACpC,gBAAwB,EACxB,UAAkB,EAClB,eAA8B,IAAI;IAElC,IAAI,YAAY,EAAE;QAChB,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,iCAAiC,MAAM,CAAC,MAAM,CACrF,gBAAgB,CACjB,GAAG,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,MAAM,CAAC,MAAM,CACvE,gBAAgB,CACjB,GAAG,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;KAC9D;IAED,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,iCAAiC,MAAM,CAAC,MAAM,CACrF,gBAAgB,CACjB,GAAG,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,eAAuB;IAC3D,IAAI,CAAC,CAAC,MAAM,IAAA,2BAAe,EAAC,eAAe,CAAC,CAAC,EAAE;QAC7C,OAAO,EAAE,CAAC;KACX;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,qBAAU,EAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IAChG,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO;QACL,SAAS,EAAE,gBAAgB,CAAC,uCAAuC,CAAC,IAAI,SAAS;KAClF,CAAC;AACJ,CAAC","sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport fs from 'fs';\nimport { glob } from 'glob';\nimport path from 'path';\n\nimport { fileExistsAsync } from '../fileUtils';\nimport type {\n AppleCodeSignEntitlements,\n ExtraDependencies,\n ModuleDescriptorIos,\n ModuleIosPodspecInfo,\n PackageRevision,\n SearchOptions,\n} from '../types';\n\nconst APPLE_PROPERTIES_FILE = 'Podfile.properties.json';\nconst APPLE_EXTRA_BUILD_DEPS_KEY = 'apple.extraPods';\n\nconst indent = ' ';\n\nasync function findPodspecFiles(revision: PackageRevision): Promise<string[]> {\n const configPodspecPaths = revision.config?.applePodspecPaths();\n if (configPodspecPaths && configPodspecPaths.length) {\n return configPodspecPaths;\n }\n\n const podspecFiles = await glob('*/*.podspec', {\n cwd: revision.path,\n ignore: ['**/node_modules/**'],\n });\n\n return podspecFiles;\n}\n\nexport function getSwiftModuleNames(\n pods: ModuleIosPodspecInfo[],\n swiftModuleNames: string[] | undefined\n): string[] {\n if (swiftModuleNames && swiftModuleNames.length) {\n return swiftModuleNames;\n }\n // by default, non-alphanumeric characters in the pod name are replaced by _ in the module name\n return pods.map((pod) => pod.podName.replace(/[^a-zA-Z0-9]/g, '_'));\n}\n\n/**\n * Resolves module search result with additional details required for iOS platform.\n */\nexport async function resolveModuleAsync(\n packageName: string,\n revision: PackageRevision,\n options: SearchOptions\n): Promise<ModuleDescriptorIos | null> {\n const podspecFiles = await findPodspecFiles(revision);\n if (!podspecFiles.length) {\n return null;\n }\n\n const pods = podspecFiles.map((podspecFile) => ({\n podName: path.basename(podspecFile, path.extname(podspecFile)),\n podspecDir: path.dirname(path.join(revision.path, podspecFile)),\n }));\n\n const swiftModuleNames = getSwiftModuleNames(pods, revision.config?.appleSwiftModuleNames());\n const coreFeatures = revision.config?.coreFeatures() ?? [];\n\n return {\n packageName,\n pods,\n swiftModuleNames,\n flags: options.flags,\n modules: revision.config?.appleModules() ?? [],\n appDelegateSubscribers: revision.config?.appleAppDelegateSubscribers() ?? [],\n reactDelegateHandlers: revision.config?.appleReactDelegateHandlers() ?? [],\n debugOnly: revision.config?.appleDebugOnly() ?? false,\n ...(coreFeatures.length > 0 ? { coreFeatures } : {}),\n };\n}\n\nexport async function resolveExtraBuildDependenciesAsync(\n projectNativeRoot: string\n): Promise<ExtraDependencies | null> {\n const propsFile = path.join(projectNativeRoot, APPLE_PROPERTIES_FILE);\n try {\n const contents = await fs.promises.readFile(propsFile, 'utf8');\n const podfileJson = JSON.parse(contents);\n if (podfileJson[APPLE_EXTRA_BUILD_DEPS_KEY]) {\n // expo-build-properties would serialize the extraPods as JSON string, we should parse it again.\n const extraPods = JSON.parse(podfileJson[APPLE_EXTRA_BUILD_DEPS_KEY]);\n return extraPods;\n }\n } catch {}\n return null;\n}\n\n/**\n * Generates Swift file that contains all autolinked Swift packages.\n */\nexport async function generateModulesProviderAsync(\n modules: ModuleDescriptorIos[],\n targetPath: string,\n entitlementPath: string\n): Promise<void> {\n const className = path.basename(targetPath, path.extname(targetPath));\n const entitlements = await parseEntitlementsAsync(entitlementPath);\n const generatedFileContent = await generatePackageListFileContentAsync(\n modules,\n className,\n entitlements\n );\n const parentPath = path.dirname(targetPath);\n await fs.promises.mkdir(parentPath, { recursive: true });\n await fs.promises.writeFile(targetPath, generatedFileContent, 'utf8');\n}\n\n/**\n * Generates the string to put into the generated package list.\n */\nasync function generatePackageListFileContentAsync(\n modules: ModuleDescriptorIos[],\n className: string,\n entitlements: AppleCodeSignEntitlements\n): Promise<string> {\n const iosModules = modules.filter(\n (module) =>\n module.modules.length ||\n module.appDelegateSubscribers.length ||\n module.reactDelegateHandlers.length\n );\n\n const modulesToImport = iosModules.filter((module) => !module.debugOnly);\n const debugOnlyModules = iosModules.filter((module) => module.debugOnly);\n\n const swiftModules = ([] as string[])\n .concat(...modulesToImport.map((module) => module.swiftModuleNames))\n .filter(Boolean);\n\n const debugOnlySwiftModules = ([] as string[])\n .concat(...debugOnlyModules.map((module) => module.swiftModuleNames))\n .filter(Boolean);\n\n const modulesClassNames = ([] as string[])\n .concat(...modulesToImport.map((module) => module.modules))\n .filter(Boolean);\n\n const debugOnlyModulesClassNames = ([] as string[])\n .concat(...debugOnlyModules.map((module) => module.modules))\n .filter(Boolean);\n\n const appDelegateSubscribers = ([] as string[]).concat(\n ...modulesToImport.map((module) => module.appDelegateSubscribers)\n );\n\n const debugOnlyAppDelegateSubscribers = ([] as string[]).concat(\n ...debugOnlyModules.map((module) => module.appDelegateSubscribers)\n );\n\n const reactDelegateHandlerModules = modulesToImport.filter(\n (module) => !!module.reactDelegateHandlers.length\n );\n\n const debugOnlyReactDelegateHandlerModules = debugOnlyModules.filter(\n (module) => !!module.reactDelegateHandlers.length\n );\n\n return `/**\n * Automatically generated by expo-modules-autolinking.\n *\n * This autogenerated class provides a list of classes of native Expo modules,\n * but only these that are written in Swift and use the new API for creating Expo modules.\n */\n\nimport ExpoModulesCore\n${generateCommonImportList(swiftModules)}\n${generateDebugOnlyImportList(debugOnlySwiftModules)}\n@objc(${className})\npublic class ${className}: ModulesProvider {\n public override func getModuleClasses() -> [AnyModule.Type] {\n${generateModuleClasses(modulesClassNames, debugOnlyModulesClassNames)}\n }\n\n public override func getAppDelegateSubscribers() -> [ExpoAppDelegateSubscriber.Type] {\n${generateModuleClasses(appDelegateSubscribers, debugOnlyAppDelegateSubscribers)}\n }\n\n public override func getReactDelegateHandlers() -> [ExpoReactDelegateHandlerTupleType] {\n${generateReactDelegateHandlers(reactDelegateHandlerModules, debugOnlyReactDelegateHandlerModules)}\n }\n\n public override func getAppCodeSignEntitlements() -> AppCodeSignEntitlements {\n return AppCodeSignEntitlements.from(json: #\"${JSON.stringify(entitlements)}\"#)\n }\n}\n`;\n}\n\nfunction generateCommonImportList(swiftModules: string[]): string {\n return swiftModules.map((moduleName) => `import ${moduleName}`).join('\\n');\n}\n\nfunction generateDebugOnlyImportList(swiftModules: string[]): string {\n if (!swiftModules.length) {\n return '';\n }\n\n return (\n wrapInDebugConfigurationCheck(\n 0,\n swiftModules.map((moduleName) => `import ${moduleName}`).join('\\n')\n ) + '\\n'\n );\n}\n\nfunction generateModuleClasses(classNames: string[], debugOnlyClassName: string[]): string {\n const commonClassNames = formatArrayOfClassNames(classNames);\n if (debugOnlyClassName.length > 0) {\n return wrapInDebugConfigurationCheck(\n 2,\n `return ${formatArrayOfClassNames(classNames.concat(debugOnlyClassName))}`,\n `return ${commonClassNames}`\n );\n } else {\n return `${indent.repeat(2)}return ${commonClassNames}`;\n }\n}\n\n/**\n * Formats an array of class names to Swift's array containing these classes.\n */\nfunction formatArrayOfClassNames(classNames: string[]): string {\n return `[${classNames.map((className) => `\\n${indent.repeat(3)}${className}.self`).join(',')}\n${indent.repeat(2)}]`;\n}\n\nfunction generateReactDelegateHandlers(\n module: ModuleDescriptorIos[],\n debugOnlyModules: ModuleDescriptorIos[]\n): string {\n const commonModules = formatArrayOfReactDelegateHandler(module);\n if (debugOnlyModules.length > 0) {\n return wrapInDebugConfigurationCheck(\n 2,\n `return ${formatArrayOfReactDelegateHandler(module.concat(debugOnlyModules))}`,\n `return ${commonModules}`\n );\n } else {\n return `${indent.repeat(2)}return ${commonModules}`;\n }\n}\n\n/**\n * Formats an array of modules to Swift's array containing ReactDelegateHandlers\n */\nexport function formatArrayOfReactDelegateHandler(modules: ModuleDescriptorIos[]): string {\n const values: string[] = [];\n for (const module of modules) {\n for (const handler of module.reactDelegateHandlers) {\n values.push(`(packageName: \"${module.packageName}\", handler: ${handler}.self)`);\n }\n }\n return `[${values.map((value) => `\\n${indent.repeat(3)}${value}`).join(',')}\n${indent.repeat(2)}]`;\n}\n\nfunction wrapInDebugConfigurationCheck(\n indentationLevel: number,\n debugBlock: string,\n releaseBlock: string | null = null\n) {\n if (releaseBlock) {\n return `${indent.repeat(indentationLevel)}#if EXPO_CONFIGURATION_DEBUG\\n${indent.repeat(\n indentationLevel\n )}${debugBlock}\\n${indent.repeat(indentationLevel)}#else\\n${indent.repeat(\n indentationLevel\n )}${releaseBlock}\\n${indent.repeat(indentationLevel)}#endif`;\n }\n\n return `${indent.repeat(indentationLevel)}#if EXPO_CONFIGURATION_DEBUG\\n${indent.repeat(\n indentationLevel\n )}${debugBlock}\\n${indent.repeat(indentationLevel)}#endif`;\n}\n\nasync function parseEntitlementsAsync(entitlementPath: string): Promise<AppleCodeSignEntitlements> {\n if (!(await fileExistsAsync(entitlementPath))) {\n return {};\n }\n const { stdout } = await spawnAsync('plutil', ['-convert', 'json', '-o', '-', entitlementPath]);\n const entitlementsJson = JSON.parse(stdout);\n return {\n appGroups: entitlementsJson['com.apple.security.application-groups'] || undefined,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"apple.js","sourceRoot":"","sources":["../../src/platforms/apple.ts"],"names":[],"mappings":"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","sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport fs from 'fs';\nimport { glob } from 'glob';\nimport path from 'path';\n\nimport { fileExistsAsync } from '../fileUtils';\nimport type {\n AppleCodeSignEntitlements,\n ExtraDependencies,\n ModuleDescriptorIos,\n ModuleIosPodspecInfo,\n PackageRevision,\n SearchOptions,\n} from '../types';\n\nconst APPLE_PROPERTIES_FILE = 'Podfile.properties.json';\nconst APPLE_EXTRA_BUILD_DEPS_KEY = 'apple.extraPods';\n\nconst indent = ' ';\n\nasync function findPodspecFiles(revision: PackageRevision): Promise<string[]> {\n const configPodspecPaths = revision.config?.applePodspecPaths();\n if (configPodspecPaths && configPodspecPaths.length) {\n return configPodspecPaths;\n }\n\n const podspecFiles = await glob('*/*.podspec', {\n cwd: revision.path,\n ignore: ['**/node_modules/**'],\n });\n\n return podspecFiles;\n}\n\nexport function getSwiftModuleNames(\n pods: ModuleIosPodspecInfo[],\n swiftModuleNames: string[] | undefined\n): string[] {\n if (swiftModuleNames && swiftModuleNames.length) {\n return swiftModuleNames;\n }\n // by default, non-alphanumeric characters in the pod name are replaced by _ in the module name\n return pods.map((pod) => pod.podName.replace(/[^a-zA-Z0-9]/g, '_'));\n}\n\n/**\n * Resolves module search result with additional details required for iOS platform.\n */\nexport async function resolveModuleAsync(\n packageName: string,\n revision: PackageRevision,\n options: SearchOptions\n): Promise<ModuleDescriptorIos | null> {\n const podspecFiles = await findPodspecFiles(revision);\n if (!podspecFiles.length) {\n return null;\n }\n\n const pods = podspecFiles.map((podspecFile) => ({\n podName: path.basename(podspecFile, path.extname(podspecFile)),\n podspecDir: path.dirname(path.join(revision.path, podspecFile)),\n }));\n\n const swiftModuleNames = getSwiftModuleNames(pods, revision.config?.appleSwiftModuleNames());\n const coreFeatures = revision.config?.coreFeatures() ?? [];\n\n return {\n packageName,\n pods,\n swiftModuleNames,\n flags: options.flags,\n modules: revision.config?.appleModules() ?? [],\n appDelegateSubscribers: revision.config?.appleAppDelegateSubscribers() ?? [],\n reactDelegateHandlers: revision.config?.appleReactDelegateHandlers() ?? [],\n debugOnly: revision.config?.appleDebugOnly() ?? false,\n ...(coreFeatures.length > 0 ? { coreFeatures } : {}),\n };\n}\n\nexport async function resolveExtraBuildDependenciesAsync(\n projectNativeRoot: string\n): Promise<ExtraDependencies | null> {\n const propsFile = path.join(projectNativeRoot, APPLE_PROPERTIES_FILE);\n try {\n const contents = await fs.promises.readFile(propsFile, 'utf8');\n const podfileJson = JSON.parse(contents);\n if (podfileJson[APPLE_EXTRA_BUILD_DEPS_KEY]) {\n // expo-build-properties would serialize the extraPods as JSON string, we should parse it again.\n const extraPods = JSON.parse(podfileJson[APPLE_EXTRA_BUILD_DEPS_KEY]);\n return extraPods;\n }\n } catch {}\n return null;\n}\n\n/**\n * Generates Swift file that contains all autolinked Swift packages.\n */\nexport async function generateModulesProviderAsync(\n modules: ModuleDescriptorIos[],\n targetPath: string,\n entitlementPath: string\n): Promise<void> {\n const className = path.basename(targetPath, path.extname(targetPath));\n const entitlements = await parseEntitlementsAsync(entitlementPath);\n const generatedFileContent = await generatePackageListFileContentAsync(\n modules,\n className,\n entitlements\n );\n const parentPath = path.dirname(targetPath);\n await fs.promises.mkdir(parentPath, { recursive: true });\n await fs.promises.writeFile(targetPath, generatedFileContent, 'utf8');\n}\n\n/**\n * Generates the string to put into the generated package list.\n */\nasync function generatePackageListFileContentAsync(\n modules: ModuleDescriptorIos[],\n className: string,\n entitlements: AppleCodeSignEntitlements\n): Promise<string> {\n const iosModules = modules.filter(\n (module) =>\n module.modules.length ||\n module.appDelegateSubscribers.length ||\n module.reactDelegateHandlers.length\n );\n\n const modulesToImport = iosModules.filter((module) => !module.debugOnly);\n const debugOnlyModules = iosModules.filter((module) => module.debugOnly);\n\n const swiftModules = ([] as string[])\n .concat(...modulesToImport.map((module) => module.swiftModuleNames))\n .filter(Boolean);\n\n const debugOnlySwiftModules = ([] as string[])\n .concat(...debugOnlyModules.map((module) => module.swiftModuleNames))\n .filter(Boolean);\n\n const modulesClassNames = ([] as string[])\n .concat(...modulesToImport.map((module) => module.modules))\n .filter(Boolean);\n\n const debugOnlyModulesClassNames = ([] as string[])\n .concat(...debugOnlyModules.map((module) => module.modules))\n .filter(Boolean);\n\n const appDelegateSubscribers = ([] as string[]).concat(\n ...modulesToImport.map((module) => module.appDelegateSubscribers)\n );\n\n const debugOnlyAppDelegateSubscribers = ([] as string[]).concat(\n ...debugOnlyModules.map((module) => module.appDelegateSubscribers)\n );\n\n const reactDelegateHandlerModules = modulesToImport.filter(\n (module) => !!module.reactDelegateHandlers.length\n );\n\n const debugOnlyReactDelegateHandlerModules = debugOnlyModules.filter(\n (module) => !!module.reactDelegateHandlers.length\n );\n\n return `/**\n * Automatically generated by expo-modules-autolinking.\n *\n * This autogenerated class provides a list of classes of native Expo modules,\n * but only these that are written in Swift and use the new API for creating Expo modules.\n */\n\nimport ExpoModulesCore\n${generateCommonImportList(swiftModules)}\n${generateDebugOnlyImportList(debugOnlySwiftModules)}\n@objc(${className})\npublic class ${className}: ModulesProvider {\n public override func getModuleClasses() -> [AnyModule.Type] {\n${generateModuleClasses(modulesClassNames, debugOnlyModulesClassNames)}\n }\n\n public override func getAppDelegateSubscribers() -> [ExpoAppDelegateSubscriber.Type] {\n${generateModuleClasses(appDelegateSubscribers, debugOnlyAppDelegateSubscribers)}\n }\n\n public override func getReactDelegateHandlers() -> [ExpoReactDelegateHandlerTupleType] {\n${generateReactDelegateHandlers(reactDelegateHandlerModules, debugOnlyReactDelegateHandlerModules)}\n }\n\n public override func getAppCodeSignEntitlements() -> AppCodeSignEntitlements {\n return AppCodeSignEntitlements.from(json: #\"${JSON.stringify(entitlements)}\"#)\n }\n}\n`;\n}\n\nfunction generateCommonImportList(swiftModules: string[]): string {\n return swiftModules.map((moduleName) => `import ${moduleName}`).join('\\n');\n}\n\nfunction generateDebugOnlyImportList(swiftModules: string[]): string {\n if (!swiftModules.length) {\n return '';\n }\n\n return (\n wrapInDebugConfigurationCheck(\n 0,\n swiftModules.map((moduleName) => `import ${moduleName}`).join('\\n')\n ) + '\\n'\n );\n}\n\nfunction generateModuleClasses(classNames: string[], debugOnlyClassName: string[]): string {\n const commonClassNames = formatArrayOfClassNames(classNames);\n if (debugOnlyClassName.length > 0) {\n return wrapInDebugConfigurationCheck(\n 2,\n `return ${formatArrayOfClassNames(classNames.concat(debugOnlyClassName))}`,\n `return ${commonClassNames}`\n );\n } else {\n return `${indent.repeat(2)}return ${commonClassNames}`;\n }\n}\n\n/**\n * Formats an array of class names to Swift's array containing these classes.\n */\nfunction formatArrayOfClassNames(classNames: string[]): string {\n return `[${classNames.map((className) => `\\n${indent.repeat(3)}${className}.self`).join(',')}\n${indent.repeat(2)}]`;\n}\n\nfunction generateReactDelegateHandlers(\n module: ModuleDescriptorIos[],\n debugOnlyModules: ModuleDescriptorIos[]\n): string {\n const commonModules = formatArrayOfReactDelegateHandler(module);\n if (debugOnlyModules.length > 0) {\n return wrapInDebugConfigurationCheck(\n 2,\n `return ${formatArrayOfReactDelegateHandler(module.concat(debugOnlyModules))}`,\n `return ${commonModules}`\n );\n } else {\n return `${indent.repeat(2)}return ${commonModules}`;\n }\n}\n\n/**\n * Formats an array of modules to Swift's array containing ReactDelegateHandlers\n */\nexport function formatArrayOfReactDelegateHandler(modules: ModuleDescriptorIos[]): string {\n const values: string[] = [];\n for (const module of modules) {\n for (const handler of module.reactDelegateHandlers) {\n values.push(`(packageName: \"${module.packageName}\", handler: ${handler}.self)`);\n }\n }\n return `[${values.map((value) => `\\n${indent.repeat(3)}${value}`).join(',')}\n${indent.repeat(2)}]`;\n}\n\nfunction wrapInDebugConfigurationCheck(\n indentationLevel: number,\n debugBlock: string,\n releaseBlock: string | null = null\n) {\n if (releaseBlock) {\n return `${indent.repeat(indentationLevel)}#if EXPO_CONFIGURATION_DEBUG\\n${indent.repeat(\n indentationLevel\n )}${debugBlock}\\n${indent.repeat(indentationLevel)}#else\\n${indent.repeat(\n indentationLevel\n )}${releaseBlock}\\n${indent.repeat(indentationLevel)}#endif`;\n }\n\n return `${indent.repeat(indentationLevel)}#if EXPO_CONFIGURATION_DEBUG\\n${indent.repeat(\n indentationLevel\n )}${debugBlock}\\n${indent.repeat(indentationLevel)}#endif`;\n}\n\nasync function parseEntitlementsAsync(entitlementPath: string): Promise<AppleCodeSignEntitlements> {\n if (!(await fileExistsAsync(entitlementPath))) {\n return {};\n }\n const { stdout } = await spawnAsync('plutil', ['-convert', 'json', '-o', '-', entitlementPath]);\n const entitlementsJson = JSON.parse(stdout);\n return {\n appGroups: entitlementsJson['com.apple.security.application-groups'] || undefined,\n };\n}\n"]}
|
|
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.resolveModuleAsync = resolveModuleAsync;
|
|
7
|
+
exports.resolveExtraBuildDependenciesAsync = resolveExtraBuildDependenciesAsync;
|
|
7
8
|
const path_1 = __importDefault(require("path"));
|
|
8
9
|
async function resolveModuleAsync(packageName, revision) {
|
|
9
10
|
const devtoolsConfig = revision.config?.toJSON().devtools;
|
|
@@ -16,9 +17,7 @@ async function resolveModuleAsync(packageName, revision) {
|
|
|
16
17
|
webpageRoot: path_1.default.join(revision.path, devtoolsConfig.webpageRoot),
|
|
17
18
|
};
|
|
18
19
|
}
|
|
19
|
-
exports.resolveModuleAsync = resolveModuleAsync;
|
|
20
20
|
async function resolveExtraBuildDependenciesAsync(_projectNativeRoot) {
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
|
-
exports.resolveExtraBuildDependenciesAsync = resolveExtraBuildDependenciesAsync;
|
|
24
23
|
//# sourceMappingURL=devtools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../src/platforms/devtools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../src/platforms/devtools.ts"],"names":[],"mappings":";;;;;AAIA,gDAcC;AAED,gFAIC;AAxBD,gDAAwB;AAIjB,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,QAAyB;IAEzB,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC;IAC1D,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,WAAW;QACX,WAAW,EAAE,QAAQ,CAAC,IAAI;QAC1B,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC;KAClE,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,kCAAkC,CACtD,kBAA0B;IAE1B,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import path from 'path';\n\nimport type { ExtraDependencies, ModuleDescriptorDevTools, PackageRevision } from '../types';\n\nexport async function resolveModuleAsync(\n packageName: string,\n revision: PackageRevision\n): Promise<ModuleDescriptorDevTools | null> {\n const devtoolsConfig = revision.config?.toJSON().devtools;\n if (devtoolsConfig == null) {\n return null;\n }\n\n return {\n packageName,\n packageRoot: revision.path,\n webpageRoot: path.join(revision.path, devtoolsConfig.webpageRoot),\n };\n}\n\nexport async function resolveExtraBuildDependenciesAsync(\n _projectNativeRoot: string\n): Promise<ExtraDependencies | null> {\n return null;\n}\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import type { RNConfigDependencyAndroid, RNConfigReactNativePlatformsConfigAndroid } from './reactNativeConfig.types';
|
|
3
2
|
export declare function resolveDependencyConfigImplAndroidAsync(packageRoot: string, reactNativeConfig: RNConfigReactNativePlatformsConfigAndroid | null | undefined): Promise<RNConfigDependencyAndroid | null>;
|
|
4
3
|
/**
|
|
@@ -3,7 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.resolveDependencyConfigImplAndroidAsync = resolveDependencyConfigImplAndroidAsync;
|
|
7
|
+
exports.parsePackageNameAsync = parsePackageNameAsync;
|
|
8
|
+
exports.parseNativePackageClassNameAsync = parseNativePackageClassNameAsync;
|
|
9
|
+
exports.matchNativePackageClassName = matchNativePackageClassName;
|
|
10
|
+
exports.parseLibraryNameAsync = parseLibraryNameAsync;
|
|
11
|
+
exports.parseComponentDescriptorsAsync = parseComponentDescriptorsAsync;
|
|
12
|
+
exports.findGradleAndManifestAsync = findGradleAndManifestAsync;
|
|
7
13
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
14
|
const glob_1 = require("glob");
|
|
9
15
|
const path_1 = __importDefault(require("path"));
|
|
@@ -70,7 +76,6 @@ async function resolveDependencyConfigImplAndroidAsync(packageRoot, reactNativeC
|
|
|
70
76
|
}
|
|
71
77
|
return result;
|
|
72
78
|
}
|
|
73
|
-
exports.resolveDependencyConfigImplAndroidAsync = resolveDependencyConfigImplAndroidAsync;
|
|
74
79
|
/**
|
|
75
80
|
* Parse the `RNConfigDependencyAndroid.packageName`
|
|
76
81
|
*/
|
|
@@ -91,7 +96,6 @@ async function parsePackageNameAsync(androidDir, manifestPath, gradlePath) {
|
|
|
91
96
|
}
|
|
92
97
|
return null;
|
|
93
98
|
}
|
|
94
|
-
exports.parsePackageNameAsync = parsePackageNameAsync;
|
|
95
99
|
/**
|
|
96
100
|
* Parse the Java or Kotlin class name to for `ReactPackage` or `(Base|Turbo)ReactPackage`.
|
|
97
101
|
*/
|
|
@@ -108,7 +112,6 @@ async function parseNativePackageClassNameAsync(packageRoot, androidDir) {
|
|
|
108
112
|
cwd: androidDir,
|
|
109
113
|
});
|
|
110
114
|
}
|
|
111
|
-
exports.parseNativePackageClassNameAsync = parseNativePackageClassNameAsync;
|
|
112
115
|
let lazyReactPackageRegex = null;
|
|
113
116
|
let lazyTurboReactPackageRegex = null;
|
|
114
117
|
function matchNativePackageClassName(_filePath, contents) {
|
|
@@ -133,7 +136,6 @@ function matchNativePackageClassName(_filePath, contents) {
|
|
|
133
136
|
}
|
|
134
137
|
return null;
|
|
135
138
|
}
|
|
136
|
-
exports.matchNativePackageClassName = matchNativePackageClassName;
|
|
137
139
|
async function parseLibraryNameAsync(androidDir, packageJson) {
|
|
138
140
|
// [0] `codegenConfig.name` from package.json
|
|
139
141
|
if (packageJson.codegenConfig?.name) {
|
|
@@ -160,7 +162,6 @@ async function parseLibraryNameAsync(androidDir, packageJson) {
|
|
|
160
162
|
}
|
|
161
163
|
return null;
|
|
162
164
|
}
|
|
163
|
-
exports.parseLibraryNameAsync = parseLibraryNameAsync;
|
|
164
165
|
async function parseComponentDescriptorsAsync(packageRoot, packageJson) {
|
|
165
166
|
const jsRoot = packageJson?.codegenConfig?.jsSrcsDir
|
|
166
167
|
? path_1.default.join(packageRoot, packageJson.codegenConfig.jsSrcsDir)
|
|
@@ -173,7 +174,6 @@ async function parseComponentDescriptorsAsync(packageRoot, packageJson) {
|
|
|
173
174
|
// TODO: consider using "codegenConfig" to avoid this.
|
|
174
175
|
return Array.from(new Set(results));
|
|
175
176
|
}
|
|
176
|
-
exports.parseComponentDescriptorsAsync = parseComponentDescriptorsAsync;
|
|
177
177
|
let lazyCodegenComponentRegex = null;
|
|
178
178
|
function matchComponentDescriptors(filePath, contents) {
|
|
179
179
|
const fileContents = contents.toString();
|
|
@@ -208,5 +208,4 @@ async function findGradleAndManifestAsync({ androidDir, isLibrary, }) {
|
|
|
208
208
|
const gradle = gradles[0];
|
|
209
209
|
return { gradle: gradle || null, manifest: manifest || null };
|
|
210
210
|
}
|
|
211
|
-
exports.findGradleAndManifestAsync = findGradleAndManifestAsync;
|
|
212
211
|
//# sourceMappingURL=androidResolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"androidResolver.js","sourceRoot":"","sources":["../../src/reactNativeConfig/androidResolver.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs/promises';\nimport { glob } from 'glob';\nimport path from 'path';\n\nimport type {\n RNConfigDependencyAndroid,\n RNConfigReactNativePlatformsConfigAndroid,\n} from './reactNativeConfig.types';\nimport {\n fileExistsAsync,\n globMatchFunctorAllAsync,\n globMatchFunctorFirstAsync,\n} from '../fileUtils';\n\nexport async function resolveDependencyConfigImplAndroidAsync(\n packageRoot: string,\n reactNativeConfig: RNConfigReactNativePlatformsConfigAndroid | null | undefined\n): Promise<RNConfigDependencyAndroid | null> {\n if (reactNativeConfig === null) {\n // Skip autolinking for this package.\n return null;\n }\n const sourceDir = reactNativeConfig?.sourceDir || 'android';\n const androidDir = path.join(packageRoot, sourceDir);\n const { gradle, manifest } = await findGradleAndManifestAsync({ androidDir, isLibrary: true });\n if (!manifest && !gradle) {\n return null;\n }\n\n const packageName =\n reactNativeConfig?.packageName || (await parsePackageNameAsync(androidDir, manifest, gradle));\n if (!packageName) {\n return null;\n }\n const nativePackageClassName = await parseNativePackageClassNameAsync(packageRoot, androidDir);\n if (!nativePackageClassName) {\n return null;\n }\n\n const packageJson = JSON.parse(await fs.readFile(path.join(packageRoot, 'package.json'), 'utf8'));\n const packageImportPath =\n reactNativeConfig?.packageImportPath || `import ${packageName}.${nativePackageClassName};`;\n const packageInstance = reactNativeConfig?.packageInstance || `new ${nativePackageClassName}()`;\n const buildTypes = reactNativeConfig?.buildTypes || [];\n const dependencyConfiguration = reactNativeConfig?.dependencyConfiguration;\n const libraryName =\n reactNativeConfig?.libraryName || (await parseLibraryNameAsync(androidDir, packageJson));\n const componentDescriptors =\n reactNativeConfig?.componentDescriptors ||\n (await parseComponentDescriptorsAsync(packageRoot, packageJson));\n let cmakeListsPath = reactNativeConfig?.cmakeListsPath\n ? path.join(androidDir, reactNativeConfig?.cmakeListsPath)\n : path.join(androidDir, 'build/generated/source/codegen/jni/CMakeLists.txt');\n const cxxModuleCMakeListsModuleName = reactNativeConfig?.cxxModuleCMakeListsModuleName || null;\n const cxxModuleHeaderName = reactNativeConfig?.cxxModuleHeaderName || null;\n let cxxModuleCMakeListsPath = reactNativeConfig?.cxxModuleCMakeListsPath\n ? path.join(androidDir, reactNativeConfig?.cxxModuleCMakeListsPath)\n : null;\n if (process.platform === 'win32') {\n cmakeListsPath = cmakeListsPath.replace(/\\\\/g, '/');\n if (cxxModuleCMakeListsPath) {\n cxxModuleCMakeListsPath = cxxModuleCMakeListsPath.replace(/\\\\/g, '/');\n }\n }\n\n const result: RNConfigDependencyAndroid = {\n sourceDir: androidDir,\n packageImportPath,\n packageInstance,\n dependencyConfiguration,\n buildTypes,\n libraryName,\n componentDescriptors,\n cmakeListsPath,\n cxxModuleCMakeListsModuleName,\n cxxModuleCMakeListsPath,\n cxxModuleHeaderName,\n };\n if (!result.libraryName) {\n delete result.libraryName;\n }\n if (!result.dependencyConfiguration) {\n delete result.dependencyConfiguration;\n }\n return result;\n}\n\n/**\n * Parse the `RNConfigDependencyAndroid.packageName`\n */\nexport async function parsePackageNameAsync(\n androidDir: string,\n manifestPath: string | null,\n gradlePath: string | null\n): Promise<string | null> {\n if (gradlePath) {\n const gradleContents = await fs.readFile(path.join(androidDir, gradlePath), 'utf8');\n const match = gradleContents.match(/namespace\\s*[=]*\\s*[\"'](.+?)[\"']/);\n if (match) {\n return match[1];\n }\n }\n if (manifestPath) {\n const manifestContents = await fs.readFile(path.join(androidDir, manifestPath), 'utf8');\n const match = manifestContents.match(/package=\"(.+?)\"/);\n if (match) {\n return match[1];\n }\n }\n return null;\n}\n\n/**\n * Parse the Java or Kotlin class name to for `ReactPackage` or `(Base|Turbo)ReactPackage`.\n */\nexport async function parseNativePackageClassNameAsync(\n packageRoot: string,\n androidDir: string\n): Promise<string | null> {\n const matched = await globMatchFunctorFirstAsync(\n '**/*Package.{java,kt}',\n matchNativePackageClassName,\n { cwd: androidDir }\n );\n if (matched) {\n return matched;\n }\n\n // Early return if the module is an Expo module\n if (await fileExistsAsync(path.join(packageRoot, 'expo-module.config.json'))) {\n return null;\n }\n\n return await globMatchFunctorFirstAsync('**/*.{java,kt}', matchNativePackageClassName, {\n cwd: androidDir,\n });\n}\n\nlet lazyReactPackageRegex: RegExp | null = null;\nlet lazyTurboReactPackageRegex: RegExp | null = null;\nexport function matchNativePackageClassName(_filePath: string, contents: Buffer): string | null {\n const fileContents = contents.toString();\n\n // [0] Match ReactPackage\n if (!lazyReactPackageRegex) {\n lazyReactPackageRegex =\n /class\\s+(\\w+[^(\\s]*)[\\s\\w():]*(\\s+implements\\s+|:)[\\s\\w():,]*[^{]*ReactPackage/;\n }\n const matchReactPackage = fileContents.match(lazyReactPackageRegex);\n if (matchReactPackage) {\n return matchReactPackage[1];\n }\n\n // [1] Match (Base|Turbo)ReactPackage\n if (!lazyTurboReactPackageRegex) {\n lazyTurboReactPackageRegex =\n /class\\s+(\\w+[^(\\s]*)[\\s\\w():]*(\\s+extends\\s+|:)[\\s\\w():,]*[^{]*(Base|Turbo)ReactPackage/;\n }\n const matchTurboReactPackage = fileContents.match(lazyTurboReactPackageRegex);\n if (matchTurboReactPackage) {\n return matchTurboReactPackage[1];\n }\n\n return null;\n}\n\nexport async function parseLibraryNameAsync(\n androidDir: string,\n packageJson: any\n): Promise<string | null> {\n // [0] `codegenConfig.name` from package.json\n if (packageJson.codegenConfig?.name) {\n return packageJson.codegenConfig.name;\n }\n\n const libraryNameRegExp = /libraryName = [\"'](.+)[\"']/;\n const gradlePath = path.join(androidDir, 'build.gradle');\n // [1] `libraryName` from build.gradle\n if (await fileExistsAsync(gradlePath)) {\n const buildGradleContents = await fs.readFile(gradlePath, 'utf8');\n const match = buildGradleContents.match(libraryNameRegExp);\n if (match) {\n return match[1];\n }\n }\n\n // [2] `libraryName` from build.gradle.kts\n const gradleKtsPath = path.join(androidDir, 'build.gradle.kts');\n if (await fileExistsAsync(gradleKtsPath)) {\n const buildGradleContents = await fs.readFile(gradleKtsPath, 'utf8');\n const match = buildGradleContents.match(libraryNameRegExp);\n if (match) {\n return match[1];\n }\n }\n\n return null;\n}\n\nexport async function parseComponentDescriptorsAsync(\n packageRoot: string,\n packageJson: any\n): Promise<string[]> {\n const jsRoot = packageJson?.codegenConfig?.jsSrcsDir\n ? path.join(packageRoot, packageJson.codegenConfig.jsSrcsDir)\n : packageRoot;\n const results = await globMatchFunctorAllAsync(\n '**/*.{js,jsx,ts,tsx}',\n matchComponentDescriptors,\n {\n cwd: jsRoot,\n ignore: ['**/node_modules/**'],\n }\n );\n\n // Filter out duplicates as it happens that libraries contain multiple outputs due to package publishing.\n // TODO: consider using \"codegenConfig\" to avoid this.\n return Array.from(new Set(results));\n}\n\nlet lazyCodegenComponentRegex: RegExp | null = null;\nfunction matchComponentDescriptors(filePath: string, contents: Buffer): string | null {\n const fileContents = contents.toString();\n\n if (!lazyCodegenComponentRegex) {\n lazyCodegenComponentRegex =\n /codegenNativeComponent(<.*>)?\\s*\\(\\s*[\"'`](\\w+)[\"'`](,?[\\s\\S]+interfaceOnly:\\s*(\\w+))?/m;\n }\n const match = fileContents.match(lazyCodegenComponentRegex);\n if (!(match?.[4] === 'true') && match?.[2]) {\n return `${match[2]}ComponentDescriptor`;\n }\n return null;\n}\n\nexport async function findGradleAndManifestAsync({\n androidDir,\n isLibrary,\n}: {\n androidDir: string;\n isLibrary: boolean;\n}): Promise<{ gradle: string | null; manifest: string | null }> {\n const globExcludes = [\n 'node_modules/**',\n '**/build/**',\n '**/debug/**',\n 'Examples/**',\n 'examples/**',\n '**/Pods/**',\n '**/sdks/hermes/android/**',\n '**/src/androidTest/**',\n '**/src/test/**',\n ];\n const gradlePattern = isLibrary ? 'build.gradle{,.kts}' : 'app/build.gradle{,.kts}';\n const [manifests, gradles] = await Promise.all([\n glob('**/AndroidManifest.xml', { cwd: androidDir, ignore: globExcludes }),\n glob(gradlePattern, { cwd: androidDir, ignore: globExcludes }),\n ]);\n const manifest = manifests.find((manifest) => manifest.includes('src/main/')) ?? manifests[0];\n const gradle = gradles[0];\n return { gradle: gradle || null, manifest: manifest || null };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"androidResolver.js","sourceRoot":"","sources":["../../src/reactNativeConfig/androidResolver.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs/promises';\nimport { glob } from 'glob';\nimport path from 'path';\n\nimport type {\n RNConfigDependencyAndroid,\n RNConfigReactNativePlatformsConfigAndroid,\n} from './reactNativeConfig.types';\nimport {\n fileExistsAsync,\n globMatchFunctorAllAsync,\n globMatchFunctorFirstAsync,\n} from '../fileUtils';\n\nexport async function resolveDependencyConfigImplAndroidAsync(\n packageRoot: string,\n reactNativeConfig: RNConfigReactNativePlatformsConfigAndroid | null | undefined\n): Promise<RNConfigDependencyAndroid | null> {\n if (reactNativeConfig === null) {\n // Skip autolinking for this package.\n return null;\n }\n const sourceDir = reactNativeConfig?.sourceDir || 'android';\n const androidDir = path.join(packageRoot, sourceDir);\n const { gradle, manifest } = await findGradleAndManifestAsync({ androidDir, isLibrary: true });\n if (!manifest && !gradle) {\n return null;\n }\n\n const packageName =\n reactNativeConfig?.packageName || (await parsePackageNameAsync(androidDir, manifest, gradle));\n if (!packageName) {\n return null;\n }\n const nativePackageClassName = await parseNativePackageClassNameAsync(packageRoot, androidDir);\n if (!nativePackageClassName) {\n return null;\n }\n\n const packageJson = JSON.parse(await fs.readFile(path.join(packageRoot, 'package.json'), 'utf8'));\n const packageImportPath =\n reactNativeConfig?.packageImportPath || `import ${packageName}.${nativePackageClassName};`;\n const packageInstance = reactNativeConfig?.packageInstance || `new ${nativePackageClassName}()`;\n const buildTypes = reactNativeConfig?.buildTypes || [];\n const dependencyConfiguration = reactNativeConfig?.dependencyConfiguration;\n const libraryName =\n reactNativeConfig?.libraryName || (await parseLibraryNameAsync(androidDir, packageJson));\n const componentDescriptors =\n reactNativeConfig?.componentDescriptors ||\n (await parseComponentDescriptorsAsync(packageRoot, packageJson));\n let cmakeListsPath = reactNativeConfig?.cmakeListsPath\n ? path.join(androidDir, reactNativeConfig?.cmakeListsPath)\n : path.join(androidDir, 'build/generated/source/codegen/jni/CMakeLists.txt');\n const cxxModuleCMakeListsModuleName = reactNativeConfig?.cxxModuleCMakeListsModuleName || null;\n const cxxModuleHeaderName = reactNativeConfig?.cxxModuleHeaderName || null;\n let cxxModuleCMakeListsPath = reactNativeConfig?.cxxModuleCMakeListsPath\n ? path.join(androidDir, reactNativeConfig?.cxxModuleCMakeListsPath)\n : null;\n if (process.platform === 'win32') {\n cmakeListsPath = cmakeListsPath.replace(/\\\\/g, '/');\n if (cxxModuleCMakeListsPath) {\n cxxModuleCMakeListsPath = cxxModuleCMakeListsPath.replace(/\\\\/g, '/');\n }\n }\n\n const result: RNConfigDependencyAndroid = {\n sourceDir: androidDir,\n packageImportPath,\n packageInstance,\n dependencyConfiguration,\n buildTypes,\n libraryName,\n componentDescriptors,\n cmakeListsPath,\n cxxModuleCMakeListsModuleName,\n cxxModuleCMakeListsPath,\n cxxModuleHeaderName,\n };\n if (!result.libraryName) {\n delete result.libraryName;\n }\n if (!result.dependencyConfiguration) {\n delete result.dependencyConfiguration;\n }\n return result;\n}\n\n/**\n * Parse the `RNConfigDependencyAndroid.packageName`\n */\nexport async function parsePackageNameAsync(\n androidDir: string,\n manifestPath: string | null,\n gradlePath: string | null\n): Promise<string | null> {\n if (gradlePath) {\n const gradleContents = await fs.readFile(path.join(androidDir, gradlePath), 'utf8');\n const match = gradleContents.match(/namespace\\s*[=]*\\s*[\"'](.+?)[\"']/);\n if (match) {\n return match[1];\n }\n }\n if (manifestPath) {\n const manifestContents = await fs.readFile(path.join(androidDir, manifestPath), 'utf8');\n const match = manifestContents.match(/package=\"(.+?)\"/);\n if (match) {\n return match[1];\n }\n }\n return null;\n}\n\n/**\n * Parse the Java or Kotlin class name to for `ReactPackage` or `(Base|Turbo)ReactPackage`.\n */\nexport async function parseNativePackageClassNameAsync(\n packageRoot: string,\n androidDir: string\n): Promise<string | null> {\n const matched = await globMatchFunctorFirstAsync(\n '**/*Package.{java,kt}',\n matchNativePackageClassName,\n { cwd: androidDir }\n );\n if (matched) {\n return matched;\n }\n\n // Early return if the module is an Expo module\n if (await fileExistsAsync(path.join(packageRoot, 'expo-module.config.json'))) {\n return null;\n }\n\n return await globMatchFunctorFirstAsync('**/*.{java,kt}', matchNativePackageClassName, {\n cwd: androidDir,\n });\n}\n\nlet lazyReactPackageRegex: RegExp | null = null;\nlet lazyTurboReactPackageRegex: RegExp | null = null;\nexport function matchNativePackageClassName(_filePath: string, contents: Buffer): string | null {\n const fileContents = contents.toString();\n\n // [0] Match ReactPackage\n if (!lazyReactPackageRegex) {\n lazyReactPackageRegex =\n /class\\s+(\\w+[^(\\s]*)[\\s\\w():]*(\\s+implements\\s+|:)[\\s\\w():,]*[^{]*ReactPackage/;\n }\n const matchReactPackage = fileContents.match(lazyReactPackageRegex);\n if (matchReactPackage) {\n return matchReactPackage[1];\n }\n\n // [1] Match (Base|Turbo)ReactPackage\n if (!lazyTurboReactPackageRegex) {\n lazyTurboReactPackageRegex =\n /class\\s+(\\w+[^(\\s]*)[\\s\\w():]*(\\s+extends\\s+|:)[\\s\\w():,]*[^{]*(Base|Turbo)ReactPackage/;\n }\n const matchTurboReactPackage = fileContents.match(lazyTurboReactPackageRegex);\n if (matchTurboReactPackage) {\n return matchTurboReactPackage[1];\n }\n\n return null;\n}\n\nexport async function parseLibraryNameAsync(\n androidDir: string,\n packageJson: any\n): Promise<string | null> {\n // [0] `codegenConfig.name` from package.json\n if (packageJson.codegenConfig?.name) {\n return packageJson.codegenConfig.name;\n }\n\n const libraryNameRegExp = /libraryName = [\"'](.+)[\"']/;\n const gradlePath = path.join(androidDir, 'build.gradle');\n // [1] `libraryName` from build.gradle\n if (await fileExistsAsync(gradlePath)) {\n const buildGradleContents = await fs.readFile(gradlePath, 'utf8');\n const match = buildGradleContents.match(libraryNameRegExp);\n if (match) {\n return match[1];\n }\n }\n\n // [2] `libraryName` from build.gradle.kts\n const gradleKtsPath = path.join(androidDir, 'build.gradle.kts');\n if (await fileExistsAsync(gradleKtsPath)) {\n const buildGradleContents = await fs.readFile(gradleKtsPath, 'utf8');\n const match = buildGradleContents.match(libraryNameRegExp);\n if (match) {\n return match[1];\n }\n }\n\n return null;\n}\n\nexport async function parseComponentDescriptorsAsync(\n packageRoot: string,\n packageJson: any\n): Promise<string[]> {\n const jsRoot = packageJson?.codegenConfig?.jsSrcsDir\n ? path.join(packageRoot, packageJson.codegenConfig.jsSrcsDir)\n : packageRoot;\n const results = await globMatchFunctorAllAsync(\n '**/*.{js,jsx,ts,tsx}',\n matchComponentDescriptors,\n {\n cwd: jsRoot,\n ignore: ['**/node_modules/**'],\n }\n );\n\n // Filter out duplicates as it happens that libraries contain multiple outputs due to package publishing.\n // TODO: consider using \"codegenConfig\" to avoid this.\n return Array.from(new Set(results));\n}\n\nlet lazyCodegenComponentRegex: RegExp | null = null;\nfunction matchComponentDescriptors(filePath: string, contents: Buffer): string | null {\n const fileContents = contents.toString();\n\n if (!lazyCodegenComponentRegex) {\n lazyCodegenComponentRegex =\n /codegenNativeComponent(<.*>)?\\s*\\(\\s*[\"'`](\\w+)[\"'`](,?[\\s\\S]+interfaceOnly:\\s*(\\w+))?/m;\n }\n const match = fileContents.match(lazyCodegenComponentRegex);\n if (!(match?.[4] === 'true') && match?.[2]) {\n return `${match[2]}ComponentDescriptor`;\n }\n return null;\n}\n\nexport async function findGradleAndManifestAsync({\n androidDir,\n isLibrary,\n}: {\n androidDir: string;\n isLibrary: boolean;\n}): Promise<{ gradle: string | null; manifest: string | null }> {\n const globExcludes = [\n 'node_modules/**',\n '**/build/**',\n '**/debug/**',\n 'Examples/**',\n 'examples/**',\n '**/Pods/**',\n '**/sdks/hermes/android/**',\n '**/src/androidTest/**',\n '**/src/test/**',\n ];\n const gradlePattern = isLibrary ? 'build.gradle{,.kts}' : 'app/build.gradle{,.kts}';\n const [manifests, gradles] = await Promise.all([\n glob('**/AndroidManifest.xml', { cwd: androidDir, ignore: globExcludes }),\n glob(gradlePattern, { cwd: androidDir, ignore: globExcludes }),\n ]);\n const manifest = manifests.find((manifest) => manifest.includes('src/main/')) ?? manifests[0];\n const gradle = gradles[0];\n return { gradle: gradle || null, manifest: manifest || null };\n}\n"]}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.loadConfigAsync =
|
|
6
|
+
exports.loadConfigAsync = loadConfigAsync;
|
|
7
7
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const require_from_string_1 = __importDefault(require("require-from-string"));
|
|
@@ -45,7 +45,6 @@ async function loadConfigAsync(packageRoot) {
|
|
|
45
45
|
}
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
|
-
exports.loadConfigAsync = loadConfigAsync;
|
|
49
48
|
/**
|
|
50
49
|
* Temporarily, we need to mock the community CLI, because
|
|
51
50
|
* some packages are checking the version of the CLI in the `react-native.config.js` file.
|