expo-modules-core 1.11.13 → 1.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +77 -13
- package/ExpoModulesCore.podspec +7 -4
- package/android/ExpoModulesCorePlugin.gradle +40 -28
- package/android/build.gradle +12 -93
- package/android/proguard-rules.pro +0 -8
- package/android/src/main/cpp/Exceptions.cpp +1 -1
- package/android/src/main/cpp/Exceptions.h +1 -1
- package/android/src/main/cpp/ExpoModulesHostObject.cpp +7 -6
- package/android/src/main/cpp/ExpoModulesHostObject.h +3 -3
- package/android/src/main/cpp/JNIInjector.cpp +4 -2
- package/android/src/main/cpp/JSIContext.cpp +354 -0
- package/android/src/main/cpp/{JSIInteropModuleRegistry.h → JSIContext.h} +90 -9
- package/android/src/main/cpp/JavaCallback.cpp +210 -24
- package/android/src/main/cpp/JavaCallback.h +42 -7
- package/android/src/main/cpp/JavaScriptFunction.cpp +20 -6
- package/android/src/main/cpp/JavaScriptFunction.h +4 -1
- package/android/src/main/cpp/JavaScriptModuleObject.cpp +118 -82
- package/android/src/main/cpp/JavaScriptModuleObject.h +21 -18
- package/android/src/main/cpp/JavaScriptObject.cpp +7 -8
- package/android/src/main/cpp/JavaScriptObject.h +4 -2
- package/android/src/main/cpp/JavaScriptRuntime.cpp +18 -41
- package/android/src/main/cpp/JavaScriptRuntime.h +2 -8
- package/android/src/main/cpp/JavaScriptTypedArray.cpp +3 -3
- package/android/src/main/cpp/JavaScriptTypedArray.h +1 -1
- package/android/src/main/cpp/JavaScriptValue.cpp +7 -7
- package/android/src/main/cpp/JavaScriptValue.h +1 -1
- package/android/src/main/cpp/JavaScriptWeakObject.cpp +4 -4
- package/android/src/main/cpp/JavaScriptWeakObject.h +1 -1
- package/android/src/main/cpp/MethodMetadata.cpp +44 -120
- package/android/src/main/cpp/MethodMetadata.h +5 -11
- package/android/src/main/cpp/WeakRuntimeHolder.cpp +3 -3
- package/android/src/main/cpp/WeakRuntimeHolder.h +2 -2
- package/android/src/main/cpp/types/AnyType.cpp +1 -1
- package/android/src/main/cpp/types/AnyType.h +1 -1
- package/android/src/main/cpp/types/FrontendConverter.cpp +32 -43
- package/android/src/main/cpp/types/FrontendConverter.h +1 -23
- package/android/src/main/cpp/types/JNIToJSIConverter.cpp +5 -10
- package/android/src/main/cpp/types/JNIToJSIConverter.h +6 -2
- package/android/src/main/java/expo/modules/adapters/react/ModuleRegistryAdapter.java +3 -0
- package/android/src/main/java/expo/modules/adapters/react/NativeModulesProxy.java +14 -100
- package/android/src/main/java/expo/modules/adapters/react/ReactAdapterPackage.java +3 -5
- package/android/src/main/java/expo/modules/adapters/react/ReactModuleRegistryProvider.java +6 -22
- package/android/src/main/java/expo/modules/adapters/react/apploader/RNHeadlessAppLoader.kt +8 -4
- package/android/src/main/java/expo/modules/adapters/react/services/EventEmitterModule.java +0 -1
- package/android/src/main/java/expo/modules/adapters/react/services/UIManagerModuleWrapper.java +23 -8
- package/android/src/main/java/expo/modules/core/BasePackage.java +0 -10
- package/android/src/main/java/expo/modules/core/ModulePriorities.kt +1 -0
- package/android/src/main/java/expo/modules/core/ModuleRegistry.java +2 -32
- package/android/src/main/java/expo/modules/core/ModuleRegistryProvider.java +0 -18
- package/android/src/main/java/expo/modules/core/Promise.java +2 -0
- package/android/src/main/java/expo/modules/core/interfaces/Package.java +0 -17
- package/android/src/main/java/expo/modules/core/interfaces/ReactActivityHandler.java +0 -9
- package/android/src/main/java/expo/modules/core/interfaces/ReactNativeHostHandler.java +24 -31
- package/android/src/main/java/expo/modules/core/logging/LogHandler.kt +1 -7
- package/android/src/main/java/expo/modules/core/logging/LogHandlers.kt +11 -0
- package/android/src/main/java/expo/modules/core/logging/Logger.kt +18 -29
- package/android/src/main/java/expo/modules/core/logging/LoggerTimer.kt +11 -0
- package/android/src/main/java/expo/modules/core/logging/OSLogHandler.kt +2 -4
- package/android/src/main/java/expo/modules/core/logging/PersistentFileLogHandler.kt +1 -3
- package/android/src/main/java/expo/modules/interfaces/constants/ConstantsInterface.java +0 -2
- package/android/src/main/java/expo/modules/interfaces/permissions/PermissionsStatus.java +1 -1
- package/android/src/main/java/expo/modules/kotlin/AppContext.kt +44 -24
- package/android/src/main/java/expo/modules/kotlin/ArrayExtenstions.kt +15 -0
- package/android/src/main/java/expo/modules/kotlin/CoreLogger.kt +2 -2
- package/android/src/main/java/expo/modules/kotlin/DynamicExtenstions.kt +0 -3
- package/android/src/main/java/expo/modules/kotlin/ExpoBridgeModule.kt +41 -0
- package/android/src/main/java/expo/modules/kotlin/ExpoModulesHelper.kt +1 -2
- package/android/src/main/java/expo/modules/kotlin/KPromiseWrapper.kt +1 -2
- package/android/src/main/java/expo/modules/kotlin/KotlinInteropModuleRegistry.kt +1 -33
- package/android/src/main/java/expo/modules/kotlin/ModuleHolder.kt +7 -6
- package/android/src/main/java/expo/modules/kotlin/ModuleRegistry.kt +12 -12
- package/android/src/main/java/expo/modules/kotlin/Promise.kt +10 -0
- package/android/src/main/java/expo/modules/kotlin/ReactExtensions.kt +14 -0
- package/android/src/main/java/expo/modules/kotlin/Utils.kt +4 -1
- package/android/src/main/java/expo/modules/kotlin/activityaware/AppCompatActivityAwareHelper.kt +1 -1
- package/android/src/main/java/expo/modules/kotlin/activityresult/AppContextActivityResultCaller.kt +1 -1
- package/android/src/main/java/expo/modules/kotlin/activityresult/AppContextActivityResultRegistry.kt +6 -6
- package/android/src/main/java/expo/modules/kotlin/classcomponent/ClassComponentBuilder.kt +44 -15
- package/android/src/main/java/expo/modules/kotlin/defaultmodules/CoreModule.kt +31 -1
- package/android/src/main/java/expo/modules/kotlin/defaultmodules/ErrorManagerModule.kt +2 -4
- package/android/src/main/java/expo/modules/kotlin/events/KModuleEventEmitterWrapper.kt +11 -4
- package/android/src/main/java/expo/modules/kotlin/exception/CodedException.kt +2 -3
- package/android/src/main/java/expo/modules/kotlin/functions/AsyncFunctionBuilder.kt +136 -43
- package/android/src/main/java/expo/modules/kotlin/functions/AsyncFunctionComponent.kt +71 -2
- package/android/src/main/java/expo/modules/kotlin/functions/FunctionBuilder.kt +39 -12
- package/android/src/main/java/expo/modules/kotlin/jni/ExpectedType.kt +2 -2
- package/android/src/main/java/expo/modules/kotlin/jni/JNIDeallocator.kt +1 -1
- package/android/src/main/java/expo/modules/kotlin/jni/{JSIInteropModuleRegistry.kt → JSIContext.kt} +90 -14
- package/android/src/main/java/expo/modules/kotlin/jni/JavaCallback.kt +51 -24
- package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptFunction.kt +3 -3
- package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptModuleObject.kt +4 -1
- package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptObject.kt +1 -0
- package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptValue.kt +1 -0
- package/android/src/main/java/expo/modules/kotlin/jni/PromiseImpl.kt +20 -0
- package/android/src/main/java/expo/modules/kotlin/modules/Module.kt +0 -1
- package/android/src/main/java/expo/modules/kotlin/modules/ModuleDefinitionBuilder.kt +1 -1
- package/android/src/main/java/expo/modules/kotlin/objects/ObjectDefinitionBuilder.kt +164 -65
- package/android/src/main/java/expo/modules/kotlin/objects/PropertyComponentBuilder.kt +3 -4
- package/android/src/main/java/expo/modules/kotlin/sharedobjects/ClassRegistry.kt +21 -0
- package/android/src/main/java/expo/modules/kotlin/sharedobjects/SharedObject.kt +34 -1
- package/android/src/main/java/expo/modules/kotlin/sharedobjects/SharedObjectRegistry.kt +23 -8
- package/android/src/main/java/expo/modules/kotlin/sharedobjects/SharedRef.kt +7 -1
- package/android/src/main/java/expo/modules/kotlin/tracing/ExpoTrace.kt +4 -0
- package/android/src/main/java/expo/modules/kotlin/types/AnyType.kt +134 -2
- package/android/src/main/java/expo/modules/kotlin/types/EnforceType.kt +60 -0
- package/android/src/main/java/expo/modules/kotlin/types/EnumTypeConverter.kt +2 -2
- package/android/src/main/java/expo/modules/kotlin/types/TypeConverter.kt +0 -2
- package/android/src/main/java/expo/modules/kotlin/types/TypeConverterProvider.kt +3 -27
- package/android/src/main/java/expo/modules/kotlin/types/UnitTypeConverter.kt +3 -7
- package/android/src/main/java/expo/modules/kotlin/types/io/PathTypeConverter.kt +3 -0
- package/android/src/main/java/expo/modules/kotlin/viewevent/ViewEvent.kt +2 -5
- package/android/src/main/java/expo/modules/kotlin/views/ViewDefinitionBuilder.kt +137 -48
- package/android/src/main/java/expo/modules/kotlin/views/ViewManagerDefinition.kt +2 -5
- package/build/EventEmitter.d.ts +2 -2
- package/build/EventEmitter.d.ts.map +1 -1
- package/build/EventEmitter.js +8 -8
- package/build/EventEmitter.js.map +1 -1
- package/build/NativeModule.d.ts +4 -0
- package/build/NativeModule.d.ts.map +1 -0
- package/build/NativeModule.js +4 -0
- package/build/NativeModule.js.map +1 -0
- package/build/NativeModulesProxy.native.d.ts.map +1 -1
- package/build/NativeModulesProxy.native.js +4 -0
- package/build/NativeModulesProxy.native.js.map +1 -1
- package/build/NativeModulesProxy.types.d.ts +2 -2
- package/build/NativeModulesProxy.types.d.ts.map +1 -1
- package/build/NativeModulesProxy.types.js.map +1 -1
- package/build/NativeViewManagerAdapter.native.d.ts.map +1 -1
- package/build/NativeViewManagerAdapter.native.js +20 -1
- package/build/NativeViewManagerAdapter.native.js.map +1 -1
- package/build/PermissionsHook.d.ts.map +1 -1
- package/build/PermissionsHook.js +2 -0
- package/build/PermissionsHook.js.map +1 -1
- package/build/Refs.d.ts +8 -0
- package/build/Refs.d.ts.map +1 -0
- package/build/Refs.js +10 -0
- package/build/Refs.js.map +1 -0
- package/build/SharedObject.d.ts +4 -0
- package/build/SharedObject.d.ts.map +1 -0
- package/build/SharedObject.js +4 -0
- package/build/SharedObject.js.map +1 -0
- package/build/createWebModule.d.ts +2 -0
- package/build/createWebModule.d.ts.map +1 -0
- package/build/createWebModule.js +6 -0
- package/build/createWebModule.js.map +1 -0
- package/build/createWebModule.web.d.ts +2 -0
- package/build/createWebModule.web.d.ts.map +1 -0
- package/build/createWebModule.web.js +6 -0
- package/build/createWebModule.web.js.map +1 -0
- package/build/ensureNativeModulesAreInstalled.d.ts +6 -0
- package/build/ensureNativeModulesAreInstalled.d.ts.map +1 -0
- package/build/ensureNativeModulesAreInstalled.js +26 -0
- package/build/ensureNativeModulesAreInstalled.js.map +1 -0
- package/build/hooks/useReleasingSharedObject.d.ts +7 -0
- package/build/hooks/useReleasingSharedObject.d.ts.map +1 -0
- package/build/hooks/useReleasingSharedObject.js +40 -0
- package/build/hooks/useReleasingSharedObject.js.map +1 -0
- package/build/index.d.ts +8 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +8 -0
- package/build/index.js.map +1 -1
- package/build/requireNativeModule.d.ts +0 -17
- package/build/requireNativeModule.d.ts.map +1 -1
- package/build/requireNativeModule.js +2 -23
- package/build/requireNativeModule.js.map +1 -1
- package/build/ts-declarations/EventEmitter.d.ts +50 -0
- package/build/ts-declarations/EventEmitter.d.ts.map +1 -0
- package/build/ts-declarations/EventEmitter.js +2 -0
- package/build/ts-declarations/EventEmitter.js.map +1 -0
- package/build/ts-declarations/NativeModule.d.ts +14 -0
- package/build/ts-declarations/NativeModule.d.ts.map +1 -0
- package/build/ts-declarations/NativeModule.js +2 -0
- package/build/ts-declarations/NativeModule.js.map +1 -0
- package/build/ts-declarations/SharedObject.d.ts +14 -0
- package/build/ts-declarations/SharedObject.d.ts.map +1 -0
- package/build/ts-declarations/SharedObject.js +2 -0
- package/build/ts-declarations/SharedObject.js.map +1 -0
- package/build/ts-declarations/global.d.ts +49 -0
- package/build/ts-declarations/global.d.ts.map +1 -0
- package/build/ts-declarations/global.js +2 -0
- package/build/ts-declarations/global.js.map +1 -0
- package/build/web/CoreModule.d.ts +17 -0
- package/build/web/CoreModule.d.ts.map +1 -0
- package/build/web/CoreModule.js +51 -0
- package/build/web/CoreModule.js.map +1 -0
- package/build/web/index.d.ts +1 -0
- package/build/web/index.d.ts.map +1 -0
- package/build/web/index.js +1 -0
- package/build/web/index.js.map +1 -0
- package/build/web/index.web.d.ts +2 -0
- package/build/web/index.web.d.ts.map +1 -0
- package/build/web/index.web.js +2 -0
- package/build/web/index.web.js.map +1 -0
- package/common/cpp/BridgelessJSCallInvoker.h +41 -0
- package/common/cpp/EventEmitter.cpp +299 -0
- package/common/cpp/EventEmitter.h +111 -0
- package/common/cpp/JSIUtils.cpp +116 -11
- package/common/cpp/JSIUtils.h +54 -7
- package/common/cpp/LazyObject.cpp +15 -3
- package/common/cpp/LazyObject.h +13 -0
- package/common/cpp/NativeModule.cpp +16 -0
- package/common/cpp/NativeModule.h +34 -0
- package/common/cpp/ObjectDeallocator.cpp +3 -5
- package/common/cpp/ObjectDeallocator.h +2 -3
- package/common/cpp/SharedObject.cpp +69 -0
- package/common/cpp/SharedObject.h +59 -0
- package/common/cpp/TestingSyncJSCallInvoker.h +44 -0
- package/ios/Api/Builders/ClassComponentBuilder.swift +34 -0
- package/ios/{Objects → Api/Builders}/ObjectDefinitionBuilder.swift +3 -3
- package/ios/Api/Builders/ViewDefinitionBuilder.swift +53 -0
- package/ios/Api/Factories/AsyncFunctionFactories.swift +173 -0
- package/ios/{Classes/ClassComponentFactories.swift → Api/Factories/ClassFactories.swift} +19 -19
- package/ios/{Functions/ConcurrentFunctionDefinition.swift → Api/Factories/ConcurrentFunctionFactories.swift} +0 -113
- package/ios/{Modules/ModuleDefinitionComponents.swift → Api/Factories/EventListenersFactories.swift} +0 -20
- package/ios/Api/Factories/ModuleFactories.swift +6 -0
- package/ios/{Objects/ObjectDefinitionComponents.swift → Api/Factories/ObjectFactories.swift} +5 -5
- package/ios/Api/Factories/PropertyFactories.swift +50 -0
- package/ios/Api/Factories/SyncFunctionFactories.swift +173 -0
- package/ios/{Views/ViewManagerDefinitionComponents.swift → Api/Factories/ViewFactories.swift} +7 -6
- package/ios/AppDelegates/EXAppDelegateWrapper.h +0 -21
- package/ios/AppDelegates/EXAppDelegateWrapper.mm +37 -29
- package/ios/{AppContext.swift → Core/AppContext.swift} +34 -11
- package/ios/Core/Classes/AnyClassDefinitionElement.swift +37 -0
- package/ios/{Classes/ClassComponent.swift → Core/Classes/ClassDefinition.swift} +10 -10
- package/ios/{Conversions.swift → Core/Conversions.swift} +1 -1
- package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicSharedObjectType.swift +3 -3
- package/ios/Core/Events/EventObservingDefinition.swift +79 -0
- package/ios/Core/Events/LegacyEventEmitterCompat.swift +32 -0
- package/ios/Core/ExpoBridgeModule.h +18 -0
- package/ios/Core/ExpoBridgeModule.mm +88 -0
- package/ios/Core/ExpoRuntime.swift +6 -0
- package/ios/{Functions/AnyFunction.swift → Core/Functions/AnyFunctionDefinition.swift} +9 -2
- package/ios/Core/Functions/AsyncFunctionDefinition.swift +150 -0
- package/ios/Core/Functions/ConcurrentFunctionDefinition.swift +112 -0
- package/ios/Core/Functions/SyncFunctionDefinition.swift +108 -0
- package/ios/{JavaScriptUtils.swift → Core/JavaScriptUtils.swift} +4 -4
- package/ios/{Logging → Core/Logging}/LogHandlers.swift +12 -5
- package/ios/{Logging → Core/Logging}/Logger.swift +14 -92
- package/ios/Core/Logging/LoggerTimer.swift +22 -0
- package/ios/{ModuleHolder.swift → Core/ModuleHolder.swift} +2 -10
- package/ios/Core/Modules/CoreModule.swift +43 -0
- package/ios/{Modules → Core/Modules}/ModuleDefinition.swift +20 -12
- package/ios/{Modules → Core/Modules}/ModuleDefinitionBuilder.swift +1 -3
- package/ios/{Objects → Core/Objects}/ObjectDefinition.swift +9 -9
- package/ios/{Objects/PropertyComponent.swift → Core/Objects/PropertyDefinition.swift} +11 -64
- package/ios/Core/Protocols/AnyDefinition.swift +4 -0
- package/ios/Core/Protocols/AnyExpoView.swift +7 -0
- package/ios/Core/Protocols/AnyModule.swift +17 -0
- package/ios/Core/Protocols/AnyViewDefinition.swift +34 -0
- package/ios/Core/SharedObjects/SharedObject.swift +80 -0
- package/ios/{SharedObjects → Core/SharedObjects}/SharedObjectRegistry.swift +45 -19
- package/ios/{Views → Core/Views}/AnyViewProp.swift +1 -1
- package/ios/{Views → Core/Views}/ComponentData.swift +7 -7
- package/ios/{Views → Core/Views}/ExpoView.swift +1 -1
- package/ios/Core/Views/ViewDefinition.swift +97 -0
- package/ios/{Views → Core/Views}/ViewLifecycleMethod.swift +1 -1
- package/ios/{Views → Core/Views}/ViewModuleWrapper.swift +1 -1
- package/ios/Fabric/ExpoFabricView.swift +5 -6
- package/ios/FileSystemUtilities/FileSystemLegacyUtilities.swift +111 -0
- package/ios/JSI/EXJSIInstaller.h +28 -0
- package/ios/JSI/EXJSIInstaller.mm +54 -10
- package/ios/JSI/EXJSIUtils.h +15 -11
- package/ios/JSI/EXJSIUtils.mm +21 -49
- package/ios/JSI/EXJavaScriptObject.mm +2 -2
- package/ios/JSI/EXJavaScriptRuntime.h +15 -0
- package/ios/JSI/EXJavaScriptRuntime.mm +53 -26
- package/ios/JSI/EXSharedObjectUtils.h +15 -0
- package/ios/JSI/EXSharedObjectUtils.mm +18 -0
- package/ios/JSI/JavaScriptRuntime.swift +16 -0
- package/ios/Legacy/ModuleRegistry/EXModuleRegistry.m +1 -0
- package/ios/Legacy/ModuleRegistryProvider/EXModuleRegistryProvider.m +5 -0
- package/ios/Legacy/NativeModulesProxy/EXNativeModulesProxy.mm +5 -4
- package/ios/Legacy/Services/EXReactNativeAdapter.mm +34 -28
- package/ios/ReactDelegates/EXReactDelegateWrapper.h +4 -12
- package/ios/ReactDelegates/EXReactDelegateWrapper.mm +41 -0
- package/ios/ReactDelegates/EXReactRootViewFactory.h +38 -0
- package/ios/ReactDelegates/EXReactRootViewFactory.mm +54 -0
- package/ios/ReactDelegates/ExpoReactDelegate.swift +22 -15
- package/ios/ReactDelegates/ExpoReactDelegateHandler.swift +10 -21
- package/ios/ReactDelegates/RCTAppDelegate+Recreate.h +28 -0
- package/ios/ReactDelegates/RCTAppDelegate+Recreate.mm +47 -0
- package/ios/Tests/{ClassComponentSpec.swift → ClassDefinitionSpec.swift} +6 -6
- package/ios/Tests/ConvertiblesSpec.swift +6 -1
- package/ios/Tests/CoreModuleSpec.swift +0 -4
- package/ios/Tests/DynamicTypeSpec.swift +1 -1
- package/ios/Tests/EventEmitterSpec.swift +274 -0
- package/ios/Tests/ExceptionsSpec.swift +114 -54
- package/ios/Tests/ExpoModulesSpec.swift +4 -3
- package/ios/Tests/LoggerSpec.swift +80 -0
- package/ios/Tests/{PropertyComponentSpec.swift → PropertyDefinitionSpec.swift} +1 -1
- package/ios/Tests/SharedObjectRegistrySpec.swift +34 -28
- package/ios/Tests/SharedObjectSpec.swift +141 -0
- package/ios/Tests/ViewDefinitionSpec.swift +1 -1
- package/package.json +2 -2
- package/src/EventEmitter.ts +15 -18
- package/src/NativeModule.ts +6 -0
- package/src/NativeModulesProxy.native.ts +5 -0
- package/src/NativeModulesProxy.types.ts +2 -2
- package/src/NativeViewManagerAdapter.native.tsx +25 -1
- package/src/PermissionsHook.ts +4 -0
- package/src/Refs.ts +10 -0
- package/src/SharedObject.ts +6 -0
- package/src/createWebModule.ts +5 -0
- package/src/createWebModule.web.ts +6 -0
- package/src/ensureNativeModulesAreInstalled.ts +24 -0
- package/src/hooks/useReleasingSharedObject.ts +51 -0
- package/src/index.ts +13 -0
- package/src/requireNativeModule.ts +2 -51
- package/src/ts-declarations/EventEmitter.ts +65 -0
- package/src/ts-declarations/ExpoModules.d.ts +0 -5
- package/src/ts-declarations/NativeModule.ts +18 -0
- package/src/ts-declarations/SharedObject.ts +16 -0
- package/src/ts-declarations/global.ts +60 -0
- package/src/web/CoreModule.ts +83 -0
- package/src/web/index.ts +0 -0
- package/src/web/index.web.ts +1 -0
- package/android/src/main/cpp/JSIInteropModuleRegistry.cpp +0 -196
- package/android/src/main/java/expo/modules/adapters/react/ArgumentsHelper.java +0 -48
- package/android/src/main/java/expo/modules/adapters/react/PromiseWrapper.java +0 -38
- package/android/src/main/java/expo/modules/adapters/react/services/CookieManagerModule.java +0 -53
- package/android/src/main/java/expo/modules/core/ArgumentsHelper.java +0 -44
- package/android/src/main/java/expo/modules/core/ExportedModule.java +0 -173
- package/android/src/main/java/expo/modules/core/ModuleRegistryDelegate.kt +0 -12
- package/android/src/main/java/expo/modules/core/ViewManager.java +0 -9
- package/android/src/main/java/expo/modules/core/interfaces/ExpoMethod.java +0 -12
- package/android/src/main/java/expo/modules/core/interfaces/ExpoProp.java +0 -10
- package/android/src/main/java/expo/modules/core/logging/LoggerOptions.kt +0 -29
- package/android-annotation/build.gradle +0 -48
- package/android-annotation/src/main/java/expo/modules/annotation/Config.kt +0 -7
- package/android-annotation/src/main/java/expo/modules/annotation/ConverterBinder.kt +0 -7
- package/android-annotation-processor/build.gradle +0 -54
- package/android-annotation-processor/src/main/java/expo/modules/annotationprocessor/ExpoSymbolProcessor.kt +0 -175
- package/android-annotation-processor/src/main/java/expo/modules/annotationprocessor/ExpoSymbolProcessorProvider.kt +0 -10
- package/android-annotation-processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider +0 -1
- package/ios/Classes/ClassComponentElement.swift +0 -37
- package/ios/Classes/ClassComponentElementsBuilder.swift +0 -34
- package/ios/ExpoBridgeModule.m +0 -7
- package/ios/ExpoBridgeModule.swift +0 -108
- package/ios/ExpoRuntime.swift +0 -28
- package/ios/Functions/AsyncFunctionComponent.swift +0 -327
- package/ios/Functions/SyncFunctionComponent.swift +0 -282
- package/ios/Interfaces/Font/EXFontManagerInterface.h +0 -9
- package/ios/Interfaces/Font/EXFontProcessorInterface.h +0 -15
- package/ios/Interfaces/Font/EXFontScalerInterface.h +0 -9
- package/ios/Interfaces/Font/EXFontScalersManagerInterface.h +0 -9
- package/ios/Legacy/Services/EXReactFontManager.h +0 -6
- package/ios/Legacy/Services/EXReactFontManager.m +0 -130
- package/ios/Modules/AnyModule.swift +0 -53
- package/ios/Modules/CoreModule.swift +0 -17
- package/ios/ReactDelegates/EXRCTBridgeDelegateInterceptor.h +0 -16
- package/ios/ReactDelegates/EXRCTBridgeDelegateInterceptor.m +0 -49
- package/ios/ReactDelegates/EXReactCompatibleHelpers.h +0 -15
- package/ios/ReactDelegates/EXReactCompatibleHelpers.m +0 -25
- package/ios/ReactDelegates/EXReactDelegateWrapper.m +0 -53
- package/ios/SharedObjects/SharedObject.swift +0 -31
- package/ios/Views/ViewDefinition.swift +0 -114
- package/ios/Views/ViewFactory.swift +0 -16
- package/ios/Views/ViewManagerDefinition.swift +0 -77
- package/ios/Views/ViewManagerDefinitionBuilder.swift +0 -11
- /package/ios/{AppContextConfig.swift → Core/AppContextConfig.swift} +0 -0
- /package/ios/{Arguments → Core/Arguments}/AnyArgument.swift +0 -0
- /package/ios/{Arguments → Core/Arguments}/Convertible.swift +0 -0
- /package/ios/{Arguments → Core/Arguments}/Convertibles.swift +0 -0
- /package/ios/{Arguments → Core/Arguments}/Enumerable.swift +0 -0
- /package/ios/{Classes → Core/Classes}/ClassRegistry.swift +0 -0
- /package/ios/{Convertibles → Core/Convertibles}/Convertibles+Color.swift +0 -0
- /package/ios/{Convertibles → Core/Convertibles}/Either.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/AnyDynamicType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicArrayType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicConvertibleType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicDataType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicDictionaryType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicEnumType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicJavaScriptType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicOptionalType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicRawType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicTypedArrayType.swift +0 -0
- /package/ios/{DynamicTypes → Core/DynamicTypes}/DynamicViewType.swift +0 -0
- /package/ios/{EventListener.swift → Core/EventListener.swift} +0 -0
- /package/ios/{Events → Core/Events}/Callback.swift +0 -0
- /package/ios/{Events → Core/Events}/EventDispatcher.swift +0 -0
- /package/ios/{Exceptions → Core/Exceptions}/ChainableException.swift +0 -0
- /package/ios/{Exceptions → Core/Exceptions}/CodedError.swift +0 -0
- /package/ios/{Exceptions → Core/Exceptions}/CommonExceptions.swift +0 -0
- /package/ios/{Exceptions → Core/Exceptions}/Exception.swift +0 -0
- /package/ios/{Exceptions → Core/Exceptions}/ExceptionOrigin.swift +0 -0
- /package/ios/{Exceptions → Core/Exceptions}/GenericException.swift +0 -0
- /package/ios/{Exceptions → Core/Exceptions}/UnexpectedException.swift +0 -0
- /package/ios/{JavaScriptFunction.swift → Core/JavaScriptFunction.swift} +0 -0
- /package/ios/{Logging → Core/Logging}/LogType.swift +0 -0
- /package/ios/{Logging → Core/Logging}/PersistentFileLog.swift +0 -0
- /package/ios/{ModuleRegistry.swift → Core/ModuleRegistry.swift} +0 -0
- /package/ios/{Modules → Core/Modules}/Module.swift +0 -0
- /package/ios/{ModulesProvider.swift → Core/ModulesProvider.swift} +0 -0
- /package/ios/{Objects → Core/Objects}/JavaScriptObjectBuilder.swift +0 -0
- /package/ios/{Promise.swift → Core/Promise.swift} +0 -0
- /package/ios/{Records → Core/Records}/AnyField.swift +0 -0
- /package/ios/{Records → Core/Records}/Field.swift +0 -0
- /package/ios/{Records → Core/Records}/FieldExtensions.swift +0 -0
- /package/ios/{Records → Core/Records}/FieldOption.swift +0 -0
- /package/ios/{Records → Core/Records}/Record.swift +0 -0
- /package/ios/{SharedObjects → Core/SharedObjects}/SharedRef.swift +0 -0
- /package/ios/{TypedArrays → Core/TypedArrays}/AnyTypedArray.swift +0 -0
- /package/ios/{TypedArrays → Core/TypedArrays}/ConcreteTypedArrays.swift +0 -0
- /package/ios/{TypedArrays → Core/TypedArrays}/GenericTypedArray.swift +0 -0
- /package/ios/{TypedArrays → Core/TypedArrays}/TypedArray.swift +0 -0
- /package/ios/{Views → Core/Views}/ConcreteViewProp.swift +0 -0
|
@@ -2,18 +2,13 @@ package expo.modules.adapters.react;
|
|
|
2
2
|
|
|
3
3
|
import android.util.SparseArray;
|
|
4
4
|
|
|
5
|
-
import com.facebook.react.bridge.Dynamic;
|
|
6
5
|
import com.facebook.react.bridge.Promise;
|
|
7
6
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
8
7
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
9
8
|
import com.facebook.react.bridge.ReactMethod;
|
|
10
9
|
import com.facebook.react.bridge.ReadableArray;
|
|
11
|
-
import com.facebook.react.bridge.ReadableType;
|
|
12
10
|
|
|
13
11
|
import java.lang.ref.WeakReference;
|
|
14
|
-
import java.lang.reflect.Method;
|
|
15
|
-
import java.util.ArrayList;
|
|
16
|
-
import java.util.Collection;
|
|
17
12
|
import java.util.HashMap;
|
|
18
13
|
import java.util.List;
|
|
19
14
|
import java.util.Map;
|
|
@@ -21,9 +16,7 @@ import java.util.Objects;
|
|
|
21
16
|
|
|
22
17
|
import javax.annotation.Nullable;
|
|
23
18
|
|
|
24
|
-
import expo.modules.core.ExportedModule;
|
|
25
19
|
import expo.modules.core.ModuleRegistry;
|
|
26
|
-
import expo.modules.core.interfaces.ExpoMethod;
|
|
27
20
|
import expo.modules.kotlin.CoreLoggerKt;
|
|
28
21
|
import expo.modules.kotlin.ExpoModulesHelper;
|
|
29
22
|
import expo.modules.kotlin.KPromiseWrapper;
|
|
@@ -31,7 +24,7 @@ import expo.modules.kotlin.KotlinInteropModuleRegistry;
|
|
|
31
24
|
import expo.modules.kotlin.ModulesProvider;
|
|
32
25
|
|
|
33
26
|
/**
|
|
34
|
-
* A wrapper/proxy for all {@link
|
|
27
|
+
* A wrapper/proxy for all {@link expo.modules.kotlin.modules.Module}s, gets exposed as {@link com.facebook.react.bridge.NativeModule},
|
|
35
28
|
* so that JS code can call methods of the internal modules.
|
|
36
29
|
*/
|
|
37
30
|
public class NativeModulesProxy extends ReactContextBaseJavaModule {
|
|
@@ -42,11 +35,9 @@ public class NativeModulesProxy extends ReactContextBaseJavaModule {
|
|
|
42
35
|
|
|
43
36
|
private final static String METHOD_INFO_KEY = "key";
|
|
44
37
|
private final static String METHOD_INFO_NAME = "name";
|
|
45
|
-
private final static String METHOD_INFO_ARGUMENTS_COUNT = "argumentsCount";
|
|
46
38
|
|
|
47
39
|
private final static String UNEXPECTED_ERROR = "E_UNEXPECTED_ERROR";
|
|
48
40
|
private final static String UNDEFINED_METHOD_ERROR = "E_UNDEFINED_METHOD";
|
|
49
|
-
private final static String ARGS_TYPES_MISMATCH_ERROR = "E_ARGS_TYPES_MISMATCH";
|
|
50
41
|
|
|
51
42
|
private ModuleRegistry mModuleRegistry;
|
|
52
43
|
private Map<String, Map<String, Integer>> mExportedMethodsKeys;
|
|
@@ -102,30 +93,9 @@ public class NativeModulesProxy extends ReactContextBaseJavaModule {
|
|
|
102
93
|
kotlinModuleRegistry.emitOnCreate();
|
|
103
94
|
kotlinModuleRegistry.installJSIInterop();
|
|
104
95
|
|
|
105
|
-
Collection<ExportedModule> exportedModules = mModuleRegistry.getAllExportedModules();
|
|
106
|
-
|
|
107
|
-
Map<String, Object> modulesConstants = new HashMap<>(exportedModules.size());
|
|
108
|
-
Map<String, Object> exportedMethodsMap = new HashMap<>(exportedModules.size());
|
|
109
|
-
|
|
110
|
-
for (ExportedModule exportedModule : exportedModules) {
|
|
111
|
-
String moduleName = exportedModule.getName();
|
|
112
|
-
modulesConstants.put(moduleName, exportedModule.getConstants());
|
|
113
|
-
|
|
114
|
-
List<Map<String, Object>> exportedMethods = transformExportedMethodsMap(exportedModule.getExportedMethods());
|
|
115
|
-
assignExportedMethodsKeys(moduleName, exportedMethods);
|
|
116
|
-
|
|
117
|
-
exportedMethodsMap.put(moduleName, exportedMethods);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
modulesConstants.putAll(mKotlinInteropModuleRegistry.exportedModulesConstants());
|
|
121
|
-
exportedMethodsMap.putAll(mKotlinInteropModuleRegistry.exportMethods((name, info) -> {
|
|
122
|
-
assignExportedMethodsKeys(name, (List<Map<String, Object>>) info);
|
|
123
|
-
return null;
|
|
124
|
-
}));
|
|
125
|
-
|
|
126
96
|
Map<String, Object> constants = new HashMap<>(3);
|
|
127
|
-
constants.put(MODULES_CONSTANTS_KEY,
|
|
128
|
-
constants.put(EXPORTED_METHODS_KEY,
|
|
97
|
+
constants.put(MODULES_CONSTANTS_KEY, new HashMap<>());
|
|
98
|
+
constants.put(EXPORTED_METHODS_KEY, new HashMap<>());
|
|
129
99
|
constants.put(VIEW_MANAGERS_METADATA_KEY, mKotlinInteropModuleRegistry.viewManagersMetadata());
|
|
130
100
|
|
|
131
101
|
CoreLoggerKt.getLogger().info("✅ Constants were exported");
|
|
@@ -136,26 +106,16 @@ public class NativeModulesProxy extends ReactContextBaseJavaModule {
|
|
|
136
106
|
}
|
|
137
107
|
|
|
138
108
|
/**
|
|
139
|
-
* The only exported {@link ReactMethod}.
|
|
109
|
+
* The only exported {@link ReactMethod} for legacy NativeUnimoduleProxy.
|
|
110
|
+
* This is used only when JSI is not available. i.e. the legacy remote debugging.
|
|
140
111
|
* JavaScript can call native modules' exported methods ({@link ExpoMethod}) using this method as a proxy.
|
|
141
112
|
* For native {@link ExpoMethod} `void put(String key, int value)` in `NativeDictionary` module
|
|
142
|
-
* JavaScript could call `NativeModulesProxy.callMethod("NativeDictionary",
|
|
143
|
-
* or `NativeModulesProxy.callMethod("NativeDictionary", 2, ["key", 42])`, where the second argument
|
|
113
|
+
* JavaScript could call `NativeModulesProxy.callMethod("NativeDictionary", 2, ["key", 42])`, where the second argument
|
|
144
114
|
* is a method's constant key.
|
|
145
115
|
*/
|
|
146
116
|
@ReactMethod
|
|
147
|
-
public void callMethod(String moduleName,
|
|
148
|
-
|
|
149
|
-
if (methodKeyOrName.getType() == ReadableType.String) {
|
|
150
|
-
methodName = methodKeyOrName.asString();
|
|
151
|
-
} else if (methodKeyOrName.getType() == ReadableType.Number) {
|
|
152
|
-
methodName = mExportedMethodsReverseKeys.get(moduleName).get(methodKeyOrName.asInt());
|
|
153
|
-
} else {
|
|
154
|
-
promise.reject(UNEXPECTED_ERROR, "Method key is neither a String nor an Integer -- don't know how to map it to method name.");
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
callMethod(moduleName, methodName, arguments, promise);
|
|
117
|
+
public void callMethod(String moduleName, int methodKey, ReadableArray arguments, final Promise promise) {
|
|
118
|
+
callMethod(moduleName, mExportedMethodsReverseKeys.get(moduleName).get(methodKey), arguments, promise);
|
|
159
119
|
}
|
|
160
120
|
|
|
161
121
|
public void callMethod(String moduleName, String methodName, ReadableArray arguments, final Promise promise) {
|
|
@@ -164,57 +124,10 @@ public class NativeModulesProxy extends ReactContextBaseJavaModule {
|
|
|
164
124
|
return;
|
|
165
125
|
}
|
|
166
126
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
mModuleRegistry.getExportedModule(moduleName).invokeExportedMethod(methodName, nativeArguments);
|
|
172
|
-
} catch (IllegalArgumentException e) {
|
|
173
|
-
promise.reject(ARGS_TYPES_MISMATCH_ERROR, e.getMessage(), e);
|
|
174
|
-
} catch (RuntimeException e) {
|
|
175
|
-
promise.reject(UNEXPECTED_ERROR, "Encountered an exception while calling native method: " + e.getMessage(), e);
|
|
176
|
-
} catch (NoSuchMethodException e) {
|
|
177
|
-
promise.reject(
|
|
178
|
-
UNDEFINED_METHOD_ERROR,
|
|
179
|
-
"Method " + methodName + " of Java module " + moduleName + " is undefined.",
|
|
180
|
-
e
|
|
181
|
-
);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Converts {@link ReadableArray} of arguments into a list of Java Objects.
|
|
187
|
-
* Throws {@link RuntimeException} if it can't convert some {@link ReadableType} to Object.
|
|
188
|
-
* Method is used when converting Double to proper argument.
|
|
189
|
-
*/
|
|
190
|
-
private static List<Object> getNativeArgumentsForMethod(ReadableArray arguments, ExportedModule.MethodInfo methodInfo) {
|
|
191
|
-
List<Object> nativeArguments = new ArrayList<>();
|
|
192
|
-
|
|
193
|
-
for (int i = 0; i < arguments.size(); i++) {
|
|
194
|
-
nativeArguments.add(ArgumentsHelper.getNativeArgumentForExpectedClass(arguments.getDynamic(i), methodInfo.getParameterTypes()[i]));
|
|
195
|
-
}
|
|
196
|
-
return nativeArguments;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Transforms exportedMethodsMap to a map of methodInfos
|
|
201
|
-
*/
|
|
202
|
-
private List<Map<String, Object>> transformExportedMethodsMap(Map<String, Method> exportedMethods) {
|
|
203
|
-
List<Map<String, Object>> methods = new ArrayList<>(exportedMethods.size());
|
|
204
|
-
for (Map.Entry<String, Method> entry : exportedMethods.entrySet()) {
|
|
205
|
-
methods.add(getMethodInfo(entry.getKey(), entry.getValue()));
|
|
206
|
-
}
|
|
207
|
-
return methods;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Returns methodInfo Map (a Map containing a value for key argumentsCount).
|
|
212
|
-
*/
|
|
213
|
-
private Map<String, Object> getMethodInfo(String name, Method method) {
|
|
214
|
-
Map<String, Object> info = new HashMap<>(2);
|
|
215
|
-
info.put(METHOD_INFO_NAME, name);
|
|
216
|
-
info.put(METHOD_INFO_ARGUMENTS_COUNT, method.getParameterTypes().length - 1); // - 1 is for the Promise
|
|
217
|
-
return info;
|
|
127
|
+
promise.reject(
|
|
128
|
+
UNDEFINED_METHOD_ERROR,
|
|
129
|
+
"Method " + methodName + " of Java module " + moduleName + " is undefined."
|
|
130
|
+
);
|
|
218
131
|
}
|
|
219
132
|
|
|
220
133
|
/**
|
|
@@ -252,7 +165,8 @@ public class NativeModulesProxy extends ReactContextBaseJavaModule {
|
|
|
252
165
|
}
|
|
253
166
|
|
|
254
167
|
@Override
|
|
255
|
-
public void
|
|
168
|
+
public void invalidate() {
|
|
169
|
+
super.invalidate();
|
|
256
170
|
mModuleRegistry.onDestroy();
|
|
257
171
|
mKotlinInteropModuleRegistry.onDestroy();
|
|
258
172
|
}
|
|
@@ -4,8 +4,10 @@ import android.content.Context;
|
|
|
4
4
|
|
|
5
5
|
import com.facebook.react.bridge.ReactContext;
|
|
6
6
|
|
|
7
|
+
import java.util.Arrays;
|
|
8
|
+
import java.util.List;
|
|
9
|
+
|
|
7
10
|
import expo.modules.adapters.react.permissions.PermissionsService;
|
|
8
|
-
import expo.modules.adapters.react.services.CookieManagerModule;
|
|
9
11
|
import expo.modules.adapters.react.services.EventEmitterModule;
|
|
10
12
|
import expo.modules.adapters.react.services.FontManagerModule;
|
|
11
13
|
import expo.modules.adapters.react.services.RuntimeEnvironmentModule;
|
|
@@ -14,9 +16,6 @@ import expo.modules.core.BasePackage;
|
|
|
14
16
|
import expo.modules.core.interfaces.InternalModule;
|
|
15
17
|
import expo.modules.core.interfaces.Package;
|
|
16
18
|
|
|
17
|
-
import java.util.Arrays;
|
|
18
|
-
import java.util.List;
|
|
19
|
-
|
|
20
19
|
/**
|
|
21
20
|
* A {@link Package} creating modules provided with the @unimodules/react-native-adapter package.
|
|
22
21
|
*/
|
|
@@ -27,7 +26,6 @@ public class ReactAdapterPackage extends BasePackage {
|
|
|
27
26
|
// We can force-cast here, because this package will only be used in React Native context.
|
|
28
27
|
ReactContext reactContext = (ReactContext) context;
|
|
29
28
|
return Arrays.asList(
|
|
30
|
-
new CookieManagerModule(reactContext),
|
|
31
29
|
new UIManagerModuleWrapper(reactContext),
|
|
32
30
|
new EventEmitterModule(reactContext),
|
|
33
31
|
new FontManagerModule(),
|
|
@@ -5,19 +5,17 @@ import android.content.Context;
|
|
|
5
5
|
import com.facebook.react.ReactPackage;
|
|
6
6
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import java.util.ArrayList;
|
|
9
|
+
import java.util.Collection;
|
|
10
|
+
import java.util.HashSet;
|
|
11
|
+
import java.util.List;
|
|
12
|
+
|
|
9
13
|
import expo.modules.core.ModuleRegistry;
|
|
10
14
|
import expo.modules.core.ModuleRegistryProvider;
|
|
11
|
-
import expo.modules.core.ViewManager;
|
|
12
15
|
import expo.modules.core.interfaces.InternalModule;
|
|
13
16
|
import expo.modules.core.interfaces.Package;
|
|
14
17
|
import expo.modules.core.interfaces.SingletonModule;
|
|
15
18
|
|
|
16
|
-
import java.util.ArrayList;
|
|
17
|
-
import java.util.Collection;
|
|
18
|
-
import java.util.HashSet;
|
|
19
|
-
import java.util.List;
|
|
20
|
-
|
|
21
19
|
/**
|
|
22
20
|
* Since React Native v0.55, {@link com.facebook.react.ReactPackage#createViewManagers(ReactApplicationContext)}
|
|
23
21
|
* gets called only once per lifetime of {@link com.facebook.react.ReactInstanceManager}.
|
|
@@ -27,7 +25,6 @@ import java.util.List;
|
|
|
27
25
|
* only once (and managers returned this one time will persist "forever").
|
|
28
26
|
*/
|
|
29
27
|
public class ReactModuleRegistryProvider extends ModuleRegistryProvider {
|
|
30
|
-
private Collection<ViewManager> mViewManagers;
|
|
31
28
|
private Collection<com.facebook.react.uimanager.ViewManager> mReactViewManagers;
|
|
32
29
|
private Collection<SingletonModule> mSingletonModules;
|
|
33
30
|
|
|
@@ -43,13 +40,11 @@ public class ReactModuleRegistryProvider extends ModuleRegistryProvider {
|
|
|
43
40
|
@Override
|
|
44
41
|
public ModuleRegistry get(Context context) {
|
|
45
42
|
Collection<InternalModule> internalModules = new ArrayList<>();
|
|
46
|
-
Collection<ExportedModule> exportedModules = new ArrayList<>();
|
|
47
43
|
|
|
48
44
|
ReactPackagesProvider reactPackagesProvider = new ReactPackagesProvider();
|
|
49
45
|
|
|
50
46
|
for (Package pkg : getPackages()) {
|
|
51
47
|
internalModules.addAll(pkg.createInternalModules(context));
|
|
52
|
-
exportedModules.addAll(pkg.createExportedModules(context));
|
|
53
48
|
|
|
54
49
|
if (pkg instanceof ReactPackage) {
|
|
55
50
|
reactPackagesProvider.addPackage((ReactPackage) pkg);
|
|
@@ -57,7 +52,7 @@ public class ReactModuleRegistryProvider extends ModuleRegistryProvider {
|
|
|
57
52
|
}
|
|
58
53
|
internalModules.add(reactPackagesProvider);
|
|
59
54
|
|
|
60
|
-
return new ModuleRegistry(internalModules,
|
|
55
|
+
return new ModuleRegistry(internalModules, getSingletonModules(context));
|
|
61
56
|
}
|
|
62
57
|
|
|
63
58
|
private Collection<SingletonModule> getSingletonModules(Context context) {
|
|
@@ -74,17 +69,6 @@ public class ReactModuleRegistryProvider extends ModuleRegistryProvider {
|
|
|
74
69
|
return singletonModules;
|
|
75
70
|
}
|
|
76
71
|
|
|
77
|
-
// TODO: change access to package private when react-native-adapter was removed.
|
|
78
|
-
public Collection<ViewManager> getViewManagers(Context context) {
|
|
79
|
-
if (mViewManagers != null) {
|
|
80
|
-
return mViewManagers;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
mViewManagers = new HashSet<>();
|
|
84
|
-
mViewManagers.addAll(createViewManagers(context));
|
|
85
|
-
return mViewManagers;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
72
|
// TODO: change access to package private when react-native-adapter was removed.
|
|
89
73
|
public Collection<com.facebook.react.uimanager.ViewManager> getReactViewManagers(ReactApplicationContext context) {
|
|
90
74
|
if (mReactViewManagers != null) {
|
|
@@ -2,7 +2,9 @@ package expo.modules.adapters.react.apploader
|
|
|
2
2
|
|
|
3
3
|
import android.content.Context
|
|
4
4
|
import com.facebook.react.ReactApplication
|
|
5
|
+
import com.facebook.react.ReactInstanceEventListener
|
|
5
6
|
import com.facebook.react.ReactInstanceManager
|
|
7
|
+
import com.facebook.react.bridge.ReactContext
|
|
6
8
|
import com.facebook.react.common.LifecycleState
|
|
7
9
|
import expo.modules.apploader.HeadlessAppLoader
|
|
8
10
|
import expo.modules.core.interfaces.Consumer
|
|
@@ -22,10 +24,12 @@ class RNHeadlessAppLoader @DoNotStrip constructor(private val context: Context)
|
|
|
22
24
|
if (context.applicationContext is ReactApplication) {
|
|
23
25
|
val reactInstanceManager = (context.applicationContext as ReactApplication).reactNativeHost.reactInstanceManager
|
|
24
26
|
if (!appRecords.containsKey(params.appScopeKey)) {
|
|
25
|
-
reactInstanceManager.addReactInstanceEventListener {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
reactInstanceManager.addReactInstanceEventListener(object : ReactInstanceEventListener {
|
|
28
|
+
override fun onReactContextInitialized(context: ReactContext) {
|
|
29
|
+
HeadlessAppLoaderNotifier.notifyAppLoaded(params.appScopeKey)
|
|
30
|
+
callback?.apply(true)
|
|
31
|
+
}
|
|
32
|
+
})
|
|
29
33
|
appRecords[params.appScopeKey] = reactInstanceManager
|
|
30
34
|
if (reactInstanceManager.hasStartedCreatingInitialContext()) {
|
|
31
35
|
reactInstanceManager.recreateReactContextInBackground()
|
|
@@ -6,7 +6,6 @@ import com.facebook.react.bridge.Arguments;
|
|
|
6
6
|
import com.facebook.react.bridge.ReactContext;
|
|
7
7
|
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
|
8
8
|
import com.facebook.react.uimanager.UIManagerHelper;
|
|
9
|
-
import com.facebook.react.uimanager.UIManagerModule;
|
|
10
9
|
import com.facebook.react.uimanager.events.EventDispatcher;
|
|
11
10
|
import com.facebook.react.uimanager.events.RCTEventEmitter;
|
|
12
11
|
|
package/android/src/main/java/expo/modules/adapters/react/services/UIManagerModuleWrapper.java
CHANGED
|
@@ -15,6 +15,7 @@ import com.facebook.react.uimanager.UIManagerHelper;
|
|
|
15
15
|
import com.facebook.react.uimanager.UIManagerModule;
|
|
16
16
|
|
|
17
17
|
import java.lang.ref.WeakReference;
|
|
18
|
+
import java.util.ArrayList;
|
|
18
19
|
import java.util.Arrays;
|
|
19
20
|
import java.util.List;
|
|
20
21
|
import java.util.Map;
|
|
@@ -28,10 +29,10 @@ import expo.modules.core.interfaces.LifecycleEventListener;
|
|
|
28
29
|
import expo.modules.core.interfaces.services.UIManager;
|
|
29
30
|
|
|
30
31
|
public class UIManagerModuleWrapper implements
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
ActivityProvider,
|
|
33
|
+
InternalModule,
|
|
34
|
+
JavaScriptContextProvider,
|
|
35
|
+
UIManager {
|
|
35
36
|
private ReactContext mReactContext;
|
|
36
37
|
private Map<LifecycleEventListener, com.facebook.react.bridge.LifecycleEventListener> mLifecycleListenersMap = new WeakHashMap<>();
|
|
37
38
|
private Map<ActivityEventListener, com.facebook.react.bridge.ActivityEventListener> mActivityEventListenersMap = new WeakHashMap<>();
|
|
@@ -47,9 +48,9 @@ public class UIManagerModuleWrapper implements
|
|
|
47
48
|
@Override
|
|
48
49
|
public List<Class> getExportedInterfaces() {
|
|
49
50
|
return Arrays.<Class>asList(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
ActivityProvider.class,
|
|
52
|
+
JavaScriptContextProvider.class,
|
|
53
|
+
UIManager.class
|
|
53
54
|
);
|
|
54
55
|
}
|
|
55
56
|
|
|
@@ -67,7 +68,7 @@ public class UIManagerModuleWrapper implements
|
|
|
67
68
|
block.resolve(tClass.cast(view));
|
|
68
69
|
} else {
|
|
69
70
|
block.reject(new IllegalStateException(
|
|
70
|
-
|
|
71
|
+
"Expected view to be of " + tClass + "; found " + view.getClass() + " instead"));
|
|
71
72
|
}
|
|
72
73
|
} catch (Exception e) {
|
|
73
74
|
block.reject(e);
|
|
@@ -169,6 +170,20 @@ public class UIManagerModuleWrapper implements
|
|
|
169
170
|
mReactContext.addLifecycleEventListener(mLifecycleListenersMap.get(listener));
|
|
170
171
|
}
|
|
171
172
|
|
|
173
|
+
@Override
|
|
174
|
+
public void onDestroy() {
|
|
175
|
+
// We need to create a copy to avoid ConcurrentModificationException
|
|
176
|
+
ArrayList<com.facebook.react.bridge.LifecycleEventListener> tmpList = new ArrayList<>(mLifecycleListenersMap.values());
|
|
177
|
+
for (com.facebook.react.bridge.LifecycleEventListener listener : tmpList) {
|
|
178
|
+
listener.onHostDestroy();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
for (com.facebook.react.bridge.LifecycleEventListener listener : mLifecycleListenersMap.values()) {
|
|
182
|
+
mReactContext.removeLifecycleEventListener(listener);
|
|
183
|
+
}
|
|
184
|
+
mLifecycleListenersMap.clear();
|
|
185
|
+
}
|
|
186
|
+
|
|
172
187
|
@Override
|
|
173
188
|
public void unregisterLifecycleEventListener(LifecycleEventListener listener) {
|
|
174
189
|
getContext().removeLifecycleEventListener(mLifecycleListenersMap.get(listener));
|
|
@@ -21,16 +21,6 @@ public class BasePackage implements Package {
|
|
|
21
21
|
return Collections.emptyList();
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
@Override
|
|
25
|
-
public List<ExportedModule> createExportedModules(Context context) {
|
|
26
|
-
return Collections.emptyList();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@Override
|
|
30
|
-
public List<ViewManager> createViewManagers(Context context) {
|
|
31
|
-
return Collections.emptyList();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
24
|
@Override
|
|
35
25
|
public List<SingletonModule> createSingletonModules(Context context) {
|
|
36
26
|
return Collections.emptyList();
|
|
@@ -20,6 +20,7 @@ object ModulePriorities {
|
|
|
20
20
|
// {key} to {value}
|
|
21
21
|
// key: full qualified class name
|
|
22
22
|
// value: priority value, the higher value takes precedence
|
|
23
|
+
"expo.modules.splashscreen.SplashScreenPackage" to 11,
|
|
23
24
|
"expo.modules.updates.UpdatesPackage" to 10
|
|
24
25
|
)
|
|
25
26
|
}
|
|
@@ -13,25 +13,17 @@ import java.util.Map;
|
|
|
13
13
|
|
|
14
14
|
public class ModuleRegistry {
|
|
15
15
|
private final Map<Class, InternalModule> mInternalModulesMap = new HashMap<>();
|
|
16
|
-
private final Map<String, ExportedModule> mExportedModulesMap = new HashMap<>();
|
|
17
|
-
private final Map<Class, ExportedModule> mExportedModulesByClassMap = new HashMap<>();
|
|
18
16
|
private final Map<String, SingletonModule> mSingletonModulesMap = new HashMap<>();
|
|
19
17
|
private final List<WeakReference<RegistryLifecycleListener>> mExtraRegistryLifecycleListeners = new ArrayList<>();
|
|
20
18
|
private volatile boolean mIsInitialized = false;
|
|
21
19
|
|
|
22
20
|
public ModuleRegistry(
|
|
23
21
|
Collection<InternalModule> internalModules,
|
|
24
|
-
Collection<ExportedModule> exportedModules,
|
|
25
|
-
Collection<ViewManager> viewManagers,
|
|
26
22
|
Collection<SingletonModule> singletonModules) {
|
|
27
23
|
for (InternalModule internalModule : internalModules) {
|
|
28
24
|
registerInternalModule(internalModule);
|
|
29
25
|
}
|
|
30
26
|
|
|
31
|
-
for (ExportedModule module : exportedModules) {
|
|
32
|
-
registerExportedModule(module);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
27
|
for (SingletonModule singleton : singletonModules) {
|
|
36
28
|
registerSingletonModule(singleton);
|
|
37
29
|
}
|
|
@@ -48,18 +40,6 @@ public class ModuleRegistry {
|
|
|
48
40
|
return (T) mInternalModulesMap.get(interfaceClass);
|
|
49
41
|
}
|
|
50
42
|
|
|
51
|
-
public ExportedModule getExportedModule(String name) {
|
|
52
|
-
return mExportedModulesMap.get(name);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
public ExportedModule getExportedModuleOfClass(Class moduleClass) {
|
|
56
|
-
return mExportedModulesByClassMap.get(moduleClass);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
public Collection<ExportedModule> getAllExportedModules() {
|
|
60
|
-
return mExportedModulesMap.values();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
43
|
public <T> T getSingletonModule(String singletonName, Class<T> singletonClass) {
|
|
64
44
|
return (T) mSingletonModulesMap.get(singletonName);
|
|
65
45
|
}
|
|
@@ -80,12 +60,6 @@ public class ModuleRegistry {
|
|
|
80
60
|
return mInternalModulesMap.remove(exportedInterface);
|
|
81
61
|
}
|
|
82
62
|
|
|
83
|
-
public void registerExportedModule(ExportedModule module) {
|
|
84
|
-
String moduleName = module.getName();
|
|
85
|
-
mExportedModulesMap.put(moduleName, module);
|
|
86
|
-
mExportedModulesByClassMap.put(module.getClass(), module);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
63
|
public void registerSingletonModule(SingletonModule singleton) {
|
|
90
64
|
String singletonName = singleton.getName();
|
|
91
65
|
mSingletonModulesMap.put(singletonName, singleton);
|
|
@@ -120,9 +94,7 @@ public class ModuleRegistry {
|
|
|
120
94
|
}
|
|
121
95
|
|
|
122
96
|
public void initialize() {
|
|
123
|
-
List<RegistryLifecycleListener> lifecycleListeners = new ArrayList<>();
|
|
124
|
-
lifecycleListeners.addAll(mExportedModulesMap.values());
|
|
125
|
-
lifecycleListeners.addAll(mInternalModulesMap.values());
|
|
97
|
+
List<RegistryLifecycleListener> lifecycleListeners = new ArrayList<>(mInternalModulesMap.values());
|
|
126
98
|
|
|
127
99
|
for (WeakReference<RegistryLifecycleListener> ref : mExtraRegistryLifecycleListeners) {
|
|
128
100
|
if (ref.get() != null) {
|
|
@@ -136,9 +108,7 @@ public class ModuleRegistry {
|
|
|
136
108
|
}
|
|
137
109
|
|
|
138
110
|
public void onDestroy() {
|
|
139
|
-
List<RegistryLifecycleListener> lifecycleListeners = new ArrayList<>();
|
|
140
|
-
lifecycleListeners.addAll(mExportedModulesMap.values());
|
|
141
|
-
lifecycleListeners.addAll(mInternalModulesMap.values());
|
|
111
|
+
List<RegistryLifecycleListener> lifecycleListeners = new ArrayList<>(mInternalModulesMap.values());
|
|
142
112
|
|
|
143
113
|
for (WeakReference<RegistryLifecycleListener> ref : mExtraRegistryLifecycleListeners) {
|
|
144
114
|
if (ref.get() != null) {
|
|
@@ -28,8 +28,6 @@ public class ModuleRegistryProvider {
|
|
|
28
28
|
public ModuleRegistry get(Context context) {
|
|
29
29
|
return new ModuleRegistry(
|
|
30
30
|
createInternalModules(context),
|
|
31
|
-
createExportedModules(context),
|
|
32
|
-
createViewManagers(context),
|
|
33
31
|
createSingletonModules(context)
|
|
34
32
|
);
|
|
35
33
|
}
|
|
@@ -42,22 +40,6 @@ public class ModuleRegistryProvider {
|
|
|
42
40
|
return internalModules;
|
|
43
41
|
}
|
|
44
42
|
|
|
45
|
-
public Collection<ExportedModule> createExportedModules(Context context) {
|
|
46
|
-
Collection<ExportedModule> exportedModules = new ArrayList<>();
|
|
47
|
-
for (Package pkg : getPackages()) {
|
|
48
|
-
exportedModules.addAll(pkg.createExportedModules(context));
|
|
49
|
-
}
|
|
50
|
-
return exportedModules;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public Collection<ViewManager> createViewManagers(Context context) {
|
|
54
|
-
Collection<ViewManager> viewManagers = new ArrayList<>();
|
|
55
|
-
for (Package pkg : getPackages()) {
|
|
56
|
-
viewManagers.addAll(pkg.createViewManagers(context));
|
|
57
|
-
}
|
|
58
|
-
return viewManagers;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
43
|
public Collection<SingletonModule> createSingletonModules(Context context) {
|
|
62
44
|
Collection<SingletonModule> singletonModules = new ArrayList<>();
|
|
63
45
|
for (Package pkg : getPackages()) {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
package expo.modules.core;
|
|
2
2
|
|
|
3
3
|
import expo.modules.core.interfaces.CodedThrowable;
|
|
4
|
+
import kotlin.Deprecated;
|
|
4
5
|
|
|
6
|
+
@Deprecated(message = "AsyncFunction will crash when called. Use expo.modules.kotlin.Promise instead")
|
|
5
7
|
public interface Promise {
|
|
6
8
|
String UNKNOWN_ERROR = "E_UNKNOWN_ERROR";
|
|
7
9
|
|
|
@@ -2,9 +2,6 @@ package expo.modules.core.interfaces;
|
|
|
2
2
|
|
|
3
3
|
import android.content.Context;
|
|
4
4
|
|
|
5
|
-
import expo.modules.core.ExportedModule;
|
|
6
|
-
import expo.modules.core.ViewManager;
|
|
7
|
-
|
|
8
5
|
import java.util.Collections;
|
|
9
6
|
import java.util.List;
|
|
10
7
|
|
|
@@ -14,20 +11,6 @@ public interface Package {
|
|
|
14
11
|
return Collections.emptyList();
|
|
15
12
|
}
|
|
16
13
|
|
|
17
|
-
default List<? extends ExportedModule> createExportedModules(Context context) {
|
|
18
|
-
return Collections.emptyList();
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @param context A context which you can use when initializing view managers,
|
|
23
|
-
* however remember NOT TO KEEP REFERENCES TO IT. View managers
|
|
24
|
-
* are reused between refreshes of the application, so keeping
|
|
25
|
-
* reference to the context in view managers makes it leak.
|
|
26
|
-
*/
|
|
27
|
-
default List<? extends ViewManager> createViewManagers(Context context) {
|
|
28
|
-
return Collections.emptyList();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
14
|
default List<? extends expo.modules.core.interfaces.SingletonModule> createSingletonModules(Context context) {
|
|
32
15
|
return Collections.emptyList();
|
|
33
16
|
}
|
|
@@ -16,15 +16,6 @@ import androidx.annotation.Nullable;
|
|
|
16
16
|
* Used by {@link ReactActivityDelegateWrapper}
|
|
17
17
|
*/
|
|
18
18
|
public interface ReactActivityHandler {
|
|
19
|
-
/**
|
|
20
|
-
* Given modules a chance to override the default {@link ReactRootView}
|
|
21
|
-
* @return the override ReactRootView instance or null if not to override
|
|
22
|
-
*/
|
|
23
|
-
@Nullable
|
|
24
|
-
default ReactRootView createReactRootView(Activity activity) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
19
|
/**
|
|
29
20
|
* Gives modules a chance to create a ViewGroup that is used as a container for the ReactRootView,
|
|
30
21
|
* which is added as a child to the container if non-null.
|