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
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package expo.modules.kotlin
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReactContext
|
|
4
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
5
|
+
import expo.modules.adapters.react.NativeModulesProxy
|
|
6
|
+
|
|
7
|
+
internal fun ReactContext.getUnimoduleProxy(): NativeModulesProxy? {
|
|
8
|
+
@Suppress("DEPRECATION")
|
|
9
|
+
return if (!isBridgeless) {
|
|
10
|
+
catalystInstance?.getNativeModule("NativeUnimoduleProxy") as? NativeModulesProxy
|
|
11
|
+
} else {
|
|
12
|
+
(this as ThemedReactContext).reactApplicationContext.nativeModules?.find { it is NativeModulesProxy } as? NativeModulesProxy
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -2,9 +2,10 @@ package expo.modules.kotlin
|
|
|
2
2
|
|
|
3
3
|
import android.os.Looper
|
|
4
4
|
import expo.modules.kotlin.exception.Exceptions
|
|
5
|
+
import java.lang.ref.WeakReference
|
|
5
6
|
|
|
6
7
|
object Utils {
|
|
7
|
-
@Suppress("
|
|
8
|
+
@Suppress("NOTHING_TO_INLINE")
|
|
8
9
|
inline fun assertMainThread() {
|
|
9
10
|
if (Thread.currentThread() !== Looper.getMainLooper().thread) {
|
|
10
11
|
throw Exceptions.IncorrectThreadException(
|
|
@@ -19,3 +20,5 @@ object Utils {
|
|
|
19
20
|
inline fun AppContext?.toStrongReference(): AppContext {
|
|
20
21
|
return this ?: throw Exceptions.AppContextLost()
|
|
21
22
|
}
|
|
23
|
+
|
|
24
|
+
fun <T : Any> T?.weak() = WeakReference<T>(this)
|
package/android/src/main/java/expo/modules/kotlin/activityaware/AppCompatActivityAwareHelper.kt
CHANGED
|
@@ -12,7 +12,7 @@ import java.util.concurrent.CopyOnWriteArrayList
|
|
|
12
12
|
class AppCompatActivityAwareHelper : AppCompatActivityAware {
|
|
13
13
|
val listeners = CopyOnWriteArrayList<OnActivityAvailableListener>()
|
|
14
14
|
|
|
15
|
-
var activityReference = WeakReference<AppCompatActivity>(null)
|
|
15
|
+
private var activityReference = WeakReference<AppCompatActivity>(null)
|
|
16
16
|
|
|
17
17
|
fun dispatchOnActivityAvailable(activity: AppCompatActivity) {
|
|
18
18
|
this.activityReference = WeakReference(activity)
|
package/android/src/main/java/expo/modules/kotlin/activityresult/AppContextActivityResultCaller.kt
CHANGED
|
@@ -34,7 +34,7 @@ internal class DefaultAppContextActivityResultCaller(
|
|
|
34
34
|
* For the time being [fallbackCallback] is not working.
|
|
35
35
|
* There are some problems with saving and restoring the state of [activityResultsManager]
|
|
36
36
|
* connected with [Activity]'s lifecycle and [AppContext] lifespan. So far, we've failed with identifying
|
|
37
|
-
* what parts of the application outlives the Activity destruction (especially [AppContext] and other
|
|
37
|
+
* what parts of the application outlives the Activity destruction (especially [AppContext] and other bridge-related parts).
|
|
38
38
|
*/
|
|
39
39
|
override suspend fun <I : Serializable, O> registerForActivityResult(
|
|
40
40
|
contract: AppContextActivityResultContract<I, O>,
|
package/android/src/main/java/expo/modules/kotlin/activityresult/AppContextActivityResultRegistry.kt
CHANGED
|
@@ -30,6 +30,11 @@ import java.util.*
|
|
|
30
30
|
import kotlin.collections.ArrayList
|
|
31
31
|
import kotlin.collections.HashMap
|
|
32
32
|
|
|
33
|
+
private const val TAG = "ActivityResultRegistry"
|
|
34
|
+
|
|
35
|
+
// Use upper 16 bits for request codes
|
|
36
|
+
private const val INITIAL_REQUEST_CODE_VALUE = 0x00010000
|
|
37
|
+
|
|
33
38
|
/**
|
|
34
39
|
* A registry that stores activity result callbacks ([ActivityResultCallback]) for
|
|
35
40
|
* [AppContextActivityResultCaller.registerForActivityResult] registered calls.
|
|
@@ -60,10 +65,6 @@ import kotlin.collections.HashMap
|
|
|
60
65
|
class AppContextActivityResultRegistry(
|
|
61
66
|
private val currentActivityProvider: CurrentActivityProvider
|
|
62
67
|
) {
|
|
63
|
-
private val LOG_TAG = "ActivityResultRegistry"
|
|
64
|
-
|
|
65
|
-
// Use upper 16 bits for request codes
|
|
66
|
-
private val INITIAL_REQUEST_CODE_VALUE = 0x00010000
|
|
67
68
|
private var random: Random = Random()
|
|
68
69
|
|
|
69
70
|
private val requestCodeToKey: MutableMap<Int, String> = HashMap()
|
|
@@ -215,7 +216,6 @@ class AppContextActivityResultRegistry(
|
|
|
215
216
|
val requestCode = keyToRequestCode[key]
|
|
216
217
|
?: throw IllegalStateException("Attempting to launch an unregistered ActivityResultLauncher with contract $contract and input $input. You must ensure the ActivityResultLauncher is registered before calling launch()")
|
|
217
218
|
|
|
218
|
-
@Suppress("UNCHECKED_CAST")
|
|
219
219
|
keyToCallbacksAndContract[key] = CallbacksAndContract(fallbackCallback, callback, contract)
|
|
220
220
|
keyToInputParam[key] = input
|
|
221
221
|
launchedKeys.add(key)
|
|
@@ -274,7 +274,7 @@ class AppContextActivityResultRegistry(
|
|
|
274
274
|
}
|
|
275
275
|
keyToCallbacksAndContract.remove(key)
|
|
276
276
|
if (pendingResults.containsKey(key)) {
|
|
277
|
-
Log.w(
|
|
277
|
+
Log.w(TAG, "Dropping pending result for request $key : ${pendingResults.getParcelable<ActivityResult>(key)}")
|
|
278
278
|
pendingResults.remove(key)
|
|
279
279
|
}
|
|
280
280
|
keyToLifecycleContainers[key]?.let {
|
|
@@ -2,13 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
package expo.modules.kotlin.classcomponent
|
|
4
4
|
|
|
5
|
+
import expo.modules.kotlin.component6
|
|
6
|
+
import expo.modules.kotlin.component7
|
|
7
|
+
import expo.modules.kotlin.component8
|
|
5
8
|
import expo.modules.kotlin.functions.SyncFunctionComponent
|
|
6
9
|
import expo.modules.kotlin.objects.ObjectDefinitionBuilder
|
|
7
10
|
import expo.modules.kotlin.objects.PropertyComponentBuilderWithThis
|
|
8
|
-
import expo.modules.kotlin.
|
|
11
|
+
import expo.modules.kotlin.sharedobjects.SharedRef
|
|
12
|
+
import expo.modules.kotlin.types.enforceType
|
|
13
|
+
import expo.modules.kotlin.types.toArgsArray
|
|
9
14
|
import kotlin.reflect.KClass
|
|
10
15
|
import kotlin.reflect.KType
|
|
11
|
-
import kotlin.reflect.
|
|
16
|
+
import kotlin.reflect.full.isSubclassOf
|
|
12
17
|
|
|
13
18
|
class ClassComponentBuilder<SharedObjectType : Any>(
|
|
14
19
|
val name: String,
|
|
@@ -24,14 +29,14 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
24
29
|
it.canTakeOwner = true
|
|
25
30
|
}
|
|
26
31
|
|
|
27
|
-
val hasSharedObject = ownerClass !== Unit::class
|
|
28
|
-
if (hasSharedObject && constructor == null) {
|
|
32
|
+
val hasSharedObject = ownerClass !== Unit::class // TODO: Add an empty constructor that throws when called from JS
|
|
33
|
+
if (hasSharedObject && constructor == null && !ownerClass.isSubclassOf(SharedRef::class)) {
|
|
29
34
|
throw IllegalArgumentException("constructor cannot be null")
|
|
30
35
|
}
|
|
31
36
|
|
|
32
|
-
val constructor = constructor ?: SyncFunctionComponent("constructor",
|
|
37
|
+
val constructor = constructor ?: SyncFunctionComponent("constructor", emptyArray()) {}
|
|
33
38
|
constructor.canTakeOwner = true
|
|
34
|
-
|
|
39
|
+
constructor.ownerType = ownerType
|
|
35
40
|
return ClassDefinitionData(
|
|
36
41
|
name,
|
|
37
42
|
constructor,
|
|
@@ -42,7 +47,7 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
42
47
|
inline fun Constructor(
|
|
43
48
|
crossinline body: () -> SharedObjectType
|
|
44
49
|
): SyncFunctionComponent {
|
|
45
|
-
return SyncFunctionComponent("constructor",
|
|
50
|
+
return SyncFunctionComponent("constructor", emptyArray()) { body() }.also {
|
|
46
51
|
constructor = it
|
|
47
52
|
}
|
|
48
53
|
}
|
|
@@ -50,7 +55,10 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
50
55
|
inline fun <reified P0> Constructor(
|
|
51
56
|
crossinline body: (p0: P0) -> SharedObjectType
|
|
52
57
|
): SyncFunctionComponent {
|
|
53
|
-
return SyncFunctionComponent("constructor",
|
|
58
|
+
return SyncFunctionComponent("constructor", toArgsArray<P0>()) { (p0) ->
|
|
59
|
+
enforceType<P0>(p0)
|
|
60
|
+
body(p0)
|
|
61
|
+
}.also {
|
|
54
62
|
constructor = it
|
|
55
63
|
}
|
|
56
64
|
}
|
|
@@ -58,7 +66,10 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
58
66
|
inline fun <reified P0, reified P1> Constructor(
|
|
59
67
|
crossinline body: (p0: P0, p1: P1) -> SharedObjectType
|
|
60
68
|
): SyncFunctionComponent {
|
|
61
|
-
return SyncFunctionComponent("constructor",
|
|
69
|
+
return SyncFunctionComponent("constructor", toArgsArray<P0, P1>()) { (p0, p1) ->
|
|
70
|
+
enforceType<P0, P1>(p0, p1)
|
|
71
|
+
body(p0, p1)
|
|
72
|
+
}.also {
|
|
62
73
|
constructor = it
|
|
63
74
|
}
|
|
64
75
|
}
|
|
@@ -66,7 +77,10 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
66
77
|
inline fun <reified P0, reified P1, reified P2> Constructor(
|
|
67
78
|
crossinline body: (p0: P0, p1: P1, p2: P2) -> SharedObjectType
|
|
68
79
|
): SyncFunctionComponent {
|
|
69
|
-
return SyncFunctionComponent("constructor",
|
|
80
|
+
return SyncFunctionComponent("constructor", toArgsArray<P0, P1, P2>()) { (p0, p1, p2) ->
|
|
81
|
+
enforceType<P0, P1, P2>(p0, p1, p2)
|
|
82
|
+
body(p0, p1, p2)
|
|
83
|
+
}.also {
|
|
70
84
|
constructor = it
|
|
71
85
|
}
|
|
72
86
|
}
|
|
@@ -74,7 +88,10 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
74
88
|
inline fun <reified P0, reified P1, reified P2, reified P3> Constructor(
|
|
75
89
|
crossinline body: (p0: P0, p1: P1, p2: P2, p3: P3) -> SharedObjectType
|
|
76
90
|
): SyncFunctionComponent {
|
|
77
|
-
return SyncFunctionComponent("constructor",
|
|
91
|
+
return SyncFunctionComponent("constructor", toArgsArray<P0, P1, P2, P3>()) { (p0, p1, p2, p3) ->
|
|
92
|
+
enforceType<P0, P1, P2, P3>(p0, p1, p2, p3)
|
|
93
|
+
body(p0, p1, p2, p3)
|
|
94
|
+
}.also {
|
|
78
95
|
constructor = it
|
|
79
96
|
}
|
|
80
97
|
}
|
|
@@ -82,7 +99,10 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
82
99
|
inline fun <reified P0, reified P1, reified P2, reified P3, reified P4> Constructor(
|
|
83
100
|
crossinline body: (p0: P0, p1: P1, p2: P2, p3: P3, p4: P4) -> SharedObjectType
|
|
84
101
|
): SyncFunctionComponent {
|
|
85
|
-
return SyncFunctionComponent("constructor",
|
|
102
|
+
return SyncFunctionComponent("constructor", toArgsArray<P0, P1, P2, P3, P4>()) { (p0, p1, p2, p3, p4) ->
|
|
103
|
+
enforceType<P0, P1, P2, P3, P4>(p0, p1, p2, p3, p4)
|
|
104
|
+
body(p0, p1, p2, p3, p4)
|
|
105
|
+
}.also {
|
|
86
106
|
constructor = it
|
|
87
107
|
}
|
|
88
108
|
}
|
|
@@ -90,7 +110,10 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
90
110
|
inline fun <reified P0, reified P1, reified P2, reified P3, reified P4, reified P5> Constructor(
|
|
91
111
|
crossinline body: (p0: P0, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) -> SharedObjectType
|
|
92
112
|
): SyncFunctionComponent {
|
|
93
|
-
return SyncFunctionComponent("constructor",
|
|
113
|
+
return SyncFunctionComponent("constructor", toArgsArray<P0, P1, P2, P3, P4, P5>()) { (p0, p1, p2, p3, p4, p5) ->
|
|
114
|
+
enforceType<P0, P1, P2, P3, P4, P5>(p0, p1, p2, p3, p4, p5)
|
|
115
|
+
body(p0, p1, p2, p3, p4, p5)
|
|
116
|
+
}.also {
|
|
94
117
|
constructor = it
|
|
95
118
|
}
|
|
96
119
|
}
|
|
@@ -98,7 +121,10 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
98
121
|
inline fun <reified P0, reified P1, reified P2, reified P3, reified P4, reified P5, reified P6> Constructor(
|
|
99
122
|
crossinline body: (p0: P0, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6) -> SharedObjectType
|
|
100
123
|
): SyncFunctionComponent {
|
|
101
|
-
return SyncFunctionComponent("constructor",
|
|
124
|
+
return SyncFunctionComponent("constructor", toArgsArray<P0, P1, P2, P3, P4, P5, P6>()) { (p0, p1, p2, p3, p4, p5, p6) ->
|
|
125
|
+
enforceType<P0, P1, P2, P3, P4, P5, P6>(p0, p1, p2, p3, p4, p5, p6)
|
|
126
|
+
body(p0, p1, p2, p3, p4, p5, p6)
|
|
127
|
+
}.also {
|
|
102
128
|
constructor = it
|
|
103
129
|
}
|
|
104
130
|
}
|
|
@@ -106,7 +132,10 @@ class ClassComponentBuilder<SharedObjectType : Any>(
|
|
|
106
132
|
inline fun <reified P0, reified P1, reified P2, reified P3, reified P4, reified P5, reified P6, reified P7> Constructor(
|
|
107
133
|
crossinline body: (p0: P0, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6, p7: P7) -> SharedObjectType
|
|
108
134
|
): SyncFunctionComponent {
|
|
109
|
-
return SyncFunctionComponent("constructor",
|
|
135
|
+
return SyncFunctionComponent("constructor", toArgsArray<P0, P1, P2, P3, P4, P5, P6, P7>()) { (p0, p1, p2, p3, p4, p5, p6, p7) ->
|
|
136
|
+
enforceType<P0, P1, P2, P3, P4, P5, P6, P7>(p0, p1, p2, p3, p4, p5, p6, p7)
|
|
137
|
+
body(p0, p1, p2, p3, p4, p5, p6, p7)
|
|
138
|
+
}.also {
|
|
110
139
|
constructor = it
|
|
111
140
|
}
|
|
112
141
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
package expo.modules.kotlin.defaultmodules
|
|
2
2
|
|
|
3
|
-
import expo.modules.kotlin.
|
|
3
|
+
import expo.modules.kotlin.events.normalizeEventName
|
|
4
4
|
import expo.modules.kotlin.modules.Module
|
|
5
5
|
import expo.modules.kotlin.modules.ModuleDefinition
|
|
6
|
+
import expo.modules.kotlin.uuidv5.InvalidNamespaceException
|
|
7
|
+
import expo.modules.kotlin.uuidv5.uuidv5
|
|
6
8
|
import java.util.UUID
|
|
7
9
|
|
|
8
10
|
class CoreModule : Module() {
|
|
@@ -20,5 +22,33 @@ class CoreModule : Module() {
|
|
|
20
22
|
}
|
|
21
23
|
return@Function uuidv5(namespaceUUID, name).toString()
|
|
22
24
|
}
|
|
25
|
+
|
|
26
|
+
Function("getViewConfig") { viewName: String ->
|
|
27
|
+
val holder = appContext.registry.getModuleHolder(viewName)
|
|
28
|
+
?: return@Function null
|
|
29
|
+
|
|
30
|
+
val viewManagerDefinition = holder.definition.viewManagerDefinition
|
|
31
|
+
?: return@Function null
|
|
32
|
+
|
|
33
|
+
val validAttributes = viewManagerDefinition
|
|
34
|
+
.props
|
|
35
|
+
.keys
|
|
36
|
+
.associateWith { true }
|
|
37
|
+
|
|
38
|
+
val directEventTypes = viewManagerDefinition
|
|
39
|
+
.callbacksDefinition
|
|
40
|
+
?.names
|
|
41
|
+
?.associate {
|
|
42
|
+
val normalizedEventName = normalizeEventName(it)
|
|
43
|
+
normalizedEventName to mapOf(
|
|
44
|
+
"registrationName" to it
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return@Function mapOf(
|
|
49
|
+
"validAttributes" to validAttributes,
|
|
50
|
+
"directEventTypes" to directEventTypes
|
|
51
|
+
)
|
|
52
|
+
}
|
|
23
53
|
}
|
|
24
54
|
}
|
|
@@ -15,8 +15,7 @@ class ErrorManagerModule : Module() {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
fun reportExceptionToLogBox(codedException: CodedException) {
|
|
18
|
-
|
|
19
|
-
eventEmitter.emit(
|
|
18
|
+
sendEvent(
|
|
20
19
|
onNewException,
|
|
21
20
|
Bundle().apply {
|
|
22
21
|
putString("message", codedException.message ?: codedException.toString())
|
|
@@ -25,8 +24,7 @@ class ErrorManagerModule : Module() {
|
|
|
25
24
|
}
|
|
26
25
|
|
|
27
26
|
fun reportWarningToLogBox(warning: String) {
|
|
28
|
-
|
|
29
|
-
eventEmitter.emit(
|
|
27
|
+
sendEvent(
|
|
30
28
|
onNewWarning,
|
|
31
29
|
Bundle().apply {
|
|
32
30
|
putString("message", warning)
|
|
@@ -3,12 +3,14 @@ package expo.modules.kotlin.events
|
|
|
3
3
|
import android.os.Bundle
|
|
4
4
|
import com.facebook.react.bridge.Arguments
|
|
5
5
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.bridge.ReadableNativeMap
|
|
6
7
|
import com.facebook.react.bridge.WritableMap
|
|
7
8
|
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
|
|
8
9
|
import com.facebook.react.uimanager.UIManagerHelper
|
|
9
10
|
import expo.modules.kotlin.ModuleHolder
|
|
10
11
|
import expo.modules.kotlin.records.Record
|
|
11
12
|
import expo.modules.kotlin.types.JSTypeConverter
|
|
13
|
+
import expo.modules.kotlin.types.toJSValue
|
|
12
14
|
import java.lang.ref.WeakReference
|
|
13
15
|
|
|
14
16
|
/**
|
|
@@ -23,22 +25,27 @@ class KModuleEventEmitterWrapper(
|
|
|
23
25
|
) : KEventEmitterWrapper(legacyEventEmitter, reactContextHolder) {
|
|
24
26
|
override fun emit(eventName: String, eventBody: Bundle?) {
|
|
25
27
|
checkIfEventWasExported(eventName)
|
|
26
|
-
|
|
28
|
+
emitNative(eventName, eventBody?.toJSValue(JSTypeConverter.DefaultContainerProvider) as? ReadableNativeMap)
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
override fun emit(eventName: String, eventBody: WritableMap?) {
|
|
30
32
|
checkIfEventWasExported(eventName)
|
|
31
|
-
|
|
33
|
+
emitNative(eventName, eventBody as? ReadableNativeMap)
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
override fun emit(eventName: String, eventBody: Record?) {
|
|
35
37
|
checkIfEventWasExported(eventName)
|
|
36
|
-
|
|
38
|
+
emitNative(eventName, eventBody?.toJSValue(JSTypeConverter.DefaultContainerProvider) as? ReadableNativeMap)
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
override fun emit(eventName: String, eventBody: Map<*, *>?) {
|
|
40
42
|
checkIfEventWasExported(eventName)
|
|
41
|
-
|
|
43
|
+
emitNative(eventName, eventBody?.toJSValue(JSTypeConverter.DefaultContainerProvider) as? ReadableNativeMap)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private fun emitNative(eventName: String, eventBody: ReadableNativeMap?) {
|
|
47
|
+
val appContext = moduleHolder.module.appContext
|
|
48
|
+
moduleHolder.jsObject.emitEvent(appContext.jsiInterop, eventName, eventBody)
|
|
42
49
|
}
|
|
43
50
|
|
|
44
51
|
private fun checkIfEventWasExported(eventName: String) {
|
|
@@ -45,11 +45,10 @@ open class CodedException(
|
|
|
45
45
|
internal fun inferCode(clazz: Class<*>): String {
|
|
46
46
|
val name = requireNotNull(clazz.simpleName) { "Cannot infer code name from class name. We don't support anonymous classes." }
|
|
47
47
|
|
|
48
|
-
@Suppress("Deprecation")
|
|
49
48
|
return "ERR_" + name
|
|
50
49
|
.replace("(Exception)$".toRegex(), "")
|
|
51
50
|
.replace("(.)([A-Z])".toRegex(), "$1_$2")
|
|
52
|
-
.
|
|
51
|
+
.uppercase(Locale.ROOT)
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
54
|
}
|
|
@@ -246,5 +245,5 @@ internal class UnsupportedClass(
|
|
|
246
245
|
) : CodedException(message = "Unsupported type: '$clazz'")
|
|
247
246
|
|
|
248
247
|
internal class PromiseAlreadySettledException(functionName: String) : CodedException(
|
|
249
|
-
message = "
|
|
248
|
+
message = "Promise passed to '$functionName' was already settled. It will lead to a crash in the production environment!"
|
|
250
249
|
)
|