chore: build
This commit is contained in:
+6
@@ -10,6 +10,12 @@
|
||||
|
||||
### 💡 Others
|
||||
|
||||
## 3.0.25 — 2026-04-27
|
||||
|
||||
### 🐛 Bug fixes
|
||||
|
||||
- Fix missing deep object merging that should allow a project config to override a dependency's per-platform config options selectively ([#44668](https://github.com/expo/expo/pull/44668) by [@kitten](https://github.com/kitten))
|
||||
|
||||
## 3.0.24 — 2026-01-06
|
||||
|
||||
### 💡 Others
|
||||
|
||||
Generated
Vendored
+21
-4
@@ -14,6 +14,22 @@ const iosResolver_1 = require("./iosResolver");
|
||||
const ExpoModuleConfig_1 = require("../ExpoModuleConfig");
|
||||
const dependencies_1 = require("../dependencies");
|
||||
const webResolver_1 = require("./webResolver");
|
||||
const deepObjectMerge = (target, source) => {
|
||||
if (source !== undefined &&
|
||||
typeof target === 'object' &&
|
||||
target != null &&
|
||||
!Array.isArray(target) &&
|
||||
(!target.constructor || target.constructor === Object) &&
|
||||
typeof source === 'object' &&
|
||||
!Array.isArray(source)) {
|
||||
target = { ...target };
|
||||
for (const key in source) {
|
||||
target[key] = deepObjectMerge(target[key], source[key]);
|
||||
}
|
||||
return target;
|
||||
}
|
||||
return source !== undefined ? source : target;
|
||||
};
|
||||
const isMissingFBReactNativeSpecCodegenOutput = async (reactNativePath) => {
|
||||
const generatedDir = path_1.default.resolve(reactNativePath, 'React/FBReactNativeSpec');
|
||||
try {
|
||||
@@ -36,15 +52,16 @@ async function resolveReactNativeModule(resolution, projectConfig, platform, exc
|
||||
return null;
|
||||
}
|
||||
const libraryConfig = (await (0, config_1.loadConfigAsync)(resolution.path));
|
||||
const reactNativeConfig = {
|
||||
...libraryConfig?.dependency,
|
||||
...projectConfig?.dependencies?.[resolution.name],
|
||||
};
|
||||
if (Object.keys(libraryConfig?.platforms ?? {}).length > 0) {
|
||||
// Package defines platforms would be a platform host package.
|
||||
// The rnc-cli will skip this package.
|
||||
return null;
|
||||
}
|
||||
let reactNativeConfig = libraryConfig?.dependency ?? {};
|
||||
const projectDependencyOverride = projectConfig?.dependencies?.[resolution.name];
|
||||
if (projectDependencyOverride != null) {
|
||||
reactNativeConfig = deepObjectMerge(reactNativeConfig, projectDependencyOverride);
|
||||
}
|
||||
let maybeExpoModuleConfig;
|
||||
if (!libraryConfig) {
|
||||
// NOTE(@kitten): If we don't have an explicit react-native.config.{js,ts} file,
|
||||
|
||||
Generated
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "expo-modules-autolinking",
|
||||
"version": "3.0.24",
|
||||
"version": "3.0.25",
|
||||
"description": "Scripts that autolink Expo modules.",
|
||||
"main": "build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
@@ -44,5 +44,5 @@
|
||||
"require-from-string": "^2.0.2",
|
||||
"resolve-from": "^5.0.0"
|
||||
},
|
||||
"gitHead": "e615daa250a27c60da3cea1f0572dcde93df5b68"
|
||||
"gitHead": "dd4e87727c4ef32ac5d8a7b5a42fd80da254140f"
|
||||
}
|
||||
|
||||
Generated
Vendored
+25
-4
@@ -31,6 +31,25 @@ import {
|
||||
} from '../dependencies';
|
||||
import { checkDependencyWebAsync } from './webResolver';
|
||||
|
||||
const deepObjectMerge = (target: any, source: any): any => {
|
||||
if (
|
||||
source !== undefined &&
|
||||
typeof target === 'object' &&
|
||||
target != null &&
|
||||
!Array.isArray(target) &&
|
||||
(!target.constructor || target.constructor === Object) &&
|
||||
typeof source === 'object' &&
|
||||
!Array.isArray(source)
|
||||
) {
|
||||
target = { ...target };
|
||||
for (const key in source) {
|
||||
target[key] = deepObjectMerge(target[key], source[key]);
|
||||
}
|
||||
return target;
|
||||
}
|
||||
return source !== undefined ? source : target;
|
||||
};
|
||||
|
||||
const isMissingFBReactNativeSpecCodegenOutput = async (reactNativePath: string) => {
|
||||
const generatedDir = path.resolve(reactNativePath, 'React/FBReactNativeSpec');
|
||||
try {
|
||||
@@ -60,10 +79,6 @@ export async function resolveReactNativeModule(
|
||||
const libraryConfig = (await loadConfigAsync(
|
||||
resolution.path
|
||||
)) as RNConfigReactNativeLibraryConfig;
|
||||
const reactNativeConfig = {
|
||||
...libraryConfig?.dependency,
|
||||
...projectConfig?.dependencies?.[resolution.name],
|
||||
};
|
||||
|
||||
if (Object.keys(libraryConfig?.platforms ?? {}).length > 0) {
|
||||
// Package defines platforms would be a platform host package.
|
||||
@@ -71,6 +86,12 @@ export async function resolveReactNativeModule(
|
||||
return null;
|
||||
}
|
||||
|
||||
let reactNativeConfig = libraryConfig?.dependency ?? {};
|
||||
const projectDependencyOverride = projectConfig?.dependencies?.[resolution.name];
|
||||
if (projectDependencyOverride != null) {
|
||||
reactNativeConfig = deepObjectMerge(reactNativeConfig, projectDependencyOverride);
|
||||
}
|
||||
|
||||
let maybeExpoModuleConfig: ExpoModuleConfig | null | undefined;
|
||||
if (!libraryConfig) {
|
||||
// NOTE(@kitten): If we don't have an explicit react-native.config.{js,ts} file,
|
||||
|
||||
Reference in New Issue
Block a user