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.BarCodeScannerPackage
8 import expo.modules.battery.BatteryPackage
9 import expo.modules.brightness.BrightnessPackage
10 import expo.modules.calendar.CalendarPackage
11 import expo.modules.camera.CameraViewModule
12 import expo.modules.cellular.CellularModule
13 import expo.modules.clipboard.ClipboardModule
14 import expo.modules.constants.ConstantsPackage
15 import expo.modules.contacts.ContactsPackage
16 import expo.modules.core.interfaces.Package
17 import expo.modules.crypto.CryptoModule
18 import expo.modules.device.DeviceModule
19 import expo.modules.documentpicker.DocumentPickerModule
20 import expo.modules.easclient.EASClientModule
21 import expo.modules.errorrecovery.ErrorRecoveryPackage
22 import expo.modules.facedetector.FaceDetectorPackage
23 import expo.modules.filesystem.FileSystemPackage
24 import expo.modules.firebase.analytics.FirebaseAnalyticsPackage
25 import expo.modules.firebase.core.FirebaseCorePackage
26 import expo.modules.font.FontLoaderPackage
27 import expo.modules.gl.GLPackage
28 import expo.modules.haptics.HapticsModule
29 import expo.modules.imageloader.ImageLoaderPackage
30 import expo.modules.imagemanipulator.ImageManipulatorPackage
31 import expo.modules.imagepicker.ImagePickerModule
32 import expo.modules.intentlauncher.IntentLauncherModule
33 import expo.modules.keepawake.KeepAwakePackage
34 import expo.modules.kotlin.ModulesProvider
35 import expo.modules.kotlin.modules.Module
36 import expo.modules.lineargradient.LinearGradientModule
37 import expo.modules.localauthentication.LocalAuthenticationPackage
38 import expo.modules.localization.LocalizationModule
39 import expo.modules.location.LocationPackage
40 import expo.modules.mailcomposer.MailComposerPackage
41 import expo.modules.manifests.core.Manifest
42 import expo.modules.medialibrary.MediaLibraryModule
43 import expo.modules.navigationbar.NavigationBarPackage
44 import expo.modules.network.NetworkModule
45 import expo.modules.notifications.NotificationsPackage
46 import expo.modules.permissions.PermissionsPackage
47 import expo.modules.print.PrintPackage
48 import expo.modules.random.RandomModule
49 import expo.modules.screencapture.ScreenCapturePackage
50 import expo.modules.screenorientation.ScreenOrientationPackage
51 import expo.modules.securestore.SecureStorePackage
52 import expo.modules.sensors.SensorsPackage
53 import expo.modules.sharing.SharingModule
54 import expo.modules.sms.SMSModule
55 import expo.modules.speech.SpeechPackage
56 import expo.modules.splashscreen.SplashScreenPackage
57 import expo.modules.sqlite.SQLitePackage
58 import expo.modules.storereview.StoreReviewModule
59 import expo.modules.systemui.SystemUIModule
60 import expo.modules.systemui.SystemUIPackage
61 import expo.modules.taskManager.TaskManagerPackage
62 import expo.modules.updates.UpdatesPackage
63 import expo.modules.videothumbnails.VideoThumbnailsPackage
64 import expo.modules.webbrowser.WebBrowserModule
65 
66 object ExperiencePackagePicker : ModulesProvider {
67   private val EXPO_MODULES_PACKAGES = listOf(
68     AVPackage(),
69     ApplicationPackage(),
70     BatteryPackage(),
71     BackgroundFetchPackage(),
72     BarCodeScannerPackage(),
73     BrightnessPackage(),
74     CalendarPackage(),
75     ConstantsPackage(),
76     ContactsPackage(),
77     ErrorRecoveryPackage(),
78     FaceDetectorPackage(),
79     FileSystemPackage(),
80     FirebaseCorePackage(),
81     FirebaseAnalyticsPackage(),
82     FontLoaderPackage(),
83     GLPackage(),
84     ImageLoaderPackage(),
85     ImageManipulatorPackage(),
86     KeepAwakePackage(),
87     LocalAuthenticationPackage(),
88     LocationPackage(),
89     MailComposerPackage(),
90     NavigationBarPackage(),
91     NotificationsPackage(),
92     PermissionsPackage(),
93     PrintPackage(),
94     SQLitePackage(),
95     ScreenCapturePackage(),
96     ScreenOrientationPackage(),
97     SecureStorePackage(),
98     SensorsPackage(),
99     SpeechPackage(),
100     SplashScreenPackage(),
101     SystemUIPackage(),
102     TaskManagerPackage(),
103     UpdatesPackage(),
104     VideoThumbnailsPackage(),
105   )
106 
107   /**
108    * Returns all available packages.
109    */
110   fun packages(): List<Package> {
111     return EXPO_MODULES_PACKAGES
112   }
113 
114   /**
115    * Returns packages filtered based on the app's manifest.
116    * For now, filtering is not applied but it is on the todo list.
117    */
118   fun packages(manifest: Manifest?): List<Package> {
119     return EXPO_MODULES_PACKAGES
120   }
121 
122   override fun getModulesList(): List<Class<out Module>> = listOf(
123     CameraViewModule::class.java,
124     CellularModule::class.java,
125     ClipboardModule::class.java,
126     CryptoModule::class.java,
127     DeviceModule::class.java,
128     DocumentPickerModule::class.java,
129     EASClientModule::class.java,
130     HapticsModule::class.java,
131     ImagePickerModule::class.java,
132     IntentLauncherModule::class.java,
133     LinearGradientModule::class.java,
134     LocalizationModule::class.java,
135     MediaLibraryModule::class.java,
136     NetworkModule::class.java,
137     RandomModule::class.java,
138     SMSModule::class.java,
139     SharingModule::class.java,
140     StoreReviewModule::class.java,
141     SystemUIModule::class.java,
142     VideoViewModule::class.java,
143     WebBrowserModule::class.java,
144   )
145 }
146