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