1 package versioned.host.exp.exponent
2 
3 import expo.modules.application.ApplicationPackage
4 import expo.modules.av.AVModule
5 import expo.modules.av.AVPackage
6 import expo.modules.av.video.VideoViewModule
7 import expo.modules.backgroundfetch.BackgroundFetchPackage
8 import expo.modules.barcodescanner.BarCodeScannerModule
9 import expo.modules.barcodescanner.BarCodeScannerPackage
10 import expo.modules.battery.BatteryModule
11 import expo.modules.blur.BlurModule
12 import expo.modules.brightness.BrightnessModule
13 import expo.modules.calendar.CalendarPackage
14 import expo.modules.camera.CameraViewModule
15 import expo.modules.cellular.CellularModule
16 import expo.modules.clipboard.ClipboardModule
17 import expo.modules.constants.ConstantsModule
18 import expo.modules.constants.ConstantsPackage
19 import expo.modules.contacts.ContactsPackage
20 import expo.modules.core.interfaces.Package
21 import expo.modules.crypto.CryptoModule
22 import expo.modules.device.DeviceModule
23 import expo.modules.documentpicker.DocumentPickerModule
24 import expo.modules.easclient.EASClientModule
25 import expo.modules.print.PrintModule
26 import expo.modules.facedetector.FaceDetectorPackage
27 import expo.modules.filesystem.FileSystemModule
28 import expo.modules.filesystem.FileSystemPackage
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.ImageManipulatorModule
35 import expo.modules.imagepicker.ImagePickerModule
36 import expo.modules.intentlauncher.IntentLauncherModule
37 import expo.modules.keepawake.KeepAwakeModule
38 import expo.modules.keepawake.KeepAwakePackage
39 import expo.modules.kotlin.ModulesProvider
40 import expo.modules.kotlin.modules.Module
41 import expo.modules.lineargradient.LinearGradientModule
42 import expo.modules.localauthentication.LocalAuthenticationPackage
43 import expo.modules.localization.LocalizationModule
44 import expo.modules.location.LocationPackage
45 import expo.modules.mailcomposer.MailComposerModule
46 import expo.modules.manifests.core.Manifest
47 import expo.modules.medialibrary.MediaLibraryModule
48 import expo.modules.navigationbar.NavigationBarPackage
49 import expo.modules.network.NetworkModule
50 import expo.modules.notifications.NotificationsPackage
51 import expo.modules.permissions.PermissionsPackage
52 import expo.modules.random.RandomModule
53 import expo.modules.screencapture.ScreenCaptureModule
54 import expo.modules.screenorientation.ScreenOrientationModule
55 import expo.modules.securestore.SecureStorePackage
56 import expo.modules.sensors.SensorsPackage
57 import expo.modules.sensors.modules.AccelerometerModule
58 import expo.modules.sensors.modules.BarometerModule
59 import expo.modules.sensors.modules.DeviceMotionModule
60 import expo.modules.sensors.modules.GyroscopeModule
61 import expo.modules.sensors.modules.LightSensorModule
62 import expo.modules.sensors.modules.MagnetometerModule
63 import expo.modules.sensors.modules.MagnetometerUncalibratedModule
64 import expo.modules.sensors.modules.PedometerModule
65 import expo.modules.sharing.SharingModule
66 import expo.modules.sms.SMSModule
67 import expo.modules.speech.SpeechModule
68 import expo.modules.splashscreen.SplashScreenModule
69 import expo.modules.splashscreen.SplashScreenPackage
70 import expo.modules.sqlite.SQLiteModule
71 import expo.modules.storereview.StoreReviewModule
72 import expo.modules.systemui.SystemUIModule
73 import expo.modules.systemui.SystemUIPackage
74 import expo.modules.taskManager.TaskManagerPackage
75 import expo.modules.updates.UpdatesPackage
76 import expo.modules.videothumbnails.VideoThumbnailsModule
77 import expo.modules.webbrowser.WebBrowserModule
78 
79 object ExperiencePackagePicker : ModulesProvider {
80   private val EXPO_MODULES_PACKAGES = listOf(
81     AVPackage(),
82     ApplicationPackage(),
83     BackgroundFetchPackage(),
84     BarCodeScannerPackage(),
85     CalendarPackage(),
86     ConstantsPackage(),
87     ContactsPackage(),
88     FaceDetectorPackage(),
89     FileSystemPackage(),
90     GLPackage(),
91     ImageLoaderPackage(),
92     KeepAwakePackage(),
93     LocalAuthenticationPackage(),
94     LocationPackage(),
95     NavigationBarPackage(),
96     NotificationsPackage(),
97     PermissionsPackage(),
98     SecureStorePackage(),
99     SensorsPackage(),
100     SplashScreenPackage(),
101     SystemUIPackage(),
102     TaskManagerPackage(),
103     UpdatesPackage(),
104   )
105 
106   /**
107    * Returns all available packages.
108    */
109   fun packages(): List<Package> {
110     return EXPO_MODULES_PACKAGES
111   }
112 
113   /**
114    * Returns packages filtered based on the app's manifest.
115    * For now, filtering is not applied but it is on the todo list.
116    */
117   fun packages(manifest: Manifest?): List<Package> {
118     return EXPO_MODULES_PACKAGES
119   }
120 
121   override fun getModulesList(): List<Class<out Module>> = listOf(
122     AVModule::class.java,
123     // Sensors
124     AccelerometerModule::class.java,
125     BarometerModule::class.java,
126     GyroscopeModule::class.java,
127     LightSensorModule::class.java,
128     DeviceMotionModule::class.java,
129     MagnetometerModule::class.java,
130     MagnetometerUncalibratedModule::class.java,
131     PedometerModule::class.java,
132     // End of Sensors
133     BatteryModule::class.java,
134     BarCodeScannerModule::class.java,
135     BlurModule::class.java,
136     CameraViewModule::class.java,
137     CellularModule::class.java,
138     ClipboardModule::class.java,
139     CryptoModule::class.java,
140     ConstantsModule::class.java,
141     DeviceModule::class.java,
142     DocumentPickerModule::class.java,
143     EASClientModule::class.java,
144     FileSystemModule::class.java,
145     PrintModule::class.java,
146     GLViewModule::class.java,
147     HapticsModule::class.java,
148     ImagePickerModule::class.java,
149     ImageManipulatorModule::class.java,
150     ExpoImageModule::class.java,
151     IntentLauncherModule::class.java,
152     KeepAwakeModule::class.java,
153     LinearGradientModule::class.java,
154     LocalizationModule::class.java,
155     MailComposerModule::class.java,
156     MediaLibraryModule::class.java,
157     NetworkModule::class.java,
158     RandomModule::class.java,
159     ScreenCaptureModule::class.java,
160     ScreenOrientationModule::class.java,
161     SMSModule::class.java,
162     SharingModule::class.java,
163     SpeechModule::class.java,
164     SplashScreenModule::class.java,
165     StoreReviewModule::class.java,
166     SQLiteModule::class.java,
167     SystemUIModule::class.java,
168     VideoThumbnailsModule::class.java,
169     VideoViewModule::class.java,
170     WebBrowserModule::class.java,
171     BrightnessModule::class.java,
172   )
173 }
174