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.BackgroundFetchModule
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.CalendarModule
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.facedetector.FaceDetectorPackage
26 import expo.modules.filesystem.FileSystemModule
27 import expo.modules.filesystem.FileSystemPackage
28 import expo.modules.gl.GLObjectManagerModule
29 import expo.modules.gl.GLViewModule
30 import expo.modules.haptics.HapticsModule
31 import expo.modules.image.ExpoImageModule
32 import expo.modules.imageloader.ImageLoaderPackage
33 import expo.modules.imagemanipulator.ImageManipulatorModule
34 import expo.modules.imagepicker.ImagePickerModule
35 import expo.modules.intentlauncher.IntentLauncherModule
36 import expo.modules.keepawake.KeepAwakeModule
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.LocalAuthenticationModule
42 import expo.modules.localization.LocalizationModule
43 import expo.modules.location.LocationPackage
44 import expo.modules.mailcomposer.MailComposerModule
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.PrintModule
52 import expo.modules.random.RandomModule
53 import expo.modules.screencapture.ScreenCaptureModule
54 import expo.modules.screenorientation.ScreenOrientationModule
55 import expo.modules.sensors.SensorsPackage
56 import expo.modules.sensors.modules.AccelerometerModule
57 import expo.modules.sensors.modules.BarometerModule
58 import expo.modules.sensors.modules.DeviceMotionModule
59 import expo.modules.sensors.modules.GyroscopeModule
60 import expo.modules.sensors.modules.LightSensorModule
61 import expo.modules.sensors.modules.MagnetometerModule
62 import expo.modules.sensors.modules.MagnetometerUncalibratedModule
63 import expo.modules.sensors.modules.PedometerModule
64 import expo.modules.sharing.SharingModule
65 import expo.modules.sms.SMSModule
66 import expo.modules.speech.SpeechModule
67 import expo.modules.splashscreen.SplashScreenModule
68 import expo.modules.splashscreen.SplashScreenPackage
69 import expo.modules.sqlite.SQLiteModule
70 import expo.modules.storereview.StoreReviewModule
71 import expo.modules.systemui.SystemUIModule
72 import expo.modules.systemui.SystemUIPackage
73 import expo.modules.taskManager.TaskManagerPackage
74 import expo.modules.updates.UpdatesPackage
75 import expo.modules.videothumbnails.VideoThumbnailsModule
76 import expo.modules.webbrowser.WebBrowserModule
77 
78 object ExperiencePackagePicker : ModulesProvider {
79   private val EXPO_MODULES_PACKAGES = listOf(
80     AVPackage(),
81     ApplicationPackage(),
82     BarCodeScannerPackage(),
83     ConstantsPackage(),
84     ContactsPackage(),
85     FaceDetectorPackage(),
86     FileSystemPackage(),
87     ImageLoaderPackage(),
88     KeepAwakePackage(),
89     LocationPackage(),
90     NavigationBarPackage(),
91     NotificationsPackage(),
92     PermissionsPackage(),
93     SensorsPackage(),
94     SplashScreenPackage(),
95     SystemUIPackage(),
96     TaskManagerPackage(),
97     UpdatesPackage(),
98   )
99 
100   /**
101    * Returns all available packages.
102    */
103   fun packages(): List<Package> {
104     return EXPO_MODULES_PACKAGES
105   }
106 
107   /**
108    * Returns packages filtered based on the app's manifest.
109    * For now, filtering is not applied but it is on the todo list.
110    */
111   fun packages(manifest: Manifest?): List<Package> {
112     return EXPO_MODULES_PACKAGES
113   }
114 
115   override fun getModulesList(): List<Class<out Module>> = listOf(
116     AVModule::class.java,
117     // Sensors
118     AccelerometerModule::class.java,
119     BarometerModule::class.java,
120     GyroscopeModule::class.java,
121     LightSensorModule::class.java,
122     DeviceMotionModule::class.java,
123     MagnetometerModule::class.java,
124     MagnetometerUncalibratedModule::class.java,
125     PedometerModule::class.java,
126     // End of Sensors
127     BatteryModule::class.java,
128     BackgroundFetchModule::class.java,
129     BarCodeScannerModule::class.java,
130     BlurModule::class.java,
131     CalendarModule::class.java,
132     CameraViewModule::class.java,
133     CellularModule::class.java,
134     ClipboardModule::class.java,
135     CryptoModule::class.java,
136     ConstantsModule::class.java,
137     DeviceModule::class.java,
138     DocumentPickerModule::class.java,
139     EASClientModule::class.java,
140     FileSystemModule::class.java,
141     PrintModule::class.java,
142     GLViewModule::class.java,
143     GLObjectManagerModule::class.java,
144     HapticsModule::class.java,
145     ImagePickerModule::class.java,
146     ImageManipulatorModule::class.java,
147     ExpoImageModule::class.java,
148     IntentLauncherModule::class.java,
149     KeepAwakeModule::class.java,
150     LinearGradientModule::class.java,
151     LocalAuthenticationModule::class.java,
152     LocalizationModule::class.java,
153     MailComposerModule::class.java,
154     MediaLibraryModule::class.java,
155     NetworkModule::class.java,
156     RandomModule::class.java,
157     ScreenCaptureModule::class.java,
158     ScreenOrientationModule::class.java,
159     // SecureStoreModule is not added here, instead it is added in ExpoModuleRegistryAdapter.kt,
160     // because it needs access to scopedContext for Expo Go support
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