Skip to content

Commit 7364f91

Browse files
committed
feat: expose brownfield navigation as separate package
1 parent 9d20ca7 commit 7364f91

23 files changed

Lines changed: 278 additions & 49 deletions

apps/AppleApp/Brownfield Apple App.xcodeproj/project.pbxproj

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
798B42862F3E9A8B00DAD195 /* BrownfieldLib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79A7F5CA2F3E93D90099076A /* BrownfieldLib.xcframework */; };
11-
798B42872F3E9A8B00DAD195 /* BrownfieldLib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 79A7F5CA2F3E93D90099076A /* BrownfieldLib.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
12-
798B42882F3E9A8D00DAD195 /* Brownie.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79A7F5CB2F3E93D90099076A /* Brownie.xcframework */; };
13-
798B42892F3E9A8D00DAD195 /* Brownie.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 79A7F5CB2F3E93D90099076A /* Brownie.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
14-
798B428A2F3E9A8E00DAD195 /* hermesvm.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79A7F5CC2F3E93D90099076A /* hermesvm.xcframework */; };
15-
798B428B2F3E9A8E00DAD195 /* hermesvm.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 79A7F5CC2F3E93D90099076A /* hermesvm.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
16-
798B428C2F3E9A8F00DAD195 /* ReactBrownfield.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79A7F5CD2F3E93D90099076A /* ReactBrownfield.xcframework */; };
17-
798B428D2F3E9A8F00DAD195 /* ReactBrownfield.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 79A7F5CD2F3E93D90099076A /* ReactBrownfield.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
10+
6108E5342F40A26800EA8FA1 /* BrownfieldNavigation.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6108E5332F40A26800EA8FA1 /* BrownfieldNavigation.xcframework */; };
11+
6108E5352F40A26800EA8FA1 /* BrownfieldNavigation.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6108E5332F40A26800EA8FA1 /* BrownfieldNavigation.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
12+
798DE8D72F0EC98E00CFC6F3 /* BrownfieldLib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79A9BC7E2EF5781F009EC2E3 /* BrownfieldLib.xcframework */; };
13+
798DE8D82F0EC98E00CFC6F3 /* BrownfieldLib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 79A9BC7E2EF5781F009EC2E3 /* BrownfieldLib.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
14+
798DE8DA2F0EC98F00CFC6F3 /* hermesvm.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79A9BC7F2EF5781F009EC2E3 /* hermesvm.xcframework */; };
15+
798DE8DB2F0EC98F00CFC6F3 /* hermesvm.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 79A9BC7F2EF5781F009EC2E3 /* hermesvm.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
16+
798DE8DC2F0EC99000CFC6F3 /* ReactBrownfield.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79A9BC802EF5781F009EC2E3 /* ReactBrownfield.xcframework */; };
17+
798DE8DD2F0EC99000CFC6F3 /* ReactBrownfield.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 79A9BC802EF5781F009EC2E3 /* ReactBrownfield.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
18+
79A9BC812EF5781F009EC2E3 /* Brownie.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79A9BC822EF5781F009EC2E3 /* Brownie.xcframework */; };
19+
79A9BC832EF5781F009EC2E3 /* Brownie.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 79A9BC822EF5781F009EC2E3 /* Brownie.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1820
/* End PBXBuildFile section */
1921

2022
/* Begin PBXCopyFilesBuildPhase section */
@@ -24,17 +26,19 @@
2426
dstPath = "";
2527
dstSubfolderSpec = 10;
2628
files = (
27-
798B428B2F3E9A8E00DAD195 /* hermesvm.xcframework in Embed Frameworks */,
28-
798B428D2F3E9A8F00DAD195 /* ReactBrownfield.xcframework in Embed Frameworks */,
29-
798B42892F3E9A8D00DAD195 /* Brownie.xcframework in Embed Frameworks */,
30-
798B42872F3E9A8B00DAD195 /* BrownfieldLib.xcframework in Embed Frameworks */,
29+
6108E5352F40A26800EA8FA1 /* BrownfieldNavigation.xcframework in Embed Frameworks */,
30+
798DE8DB2F0EC98F00CFC6F3 /* hermesvm.xcframework in Embed Frameworks */,
31+
798DE8DD2F0EC99000CFC6F3 /* ReactBrownfield.xcframework in Embed Frameworks */,
32+
798DE8D82F0EC98E00CFC6F3 /* BrownfieldLib.xcframework in Embed Frameworks */,
33+
79A9BC832EF5781F009EC2E3 /* Brownie.xcframework in Embed Frameworks */,
3134
);
3235
name = "Embed Frameworks";
3336
runOnlyForDeploymentPostprocessing = 0;
3437
};
3538
/* End PBXCopyFilesBuildPhase section */
3639

3740
/* Begin PBXFileReference section */
41+
6108E5332F40A26800EA8FA1 /* BrownfieldNavigation.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = BrownfieldNavigation.xcframework; path = ../RNApp/ios/.brownfield/package/BrownfieldNavigation.xcframework; sourceTree = "<group>"; };
3842
793C76A72EEBF938008A2A34 /* Brownfield Apple App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Brownfield Apple App.app"; sourceTree = BUILT_PRODUCTS_DIR; };
3943
79A7F5CA2F3E93D90099076A /* BrownfieldLib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = BrownfieldLib.xcframework; path = package/BrownfieldLib.xcframework; sourceTree = "<group>"; };
4044
79A7F5CB2F3E93D90099076A /* Brownie.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Brownie.xcframework; path = package/Brownie.xcframework; sourceTree = "<group>"; };
@@ -55,20 +59,30 @@
5559
isa = PBXFrameworksBuildPhase;
5660
buildActionMask = 2147483647;
5761
files = (
58-
798B42882F3E9A8D00DAD195 /* Brownie.xcframework in Frameworks */,
59-
798B428C2F3E9A8F00DAD195 /* ReactBrownfield.xcframework in Frameworks */,
60-
798B42862F3E9A8B00DAD195 /* BrownfieldLib.xcframework in Frameworks */,
61-
798B428A2F3E9A8E00DAD195 /* hermesvm.xcframework in Frameworks */,
62+
6108E5342F40A26800EA8FA1 /* BrownfieldNavigation.xcframework in Frameworks */,
63+
798DE8DA2F0EC98F00CFC6F3 /* hermesvm.xcframework in Frameworks */,
64+
798DE8DC2F0EC99000CFC6F3 /* ReactBrownfield.xcframework in Frameworks */,
65+
798DE8D72F0EC98E00CFC6F3 /* BrownfieldLib.xcframework in Frameworks */,
66+
79A9BC812EF5781F009EC2E3 /* Brownie.xcframework in Frameworks */,
6267
);
6368
runOnlyForDeploymentPostprocessing = 0;
6469
};
6570
/* End PBXFrameworksBuildPhase section */
6671

6772
/* Begin PBXGroup section */
73+
6108E5322F40A26800EA8FA1 /* Frameworks */ = {
74+
isa = PBXGroup;
75+
children = (
76+
6108E5332F40A26800EA8FA1 /* BrownfieldNavigation.xcframework */,
77+
);
78+
name = Frameworks;
79+
sourceTree = "<group>";
80+
};
6881
793C769E2EEBF938008A2A34 = {
6982
isa = PBXGroup;
7083
children = (
7184
793C76A92EEBF938008A2A34 /* Brownfield Apple App */,
85+
6108E5322F40A26800EA8FA1 /* Frameworks */,
7286
793C76A82EEBF938008A2A34 /* Products */,
7387
79A7F5CA2F3E93D90099076A /* BrownfieldLib.xcframework */,
7488
79A7F5CB2F3E93D90099076A /* Brownie.xcframework */,

apps/AppleApp/Brownfield Apple App/BrownfieldAppleApp.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Brownie
33
import SwiftUI
44
import ReactBrownfield
55
import UIKit
6+
import BrownfieldNavigation
67

78
class AppDelegate: NSObject, UIApplicationDelegate {
89
var window: UIWindow?

apps/RNApp/ios/RNApp.xcodeproj/project.pbxproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88

99
/* Begin PBXBuildFile section */
1010
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
11-
438C996BA823BB6C760606A7 /* libPods-RNApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 65D11050DC86B90737C67645 /* libPods-RNApp.a */; };
12-
5DD191C4345A176F232A6668 /* libPods-RNApp-BrownfieldLib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CF91B4A8DD47F8D8819A3AB /* libPods-RNApp-BrownfieldLib.a */; };
1311
761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; };
1412
79BD1EE92EEBFB76003AA29F /* BrownfieldLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79BD1EE32EEBFB76003AA29F /* BrownfieldLib.framework */; };
1513
79BD1EEA2EEBFB76003AA29F /* BrownfieldLib.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 79BD1EE32EEBFB76003AA29F /* BrownfieldLib.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1614
79F35E8C2EEC1D4500E64860 /* BrownfieldLib.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79F35E8A2EEC1D4500E64860 /* BrownfieldLib.swift */; };
1715
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
16+
86691FE9C4AAE39317BCD748 /* libPods-RNApp-BrownfieldLib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154909BB9553504F94A33BFD /* libPods-RNApp-BrownfieldLib.a */; };
1817
C66C2A65406C527E9529D08F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; };
18+
D84003B16F0D4998B526C709 /* libPods-RNApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FA852C4DF1077C0DB7F6341E /* libPods-RNApp.a */; };
1919
/* End PBXBuildFile section */
2020

2121
/* Begin PBXContainerItemProxy section */
@@ -47,17 +47,17 @@
4747
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RNApp/Images.xcassets; sourceTree = "<group>"; };
4848
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RNApp/Info.plist; sourceTree = "<group>"; };
4949
13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = RNApp/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
50+
154909BB9553504F94A33BFD /* libPods-RNApp-BrownfieldLib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNApp-BrownfieldLib.a"; sourceTree = BUILT_PRODUCTS_DIR; };
5051
3B4392A12AC88292D35C810B /* Pods-RNApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNApp.debug.xcconfig"; path = "Target Support Files/Pods-RNApp/Pods-RNApp.debug.xcconfig"; sourceTree = "<group>"; };
5152
5709B34CF0A7D63546082F79 /* Pods-RNApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNApp.release.xcconfig"; path = "Target Support Files/Pods-RNApp/Pods-RNApp.release.xcconfig"; sourceTree = "<group>"; };
52-
65D11050DC86B90737C67645 /* libPods-RNApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNApp.a"; sourceTree = BUILT_PRODUCTS_DIR; };
5353
761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = RNApp/AppDelegate.swift; sourceTree = "<group>"; };
5454
79BD1EE32EEBFB76003AA29F /* BrownfieldLib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BrownfieldLib.framework; sourceTree = BUILT_PRODUCTS_DIR; };
5555
79F35E8A2EEC1D4500E64860 /* BrownfieldLib.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrownfieldLib.swift; sourceTree = "<group>"; };
5656
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = RNApp/LaunchScreen.storyboard; sourceTree = "<group>"; };
5757
8A02E03D9F74B585B0A8F7F7 /* Pods-RNApp-BrownfieldLib.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNApp-BrownfieldLib.debug.xcconfig"; path = "Target Support Files/Pods-RNApp-BrownfieldLib/Pods-RNApp-BrownfieldLib.debug.xcconfig"; sourceTree = "<group>"; };
58-
8CF91B4A8DD47F8D8819A3AB /* libPods-RNApp-BrownfieldLib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNApp-BrownfieldLib.a"; sourceTree = BUILT_PRODUCTS_DIR; };
5958
D8C030F60E402FD6CFBB3904 /* Pods-RNApp-BrownfieldLib.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNApp-BrownfieldLib.release.xcconfig"; path = "Target Support Files/Pods-RNApp-BrownfieldLib/Pods-RNApp-BrownfieldLib.release.xcconfig"; sourceTree = "<group>"; };
6059
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
60+
FA852C4DF1077C0DB7F6341E /* libPods-RNApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNApp.a"; sourceTree = BUILT_PRODUCTS_DIR; };
6161
/* End PBXFileReference section */
6262

6363
/* Begin PBXFrameworksBuildPhase section */
@@ -66,15 +66,15 @@
6666
buildActionMask = 2147483647;
6767
files = (
6868
79BD1EE92EEBFB76003AA29F /* BrownfieldLib.framework in Frameworks */,
69-
438C996BA823BB6C760606A7 /* libPods-RNApp.a in Frameworks */,
69+
D84003B16F0D4998B526C709 /* libPods-RNApp.a in Frameworks */,
7070
);
7171
runOnlyForDeploymentPostprocessing = 0;
7272
};
7373
79BD1EE02EEBFB76003AA29F /* Frameworks */ = {
7474
isa = PBXFrameworksBuildPhase;
7575
buildActionMask = 2147483647;
7676
files = (
77-
5DD191C4345A176F232A6668 /* libPods-RNApp-BrownfieldLib.a in Frameworks */,
77+
86691FE9C4AAE39317BCD748 /* libPods-RNApp-BrownfieldLib.a in Frameworks */,
7878
);
7979
runOnlyForDeploymentPostprocessing = 0;
8080
};
@@ -97,8 +97,8 @@
9797
isa = PBXGroup;
9898
children = (
9999
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
100-
65D11050DC86B90737C67645 /* libPods-RNApp.a */,
101-
8CF91B4A8DD47F8D8819A3AB /* libPods-RNApp-BrownfieldLib.a */,
100+
FA852C4DF1077C0DB7F6341E /* libPods-RNApp.a */,
101+
154909BB9553504F94A33BFD /* libPods-RNApp-BrownfieldLib.a */,
102102
);
103103
name = Frameworks;
104104
sourceTree = "<group>";

apps/RNApp/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"@react-navigation/native-stack": "^7.2.1",
2424
"react": "19.1.1",
2525
"react-native": "0.82.1",
26+
"react-native-brownfield-navigation": "./package.tgz",
2627
"react-native-safe-area-context": "^5.6.2",
2728
"react-native-screens": "^4.19.0"
2829
},

apps/RNApp/src/HomeScreen.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useEffect } from 'react';
22
import { StyleSheet, Text, View, Button } from 'react-native';
33
import type { NativeStackScreenProps } from '@react-navigation/native-stack';
44
import ReactNativeBrownfield from '@callstack/react-native-brownfield';
5-
import { BrownfieldNavigation } from '@callstack/react-native-brownfield';
5+
import BrownfieldNavigation from 'react-native-brownfield-navigation';
66

77
import { getRandomTheme } from './utils';
88
import type { RootStackParamList } from './navigation/RootStack';

packages/cli/src/brownfield/commands/packageIos.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,37 @@ export const packageIosCommand = curryOptions(
125125
`Brownie.xcframework created at ${colorLink(relativeToCwd(brownieOutputPath))}`
126126
);
127127
}
128+
129+
const productsPath = path.join(options.buildFolder, 'Build', 'Products');
130+
const brownfieldNavigationOutputPath = path.join(packageDir, 'BrownfieldNavigation.xcframework');
131+
132+
await mergeFrameworks({
133+
sourceDir: userConfig.project.ios.sourceDir,
134+
frameworkPaths: [
135+
path.join(
136+
productsPath,
137+
`${configuration}-iphoneos`,
138+
'BrownfieldNavigation',
139+
'BrownfieldNavigation.framework'
140+
),
141+
path.join(
142+
productsPath,
143+
`${configuration}-iphonesimulator`,
144+
'BrownfieldNavigation',
145+
'BrownfieldNavigation.framework'
146+
),
147+
],
148+
outputPath: brownfieldNavigationOutputPath,
149+
});
150+
151+
// Strip the binary from Brownie.xcframework to make it interface-only.
152+
// This avoids duplicate symbols when consumer apps embed both BrownfieldLib
153+
// (which contains Brownie symbols) and Brownie.xcframework.
154+
await stripFrameworkBinary(brownfieldNavigationOutputPath);
155+
156+
logger.success(
157+
`BrownfieldNavigation.xcframework created at ${colorLink(relativeToCwd(brownfieldNavigationOutputPath))}`
158+
);
128159
})
129160
);
130161

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
require 'json'
2+
3+
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
4+
5+
Pod::Spec.new do |spec|
6+
spec.name = "BrownfieldNavigation"
7+
spec.version = package['version']
8+
spec.summary = package['description']
9+
spec.license = package['license']
10+
11+
spec.authors = package['author']
12+
spec.homepage = package['homepage']
13+
spec.platform = :ios, "14.0"
14+
15+
spec.source = { :git => "git@github.com:callstack/react-native-brownfield.git", :tag => "#{spec.version}" }
16+
spec.source_files = "ios/**/*.{h,m,mm,swift}"
17+
spec.pod_target_xcconfig = {
18+
'DEFINES_MODULE' => 'YES',
19+
}
20+
21+
install_modules_dependencies(spec)
22+
end
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: ['module:@react-native/babel-preset'],
3+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
module.exports = {
2+
source: 'src',
3+
output: 'lib',
4+
targets: [
5+
[
6+
'commonjs',
7+
{
8+
esm: true,
9+
configFile: true,
10+
},
11+
],
12+
[
13+
'module',
14+
{
15+
esm: true,
16+
configFile: true,
17+
},
18+
],
19+
[
20+
'typescript',
21+
{
22+
project: 'tsconfig.build.json',
23+
},
24+
],
25+
],
26+
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import eslintRnConfig from '../../eslint.config.rn.mjs';
2+
3+
/** @type {import('eslint').Linter.Config[]} */
4+
export default eslintRnConfig;

0 commit comments

Comments
 (0)