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.BarCodeScannerModule
8 import expo.modules.barcodescanner.BarCodeScannerPackage
9 import expo.modules.battery.BatteryPackage
10 import expo.modules.brightness.BrightnessPackage
11 import expo.modules.calendar.CalendarPackage
12 import expo.modules.camera.CameraViewModule
13 import expo.modules.cellular.CellularModule
14 import expo.modules.clipboard.ClipboardModule
15 import expo.modules.constants.ConstantsModule
16 import expo.modules.constants.ConstantsPackage
17 import expo.modules.contacts.ContactsPackage
18 import expo.modules.core.interfaces.Package
19 import expo.modules.crypto.CryptoModule
20 import expo.modules.device.DeviceModule
21 import expo.modules.documentpicker.DocumentPickerModule
22 import expo.modules.easclient.EASClientModule
23 import expo.modules.errorrecovery.ErrorRecoveryPackage
24 import expo.modules.facedetector.FaceDetectorPackage
25 import expo.modules.filesystem.FileSystemPackage
26 import expo.modules.firebase.analytics.FirebaseAnalyticsPackage
27 import expo.modules.firebase.core.FirebaseCorePackage
28 import expo.modules.font.FontLoaderPackage
29 import expo.modules.gl.GLPackage
30 import expo.modules.gl.GLViewModule
31 import expo.modules.haptics.HapticsModule
32 import expo.modules.image.ExpoImageModule
33 import expo.modules.imageloader.ImageLoaderPackage
34 import expo.modules.imagemanipulator.ImageManipulatorPackage
35 import expo.modules.imagepicker.ImagePickerModule
36 import expo.modules.intentlauncher.IntentLauncherModule
37 import expo.modules.keepawake.KeepAwakePackage
38 import expo.modules.kotlin.ModulesProvider
39 import expo.modules.kotlin.modules.Module
40 import expo.modules.lineargradient.LinearGradientModule
41 import expo.modules.localauthentication.LocalAuthenticationPackage
42 import expo.modules.localization.LocalizationModule
43 import expo.modules.location.LocationPackage
44 import expo.modules.mailcomposer.MailComposerPackage
45 import expo.modules.manifests.core.Manifest
46 import expo.modules.medialibrary.MediaLibraryModule
47 import expo.modules.navigationbar.NavigationBarPackage
48 import expo.modules.network.NetworkModule
49 import expo.modules.notifications.NotificationsPackage
50 import expo.modules.permissions.PermissionsPackage
51 import expo.modules.print.PrintPackage
52 import expo.modules.random.RandomModule
53 import expo.modules.screencapture.ScreenCapturePackage
54 import expo.modules.screenorientation.ScreenOrientationPackage
55 import expo.modules.securestore.SecureStorePackage
56 import expo.modules.sensors.SensorsPackage
57 import expo.modules.sharing.SharingModule
58 import expo.modules.sms.SMSModule
59 import expo.modules.speech.SpeechPackage
60 import expo.modules.splashscreen.SplashScreenPackage
61 import expo.modules.sqlite.SQLitePackage
62 import expo.modules.storereview.StoreReviewModule
63 import expo.modules.systemui.SystemUIModule
64 import expo.modules.systemui.SystemUIPackage
65 import expo.modules.taskManager.TaskManagerPackage
66 import expo.modules.updates.UpdatesPackage
67 import expo.modules.videothumbnails.VideoThumbnailsModule
68 import expo.modules.webbrowser.WebBrowserModule
69 
70 object ExperiencePackagePicker : ModulesProvider {
71   private val EXPO_MODULES_PACKAGES = listOf(
72     AVPackage(),
73     ApplicationPackage(),
74     BatteryPackage(),
75     BackgroundFetchPackage(),
76     BarCodeScannerPackage(),
77     BrightnessPackage(),
78     CalendarPackage(),
79     ConstantsPackage(),
80     ContactsPackage(),
81     ErrorRecoveryPackage(),
82     FaceDetectorPackage(),
83     FileSystemPackage(),
84     FirebaseCorePackage(),
85     FirebaseAnalyticsPackage(),
86     FontLoaderPackage(),
87     GLPackage(),
88     ImageLoaderPackage(),
89     ImageManipulatorPackage(),
90     KeepAwakePackage(),
91     LocalAuthenticationPackage(),
92     LocationPackage(),
93     MailComposerPackage(),
94     NavigationBarPackage(),
95     NotificationsPackage(),
96     PermissionsPackage(),
97     PrintPackage(),
98     SQLitePackage(),
99     ScreenCapturePackage(),
100     ScreenOrientationPackage(),
101     SecureStorePackage(),
102     SensorsPackage(),
103     SpeechPackage(),
104     SplashScreenPackage(),
105     SystemUIPackage(),
106     TaskManagerPackage(),
107     UpdatesPackage(),
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     BarCodeScannerModule::class.java,
127     CameraViewModule::class.java,
128     CellularModule::class.java,
129     ClipboardModule::class.java,
130     CryptoModule::class.java,
131     ConstantsModule::class.java,
132     DeviceModule::class.java,
133     DocumentPickerModule::class.java,
134     EASClientModule::class.java,
135     GLViewModule::class.java,
136     HapticsModule::class.java,
137     ImagePickerModule::class.java,
138     ExpoImageModule::class.java,
139     IntentLauncherModule::class.java,
140     LinearGradientModule::class.java,
141     LocalizationModule::class.java,
142     MediaLibraryModule::class.java,
143     NetworkModule::class.java,
144     RandomModule::class.java,
145     SMSModule::class.java,
146     SharingModule::class.java,
147     StoreReviewModule::class.java,
148     SystemUIModule::class.java,
149     VideoThumbnailsModule::class.java,
150     VideoViewModule::class.java,
151     WebBrowserModule::class.java,
152   )
153 }
154