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.DocumentPickerPackage
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.IntentLauncherPackage
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     DocumentPickerPackage(),
78     ErrorRecoveryPackage(),
79     FaceDetectorPackage(),
80     FileSystemPackage(),
81     FirebaseCorePackage(),
82     FirebaseAnalyticsPackage(),
83     FontLoaderPackage(),
84     GLPackage(),
85     ImageLoaderPackage(),
86     ImageManipulatorPackage(),
87     IntentLauncherPackage(),
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     VideoThumbnailsPackage(),
107   )
108 
109   /**
110    * Returns all available packages.
111    */
112   fun packages(): List<Package> {
113     return EXPO_MODULES_PACKAGES
114   }
115 
116   /**
117    * Returns packages filtered based on the app's manifest.
118    * For now, filtering is not applied but it is on the todo list.
119    */
120   fun packages(manifest: Manifest?): List<Package> {
121     return EXPO_MODULES_PACKAGES
122   }
123 
124   override fun getModulesList(): List<Class<out Module>> = listOf(
125     CameraViewModule::class.java,
126     CellularModule::class.java,
127     ClipboardModule::class.java,
128     CryptoModule::class.java,
129     DeviceModule::class.java,
130     EASClientModule::class.java,
131     HapticsModule::class.java,
132     ImagePickerModule::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