expo-modules-autolinking 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/build/autolinking/findModules.d.ts +11 -5
- package/build/autolinking/findModules.js +8 -16
- package/build/autolinking/findModules.js.map +1 -1
- package/build/autolinking/generatePackageList.d.ts +16 -10
- package/build/autolinking/generatePackageList.js +13 -28
- package/build/autolinking/generatePackageList.js.map +1 -1
- package/build/autolinking/getConfiguration.d.ts +9 -2
- package/build/autolinking/getConfiguration.js +9 -4
- package/build/autolinking/getConfiguration.js.map +1 -1
- package/build/autolinking/index.d.ts +22 -17
- package/build/autolinking/index.js +23 -47
- package/build/autolinking/index.js.map +1 -1
- package/build/autolinking/resolveModules.d.ts +13 -9
- package/build/autolinking/resolveModules.js +21 -18
- package/build/autolinking/resolveModules.js.map +1 -1
- package/build/commands/autolinkingOptions.d.ts +50 -0
- package/build/commands/autolinkingOptions.js +168 -0
- package/build/commands/autolinkingOptions.js.map +1 -0
- package/build/commands/generateModulesProviderCommand.d.ts +3 -0
- package/build/commands/generateModulesProviderCommand.js +35 -0
- package/build/commands/generateModulesProviderCommand.js.map +1 -0
- package/build/commands/generatePackageListCommand.d.ts +6 -0
- package/build/commands/generatePackageListCommand.js +39 -0
- package/build/commands/generatePackageListCommand.js.map +1 -0
- package/build/commands/reactNativeConfigCommand.d.ts +3 -0
- package/build/commands/reactNativeConfigCommand.js +36 -0
- package/build/commands/reactNativeConfigCommand.js.map +1 -0
- package/build/commands/resolveCommand.d.ts +3 -0
- package/build/commands/resolveCommand.js +63 -0
- package/build/commands/resolveCommand.js.map +1 -0
- package/build/commands/searchCommand.d.ts +2 -0
- package/build/commands/searchCommand.js +27 -0
- package/build/commands/searchCommand.js.map +1 -0
- package/build/{autolinking/verifySearchResults.d.ts → commands/verifyCommand.d.ts} +4 -2
- package/build/{autolinking/verifySearchResults.js → commands/verifyCommand.js} +24 -3
- package/build/commands/verifyCommand.js.map +1 -0
- package/build/dependencies/CachedDependenciesLinker.d.ts +2 -1
- package/build/dependencies/CachedDependenciesLinker.js +23 -9
- package/build/dependencies/CachedDependenciesLinker.js.map +1 -1
- package/build/exports.d.ts +17 -1
- package/build/exports.js +48 -1
- package/build/exports.js.map +1 -1
- package/build/index.js +18 -162
- package/build/index.js.map +1 -1
- package/build/platforms/{android.d.ts → android/android.d.ts} +7 -2
- package/build/platforms/{android.js → android/android.js} +1 -5
- package/build/platforms/android/android.js.map +1 -0
- package/build/platforms/android/index.d.ts +1 -0
- package/build/platforms/android/index.js +9 -0
- package/build/platforms/android/index.js.map +1 -0
- package/build/platforms/{apple.d.ts → apple/apple.d.ts} +6 -6
- package/build/platforms/{apple.js → apple/apple.js} +5 -7
- package/build/platforms/apple/apple.js.map +1 -0
- package/build/platforms/apple/index.d.ts +1 -0
- package/build/platforms/apple/index.js +8 -0
- package/build/platforms/apple/index.js.map +1 -0
- package/build/platforms/index.d.ts +15 -0
- package/build/{autolinking/utils.js → platforms/index.js} +6 -1
- package/build/platforms/index.js.map +1 -0
- package/build/reactNativeConfig/reactNativeConfig.d.ts +11 -2
- package/build/reactNativeConfig/reactNativeConfig.js +13 -15
- package/build/reactNativeConfig/reactNativeConfig.js.map +1 -1
- package/build/reactNativeConfig/reactNativeConfig.types.d.ts +4 -33
- package/build/reactNativeConfig/reactNativeConfig.types.js.map +1 -1
- package/build/types.d.ts +1 -58
- package/build/types.js.map +1 -1
- package/package.json +3 -3
- package/src/autolinking/findModules.ts +18 -16
- package/src/autolinking/generatePackageList.ts +30 -31
- package/src/autolinking/getConfiguration.ts +16 -5
- package/src/autolinking/index.ts +48 -41
- package/src/autolinking/resolveModules.ts +47 -34
- package/src/commands/autolinkingOptions.ts +265 -0
- package/src/commands/generateModulesProviderCommand.ts +60 -0
- package/src/commands/generatePackageListCommand.ts +67 -0
- package/src/commands/reactNativeConfigCommand.ts +50 -0
- package/src/commands/resolveCommand.ts +101 -0
- package/src/commands/searchCommand.ts +35 -0
- package/src/{autolinking/verifySearchResults.ts → commands/verifyCommand.ts} +48 -6
- package/src/dependencies/CachedDependenciesLinker.ts +30 -12
- package/src/exports.ts +65 -0
- package/src/index.ts +18 -286
- package/src/platforms/{android.ts → android/android.ts} +10 -12
- package/src/platforms/android/index.ts +6 -0
- package/src/platforms/{apple.ts → apple/apple.ts} +10 -11
- package/src/platforms/apple/index.ts +5 -0
- package/src/platforms/index.ts +49 -0
- package/src/reactNativeConfig/reactNativeConfig.ts +25 -28
- package/src/reactNativeConfig/reactNativeConfig.types.ts +4 -35
- package/src/types.ts +10 -70
- package/build/autolinking/mergeLinkingOptions.d.ts +0 -27
- package/build/autolinking/mergeLinkingOptions.js +0 -112
- package/build/autolinking/mergeLinkingOptions.js.map +0 -1
- package/build/autolinking/utils.d.ts +0 -2
- package/build/autolinking/utils.js.map +0 -1
- package/build/autolinking/verifySearchResults.js.map +0 -1
- package/build/platforms/android.js.map +0 -1
- package/build/platforms/apple.js.map +0 -1
- package/src/autolinking/mergeLinkingOptions.ts +0 -146
- package/src/autolinking/utils.ts +0 -15
|
@@ -5,45 +5,45 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.makeCachedDependenciesLinker = makeCachedDependenciesLinker;
|
|
7
7
|
exports.scanDependencyResolutionsForPlatform = scanDependencyResolutionsForPlatform;
|
|
8
|
+
exports.scanExpoModuleResolutionsForPlatform = scanExpoModuleResolutionsForPlatform;
|
|
8
9
|
const fs_1 = __importDefault(require("fs"));
|
|
9
10
|
const resolution_1 = require("./resolution");
|
|
10
11
|
const rncliLocal_1 = require("./rncliLocal");
|
|
11
12
|
const scanning_1 = require("./scanning");
|
|
12
13
|
const utils_1 = require("./utils");
|
|
13
14
|
const findModules_1 = require("../autolinking/findModules");
|
|
14
|
-
const
|
|
15
|
+
const autolinkingOptions_1 = require("../commands/autolinkingOptions");
|
|
15
16
|
const reactNativeConfig_1 = require("../reactNativeConfig");
|
|
16
17
|
const config_1 = require("../reactNativeConfig/config");
|
|
17
18
|
function makeCachedDependenciesLinker(params) {
|
|
18
|
-
const
|
|
19
|
+
const autolinkingOptionsLoader = (0, autolinkingOptions_1.createAutolinkingOptionsLoader)({
|
|
19
20
|
projectRoot: params.projectRoot,
|
|
20
|
-
platform: 'apple', // Placeholder value
|
|
21
21
|
});
|
|
22
|
-
let
|
|
23
|
-
const
|
|
22
|
+
let appRoot;
|
|
23
|
+
const getAppRoot = () => appRoot || (appRoot = autolinkingOptionsLoader.getAppRoot());
|
|
24
24
|
const dependenciesResultBySearchPath = new Map();
|
|
25
25
|
let reactNativeProjectConfig;
|
|
26
26
|
let reactNativeProjectConfigDependencies;
|
|
27
27
|
let recursiveDependencies;
|
|
28
28
|
return {
|
|
29
29
|
async getOptionsForPlatform(platform) {
|
|
30
|
-
const options = await
|
|
30
|
+
const options = await autolinkingOptionsLoader.getPlatformOptions(platform);
|
|
31
31
|
return makeCachedDependenciesSearchOptions(options);
|
|
32
32
|
},
|
|
33
33
|
async loadReactNativeProjectConfig() {
|
|
34
34
|
if (reactNativeProjectConfig === undefined) {
|
|
35
|
-
reactNativeProjectConfig = (0, config_1.loadConfigAsync)(await
|
|
35
|
+
reactNativeProjectConfig = (0, config_1.loadConfigAsync)(await getAppRoot());
|
|
36
36
|
}
|
|
37
37
|
return reactNativeProjectConfig;
|
|
38
38
|
},
|
|
39
39
|
async scanDependenciesFromRNProjectConfig() {
|
|
40
40
|
const reactNativeProjectConfig = await this.loadReactNativeProjectConfig();
|
|
41
41
|
return (reactNativeProjectConfigDependencies ||
|
|
42
|
-
(reactNativeProjectConfigDependencies = (0, rncliLocal_1.scanDependenciesFromRNProjectConfig)(await
|
|
42
|
+
(reactNativeProjectConfigDependencies = (0, rncliLocal_1.scanDependenciesFromRNProjectConfig)(await getAppRoot(), reactNativeProjectConfig)));
|
|
43
43
|
},
|
|
44
44
|
async scanDependenciesRecursively() {
|
|
45
45
|
return (recursiveDependencies ||
|
|
46
|
-
(recursiveDependencies = (0, resolution_1.scanDependenciesRecursively)(await
|
|
46
|
+
(recursiveDependencies = (0, resolution_1.scanDependenciesRecursively)(await getAppRoot())));
|
|
47
47
|
},
|
|
48
48
|
async scanDependenciesInSearchPath(searchPath) {
|
|
49
49
|
let result = dependenciesResultBySearchPath.get(searchPath);
|
|
@@ -93,6 +93,20 @@ async function scanDependencyResolutionsForPlatform(linker, platform, include) {
|
|
|
93
93
|
});
|
|
94
94
|
return dependencies;
|
|
95
95
|
}
|
|
96
|
+
async function scanExpoModuleResolutionsForPlatform(linker, platform) {
|
|
97
|
+
const { excludeNames, searchPaths } = await linker.getOptionsForPlatform(platform);
|
|
98
|
+
const resolutions = (0, utils_1.mergeResolutionResults)(await Promise.all([
|
|
99
|
+
...searchPaths.map((searchPath) => {
|
|
100
|
+
return linker.scanDependenciesInSearchPath(searchPath);
|
|
101
|
+
}),
|
|
102
|
+
linker.scanDependenciesRecursively(),
|
|
103
|
+
]));
|
|
104
|
+
return await (0, utils_1.filterMapResolutionResult)(resolutions, async (resolution) => {
|
|
105
|
+
return !excludeNames.has(resolution.name)
|
|
106
|
+
? await (0, findModules_1.resolveExpoModule)(resolution, platform, excludeNames)
|
|
107
|
+
: null;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
96
110
|
const makeCachedDependenciesSearchOptions = (options) => ({
|
|
97
111
|
excludeNames: new Set(options.exclude),
|
|
98
112
|
searchPaths: options.nativeModulesDir && fs_1.default.existsSync(options.nativeModulesDir)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CachedDependenciesLinker.js","sourceRoot":"","sources":["../../src/dependencies/CachedDependenciesLinker.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs';\n\nimport { SearchOptions, SupportedPlatform } from '../autolinking';\nimport { scanDependenciesRecursively } from './resolution';\nimport { scanDependenciesFromRNProjectConfig } from './rncliLocal';\nimport { scanDependenciesInSearchPath } from './scanning';\nimport { type ResolutionResult, DependencyResolutionSource } from './types';\nimport { filterMapResolutionResult, mergeResolutionResults } from './utils';\nimport { resolveExpoModule } from '../autolinking/findModules';\nimport { createLinkingOptionsFactory } from '../autolinking/mergeLinkingOptions';\nimport { resolveReactNativeModule, RNConfigReactNativeProjectConfig } from '../reactNativeConfig';\nimport { loadConfigAsync } from '../reactNativeConfig/config';\n\nexport interface CachedDependenciesSearchOptions {\n excludeNames: Set<string>;\n searchPaths: string[];\n}\n\nexport interface CachedDependenciesLinker {\n getOptionsForPlatform(platform: SupportedPlatform): Promise<CachedDependenciesSearchOptions>;\n loadReactNativeProjectConfig(): Promise<RNConfigReactNativeProjectConfig | null>;\n scanDependenciesFromRNProjectConfig(): Promise<ResolutionResult>;\n scanDependenciesRecursively(): Promise<ResolutionResult>;\n scanDependenciesInSearchPath(searchPath: string): Promise<ResolutionResult>;\n}\n\nexport function makeCachedDependenciesLinker(params: {\n projectRoot: string;\n}): CachedDependenciesLinker {\n const linkingOptionsFactory = createLinkingOptionsFactory<SearchOptions>({\n projectRoot: params.projectRoot,\n platform: 'apple', // Placeholder value\n });\n\n let projectRoot: Promise<string> | undefined;\n const getProjectRoot = () =>\n projectRoot || (projectRoot = linkingOptionsFactory.getProjectRoot());\n\n const dependenciesResultBySearchPath = new Map<string, Promise<ResolutionResult>>();\n let reactNativeProjectConfig: Promise<RNConfigReactNativeProjectConfig | null> | undefined;\n let reactNativeProjectConfigDependencies: Promise<ResolutionResult> | undefined;\n let recursiveDependencies: Promise<ResolutionResult> | undefined;\n\n return {\n async getOptionsForPlatform(platform) {\n const options = await linkingOptionsFactory.getPlatformOptions(platform);\n return makeCachedDependenciesSearchOptions(options);\n },\n async loadReactNativeProjectConfig() {\n if (reactNativeProjectConfig === undefined) {\n reactNativeProjectConfig = loadConfigAsync<RNConfigReactNativeProjectConfig>(\n await getProjectRoot()\n );\n }\n return reactNativeProjectConfig;\n },\n async scanDependenciesFromRNProjectConfig() {\n const reactNativeProjectConfig = await this.loadReactNativeProjectConfig();\n return (\n reactNativeProjectConfigDependencies ||\n (reactNativeProjectConfigDependencies = scanDependenciesFromRNProjectConfig(\n await getProjectRoot(),\n reactNativeProjectConfig\n ))\n );\n },\n async scanDependenciesRecursively() {\n return (\n recursiveDependencies ||\n (recursiveDependencies = scanDependenciesRecursively(await getProjectRoot()))\n );\n },\n async scanDependenciesInSearchPath(searchPath: string) {\n let result = dependenciesResultBySearchPath.get(searchPath);\n if (!result) {\n dependenciesResultBySearchPath.set(\n searchPath,\n (result = scanDependenciesInSearchPath(searchPath))\n );\n }\n return result;\n },\n };\n}\n\nexport async function scanDependencyResolutionsForPlatform(\n linker: CachedDependenciesLinker,\n platform: SupportedPlatform,\n include?: string[]\n): Promise<ResolutionResult> {\n const { excludeNames, searchPaths } = await linker.getOptionsForPlatform(platform);\n const includeNames = new Set(include);\n const reactNativeProjectConfig = await linker.loadReactNativeProjectConfig();\n\n const resolutions = mergeResolutionResults(\n await Promise.all([\n linker.scanDependenciesFromRNProjectConfig(),\n ...searchPaths.map((searchPath) => {\n return linker.scanDependenciesInSearchPath(searchPath);\n }),\n linker.scanDependenciesRecursively(),\n ])\n );\n\n const dependencies = await filterMapResolutionResult(resolutions, async (resolution) => {\n if (excludeNames.has(resolution.name)) {\n return null;\n } else if (includeNames.has(resolution.name)) {\n return resolution;\n } else if (resolution.source === DependencyResolutionSource.RN_CLI_LOCAL) {\n // If the dependency was resolved frpom the React Native project config, we'll only\n // attempt to resolve it as a React Native module\n const reactNativeModuleDesc = await resolveReactNativeModule(\n resolution,\n reactNativeProjectConfig,\n platform,\n excludeNames\n );\n if (!reactNativeModuleDesc) {\n return null;\n }\n } else {\n const [reactNativeModule, expoModule] = await Promise.all([\n resolveReactNativeModule(resolution, reactNativeProjectConfig, platform, excludeNames),\n resolveExpoModule(resolution, platform, excludeNames),\n ]);\n if (!reactNativeModule && !expoModule) {\n return null;\n }\n }\n return resolution;\n });\n\n return dependencies;\n}\n\nconst makeCachedDependenciesSearchOptions = (options: SearchOptions) => ({\n excludeNames: new Set(options.exclude),\n searchPaths:\n options.nativeModulesDir && fs.existsSync(options.nativeModulesDir)\n ? [options.nativeModulesDir, ...(options.searchPaths ?? [])]\n : (options.searchPaths ?? []),\n});\n"]}
|
|
1
|
+
{"version":3,"file":"CachedDependenciesLinker.js","sourceRoot":"","sources":["../../src/dependencies/CachedDependenciesLinker.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs';\n\nimport { PackageRevision, SupportedPlatform } from '../types';\nimport { scanDependenciesRecursively } from './resolution';\nimport { scanDependenciesFromRNProjectConfig } from './rncliLocal';\nimport { scanDependenciesInSearchPath } from './scanning';\nimport { type ResolutionResult, DependencyResolutionSource } from './types';\nimport { filterMapResolutionResult, mergeResolutionResults } from './utils';\nimport { resolveExpoModule } from '../autolinking/findModules';\nimport { AutolinkingOptions, createAutolinkingOptionsLoader } from '../commands/autolinkingOptions';\nimport { resolveReactNativeModule, RNConfigReactNativeProjectConfig } from '../reactNativeConfig';\nimport { loadConfigAsync } from '../reactNativeConfig/config';\n\nexport interface CachedDependenciesSearchOptions {\n excludeNames: Set<string>;\n searchPaths: string[];\n}\n\nexport interface CachedDependenciesLinker {\n getOptionsForPlatform(platform: SupportedPlatform): Promise<CachedDependenciesSearchOptions>;\n loadReactNativeProjectConfig(): Promise<RNConfigReactNativeProjectConfig | null>;\n scanDependenciesFromRNProjectConfig(): Promise<ResolutionResult>;\n scanDependenciesRecursively(): Promise<ResolutionResult>;\n scanDependenciesInSearchPath(searchPath: string): Promise<ResolutionResult>;\n}\n\nexport function makeCachedDependenciesLinker(params: {\n projectRoot: string;\n}): CachedDependenciesLinker {\n const autolinkingOptionsLoader = createAutolinkingOptionsLoader({\n projectRoot: params.projectRoot,\n });\n\n let appRoot: Promise<string> | undefined;\n const getAppRoot = () => appRoot || (appRoot = autolinkingOptionsLoader.getAppRoot());\n\n const dependenciesResultBySearchPath = new Map<string, Promise<ResolutionResult>>();\n let reactNativeProjectConfig: Promise<RNConfigReactNativeProjectConfig | null> | undefined;\n let reactNativeProjectConfigDependencies: Promise<ResolutionResult> | undefined;\n let recursiveDependencies: Promise<ResolutionResult> | undefined;\n\n return {\n async getOptionsForPlatform(platform) {\n const options = await autolinkingOptionsLoader.getPlatformOptions(platform);\n return makeCachedDependenciesSearchOptions(options);\n },\n async loadReactNativeProjectConfig() {\n if (reactNativeProjectConfig === undefined) {\n reactNativeProjectConfig = loadConfigAsync<RNConfigReactNativeProjectConfig>(\n await getAppRoot()\n );\n }\n return reactNativeProjectConfig;\n },\n async scanDependenciesFromRNProjectConfig() {\n const reactNativeProjectConfig = await this.loadReactNativeProjectConfig();\n return (\n reactNativeProjectConfigDependencies ||\n (reactNativeProjectConfigDependencies = scanDependenciesFromRNProjectConfig(\n await getAppRoot(),\n reactNativeProjectConfig\n ))\n );\n },\n async scanDependenciesRecursively() {\n return (\n recursiveDependencies ||\n (recursiveDependencies = scanDependenciesRecursively(await getAppRoot()))\n );\n },\n async scanDependenciesInSearchPath(searchPath: string) {\n let result = dependenciesResultBySearchPath.get(searchPath);\n if (!result) {\n dependenciesResultBySearchPath.set(\n searchPath,\n (result = scanDependenciesInSearchPath(searchPath))\n );\n }\n return result;\n },\n };\n}\n\nexport async function scanDependencyResolutionsForPlatform(\n linker: CachedDependenciesLinker,\n platform: SupportedPlatform,\n include?: string[]\n): Promise<ResolutionResult> {\n const { excludeNames, searchPaths } = await linker.getOptionsForPlatform(platform);\n const includeNames = new Set(include);\n const reactNativeProjectConfig = await linker.loadReactNativeProjectConfig();\n\n const resolutions = mergeResolutionResults(\n await Promise.all([\n linker.scanDependenciesFromRNProjectConfig(),\n ...searchPaths.map((searchPath) => {\n return linker.scanDependenciesInSearchPath(searchPath);\n }),\n linker.scanDependenciesRecursively(),\n ])\n );\n\n const dependencies = await filterMapResolutionResult(resolutions, async (resolution) => {\n if (excludeNames.has(resolution.name)) {\n return null;\n } else if (includeNames.has(resolution.name)) {\n return resolution;\n } else if (resolution.source === DependencyResolutionSource.RN_CLI_LOCAL) {\n // If the dependency was resolved frpom the React Native project config, we'll only\n // attempt to resolve it as a React Native module\n const reactNativeModuleDesc = await resolveReactNativeModule(\n resolution,\n reactNativeProjectConfig,\n platform,\n excludeNames\n );\n if (!reactNativeModuleDesc) {\n return null;\n }\n } else {\n const [reactNativeModule, expoModule] = await Promise.all([\n resolveReactNativeModule(resolution, reactNativeProjectConfig, platform, excludeNames),\n resolveExpoModule(resolution, platform, excludeNames),\n ]);\n if (!reactNativeModule && !expoModule) {\n return null;\n }\n }\n return resolution;\n });\n\n return dependencies;\n}\n\nexport async function scanExpoModuleResolutionsForPlatform(\n linker: CachedDependenciesLinker,\n platform: SupportedPlatform\n): Promise<Record<string, PackageRevision>> {\n const { excludeNames, searchPaths } = await linker.getOptionsForPlatform(platform);\n const resolutions = mergeResolutionResults(\n await Promise.all([\n ...searchPaths.map((searchPath) => {\n return linker.scanDependenciesInSearchPath(searchPath);\n }),\n linker.scanDependenciesRecursively(),\n ])\n );\n return await filterMapResolutionResult(resolutions, async (resolution) => {\n return !excludeNames.has(resolution.name)\n ? await resolveExpoModule(resolution, platform, excludeNames)\n : null;\n });\n}\n\nconst makeCachedDependenciesSearchOptions = (options: AutolinkingOptions) => ({\n excludeNames: new Set(options.exclude),\n searchPaths:\n options.nativeModulesDir && fs.existsSync(options.nativeModulesDir)\n ? [options.nativeModulesDir, ...(options.searchPaths ?? [])]\n : (options.searchPaths ?? []),\n});\n"]}
|
package/build/exports.d.ts
CHANGED
|
@@ -1,2 +1,18 @@
|
|
|
1
|
+
import { AutolinkingCommonArguments, AutolinkingOptions } from './commands/autolinkingOptions';
|
|
2
|
+
import { ModuleDescriptor, SupportedPlatform } from './types';
|
|
3
|
+
export * from './types';
|
|
1
4
|
export * from './autolinking';
|
|
2
|
-
export
|
|
5
|
+
export * from './platforms';
|
|
6
|
+
export { ResolutionResult, BaseDependencyResolution, DependencyResolution, DependencyResolutionSource, CachedDependenciesLinker, CachedDependenciesSearchOptions, makeCachedDependenciesLinker, scanDependencyResolutionsForPlatform, scanExpoModuleResolutionsForPlatform, } from './dependencies';
|
|
7
|
+
/** @deprecated */
|
|
8
|
+
export declare function mergeLinkingOptionsAsync<Options extends Partial<AutolinkingCommonArguments>>(argumentsOptions: Options): Promise<Options & AutolinkingOptions>;
|
|
9
|
+
interface QueryAutolinkingModulesFromProjectParams extends Partial<AutolinkingCommonArguments> {
|
|
10
|
+
platform: SupportedPlatform;
|
|
11
|
+
[extra: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
/** @deprecated */
|
|
14
|
+
export declare function queryAutolinkingModulesFromProjectAsync(projectRoot: string, options: QueryAutolinkingModulesFromProjectParams): Promise<ModuleDescriptor[]>;
|
|
15
|
+
/** @deprecated */
|
|
16
|
+
export declare function findProjectRootSync(cwd?: string): string;
|
|
17
|
+
/** @deprecated */
|
|
18
|
+
export declare function resolveSearchPathsAsync(searchPaths: string[] | null, cwd: string): Promise<string[]>;
|
package/build/exports.js
CHANGED
|
@@ -13,10 +13,57 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
13
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
16
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.scanDependencyResolutionsForPlatform = exports.makeCachedDependenciesLinker = void 0;
|
|
20
|
+
exports.scanExpoModuleResolutionsForPlatform = exports.scanDependencyResolutionsForPlatform = exports.makeCachedDependenciesLinker = void 0;
|
|
21
|
+
exports.mergeLinkingOptionsAsync = mergeLinkingOptionsAsync;
|
|
22
|
+
exports.queryAutolinkingModulesFromProjectAsync = queryAutolinkingModulesFromProjectAsync;
|
|
23
|
+
exports.findProjectRootSync = findProjectRootSync;
|
|
24
|
+
exports.resolveSearchPathsAsync = resolveSearchPathsAsync;
|
|
25
|
+
const find_up_1 = __importDefault(require("find-up"));
|
|
26
|
+
const findModules_1 = require("./autolinking/findModules");
|
|
27
|
+
const resolveModules_1 = require("./autolinking/resolveModules");
|
|
28
|
+
const autolinkingOptions_1 = require("./commands/autolinkingOptions");
|
|
29
|
+
__exportStar(require("./types"), exports);
|
|
18
30
|
__exportStar(require("./autolinking"), exports);
|
|
31
|
+
__exportStar(require("./platforms"), exports);
|
|
19
32
|
var dependencies_1 = require("./dependencies");
|
|
20
33
|
Object.defineProperty(exports, "makeCachedDependenciesLinker", { enumerable: true, get: function () { return dependencies_1.makeCachedDependenciesLinker; } });
|
|
21
34
|
Object.defineProperty(exports, "scanDependencyResolutionsForPlatform", { enumerable: true, get: function () { return dependencies_1.scanDependencyResolutionsForPlatform; } });
|
|
35
|
+
Object.defineProperty(exports, "scanExpoModuleResolutionsForPlatform", { enumerable: true, get: function () { return dependencies_1.scanExpoModuleResolutionsForPlatform; } });
|
|
36
|
+
/** @deprecated */
|
|
37
|
+
async function mergeLinkingOptionsAsync(argumentsOptions) {
|
|
38
|
+
const autolinkingOptionsLoader = (0, autolinkingOptions_1.createAutolinkingOptionsLoader)(argumentsOptions);
|
|
39
|
+
return {
|
|
40
|
+
...argumentsOptions,
|
|
41
|
+
...(await autolinkingOptionsLoader.getPlatformOptions()),
|
|
42
|
+
projectRoot: autolinkingOptionsLoader.getAppRoot(),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** @deprecated */
|
|
46
|
+
async function queryAutolinkingModulesFromProjectAsync(projectRoot, options) {
|
|
47
|
+
const autolinkingOptionsLoader = (0, autolinkingOptions_1.createAutolinkingOptionsLoader)({
|
|
48
|
+
...options,
|
|
49
|
+
// NOTE(@kitten): This has always been duplicated
|
|
50
|
+
projectRoot: options.projectRoot ?? projectRoot,
|
|
51
|
+
});
|
|
52
|
+
const appRoot = await autolinkingOptionsLoader.getAppRoot();
|
|
53
|
+
const autolinkingOptions = await autolinkingOptionsLoader.getPlatformOptions(options.platform);
|
|
54
|
+
const searchResults = await (0, findModules_1.findModulesAsync)({ appRoot, autolinkingOptions });
|
|
55
|
+
return await (0, resolveModules_1.resolveModulesAsync)(searchResults, autolinkingOptions);
|
|
56
|
+
}
|
|
57
|
+
/** @deprecated */
|
|
58
|
+
function findProjectRootSync(cwd = process.cwd()) {
|
|
59
|
+
const result = find_up_1.default.sync('package.json', { cwd });
|
|
60
|
+
if (!result) {
|
|
61
|
+
throw new Error(`Couldn't find "package.json" up from path "${cwd}"`);
|
|
62
|
+
}
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
/** @deprecated */
|
|
66
|
+
async function resolveSearchPathsAsync(searchPaths, cwd) {
|
|
67
|
+
return (0, autolinkingOptions_1.filterMapSearchPaths)(searchPaths, cwd) ?? [];
|
|
68
|
+
}
|
|
22
69
|
//# sourceMappingURL=exports.js.map
|
package/build/exports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA6BA,4DASC;AAQD,0FAaC;AAGD,kDAMC;AAGD,0DAKC;AA5ED,sDAA6B;AAE7B,2DAA6D;AAC7D,iEAAmE;AACnE,sEAKuC;AAGvC,0CAAwB;AACxB,gDAA8B;AAC9B,8CAA4B;AAE5B,+CAUwB;AAHtB,4HAAA,4BAA4B,OAAA;AAC5B,oIAAA,oCAAoC,OAAA;AACpC,oIAAA,oCAAoC,OAAA;AAGtC,kBAAkB;AACX,KAAK,UAAU,wBAAwB,CAC5C,gBAAyB;IAEzB,MAAM,wBAAwB,GAAG,IAAA,mDAA8B,EAAC,gBAAgB,CAAC,CAAC;IAClF,OAAO;QACL,GAAG,gBAAgB;QACnB,GAAG,CAAC,MAAM,wBAAwB,CAAC,kBAAkB,EAAE,CAAC;QACxD,WAAW,EAAE,wBAAwB,CAAC,UAAU,EAAE;KACnD,CAAC;AACJ,CAAC;AAOD,kBAAkB;AACX,KAAK,UAAU,uCAAuC,CAC3D,WAAmB,EACnB,OAAiD;IAEjD,MAAM,wBAAwB,GAAG,IAAA,mDAA8B,EAAC;QAC9D,GAAG,OAAO;QACV,iDAAiD;QACjD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,WAAW;KAChD,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,UAAU,EAAE,CAAC;IAC5D,MAAM,kBAAkB,GAAG,MAAM,wBAAwB,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/F,MAAM,aAAa,GAAG,MAAM,IAAA,8BAAgB,EAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9E,OAAO,MAAM,IAAA,oCAAmB,EAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACtE,CAAC;AAED,kBAAkB;AAClB,SAAgB,mBAAmB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC7D,MAAM,MAAM,GAAG,iBAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kBAAkB;AACX,KAAK,UAAU,uBAAuB,CAC3C,WAA4B,EAC5B,GAAW;IAEX,OAAO,IAAA,yCAAoB,EAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC","sourcesContent":["import findUp from 'find-up';\n\nimport { findModulesAsync } from './autolinking/findModules';\nimport { resolveModulesAsync } from './autolinking/resolveModules';\nimport {\n AutolinkingCommonArguments,\n AutolinkingOptions,\n createAutolinkingOptionsLoader,\n filterMapSearchPaths,\n} from './commands/autolinkingOptions';\nimport { ModuleDescriptor, SupportedPlatform } from './types';\n\nexport * from './types';\nexport * from './autolinking';\nexport * from './platforms';\n\nexport {\n ResolutionResult,\n BaseDependencyResolution,\n DependencyResolution,\n DependencyResolutionSource,\n CachedDependenciesLinker,\n CachedDependenciesSearchOptions,\n makeCachedDependenciesLinker,\n scanDependencyResolutionsForPlatform,\n scanExpoModuleResolutionsForPlatform,\n} from './dependencies';\n\n/** @deprecated */\nexport async function mergeLinkingOptionsAsync<Options extends Partial<AutolinkingCommonArguments>>(\n argumentsOptions: Options\n): Promise<Options & AutolinkingOptions> {\n const autolinkingOptionsLoader = createAutolinkingOptionsLoader(argumentsOptions);\n return {\n ...argumentsOptions,\n ...(await autolinkingOptionsLoader.getPlatformOptions()),\n projectRoot: autolinkingOptionsLoader.getAppRoot(),\n };\n}\n\ninterface QueryAutolinkingModulesFromProjectParams extends Partial<AutolinkingCommonArguments> {\n platform: SupportedPlatform;\n [extra: string]: unknown;\n}\n\n/** @deprecated */\nexport async function queryAutolinkingModulesFromProjectAsync(\n projectRoot: string,\n options: QueryAutolinkingModulesFromProjectParams\n): Promise<ModuleDescriptor[]> {\n const autolinkingOptionsLoader = createAutolinkingOptionsLoader({\n ...options,\n // NOTE(@kitten): This has always been duplicated\n projectRoot: options.projectRoot ?? projectRoot,\n });\n const appRoot = await autolinkingOptionsLoader.getAppRoot();\n const autolinkingOptions = await autolinkingOptionsLoader.getPlatformOptions(options.platform);\n const searchResults = await findModulesAsync({ appRoot, autolinkingOptions });\n return await resolveModulesAsync(searchResults, autolinkingOptions);\n}\n\n/** @deprecated */\nexport function findProjectRootSync(cwd: string = process.cwd()): string {\n const result = findUp.sync('package.json', { cwd });\n if (!result) {\n throw new Error(`Couldn't find \"package.json\" up from path \"${cwd}\"`);\n }\n return result;\n}\n\n/** @deprecated */\nexport async function resolveSearchPathsAsync(\n searchPaths: string[] | null,\n cwd: string\n): Promise<string[]> {\n return filterMapSearchPaths(searchPaths, cwd) ?? [];\n}\n"]}
|
package/build/index.js
CHANGED
|
@@ -4,167 +4,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const commander_1 = __importDefault(require("commander"));
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* Registers a command that only searches for available expo modules.
|
|
16
|
-
*/
|
|
17
|
-
function registerSearchCommand(commandName, fn) {
|
|
18
|
-
return commander_1.default
|
|
19
|
-
.command(`${commandName} [paths...]`)
|
|
20
|
-
.option('-i, --ignore-paths <ignorePaths...>', 'Paths to ignore when looking up for modules.', (value, previous) => (previous ?? []).concat(value))
|
|
21
|
-
.option('-e, --exclude <exclude...>', 'Package names to exclude when looking up for modules.', (value, previous) => (previous ?? []).concat(value))
|
|
22
|
-
.option('-p, --platform [platform]', 'The platform that the resulting modules must support. Available options: "apple", "android"', 'apple')
|
|
23
|
-
.option('--silent', 'Silence resolution warnings')
|
|
24
|
-
.addOption(new commander_1.default.Option('--project-root <projectRoot>', 'The path to the root of the project').default(process.cwd(), 'process.cwd()'))
|
|
25
|
-
.option('--only-project-deps', 'For a monorepo, include only modules that are the project dependencies.', true)
|
|
26
|
-
.option('--no-only-project-deps', 'Opposite of --only-project-deps', false)
|
|
27
|
-
.action(async (searchPaths, providedOptions) => {
|
|
28
|
-
const options = await (0, autolinking_1.mergeLinkingOptionsAsync)(searchPaths.length > 0
|
|
29
|
-
? {
|
|
30
|
-
...providedOptions,
|
|
31
|
-
searchPaths,
|
|
32
|
-
}
|
|
33
|
-
: providedOptions);
|
|
34
|
-
const searchResults = await (0, autolinking_1.findModulesAsync)(options);
|
|
35
|
-
return await fn(searchResults, options);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Registers a command that searches for modules and then resolves them for specific platform.
|
|
40
|
-
*/
|
|
41
|
-
function registerResolveCommand(commandName, fn) {
|
|
42
|
-
return registerSearchCommand(commandName, fn);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Registry the `react-native-config` command.
|
|
46
|
-
*/
|
|
47
|
-
function registerReactNativeConfigCommand() {
|
|
48
|
-
return commander_1.default
|
|
49
|
-
.command('react-native-config [paths...]')
|
|
50
|
-
.option('-p, --platform [platform]', 'The platform that the resulting modules must support. Available options: "android", "ios"', 'ios')
|
|
51
|
-
.addOption(new commander_1.default.Option('--project-root <projectRoot>', 'The path to the root of the project').default(process.cwd(), 'process.cwd()'))
|
|
52
|
-
.option('--source-dir <sourceDir>', 'The path to the native source directory')
|
|
53
|
-
.option('-j, --json', 'Output results in the plain JSON format.', () => true, false)
|
|
54
|
-
.action(async (searchPaths, providedOptions) => {
|
|
55
|
-
if (!['android', 'ios'].includes(providedOptions.platform)) {
|
|
56
|
-
throw new Error(`Unsupported platform: ${providedOptions.platform}`);
|
|
57
|
-
}
|
|
58
|
-
const projectRoot = path_1.default.dirname(await (0, autolinking_1.getProjectPackageJsonPathAsync)(providedOptions.projectRoot));
|
|
59
|
-
const options = await (0, autolinking_1.mergeLinkingOptionsAsync)(searchPaths.length > 0
|
|
60
|
-
? {
|
|
61
|
-
...providedOptions,
|
|
62
|
-
projectRoot,
|
|
63
|
-
searchPaths,
|
|
64
|
-
}
|
|
65
|
-
: {
|
|
66
|
-
...providedOptions,
|
|
67
|
-
projectRoot,
|
|
68
|
-
});
|
|
69
|
-
const results = await (0, reactNativeConfig_1.createReactNativeConfigAsync)(options);
|
|
70
|
-
if (providedOptions.json) {
|
|
71
|
-
console.log(JSON.stringify(results));
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
console.log(require('util').inspect(results, false, null, true));
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
Register the `verify` command.
|
|
80
|
-
*/
|
|
81
|
-
function registerVerifyCommand() {
|
|
82
|
-
return commander_1.default
|
|
83
|
-
.command('verify')
|
|
84
|
-
.option('-p, --platform [platform]', 'The platform to validate native modules for. Available options: "android", "ios", "both"', 'both')
|
|
85
|
-
.addOption(new commander_1.default.Option('--project-root <projectRoot>', 'The path to the root of the project').default(process.cwd(), 'process.cwd()'))
|
|
86
|
-
.option('-v, --verbose', 'Output all results instead of just warnings.', () => true, false)
|
|
87
|
-
.option('-j, --json', 'Output results in the plain JSON format.', () => true, false)
|
|
88
|
-
.action(async (providedOptions) => {
|
|
89
|
-
const platforms = providedOptions.platform === 'both' ? ['android', 'ios'] : [providedOptions.platform];
|
|
90
|
-
const linker = (0, dependencies_1.makeCachedDependenciesLinker)({ projectRoot: providedOptions.projectRoot });
|
|
91
|
-
const results = (0, dependencies_1.mergeResolutionResults)(await Promise.all(platforms.map((platform) => (0, dependencies_1.scanDependencyResolutionsForPlatform)(linker, platform))));
|
|
92
|
-
await (0, autolinking_1.verifySearchResults)(results, {
|
|
93
|
-
projectRoot: providedOptions.projectRoot,
|
|
94
|
-
verbose: providedOptions.verbose,
|
|
95
|
-
json: providedOptions.json,
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
module.exports = async function (args) {
|
|
100
|
-
// Searches for available expo modules.
|
|
101
|
-
registerSearchCommand('search', async (results, options) => {
|
|
102
|
-
if (options.json) {
|
|
103
|
-
console.log(JSON.stringify(results));
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
console.log(require('util').inspect(results, false, null, true));
|
|
107
|
-
}
|
|
108
|
-
}).option('-j, --json', 'Output results in the plain JSON format.', () => true, false);
|
|
109
|
-
// Checks whether there are no resolving issues in the current setup.
|
|
110
|
-
registerVerifyCommand();
|
|
111
|
-
// Searches for available expo modules and resolves the results for given platform.
|
|
112
|
-
registerResolveCommand('resolve', async (results, options) => {
|
|
113
|
-
const modules = await (0, autolinking_1.resolveModulesAsync)(results, options);
|
|
114
|
-
const extraDependencies = await (0, autolinking_1.resolveExtraBuildDependenciesAsync)(options);
|
|
115
|
-
const configuration = (0, autolinking_1.getConfiguration)(options);
|
|
116
|
-
const coreFeatures = [
|
|
117
|
-
...modules.reduce((acc, module) => {
|
|
118
|
-
if (hasCoreFeatures(module)) {
|
|
119
|
-
const features = module.coreFeatures ?? [];
|
|
120
|
-
for (const feature of features) {
|
|
121
|
-
acc.add(feature);
|
|
122
|
-
}
|
|
123
|
-
return acc;
|
|
124
|
-
}
|
|
125
|
-
return acc;
|
|
126
|
-
}, new Set()),
|
|
127
|
-
];
|
|
128
|
-
if (options.json) {
|
|
129
|
-
console.log(JSON.stringify({
|
|
130
|
-
extraDependencies,
|
|
131
|
-
coreFeatures,
|
|
132
|
-
modules,
|
|
133
|
-
...(configuration ? { configuration } : {}),
|
|
134
|
-
}));
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
console.log(require('util').inspect({
|
|
138
|
-
extraDependencies,
|
|
139
|
-
coreFeatures,
|
|
140
|
-
modules,
|
|
141
|
-
...(configuration ? { configuration } : {}),
|
|
142
|
-
}, false, null, true));
|
|
143
|
-
}
|
|
144
|
-
}).option('-j, --json', 'Output results in the plain JSON format.', () => true, false);
|
|
145
|
-
// Generates a source file listing all packages to link.
|
|
146
|
-
// It's deprecated for apple platforms, use `generate-modules-provider` instead.
|
|
147
|
-
registerResolveCommand('generate-package-list', async (results, options) => {
|
|
148
|
-
const modules = options.empty ? [] : await (0, autolinking_1.resolveModulesAsync)(results, options);
|
|
149
|
-
(0, autolinking_1.generatePackageListAsync)(modules, options);
|
|
150
|
-
})
|
|
151
|
-
.option('-t, --target <path>', 'Path to the target file, where the package list should be written to.')
|
|
152
|
-
.option('-n, --namespace <namespace>', 'Java package name under which the package list should be placed.')
|
|
153
|
-
.option('--empty', 'Whether to only generate an empty list. Might be used when the user opts-out of autolinking.', false);
|
|
154
|
-
// Generates a source file listing all packages to link in the runtime.
|
|
155
|
-
registerResolveCommand('generate-modules-provider', async (results, options) => {
|
|
156
|
-
const packages = options.packages ?? [];
|
|
157
|
-
const modules = await (0, autolinking_1.resolveModulesAsync)(results, options);
|
|
158
|
-
const filteredModules = modules.filter((module) => packages.includes(module.packageName));
|
|
159
|
-
(0, autolinking_1.generateModulesProviderAsync)(filteredModules, options);
|
|
160
|
-
})
|
|
161
|
-
.option('-t, --target <path>', 'Path to the target file, where the package list should be written to.')
|
|
162
|
-
.option('--entitlement <path>', 'Path to the Apple code signing entitlements file.')
|
|
163
|
-
.option('-p, --packages <packages...>', 'Names of the packages to include in the generated modules provider.');
|
|
164
|
-
registerReactNativeConfigCommand();
|
|
165
|
-
await commander_1.default
|
|
7
|
+
const generateModulesProviderCommand_1 = require("./commands/generateModulesProviderCommand");
|
|
8
|
+
const generatePackageListCommand_1 = require("./commands/generatePackageListCommand");
|
|
9
|
+
const reactNativeConfigCommand_1 = require("./commands/reactNativeConfigCommand");
|
|
10
|
+
const resolveCommand_1 = require("./commands/resolveCommand");
|
|
11
|
+
const searchCommand_1 = require("./commands/searchCommand");
|
|
12
|
+
const verifyCommand_1 = require("./commands/verifyCommand");
|
|
13
|
+
async function main(args) {
|
|
14
|
+
const cli = commander_1.default
|
|
166
15
|
.version(require('expo-modules-autolinking/package.json').version)
|
|
167
|
-
.description('CLI command that searches for
|
|
168
|
-
|
|
169
|
-
|
|
16
|
+
.description('CLI command that searches for native modules to autolink them.');
|
|
17
|
+
(0, verifyCommand_1.verifyCommand)(cli);
|
|
18
|
+
(0, searchCommand_1.searchCommand)(cli);
|
|
19
|
+
(0, resolveCommand_1.resolveCommand)(cli);
|
|
20
|
+
(0, generatePackageListCommand_1.generatePackageListCommand)(cli);
|
|
21
|
+
(0, generateModulesProviderCommand_1.generateModulesProviderCommand)(cli);
|
|
22
|
+
(0, reactNativeConfigCommand_1.reactNativeConfigCommand)(cli);
|
|
23
|
+
await cli.parseAsync(args, { from: 'user' });
|
|
24
|
+
}
|
|
25
|
+
module.exports = main;
|
|
170
26
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAClC,gDAAwB;AAExB,+CAUuB;AACvB,iDAIwB;AACxB,2DAAgG;AAahG,SAAS,eAAe,CACtB,MAAwB;IAExB,OAAQ,MAAuC,CAAC,YAAY,KAAK,SAAS,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,WAAmB,EACnB,EAAwD;IAExD,OAAO,mBAAS;SACb,OAAO,CAAC,GAAG,WAAW,aAAa,CAAC;SACpC,MAAM,CACL,qCAAqC,EACrC,8CAA8C,EAC9C,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACpD;SACA,MAAM,CACL,4BAA4B,EAC5B,uDAAuD,EACvD,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACpD;SACA,MAAM,CACL,2BAA2B,EAC3B,6FAA6F,EAC7F,OAAO,CACR;SACA,MAAM,CAAC,UAAU,EAAE,6BAA6B,CAAC;SACjD,SAAS,CACR,IAAI,mBAAS,CAAC,MAAM,CAClB,8BAA8B,EAC9B,qCAAqC,CACtC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAC1C;SACA,MAAM,CACL,qBAAqB,EACrB,yEAAyE,EACzE,IAAI,CACL;SACA,MAAM,CAAC,wBAAwB,EAAE,iCAAiC,EAAE,KAAK,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAA,sCAAwB,EAC5C,WAAW,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC;gBACE,GAAG,eAAe;gBAClB,WAAW;aACZ;YACH,CAAC,CAAC,eAAe,CACpB,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,IAAA,8BAAgB,EAAC,OAAO,CAAC,CAAC;QACtD,OAAO,MAAM,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,WAAmB,EACnB,EAAwD;IAExD,OAAO,qBAAqB,CAAc,WAAW,EAAE,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,SAAS,gCAAgC;IACvC,OAAO,mBAAS;SACb,OAAO,CAAC,gCAAgC,CAAC;SACzC,MAAM,CACL,2BAA2B,EAC3B,2FAA2F,EAC3F,KAAK,CACN;SACA,SAAS,CACR,IAAI,mBAAS,CAAC,MAAM,CAClB,8BAA8B,EAC9B,qCAAqC,CACtC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAC1C;SACA,MAAM,CAAC,0BAA0B,EAAE,yCAAyC,CAAC;SAC7E,MAAM,CAAU,YAAY,EAAE,0CAA0C,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;SAC5F,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE;QAC7C,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAC9B,MAAM,IAAA,4CAA8B,EAAC,eAAe,CAAC,WAAW,CAAC,CAClE,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAA,sCAAwB,EAC5C,WAAW,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC;gBACE,GAAG,eAAe;gBAClB,WAAW;gBACX,WAAW;aACZ;YACH,CAAC,CAAC;gBACE,GAAG,eAAe;gBAClB,WAAW;aACZ,CACN,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAA,gDAA4B,EAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB;IAC5B,OAAO,mBAAS;SACb,OAAO,CAAC,QAAQ,CAAC;SACjB,MAAM,CACL,2BAA2B,EAC3B,0FAA0F,EAC1F,MAAM,CACP;SACA,SAAS,CACR,IAAI,mBAAS,CAAC,MAAM,CAClB,8BAA8B,EAC9B,qCAAqC,CACtC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAC1C;SACA,MAAM,CACL,eAAe,EACf,8CAA8C,EAC9C,GAAG,EAAE,CAAC,IAAI,EACV,KAAK,CACN;SACA,MAAM,CAAU,YAAY,EAAE,0CAA0C,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;SAC5F,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE;QAChC,MAAM,SAAS,GACb,eAAe,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,IAAA,2CAA4B,EAAC,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1F,MAAM,OAAO,GAAG,IAAA,qCAAsB,EACpC,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAA,mDAAoC,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CACpF,CACF,CAAC;QACF,MAAM,IAAA,iCAAmB,EAAC,OAAO,EAAE;YACjC,WAAW,EAAE,eAAe,CAAC,WAAW;YACxC,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,KAAK,WAAW,IAAc;IAC7C,uCAAuC;IACvC,qBAAqB,CAAqC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAC7F,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC,CAAC,MAAM,CAAU,YAAY,EAAE,0CAA0C,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhG,qEAAqE;IACrE,qBAAqB,EAAE,CAAC;IAExB,mFAAmF;IACnF,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAmB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,MAAM,IAAA,gDAAkC,EAAC,OAAO,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAG,IAAA,8BAAgB,EAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,YAAY,GAAG;YACnB,GAAG,OAAO,CAAC,MAAM,CAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC7C,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC/B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACnB,CAAC;oBACD,OAAO,GAAG,CAAC;gBACb,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC;SACd,CAAC;QACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;gBACb,iBAAiB;gBACjB,YAAY;gBACZ,OAAO;gBACP,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CACrB;gBACE,iBAAiB;gBACjB,YAAY;gBACZ,OAAO;gBACP,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C,EACD,KAAK,EACL,IAAI,EACJ,IAAI,CACL,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC,MAAM,CAAU,YAAY,EAAE,0CAA0C,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhG,wDAAwD;IACxD,gFAAgF;IAChF,sBAAsB,CAAkB,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAC1F,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAA,iCAAmB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjF,IAAA,sCAAwB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC;SACC,MAAM,CACL,qBAAqB,EACrB,uEAAuE,CACxE;SACA,MAAM,CACL,6BAA6B,EAC7B,kEAAkE,CACnE;SACA,MAAM,CACL,SAAS,EACT,8FAA8F,EAC9F,KAAK,CACN,CAAC;IAEJ,uEAAuE;IACvE,sBAAsB,CACpB,2BAA2B,EAC3B,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAmB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAE1F,IAAA,0CAA4B,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC,CACF;SACE,MAAM,CACL,qBAAqB,EACrB,uEAAuE,CACxE;SACA,MAAM,CAAC,sBAAsB,EAAE,mDAAmD,CAAC;SACnF,MAAM,CACL,8BAA8B,EAC9B,qEAAqE,CACtE,CAAC;IAEJ,gCAAgC,EAAE,CAAC;IAEnC,MAAM,mBAAS;SACZ,OAAO,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,OAAO,CAAC;SACjE,WAAW,CAAC,8DAA8D,CAAC;SAC3E,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC","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 {\n makeCachedDependenciesLinker,\n mergeResolutionResults,\n scanDependencyResolutionsForPlatform,\n} from './dependencies';\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('--source-dir <sourceDir>', 'The path to the native source directory')\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 options = await mergeLinkingOptionsAsync<RNConfigCommandOptions>(\n searchPaths.length > 0\n ? {\n ...providedOptions,\n projectRoot,\n searchPaths,\n }\n : {\n ...providedOptions,\n projectRoot,\n }\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\n/**\n Register the `verify` command.\n */\nfunction registerVerifyCommand() {\n return commander\n .command('verify')\n .option(\n '-p, --platform [platform]',\n 'The platform to validate native modules for. Available options: \"android\", \"ios\", \"both\"',\n 'both'\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>(\n '-v, --verbose',\n 'Output all results instead of just warnings.',\n () => true,\n false\n )\n .option<boolean>('-j, --json', 'Output results in the plain JSON format.', () => true, false)\n .action(async (providedOptions) => {\n const platforms =\n providedOptions.platform === 'both' ? ['android', 'ios'] : [providedOptions.platform];\n const linker = makeCachedDependenciesLinker({ projectRoot: providedOptions.projectRoot });\n const results = mergeResolutionResults(\n await Promise.all(\n platforms.map((platform) => scanDependencyResolutionsForPlatform(linker, platform))\n )\n );\n await verifySearchResults(results, {\n projectRoot: providedOptions.projectRoot,\n verbose: providedOptions.verbose,\n json: providedOptions.json,\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 registerVerifyCommand();\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":";;;;;AAAA,0DAAkC;AAElC,8FAA2F;AAC3F,sFAAmF;AACnF,kFAA+E;AAC/E,8DAA2D;AAC3D,4DAAyD;AACzD,4DAAyD;AAEzD,KAAK,UAAU,IAAI,CAAC,IAAc;IAChC,MAAM,GAAG,GAAG,mBAAS;SAClB,OAAO,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,OAAO,CAAC;SACjE,WAAW,CAAC,gEAAgE,CAAC,CAAC;IAEjF,IAAA,6BAAa,EAAC,GAAG,CAAC,CAAC;IACnB,IAAA,6BAAa,EAAC,GAAG,CAAC,CAAC;IACnB,IAAA,+BAAc,EAAC,GAAG,CAAC,CAAC;IACpB,IAAA,uDAA0B,EAAC,GAAG,CAAC,CAAC;IAChC,IAAA,+DAA8B,EAAC,GAAG,CAAC,CAAC;IACpC,IAAA,mDAAwB,EAAC,GAAG,CAAC,CAAC;IAE9B,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC","sourcesContent":["import commander from 'commander';\n\nimport { generateModulesProviderCommand } from './commands/generateModulesProviderCommand';\nimport { generatePackageListCommand } from './commands/generatePackageListCommand';\nimport { reactNativeConfigCommand } from './commands/reactNativeConfigCommand';\nimport { resolveCommand } from './commands/resolveCommand';\nimport { searchCommand } from './commands/searchCommand';\nimport { verifyCommand } from './commands/verifyCommand';\n\nasync function main(args: string[]) {\n const cli = commander\n .version(require('expo-modules-autolinking/package.json').version)\n .description('CLI command that searches for native modules to autolink them.');\n\n verifyCommand(cli);\n searchCommand(cli);\n resolveCommand(cli);\n generatePackageListCommand(cli);\n generateModulesProviderCommand(cli);\n reactNativeConfigCommand(cli);\n\n await cli.parseAsync(args, { from: 'user' });\n}\n\nmodule.exports = main;\n"]}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { AutolinkingOptions } from '../../commands/autolinkingOptions';
|
|
2
|
+
import type { ExtraDependencies, ModuleDescriptorAndroid, PackageRevision } from '../../types';
|
|
3
|
+
interface AndroidConfigurationOutput {
|
|
4
|
+
buildFromSource: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare function getConfiguration(options: AutolinkingOptions): AndroidConfigurationOutput | undefined;
|
|
3
7
|
/**
|
|
4
8
|
* Generates Java file that contains all autolinked packages.
|
|
5
9
|
*/
|
|
@@ -36,3 +40,4 @@ export declare function convertPackageWithGradleToProjectName(packageName: strin
|
|
|
36
40
|
* tries to align the behavior with the `withGradleProperties` plugin.
|
|
37
41
|
*/
|
|
38
42
|
export declare function searchGradlePropertyFirst(contents: string, propertyName: string): string | null;
|
|
43
|
+
export {};
|
|
@@ -18,11 +18,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
18
18
|
const ANDROID_PROPERTIES_FILE = 'gradle.properties';
|
|
19
19
|
const ANDROID_EXTRA_BUILD_DEPS_KEY = 'android.extraMavenRepos';
|
|
20
20
|
function getConfiguration(options) {
|
|
21
|
-
|
|
22
|
-
if (buildFromSource) {
|
|
23
|
-
return { buildFromSource };
|
|
24
|
-
}
|
|
25
|
-
return undefined;
|
|
21
|
+
return options.buildFromSource ? { buildFromSource: options.buildFromSource } : undefined;
|
|
26
22
|
}
|
|
27
23
|
/**
|
|
28
24
|
* Generates Java file that contains all autolinked packages.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"android.js","sourceRoot":"","sources":["../../../src/platforms/android/android.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs';\nimport { glob } from 'glob';\nimport path from 'path';\n\nimport { AutolinkingOptions } from '../../commands/autolinkingOptions';\nimport type { ExtraDependencies, ModuleDescriptorAndroid, PackageRevision } from '../../types';\n\nconst ANDROID_PROPERTIES_FILE = 'gradle.properties';\nconst ANDROID_EXTRA_BUILD_DEPS_KEY = 'android.extraMavenRepos';\n\ninterface AndroidConfigurationOutput {\n buildFromSource: string[];\n}\n\nexport function getConfiguration(\n options: AutolinkingOptions\n): AndroidConfigurationOutput | undefined {\n return options.buildFromSource ? { buildFromSource: options.buildFromSource } : 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 = `${defaultProjectName}$${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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getConfiguration, generatePackageListAsync, resolveModuleAsync, resolveExtraBuildDependenciesAsync, } from './android';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveExtraBuildDependenciesAsync = exports.resolveModuleAsync = exports.generatePackageListAsync = exports.getConfiguration = void 0;
|
|
4
|
+
var android_1 = require("./android");
|
|
5
|
+
Object.defineProperty(exports, "getConfiguration", { enumerable: true, get: function () { return android_1.getConfiguration; } });
|
|
6
|
+
Object.defineProperty(exports, "generatePackageListAsync", { enumerable: true, get: function () { return android_1.generatePackageListAsync; } });
|
|
7
|
+
Object.defineProperty(exports, "resolveModuleAsync", { enumerable: true, get: function () { return android_1.resolveModuleAsync; } });
|
|
8
|
+
Object.defineProperty(exports, "resolveExtraBuildDependenciesAsync", { enumerable: true, get: function () { return android_1.resolveExtraBuildDependenciesAsync; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platforms/android/index.ts"],"names":[],"mappings":";;;AAAA,qCAKmB;AAJjB,2GAAA,gBAAgB,OAAA;AAChB,mHAAA,wBAAwB,OAAA;AACxB,6GAAA,kBAAkB,OAAA;AAClB,6HAAA,kCAAkC,OAAA","sourcesContent":["export {\n getConfiguration,\n generatePackageListAsync,\n resolveModuleAsync,\n resolveExtraBuildDependenciesAsync,\n} from './android';\n"]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { ExtraDependencies, ModuleDescriptorIos, ModuleIosPodspecInfo, PackageRevision
|
|
1
|
+
import type { ExtraDependencies, ModuleDescriptorIos, ModuleIosPodspecInfo, PackageRevision } from '../../types';
|
|
2
2
|
export declare function getSwiftModuleNames(pods: ModuleIosPodspecInfo[], swiftModuleNames: string[] | undefined): string[];
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
/** Resolves module search result with additional details required for iOS platform. */
|
|
4
|
+
export declare function resolveModuleAsync(packageName: string, revision: PackageRevision, extraOutput: {
|
|
5
|
+
flags?: Record<string, any>;
|
|
6
|
+
}): Promise<ModuleDescriptorIos | null>;
|
|
7
7
|
export declare function resolveExtraBuildDependenciesAsync(projectNativeRoot: string): Promise<ExtraDependencies | null>;
|
|
8
8
|
/**
|
|
9
9
|
* Generates Swift file that contains all autolinked Swift packages.
|
|
10
10
|
*/
|
|
11
|
-
export declare function generateModulesProviderAsync(modules: ModuleDescriptorIos[], targetPath: string, entitlementPath: string): Promise<void>;
|
|
11
|
+
export declare function generateModulesProviderAsync(modules: ModuleDescriptorIos[], targetPath: string, entitlementPath: string | null): Promise<void>;
|
|
12
12
|
/**
|
|
13
13
|
* Formats an array of modules to Swift's array containing ReactDelegateHandlers
|
|
14
14
|
*/
|
|
@@ -12,7 +12,7 @@ const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
|
|
|
12
12
|
const fs_1 = __importDefault(require("fs"));
|
|
13
13
|
const glob_1 = require("glob");
|
|
14
14
|
const path_1 = __importDefault(require("path"));
|
|
15
|
-
const fileUtils_1 = require("
|
|
15
|
+
const fileUtils_1 = require("../../fileUtils");
|
|
16
16
|
const APPLE_PROPERTIES_FILE = 'Podfile.properties.json';
|
|
17
17
|
const APPLE_EXTRA_BUILD_DEPS_KEY = 'apple.extraPods';
|
|
18
18
|
const indent = ' ';
|
|
@@ -34,10 +34,8 @@ function getSwiftModuleNames(pods, swiftModuleNames) {
|
|
|
34
34
|
// by default, non-alphanumeric characters in the pod name are replaced by _ in the module name
|
|
35
35
|
return pods.map((pod) => pod.podName.replace(/[^a-zA-Z0-9]/g, '_'));
|
|
36
36
|
}
|
|
37
|
-
/**
|
|
38
|
-
|
|
39
|
-
*/
|
|
40
|
-
async function resolveModuleAsync(packageName, revision, options) {
|
|
37
|
+
/** Resolves module search result with additional details required for iOS platform. */
|
|
38
|
+
async function resolveModuleAsync(packageName, revision, extraOutput) {
|
|
41
39
|
const podspecFiles = await findPodspecFiles(revision);
|
|
42
40
|
if (!podspecFiles.length) {
|
|
43
41
|
return null;
|
|
@@ -52,7 +50,7 @@ async function resolveModuleAsync(packageName, revision, options) {
|
|
|
52
50
|
packageName,
|
|
53
51
|
pods,
|
|
54
52
|
swiftModuleNames,
|
|
55
|
-
flags:
|
|
53
|
+
flags: extraOutput.flags,
|
|
56
54
|
modules: revision.config?.appleModules() ?? [],
|
|
57
55
|
appDelegateSubscribers: revision.config?.appleAppDelegateSubscribers() ?? [],
|
|
58
56
|
reactDelegateHandlers: revision.config?.appleReactDelegateHandlers() ?? [],
|
|
@@ -194,7 +192,7 @@ function wrapInDebugConfigurationCheck(indentationLevel, debugBlock, releaseBloc
|
|
|
194
192
|
return `${indent.repeat(indentationLevel)}#if EXPO_CONFIGURATION_DEBUG\n${indent.repeat(indentationLevel)}${debugBlock}\n${indent.repeat(indentationLevel)}#endif`;
|
|
195
193
|
}
|
|
196
194
|
async function parseEntitlementsAsync(entitlementPath) {
|
|
197
|
-
if (!(await (0, fileUtils_1.fileExistsAsync)(entitlementPath))) {
|
|
195
|
+
if (!entitlementPath || !(await (0, fileUtils_1.fileExistsAsync)(entitlementPath))) {
|
|
198
196
|
return {};
|
|
199
197
|
}
|
|
200
198
|
const { stdout } = await (0, spawn_async_1.default)('plutil', ['-convert', 'json', '-o', '-', entitlementPath]);
|