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