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.haptics.HapticsModule
31 import expo.modules.imageloader.ImageLoaderPackage
32 import expo.modules.imagemanipulator.ImageManipulatorPackage
33 import expo.modules.imagepicker.ImagePickerModule
34 import expo.modules.intentlauncher.IntentLauncherModule
35 import expo.modules.keepawake.KeepAwakePackage
36 import expo.modules.kotlin.ModulesProvider
37 import expo.modules.kotlin.modules.Module
38 import expo.modules.lineargradient.LinearGradientModule
39 import expo.modules.localauthentication.LocalAuthenticationPackage
40 import expo.modules.localization.LocalizationModule
41 import expo.modules.location.LocationPackage
42 import expo.modules.mailcomposer.MailComposerPackage
43 import expo.modules.manifests.core.Manifest
44 import expo.modules.medialibrary.MediaLibraryModule
45 import expo.modules.navigationbar.NavigationBarPackage
46 import expo.modules.network.NetworkModule
47 import expo.modules.notifications.NotificationsPackage
48 import expo.modules.permissions.PermissionsPackage
49 import expo.modules.print.PrintPackage
50 import expo.modules.random.RandomModule
51 import expo.modules.screencapture.ScreenCapturePackage
52 import expo.modules.screenorientation.ScreenOrientationPackage
53 import expo.modules.securestore.SecureStorePackage
54 import expo.modules.sensors.SensorsPackage
55 import expo.modules.sharing.SharingModule
56 import expo.modules.sms.SMSModule
57 import expo.modules.speech.SpeechPackage
58 import expo.modules.splashscreen.SplashScreenPackage
59 import expo.modules.sqlite.SQLitePackage
60 import expo.modules.storereview.StoreReviewModule
61 import expo.modules.systemui.SystemUIModule
62 import expo.modules.systemui.SystemUIPackage
63 import expo.modules.taskManager.TaskManagerPackage
64 import expo.modules.updates.UpdatesPackage
65 import expo.modules.videothumbnails.VideoThumbnailsModule
66 import expo.modules.webbrowser.WebBrowserModule
67 
68 object ExperiencePackagePicker : ModulesProvider {
69   private val EXPO_MODULES_PACKAGES = listOf(
70     AVPackage(),
71     ApplicationPackage(),
72     BatteryPackage(),
73     BackgroundFetchPackage(),
74     BarCodeScannerPackage(),
75     BrightnessPackage(),
76     CalendarPackage(),
77     ConstantsPackage(),
78     ContactsPackage(),
79     ErrorRecoveryPackage(),
80     FaceDetectorPackage(),
81     FileSystemPackage(),
82     FirebaseCorePackage(),
83     FirebaseAnalyticsPackage(),
84     FontLoaderPackage(),
85     GLPackage(),
86     ImageLoaderPackage(),
87     ImageManipulatorPackage(),
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     SpeechPackage(),
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     BarCodeScannerModule::class.java,
125     CameraViewModule::class.java,
126     CellularModule::class.java,
127     ClipboardModule::class.java,
128     CryptoModule::class.java,
129     ConstantsModule::class.java,
130     DeviceModule::class.java,
131     DocumentPickerModule::class.java,
132     EASClientModule::class.java,
133     HapticsModule::class.java,
134     ImagePickerModule::class.java,
135     IntentLauncherModule::class.java,
136     LinearGradientModule::class.java,
137     LocalizationModule::class.java,
138     MediaLibraryModule::class.java,
139     NetworkModule::class.java,
140     RandomModule::class.java,
141     SMSModule::class.java,
142     SharingModule::class.java,
143     StoreReviewModule::class.java,
144     SystemUIModule::class.java,
145     VideoThumbnailsModule::class.java,
146     VideoViewModule::class.java,
147     WebBrowserModule::class.java,
148   )
149 }
150