1 package versioned.host.exp.exponent
2 
3 import expo.modules.application.ApplicationPackage
4 import expo.modules.av.AVPackage
5 import expo.modules.backgroundfetch.BackgroundFetchPackage
6 import expo.modules.barcodescanner.BarCodeScannerPackage
7 import expo.modules.battery.BatteryPackage
8 import expo.modules.brightness.BrightnessPackage
9 import expo.modules.calendar.CalendarPackage
10 import expo.modules.camera.CameraPackage
11 import expo.modules.cellular.CellularModule
12 import expo.modules.clipboard.ClipboardModule
13 import expo.modules.constants.ConstantsPackage
14 import expo.modules.contacts.ContactsPackage
15 import expo.modules.core.interfaces.Package
16 import expo.modules.crypto.CryptoModule
17 import expo.modules.device.DevicePackage
18 import expo.modules.documentpicker.DocumentPickerPackage
19 import expo.modules.easclient.EASClientModule
20 import expo.modules.errorrecovery.ErrorRecoveryPackage
21 import expo.modules.facedetector.FaceDetectorPackage
22 import expo.modules.filesystem.FileSystemPackage
23 import expo.modules.firebase.analytics.FirebaseAnalyticsPackage
24 import expo.modules.firebase.core.FirebaseCorePackage
25 import expo.modules.font.FontLoaderPackage
26 import expo.modules.gl.GLPackage
27 import expo.modules.haptics.HapticsPackage
28 import expo.modules.imageloader.ImageLoaderPackage
29 import expo.modules.imagemanipulator.ImageManipulatorPackage
30 import expo.modules.imagepicker.ImagePickerModule
31 import expo.modules.intentlauncher.IntentLauncherPackage
32 import expo.modules.keepawake.KeepAwakePackage
33 import expo.modules.kotlin.ModulesProvider
34 import expo.modules.kotlin.modules.Module
35 import expo.modules.lineargradient.LinearGradientModule
36 import expo.modules.localauthentication.LocalAuthenticationPackage
37 import expo.modules.localization.LocalizationModule
38 import expo.modules.location.LocationPackage
39 import expo.modules.mailcomposer.MailComposerPackage
40 import expo.modules.manifests.core.Manifest
41 import expo.modules.medialibrary.MediaLibraryPackage
42 import expo.modules.navigationbar.NavigationBarPackage
43 import expo.modules.network.NetworkPackage
44 import expo.modules.notifications.NotificationsPackage
45 import expo.modules.permissions.PermissionsPackage
46 import expo.modules.print.PrintPackage
47 import expo.modules.random.RandomModule
48 import expo.modules.screencapture.ScreenCapturePackage
49 import expo.modules.screenorientation.ScreenOrientationPackage
50 import expo.modules.securestore.SecureStorePackage
51 import expo.modules.sensors.SensorsPackage
52 import expo.modules.sharing.SharingPackage
53 import expo.modules.sms.SMSPackage
54 import expo.modules.speech.SpeechPackage
55 import expo.modules.splashscreen.SplashScreenPackage
56 import expo.modules.sqlite.SQLitePackage
57 import expo.modules.storereview.StoreReviewPackage
58 import expo.modules.systemui.SystemUIPackage
59 import expo.modules.taskManager.TaskManagerPackage
60 import expo.modules.updates.UpdatesPackage
61 import expo.modules.videothumbnails.VideoThumbnailsPackage
62 import expo.modules.webbrowser.WebBrowserModule
63 
64 object ExperiencePackagePicker : ModulesProvider {
65   private val EXPO_MODULES_PACKAGES = listOf(
66     AVPackage(),
67     ApplicationPackage(),
68     BatteryPackage(),
69     BackgroundFetchPackage(),
70     BarCodeScannerPackage(),
71     BrightnessPackage(),
72     CalendarPackage(),
73     CameraPackage(),
74     ConstantsPackage(),
75     ContactsPackage(),
76     DevicePackage(),
77     DocumentPickerPackage(),
78     ErrorRecoveryPackage(),
79     FaceDetectorPackage(),
80     FileSystemPackage(),
81     FirebaseCorePackage(),
82     FirebaseAnalyticsPackage(),
83     FontLoaderPackage(),
84     GLPackage(),
85     HapticsPackage(),
86     ImageLoaderPackage(),
87     ImageManipulatorPackage(),
88     IntentLauncherPackage(),
89     KeepAwakePackage(),
90     LocalAuthenticationPackage(),
91     LocationPackage(),
92     MailComposerPackage(),
93     MediaLibraryPackage(),
94     NavigationBarPackage(),
95     NetworkPackage(),
96     NotificationsPackage(),
97     PermissionsPackage(),
98     PrintPackage(),
99     SMSPackage(),
100     StoreReviewPackage(),
101     SQLitePackage(),
102     ScreenCapturePackage(),
103     ScreenOrientationPackage(),
104     SecureStorePackage(),
105     SensorsPackage(),
106     SharingPackage(),
107     SpeechPackage(),
108     SplashScreenPackage(),
109     SystemUIPackage(),
110     TaskManagerPackage(),
111     UpdatesPackage(),
112     VideoThumbnailsPackage(),
113   )
114 
115   /**
116    * Returns all available packages.
117    */
118   fun packages(): List<Package> {
119     return EXPO_MODULES_PACKAGES
120   }
121 
122   /**
123    * Returns packages filtered based on the app's manifest.
124    * For now, filtering is not applied but it is on the todo list.
125    */
126   fun packages(manifest: Manifest?): List<Package> {
127     return EXPO_MODULES_PACKAGES
128   }
129 
130   override fun getModulesList(): List<Class<out Module>> = listOf(
131     CellularModule::class.java,
132     ClipboardModule::class.java,
133     CryptoModule::class.java,
134     EASClientModule::class.java,
135     ImagePickerModule::class.java,
136     LinearGradientModule::class.java,
137     LocalizationModule::class.java,
138     RandomModule::class.java,
139     WebBrowserModule::class.java,
140   )
141 }
142