@depup/react-native-worklets 0.12.1-depup.0 → 0.13.0-depup.0
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/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.cpp +1 -2
- package/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.h +1 -1
- package/Common/cpp/worklets/Compat/StableApi.cpp +24 -8
- package/Common/cpp/worklets/Compat/StableApi.h +1 -1
- package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.cpp +113 -50
- package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.h +10 -1
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +95 -37
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +57 -7
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxyInitializer.cpp +94 -0
- package/Common/cpp/worklets/NativeModules/WorkletsModuleProxyInitializer.h +58 -0
- package/Common/cpp/worklets/Networking/Networking.cpp +283 -0
- package/Common/cpp/worklets/Networking/Networking.h +51 -0
- package/Common/cpp/worklets/Networking/NetworkingBackend.h +47 -0
- package/Common/cpp/worklets/Networking/NetworkingInstaller.cpp +127 -0
- package/Common/cpp/worklets/Networking/NetworkingInstaller.h +19 -0
- package/Common/cpp/worklets/Networking/NetworkingTypes.h +33 -0
- package/Common/cpp/worklets/Networking/TextDecoding.cpp +189 -0
- package/Common/cpp/worklets/Networking/TextDecoding.h +29 -0
- package/Common/cpp/worklets/RunLoop/AsyncQueue.h +28 -0
- package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp +9 -0
- package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.h +6 -0
- package/Common/cpp/worklets/RunLoop/EventLoop.cpp +19 -4
- package/Common/cpp/worklets/RunLoop/EventLoop.h +3 -0
- package/Common/cpp/worklets/SharedItems/MemoryManager.cpp +1 -1
- package/Common/cpp/worklets/SharedItems/MemoryManager.h +2 -1
- package/Common/cpp/worklets/SharedItems/Serializable/CustomSerializable.cpp +37 -0
- package/Common/cpp/worklets/SharedItems/Serializable/CustomSerializable.h +33 -0
- package/Common/cpp/worklets/SharedItems/Serializable/RetainingSerializable.h +112 -0
- package/Common/cpp/worklets/SharedItems/Serializable/Serializable.cpp +129 -0
- package/Common/cpp/worklets/SharedItems/Serializable/Serializable.h +121 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableArray.cpp +38 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableArray.h +39 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableArrayBuffer.cpp +35 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableArrayBuffer.h +43 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableBigInt.cpp +23 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableBigInt.h +35 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableError.cpp +38 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableError.h +30 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableHostFunction.cpp +24 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableHostFunction.h +32 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableHostObject.cpp +19 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableHostObject.h +25 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableImport.cpp +29 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableImport.h +25 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableMap.cpp +44 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableMap.h +25 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableObject.cpp +80 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableObject.h +35 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableRegExp.cpp +22 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableRegExp.h +25 -0
- package/Common/cpp/worklets/SharedItems/{SerializableRemoteFunction.cpp → Serializable/SerializableRemoteFunction.cpp} +30 -2
- package/Common/cpp/worklets/SharedItems/{SerializableRemoteFunction.h → Serializable/SerializableRemoteFunction.h} +24 -10
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableScalar.cpp +46 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableScalar.h +41 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableSet.cpp +36 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableSet.h +23 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableString.cpp +19 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableString.h +22 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableTurboModuleLike.cpp +26 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableTurboModuleLike.h +33 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableWorklet.cpp +31 -0
- package/Common/cpp/worklets/SharedItems/Serializable/SerializableWorklet.h +23 -0
- package/Common/cpp/worklets/SharedItems/Serializable.h +21 -409
- package/Common/cpp/worklets/SharedItems/Shareable.cpp +1 -1
- package/Common/cpp/worklets/SharedItems/Shareable.h +1 -1
- package/Common/cpp/worklets/SharedItems/Synchronizable.h +43 -20
- package/Common/cpp/worklets/SharedItems/SynchronizableAccess.cpp +24 -26
- package/Common/cpp/worklets/SharedItems/SynchronizableAccess.h +5 -7
- package/Common/cpp/worklets/SharedItems/SynchronizableDynamic.cpp +36 -0
- package/Common/cpp/worklets/SharedItems/SynchronizableDynamic.h +27 -0
- package/Common/cpp/worklets/SharedItems/SynchronizableFixed.cpp +76 -0
- package/Common/cpp/worklets/SharedItems/SynchronizableFixed.h +48 -0
- package/Common/cpp/worklets/Tools/ScriptBuffer.h +0 -5
- package/Common/cpp/worklets/Tools/WorkletsJSIUtils.h +16 -30
- package/Common/cpp/worklets/WorkletRuntime/RuntimeBindings.h +27 -30
- package/Common/cpp/worklets/WorkletRuntime/RuntimeManager.cpp +4 -3
- package/Common/cpp/worklets/WorkletRuntime/RuntimeManager.h +2 -1
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +79 -29
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +34 -19
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +13 -86
- package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +1 -7
- package/Package.swift +147 -0
- package/README.md +7 -7
- package/RNWorklets.podspec +1 -2
- package/android/CMakeLists.txt +7 -26
- package/android/build.gradle.kts +5 -31
- package/android/src/main/cpp/worklets/android/WorkletsModule.cpp +46 -129
- package/android/src/main/cpp/worklets/android/WorkletsModule.h +21 -11
- package/android/src/main/cpp/worklets/android/WorkletsOnLoad.cpp +2 -4
- package/android/src/main/cpp/worklets/android/networking/AndroidNetworkingBackend.cpp +82 -0
- package/android/src/main/cpp/worklets/android/networking/AndroidNetworkingBackend.h +32 -0
- package/android/src/main/cpp/worklets/android/networking/JNetworkRequestListener.cpp +73 -0
- package/android/src/main/cpp/worklets/android/networking/JNetworkRequestListener.h +38 -0
- package/android/src/{no-networking → main/java}/com/swmansion/worklets/WorkletsModule.kt +40 -28
- package/android/src/main/java/com/swmansion/worklets/networking/NetworkRequestListener.kt +37 -0
- package/android/src/main/java/com/swmansion/worklets/networking/Networking.kt +244 -0
- package/android/src/main/java/com/swmansion/worklets/runloop/AnimationFrameQueue.kt +40 -5
- package/apple/worklets/apple/AnimationFrameQueue.mm +9 -1
- package/apple/worklets/apple/AssertJavaScriptQueue.h +3 -2
- package/apple/worklets/apple/AssertTurboModuleManagerQueue.h +4 -0
- package/apple/worklets/apple/IOSUIScheduler.mm +3 -0
- package/apple/worklets/apple/Networking/AppleNetworkingBackend.h +29 -0
- package/apple/worklets/apple/Networking/AppleNetworkingBackend.mm +93 -0
- package/apple/worklets/apple/Networking/WorkletsURLSessionDelegate.h +37 -0
- package/apple/worklets/apple/Networking/WorkletsURLSessionDelegate.mm +447 -0
- package/apple/worklets/apple/WorkletsModule.h +3 -2
- package/apple/worklets/apple/WorkletsModule.mm +82 -74
- package/bundleMode/index.js +10 -47
- package/bundleMode/polyfills/prepareBundleMode.js +16 -0
- package/changes.json +6 -6
- package/compatibility.json +4 -1
- package/lib/module/WorkletsModule/NativeWorklets.native.js +12 -9
- package/lib/module/WorkletsModule/NativeWorklets.native.js.map +1 -1
- package/lib/module/debug/jsVersion.js +1 -1
- package/lib/module/featureFlags/staticFlags.json +0 -1
- package/lib/module/featureFlags/types.js +0 -1
- package/lib/module/featureFlags/types.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/initializers/initializers.native.js +5 -12
- package/lib/module/initializers/initializers.native.js.map +1 -1
- package/lib/module/memory/bundleUnpacker.native.js +2 -10
- package/lib/module/memory/bundleUnpacker.native.js.map +1 -1
- package/lib/module/memory/serializable.native.js +3 -31
- package/lib/module/memory/serializable.native.js.map +1 -1
- package/lib/module/memory/synchronizable.js +1 -1
- package/lib/module/memory/synchronizable.js.map +1 -1
- package/lib/module/memory/synchronizable.native.js +7 -3
- package/lib/module/memory/synchronizable.native.js.map +1 -1
- package/lib/module/memory/synchronizableUnpacker.native.js +22 -9
- package/lib/module/memory/synchronizableUnpacker.native.js.map +1 -1
- package/lib/module/memory/valueUnpacker.native.js +0 -8
- package/lib/module/memory/valueUnpacker.native.js.map +1 -1
- package/lib/module/mock.js +22 -1
- package/lib/module/mock.js.map +1 -1
- package/lib/module/networking/AbortController.js +43 -0
- package/lib/module/networking/AbortController.js.map +1 -0
- package/lib/module/networking/Blob.js +60 -0
- package/lib/module/networking/Blob.js.map +1 -0
- package/lib/module/networking/DOMException.js +35 -0
- package/lib/module/networking/DOMException.js.map +1 -0
- package/lib/module/networking/FileReader.js +83 -0
- package/lib/module/networking/FileReader.js.map +1 -0
- package/lib/module/networking/FormData.js +105 -0
- package/lib/module/networking/FormData.js.map +1 -0
- package/lib/module/networking/XMLHttpRequest.js +450 -0
- package/lib/module/networking/XMLHttpRequest.js.map +1 -0
- package/lib/module/networking/bytes.js +6 -0
- package/lib/module/networking/bytes.js.map +1 -0
- package/lib/module/networking/events.js +44 -0
- package/lib/module/networking/events.js.map +1 -0
- package/lib/module/networking/http.js +100 -0
- package/lib/module/networking/http.js.map +1 -0
- package/lib/module/networking/install.js +37 -0
- package/lib/module/networking/install.js.map +1 -0
- package/lib/module/networking/utf8.js +99 -0
- package/lib/module/networking/utf8.js.map +1 -0
- package/lib/module/privateGlobals.d.js +0 -1
- package/lib/module/privateGlobals.d.js.map +1 -1
- package/lib/module/runLoop/common/queueMicrotaskPolyfill.js +9 -0
- package/lib/module/runLoop/common/queueMicrotaskPolyfill.js.map +1 -0
- package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js +7 -3
- package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js.map +1 -1
- package/lib/module/runLoop/workletRuntime/index.js +1 -1
- package/lib/module/runLoop/workletRuntime/index.js.map +1 -1
- package/lib/module/runLoop/workletRuntime/requestAnimationFramePolyfill.js +1 -1
- package/lib/module/runLoop/workletRuntime/requestAnimationFramePolyfill.js.map +1 -1
- package/lib/module/runLoop/workletRuntime/taskQueue.js +0 -13
- package/lib/module/runLoop/workletRuntime/taskQueue.js.map +1 -1
- package/lib/module/runtimes.native.js +8 -1
- package/lib/module/runtimes.native.js.map +1 -1
- package/lib/module/specs/NativeWorkletsModule.js.map +1 -1
- package/lib/module/threads.js +11 -0
- package/lib/module/threads.js.map +1 -1
- package/lib/module/threads.native.js +35 -42
- package/lib/module/threads.native.js.map +1 -1
- package/lib/typescript/WorkletsModule/NativeWorklets.native.d.ts.map +1 -1
- package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts +6 -5
- package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts.map +1 -1
- package/lib/typescript/debug/jsVersion.d.ts +1 -1
- package/lib/typescript/featureFlags/types.d.ts +0 -1
- package/lib/typescript/featureFlags/types.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +2 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/memory/bundleUnpacker.native.d.ts.map +1 -1
- package/lib/typescript/memory/serializable.native.d.ts.map +1 -1
- package/lib/typescript/memory/synchronizable.d.ts +6 -2
- package/lib/typescript/memory/synchronizable.d.ts.map +1 -1
- package/lib/typescript/memory/synchronizable.native.d.ts +6 -2
- package/lib/typescript/memory/synchronizable.native.d.ts.map +1 -1
- package/lib/typescript/memory/synchronizableUnpacker.native.d.ts +1 -1
- package/lib/typescript/memory/synchronizableUnpacker.native.d.ts.map +1 -1
- package/lib/typescript/memory/types.d.ts +6 -0
- package/lib/typescript/memory/types.d.ts.map +1 -1
- package/lib/typescript/memory/valueUnpacker.native.d.ts.map +1 -1
- package/lib/typescript/networking/AbortController.d.ts +16 -0
- package/lib/typescript/networking/AbortController.d.ts.map +1 -0
- package/lib/typescript/networking/Blob.d.ts +16 -0
- package/lib/typescript/networking/Blob.d.ts.map +1 -0
- package/lib/typescript/networking/DOMException.d.ts +5 -0
- package/lib/typescript/networking/DOMException.d.ts.map +1 -0
- package/lib/typescript/networking/FileReader.d.ts +19 -0
- package/lib/typescript/networking/FileReader.d.ts.map +1 -0
- package/lib/typescript/networking/FormData.d.ts +30 -0
- package/lib/typescript/networking/FormData.d.ts.map +1 -0
- package/lib/typescript/networking/XMLHttpRequest.d.ts +77 -0
- package/lib/typescript/networking/XMLHttpRequest.d.ts.map +1 -0
- package/lib/typescript/networking/bytes.d.ts +2 -0
- package/lib/typescript/networking/bytes.d.ts.map +1 -0
- package/lib/typescript/networking/events.d.ts +18 -0
- package/lib/typescript/networking/events.d.ts.map +1 -0
- package/lib/typescript/networking/http.d.ts +14 -0
- package/lib/typescript/networking/http.d.ts.map +1 -0
- package/lib/typescript/networking/install.d.ts +2 -0
- package/lib/typescript/networking/install.d.ts.map +1 -0
- package/lib/typescript/networking/utf8.d.ts +4 -0
- package/lib/typescript/networking/utf8.d.ts.map +1 -0
- package/lib/typescript/runLoop/{workletRuntime/queueMicrotask.d.ts → common/queueMicrotaskPolyfill.d.ts} +1 -1
- package/lib/typescript/runLoop/common/queueMicrotaskPolyfill.d.ts.map +1 -0
- package/lib/typescript/runLoop/uiRuntime/requestAnimationFrame.d.ts.map +1 -1
- package/lib/typescript/runLoop/workletRuntime/taskQueue.d.ts +0 -2
- package/lib/typescript/runLoop/workletRuntime/taskQueue.d.ts.map +1 -1
- package/lib/typescript/runtimes.native.d.ts.map +1 -1
- package/lib/typescript/specs/NativeWorkletsModule.d.ts +1 -0
- package/lib/typescript/specs/NativeWorkletsModule.d.ts.map +1 -1
- package/lib/typescript/threads.d.ts +8 -0
- package/lib/typescript/threads.d.ts.map +1 -1
- package/lib/typescript/threads.native.d.ts +8 -1
- package/lib/typescript/threads.native.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +9 -5
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +36 -22
- package/plugin/index.js +63 -93
- package/plugin-oxc/babel.d.ts +7 -0
- package/plugin-oxc/babel.js +200 -0
- package/plugin-oxc/index.d.ts +33 -0
- package/plugin-oxc/index.js +36 -0
- package/plugin-oxc/worklets-oxc-plugin.darwin-arm64.node +0 -0
- package/plugin-oxc/worklets-oxc-plugin.darwin-x64.node +0 -0
- package/plugin-oxc/worklets-oxc-plugin.linux-arm64.node +0 -0
- package/plugin-oxc/worklets-oxc-plugin.linux-x64.node +0 -0
- package/plugin-oxc/worklets-oxc-plugin.win32-arm64.node +0 -0
- package/plugin-oxc/worklets-oxc-plugin.win32-x64.node +0 -0
- package/react-native.config.js +5 -0
- package/scripts/worklets_utils.rb +0 -10
- package/src/WorkletsModule/NativeWorklets.native.ts +26 -9
- package/src/WorkletsModule/workletsModuleProxy.ts +15 -5
- package/src/debug/jsVersion.ts +1 -1
- package/src/featureFlags/staticFlags.json +0 -1
- package/src/featureFlags/types.ts +0 -1
- package/src/index.ts +3 -0
- package/src/initializers/initializers.native.ts +5 -13
- package/src/memory/bundleUnpacker.native.ts +6 -13
- package/src/memory/serializable.native.ts +6 -46
- package/src/memory/synchronizable.native.ts +38 -4
- package/src/memory/synchronizable.ts +22 -2
- package/src/memory/synchronizableUnpacker.native.ts +38 -13
- package/src/memory/types.ts +9 -0
- package/src/memory/valueUnpacker.native.ts +0 -8
- package/src/mock.ts +28 -1
- package/src/networking/AbortController.ts +57 -0
- package/src/networking/Blob.ts +74 -0
- package/src/networking/DOMException.ts +37 -0
- package/src/networking/FileReader.ts +99 -0
- package/src/networking/FormData.ts +135 -0
- package/src/networking/XMLHttpRequest.ts +557 -0
- package/src/networking/bytes.ts +8 -0
- package/src/networking/events.ts +61 -0
- package/src/networking/http.ts +173 -0
- package/src/networking/install.ts +38 -0
- package/src/networking/utf8.ts +122 -0
- package/src/privateGlobals.d.ts +20 -13
- package/src/runLoop/common/queueMicrotaskPolyfill.ts +12 -0
- package/src/runLoop/uiRuntime/requestAnimationFrame.ts +7 -4
- package/src/runLoop/workletRuntime/index.ts +1 -1
- package/src/runLoop/workletRuntime/requestAnimationFramePolyfill.ts +1 -1
- package/src/runLoop/workletRuntime/taskQueue.ts +0 -15
- package/src/runtimes.native.ts +10 -1
- package/src/specs/NativeWorkletsModule.ts +1 -0
- package/src/threads.native.ts +49 -54
- package/src/threads.ts +11 -0
- package/src/types.ts +9 -5
- package/Common/cpp/worklets/SharedItems/Serializable.cpp +0 -373
- package/Common/cpp/worklets/SharedItems/SerializableFactory.cpp +0 -172
- package/Common/cpp/worklets/SharedItems/SerializableFactory.h +0 -85
- package/Common/cpp/worklets/SharedItems/Synchronizable.cpp +0 -59
- package/android/src/main/cpp/worklets/android/JWorkletRuntimeWrapper.cpp +0 -51
- package/android/src/main/cpp/worklets/android/JWorkletRuntimeWrapper.h +0 -43
- package/android/src/networking/com/swmansion/worklets/WorkletRuntimeWrapper.kt +0 -27
- package/android/src/networking/com/swmansion/worklets/WorkletsHeaderUtil.kt +0 -30
- package/android/src/networking/com/swmansion/worklets/WorkletsModule.kt +0 -203
- package/android/src/networking/com/swmansion/worklets/WorkletsNetworkEventUtil.kt +0 -272
- package/android/src/networking/com/swmansion/worklets/WorkletsNetworking.kt +0 -1124
- package/android/src/networking/com/swmansion/worklets/WorkletsOkHttpCallUtil.kt +0 -40
- package/android/src/networking/com/swmansion/worklets/WorkletsProgressListener.kt +0 -13
- package/android/src/networking/com/swmansion/worklets/WorkletsProgressRequestBody.kt +0 -98
- package/android/src/networking/com/swmansion/worklets/WorkletsProgressResponseBody.kt +0 -60
- package/android/src/networking/com/swmansion/worklets/WorkletsProgressiveStringDecoder.kt +0 -87
- package/android/src/networking/com/swmansion/worklets/WorkletsRequestBodyUtil.kt +0 -181
- package/apple/worklets/apple/Networking/WorkletsNetworking.h +0 -25
- package/apple/worklets/apple/Networking/WorkletsNetworking.mm +0 -707
- package/bundleMode/shims/turboModuleRegistryShim.js +0 -47
- package/lib/module/bundleMode/network.native.js +0 -44
- package/lib/module/bundleMode/network.native.js.map +0 -1
- package/lib/module/runLoop/workletRuntime/queueMicrotask.js +0 -11
- package/lib/module/runLoop/workletRuntime/queueMicrotask.js.map +0 -1
- package/lib/typescript/bundleMode/network.native.d.ts +0 -7
- package/lib/typescript/bundleMode/network.native.d.ts.map +0 -1
- package/lib/typescript/runLoop/workletRuntime/queueMicrotask.d.ts.map +0 -1
- package/src/bundleMode/network.native.ts +0 -63
- package/src/runLoop/workletRuntime/queueMicrotask.ts +0 -13
package/RNWorklets.podspec
CHANGED
|
@@ -16,7 +16,6 @@ compilation_metadata_generation_flag = worklets_config[:is_reanimated_example_ap
|
|
|
16
16
|
feature_flags = worklets_config[:feature_flags_flag]
|
|
17
17
|
version_flag = "-DWORKLETS_VERSION=#{package['version']}"
|
|
18
18
|
worklets_profiling_flag = ENV['IS_WORKLETS_PROFILING'] ? '-DWORKLETS_PROFILING' : ''
|
|
19
|
-
fetch_preview_flag = worklets_config[:fetch_preview_flag]
|
|
20
19
|
hermes_v1_flag = ENV['RCT_HERMES_V1_ENABLED'] == '1' ? '-DHERMES_V1_ENABLED' : ''
|
|
21
20
|
|
|
22
21
|
# React Native doesn't expose these flags, but not having them
|
|
@@ -75,7 +74,7 @@ Pod::Spec.new do |s|
|
|
|
75
74
|
"CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
|
|
76
75
|
"GCC_PREPROCESSOR_DEFINITIONS[config=*Debug*]" => "$(inherited) #{hermes_debug_hidden_flags}",
|
|
77
76
|
"GCC_PREPROCESSOR_DEFINITIONS[config=*Release*]" => "$(inherited)",
|
|
78
|
-
"OTHER_CFLAGS" => "$(inherited) #{feature_flags} #{version_flag} #{compilation_metadata_generation_flag} #{worklets_profiling_flag} #{
|
|
77
|
+
"OTHER_CFLAGS" => "$(inherited) #{feature_flags} #{version_flag} #{compilation_metadata_generation_flag} #{worklets_profiling_flag} #{hermes_v1_flag}",
|
|
79
78
|
}
|
|
80
79
|
s.xcconfig = {
|
|
81
80
|
"HEADER_SEARCH_PATHS" => [
|
package/android/CMakeLists.txt
CHANGED
|
@@ -19,16 +19,10 @@ add_compile_options(${folly_FLAGS})
|
|
|
19
19
|
string(APPEND CMAKE_CXX_FLAGS " -DWORKLETS_VERSION=${WORKLETS_VERSION}\
|
|
20
20
|
-DWORKLETS_FEATURE_FLAGS=\"${WORKLETS_FEATURE_FLAGS}\"")
|
|
21
21
|
|
|
22
|
-
# HERMES_V1_ENABLED is centralized in react-native-flags.cmake
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
else()
|
|
27
|
-
# Reference the value so CMake records it as used, otherwise it warns:
|
|
28
|
-
# "Manually-specified variables were not used by the project:
|
|
29
|
-
# HERMES_V1_ENABLED"
|
|
30
|
-
set(HERMES_V1_ENABLED "${HERMES_V1_ENABLED}")
|
|
31
|
-
endif()
|
|
22
|
+
# HERMES_V1_ENABLED is centralized in react-native-flags.cmake. Reference the
|
|
23
|
+
# value so CMake records it as used, otherwise it warns: "Manually-specified
|
|
24
|
+
# variables were not used by the project: HERMES_V1_ENABLED"
|
|
25
|
+
set(HERMES_V1_ENABLED "${HERMES_V1_ENABLED}")
|
|
32
26
|
|
|
33
27
|
string(APPEND CMAKE_CXX_FLAGS " -fno-omit-frame-pointer -fstack-protector-all")
|
|
34
28
|
|
|
@@ -38,9 +32,6 @@ endif()
|
|
|
38
32
|
if(${IS_REANIMATED_EXAMPLE_APP})
|
|
39
33
|
string(APPEND CMAKE_CXX_FLAGS " -DIS_REANIMATED_EXAMPLE_APP -Wpedantic")
|
|
40
34
|
endif()
|
|
41
|
-
if(${WORKLETS_FETCH_PREVIEW_ENABLED})
|
|
42
|
-
string(APPEND CMAKE_CXX_FLAGS " -DWORKLETS_FETCH_PREVIEW_ENABLED")
|
|
43
|
-
endif()
|
|
44
35
|
|
|
45
36
|
if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Debug")
|
|
46
37
|
string(APPEND CMAKE_CXX_FLAGS " -DNDEBUG")
|
|
@@ -66,14 +57,8 @@ target_precompile_headers(worklets PRIVATE "${ANDROID_CPP_DIR}/WorkletsPCH.h")
|
|
|
66
57
|
target_compile_options(
|
|
67
58
|
worklets PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:-Xclang;-fno-pch-timestamp>")
|
|
68
59
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
"${REACT_NATIVE_DIR}/ReactCommon/cmake-utils/react-native-flags.cmake")
|
|
72
|
-
target_compile_reactnative_options(worklets PUBLIC)
|
|
73
|
-
else()
|
|
74
|
-
string(APPEND CMAKE_CXX_FLAGS
|
|
75
|
-
" -fexceptions -frtti -std=c++${CMAKE_CXX_STANDARD} -Wall -Werror")
|
|
76
|
-
endif()
|
|
60
|
+
include("${REACT_NATIVE_DIR}/ReactCommon/cmake-utils/react-native-flags.cmake")
|
|
61
|
+
target_compile_reactnative_options(worklets PUBLIC)
|
|
77
62
|
|
|
78
63
|
# includes
|
|
79
64
|
target_include_directories(worklets PUBLIC "${COMMON_CPP_DIR}"
|
|
@@ -97,11 +82,7 @@ set_target_properties(worklets PROPERTIES LINKER_LANGUAGE CXX)
|
|
|
97
82
|
target_link_libraries(worklets android log ReactAndroid::reactnative
|
|
98
83
|
ReactAndroid::jsi fbjni::fbjni)
|
|
99
84
|
|
|
100
|
-
|
|
101
|
-
target_link_libraries(worklets hermes-engine::hermesvm)
|
|
102
|
-
else()
|
|
103
|
-
target_link_libraries(worklets hermes-engine::libhermes)
|
|
104
|
-
endif()
|
|
85
|
+
target_link_libraries(worklets hermes-engine::hermesvm)
|
|
105
86
|
|
|
106
87
|
if(${HERMES_ENABLE_DEBUGGER})
|
|
107
88
|
string(APPEND CMAKE_CXX_FLAGS " -DHERMES_ENABLE_DEBUGGER=1")
|
package/android/build.gradle.kts
CHANGED
|
@@ -69,22 +69,13 @@ fun getReactNativeVersion(): String {
|
|
|
69
69
|
return reactProperties.getProperty("VERSION_NAME")
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
fun getReactNativeMinorVersion(): Int {
|
|
73
|
-
val reactNativeVersion = getReactNativeVersion()
|
|
74
|
-
return if (reactNativeVersion.startsWith("0.0.0-")) 1000 else reactNativeVersion.split(".")[1].toInt()
|
|
75
|
-
}
|
|
76
|
-
|
|
77
72
|
fun getHermesV1Enabled(): Boolean {
|
|
78
73
|
// Even though `HERMES_V1_ENABLED` is now centralized
|
|
79
|
-
// in `react-native-flags.cmake
|
|
80
|
-
//
|
|
81
|
-
//
|
|
74
|
+
// in `react-native-flags.cmake`, that CMake file depends
|
|
75
|
+
// on definitions provided in local `externalNativeBuild`
|
|
76
|
+
// configuration of the LIBRARY.
|
|
82
77
|
// I hope this is only a temporary workaround.
|
|
83
|
-
return
|
|
84
|
-
safeAppExtGet("hermesV1Enabled", true)?.toString()?.toBoolean() ?: true
|
|
85
|
-
} else {
|
|
86
|
-
safeAppExtGet("hermesV1Enabled", false)?.toString()?.toBoolean() ?: false
|
|
87
|
-
}
|
|
78
|
+
return safeAppExtGet("hermesV1Enabled", true)?.toString()?.toBoolean() ?: true
|
|
88
79
|
}
|
|
89
80
|
|
|
90
81
|
fun getWorkletsVersion(): String {
|
|
@@ -127,9 +118,6 @@ fun getStaticFeatureFlags(): Map<String, String> {
|
|
|
127
118
|
fun getStaticFeatureFlagsString(featureFlags: Map<String, String>): String =
|
|
128
119
|
featureFlags.entries.joinToString("") { (key, value) -> "[$key:$value]" }
|
|
129
120
|
|
|
130
|
-
fun isFlagEnabled(featureFlags: Map<String, String>, flagName: String): Boolean =
|
|
131
|
-
featureFlags.containsKey(flagName) && featureFlags[flagName] == "true"
|
|
132
|
-
|
|
133
121
|
if (project != rootProject) {
|
|
134
122
|
apply(plugin = "com.facebook.react")
|
|
135
123
|
}
|
|
@@ -141,7 +129,6 @@ val reactNativeRootDir: File = resolveReactNativeDirectory()
|
|
|
141
129
|
val REACT_NATIVE_VERSION: String = getReactNativeVersion()
|
|
142
130
|
val WORKLETS_VERSION: String = getWorkletsVersion()
|
|
143
131
|
val IS_REANIMATED_EXAMPLE_APP: Boolean = safeAppExtGet("isReanimatedExampleApp", false)?.toString()?.toBoolean() ?: false
|
|
144
|
-
val FETCH_PREVIEW_ENABLED: Boolean = isFlagEnabled(featureFlags, "FETCH_PREVIEW_ENABLED")
|
|
145
132
|
val WORKLETS_FEATURE_FLAGS: String = getStaticFeatureFlagsString(featureFlags)
|
|
146
133
|
val HERMES_V1_ENABLED: Boolean = getHermesV1Enabled()
|
|
147
134
|
val WORKLETS_PROFILING: Boolean = safeAppExtGet("enableWorkletsProfiling", false)?.toString()?.toBoolean() ?: false
|
|
@@ -216,7 +203,6 @@ android {
|
|
|
216
203
|
"-DANDROID_TOOLCHAIN=clang",
|
|
217
204
|
"-DREACT_NATIVE_DIR=${toPlatformFileString(reactNativeRootDir.path)}",
|
|
218
205
|
"-DIS_REANIMATED_EXAMPLE_APP=$IS_REANIMATED_EXAMPLE_APP",
|
|
219
|
-
"-DWORKLETS_FETCH_PREVIEW_ENABLED=$FETCH_PREVIEW_ENABLED",
|
|
220
206
|
"-DWORKLETS_PROFILING=$WORKLETS_PROFILING",
|
|
221
207
|
"-DWORKLETS_VERSION=$WORKLETS_VERSION",
|
|
222
208
|
"-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON",
|
|
@@ -286,18 +272,6 @@ android {
|
|
|
286
272
|
targetCompatibility = JavaVersion.VERSION_17
|
|
287
273
|
}
|
|
288
274
|
|
|
289
|
-
sourceSets {
|
|
290
|
-
getByName("main") {
|
|
291
|
-
kotlin {
|
|
292
|
-
if (FETCH_PREVIEW_ENABLED) {
|
|
293
|
-
directories.add("src/networking")
|
|
294
|
-
} else {
|
|
295
|
-
directories.add("src/no-networking")
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
275
|
if (IS_REANIMATED_EXAMPLE_APP) {
|
|
302
276
|
apply(from = "../../../scripts/llvm-tools/android-hook.gradle.kts")
|
|
303
277
|
}
|
|
@@ -336,7 +310,7 @@ tasks.named("preBuild") { dependsOn("assertMinimalReactNativeVersionTask") }
|
|
|
336
310
|
|
|
337
311
|
// Workaround for AGP 9 + Kotlin 2.x lint K2 UAST crash on .gradle.kts build scripts.
|
|
338
312
|
// See: https://issuetracker.google.com/issues/432144179
|
|
339
|
-
tasks.configureEach { if (name.startsWith("
|
|
313
|
+
tasks.configureEach { if (name.startsWith("lint")) enabled = false }
|
|
340
314
|
|
|
341
315
|
tasks.register<Copy>("prepareWorkletsHeadersForPrefabs") {
|
|
342
316
|
from("$projectDir/src/main/cpp")
|
|
@@ -1,22 +1,10 @@
|
|
|
1
|
+
#include <worklets/Tools/JSScheduler.h>
|
|
1
2
|
#include <worklets/Tools/ScriptBuffer.h>
|
|
2
3
|
#include <worklets/WorkletRuntime/BundleModeConfig.h>
|
|
3
4
|
#include <worklets/WorkletRuntime/RuntimeBindings.h>
|
|
4
5
|
#include <worklets/android/AnimationFrameCallback.h>
|
|
5
6
|
#include <worklets/android/WorkletsModule.h>
|
|
6
7
|
|
|
7
|
-
#ifdef WORKLETS_FETCH_PREVIEW_ENABLED
|
|
8
|
-
#include <folly/json/dynamic.h>
|
|
9
|
-
#include <jni.h>
|
|
10
|
-
#include <jsi/JSIDynamic.h>
|
|
11
|
-
#include <react/jni/JCallback.h>
|
|
12
|
-
#include <react/jni/ReadableNativeArray.h>
|
|
13
|
-
#include <react/jni/ReadableNativeMap.h>
|
|
14
|
-
#include <worklets/WorkletRuntime/WorkletRuntime.h>
|
|
15
|
-
#include <worklets/android/JWorkletRuntimeWrapper.h>
|
|
16
|
-
|
|
17
|
-
#include <vector>
|
|
18
|
-
#endif // WORKLETS_FETCH_PREVIEW_ENABLED
|
|
19
|
-
|
|
20
8
|
#include <memory>
|
|
21
9
|
#include <string>
|
|
22
10
|
#include <utility>
|
|
@@ -28,152 +16,75 @@ using namespace react;
|
|
|
28
16
|
|
|
29
17
|
WorkletsModule::WorkletsModule(
|
|
30
18
|
jni::alias_ref<jhybridobject> jThis, // NOLINT //(performance-unnecessary-value-param)
|
|
31
|
-
const BundleModeConfig &bundleModeConfig,
|
|
32
19
|
jsi::Runtime *rnRuntime,
|
|
33
20
|
const std::shared_ptr<facebook::react::CallInvoker> &jsCallInvoker,
|
|
34
|
-
const std::shared_ptr<UIScheduler> &uiScheduler
|
|
21
|
+
const std::shared_ptr<UIScheduler> &uiScheduler,
|
|
22
|
+
jni::global_ref<JNetworking::javaobject> networking)
|
|
35
23
|
: javaPart_(jni::make_global(jThis)),
|
|
36
24
|
rnRuntime_(rnRuntime),
|
|
37
25
|
rnRuntimeStatus_(std::make_shared<RNRuntimeStatus>()),
|
|
38
|
-
|
|
39
|
-
*rnRuntime,
|
|
40
|
-
jsCallInvoker,
|
|
26
|
+
initializer_(std::make_shared<WorkletsModuleProxyInitializer>(
|
|
27
|
+
std::make_shared<JSScheduler>(*rnRuntime, jsCallInvoker, getIsOnJSQueueThread()),
|
|
41
28
|
uiScheduler,
|
|
42
|
-
|
|
43
|
-
getRuntimeBindings(bundleModeConfig.enabled, *rnRuntime),
|
|
44
|
-
bundleModeConfig,
|
|
29
|
+
getRuntimeBindings(javaPart_, std::move(networking)),
|
|
45
30
|
rnRuntimeStatus_)) {}
|
|
46
31
|
|
|
47
32
|
jni::local_ref<WorkletsModule::jhybriddata> WorkletsModule::initHybrid(
|
|
48
33
|
jni::alias_ref<jhybridobject> jThis, // NOLINT //(performance-unnecessary-value-param)
|
|
49
|
-
jboolean bundleModeEnabled,
|
|
50
34
|
jlong jsContext,
|
|
51
35
|
jni::alias_ref<facebook::react::CallInvokerHolder::javaobject> jsCallInvokerHolder,
|
|
52
36
|
jni::alias_ref<worklets::AndroidUIScheduler::javaobject> androidUIScheduler,
|
|
53
|
-
jni::alias_ref<
|
|
54
|
-
jScriptBufferWrapper // NOLINT //(performance-unnecessary-value-param)
|
|
37
|
+
jni::alias_ref<JNetworking::javaobject> networking // NOLINT //(performance-unnecessary-value-param)
|
|
55
38
|
) {
|
|
56
39
|
auto jsCallInvoker = jsCallInvokerHolder->cthis()->getCallInvoker();
|
|
57
40
|
auto rnRuntime = reinterpret_cast<jsi::Runtime *>(jsContext); // NOLINT //(performance-no-int-to-ptr)
|
|
58
41
|
auto uiScheduler = androidUIScheduler->cthis()->getUIScheduler();
|
|
42
|
+
return makeCxxInstance(jThis, rnRuntime, jsCallInvoker, uiScheduler, jni::make_global(networking));
|
|
43
|
+
}
|
|
59
44
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (bundleModeEnabled) {
|
|
63
|
-
auto cxxWrapper = jScriptBufferWrapper->cthis();
|
|
64
|
-
script = cxxWrapper->getScript();
|
|
65
|
-
sourceURL = cxxWrapper->getSourceUrl();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return makeCxxInstance(
|
|
69
|
-
jThis,
|
|
70
|
-
BundleModeConfig{
|
|
71
|
-
.enabled = static_cast<bool>(bundleModeEnabled),
|
|
72
|
-
.script = script,
|
|
73
|
-
.sourceURL = sourceURL,
|
|
74
|
-
},
|
|
75
|
-
rnRuntime,
|
|
76
|
-
jsCallInvoker,
|
|
77
|
-
uiScheduler);
|
|
45
|
+
void WorkletsModule::prepareProxyCpp() {
|
|
46
|
+
initializer_->prepareProxy();
|
|
78
47
|
}
|
|
79
48
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
jsi::Runtime &rnRuntime) {
|
|
83
|
-
return std::make_shared<RuntimeBindings>(RuntimeBindings{
|
|
84
|
-
.requestAnimationFrame = getRequestAnimationFrame(),
|
|
85
|
-
.nativeLoggingHook =
|
|
86
|
-
bundleModeEnabled ? extractNativeLoggingHookFromRNRuntime(rnRuntime) : RuntimeBindings::NativeLoggingHook{}
|
|
87
|
-
#ifdef WORKLETS_FETCH_PREVIEW_ENABLED
|
|
88
|
-
,
|
|
89
|
-
.abortRequest = getAbortRequest(),
|
|
90
|
-
.clearCookies = getClearCookies(),
|
|
91
|
-
.sendRequest = getSendRequest()
|
|
92
|
-
#endif // WORKLETS_FETCH_PREVIEW_ENABLED
|
|
93
|
-
});
|
|
49
|
+
void WorkletsModule::beginBundleModeAOTCpp() {
|
|
50
|
+
initializer_->beginBundleModeAOT();
|
|
94
51
|
}
|
|
95
52
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
static const auto jRequestAnimationFrame =
|
|
99
|
-
javaPart->getClass()->getMethod<void(AnimationFrameCallback::javaobject)>("requestAnimationFrame");
|
|
100
|
-
jRequestAnimationFrame(javaPart.get(), AnimationFrameCallback::newObjectCxxArgs(std::move(callback)).get());
|
|
101
|
-
};
|
|
53
|
+
void WorkletsModule::prepareBundleModeAOTCpp() {
|
|
54
|
+
initializer_->prepareBundleModeAOT([this] { return loadBundleModeConfig(); });
|
|
102
55
|
}
|
|
103
56
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
static const auto jAbortRequest = javaPart->getClass()->getMethod<void(int, double)>("abortRequest");
|
|
108
|
-
auto workletRuntime = WorkletRuntime::getWeakRuntimeFromJSIRuntime(rt).lock();
|
|
109
|
-
jAbortRequest(javaPart.get(), static_cast<int>(workletRuntime->getRuntimeId()), requestId);
|
|
110
|
-
};
|
|
57
|
+
void WorkletsModule::installTurboModuleCpp(jboolean bundleModeEnabled) {
|
|
58
|
+
workletsModuleProxy_ = initializer_->finalize(
|
|
59
|
+
*rnRuntime_, static_cast<bool>(bundleModeEnabled), [this] { return loadBundleModeConfig(); });
|
|
111
60
|
}
|
|
112
61
|
|
|
113
|
-
RuntimeBindings
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
runtime->schedule([jsiFunction, args = std::move(args)](jsi::Runtime &rt) {
|
|
121
|
-
std::vector<jsi::Value> jsArgs;
|
|
122
|
-
for (auto &arg : args) {
|
|
123
|
-
jsArgs.push_back(jsi::valueFromDynamic(rt, arg));
|
|
124
|
-
}
|
|
125
|
-
const jsi::Value *rawData = jsArgs.data();
|
|
126
|
-
size_t size = jsArgs.size();
|
|
127
|
-
jsiFunction->call(rt, rawData, size);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
jClearCookies(javaPart.get(), JCxxCallbackImpl::newObjectCxxArgs(std::move(callback)).get());
|
|
132
|
-
};
|
|
62
|
+
std::shared_ptr<RuntimeBindings> WorkletsModule::getRuntimeBindings(
|
|
63
|
+
const jni::global_ref<jhybridobject> &javaPart,
|
|
64
|
+
jni::global_ref<JNetworking::javaobject> networking) {
|
|
65
|
+
return std::make_shared<RuntimeBindings>(RuntimeBindings{
|
|
66
|
+
.requestAnimationFrame = getRequestAnimationFrame(javaPart),
|
|
67
|
+
.nativeLoggingHook = makeNativeLoggingHook(),
|
|
68
|
+
.networkingBackend = std::make_shared<AndroidNetworkingBackend>(std::move(networking))});
|
|
133
69
|
}
|
|
134
70
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
static const auto
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
std::string /* method */,
|
|
151
|
-
std::string /* url */,
|
|
152
|
-
double /* requestId */,
|
|
153
|
-
ReadableNativeArray::javaobject /* headers */,
|
|
154
|
-
ReadableNativeMap::javaobject /* data */,
|
|
155
|
-
std::string /* responseType */,
|
|
156
|
-
bool /* incrementalUpdates */,
|
|
157
|
-
double /* timeout */,
|
|
158
|
-
bool /* withCredentials */
|
|
159
|
-
)>("sendRequest");
|
|
160
|
-
auto workletRuntime = WorkletRuntime::getWeakRuntimeFromJSIRuntime(rt).lock();
|
|
161
|
-
|
|
162
|
-
jSendRequest(
|
|
163
|
-
javaPart.get(),
|
|
164
|
-
JWorkletRuntimeWrapper::makeJWorkletRuntimeWrapper(workletRuntime).get(),
|
|
165
|
-
method.utf8(rt),
|
|
166
|
-
url.utf8(rt),
|
|
167
|
-
requestId,
|
|
168
|
-
ReadableNativeArray::newObjectCxxArgs(jsi::dynamicFromValue(rt, jsi::Value(std::move(headers)))).get(),
|
|
169
|
-
ReadableNativeMap::newObjectCxxArgs(jsi::dynamicFromValue(rt, jsi::Value(std::move(data)))).get(),
|
|
170
|
-
responseType.utf8(rt),
|
|
171
|
-
incrementalUpdates,
|
|
172
|
-
timeout,
|
|
173
|
-
withCredentials);
|
|
71
|
+
BundleModeConfig WorkletsModule::loadBundleModeConfig() {
|
|
72
|
+
static const auto jCreateScriptBufferWrapper =
|
|
73
|
+
getJniMethod<JScriptBufferWrapper::javaobject()>("createScriptBufferWrapper");
|
|
74
|
+
const auto jScriptBufferWrapper = jCreateScriptBufferWrapper(javaPart_.get());
|
|
75
|
+
const auto scriptBufferWrapper = jScriptBufferWrapper->cthis();
|
|
76
|
+
return BundleModeConfig{
|
|
77
|
+
.enabled = true, .script = scriptBufferWrapper->getScript(), .sourceURL = scriptBufferWrapper->getSourceUrl()};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
RuntimeBindings::RequestAnimationFrame WorkletsModule::getRequestAnimationFrame(
|
|
81
|
+
const jni::global_ref<jhybridobject> &javaPart) {
|
|
82
|
+
return [javaPart](std::function<void(const double)> &&callback) -> void {
|
|
83
|
+
static const auto jRequestAnimationFrame =
|
|
84
|
+
javaPart->getClass()->getMethod<void(AnimationFrameCallback::javaobject)>("requestAnimationFrame");
|
|
85
|
+
jRequestAnimationFrame(javaPart.get(), AnimationFrameCallback::newObjectCxxArgs(std::move(callback)).get());
|
|
174
86
|
};
|
|
175
87
|
}
|
|
176
|
-
#endif // WORKLETS_FETCH_PREVIEW_ENABLED
|
|
177
88
|
|
|
178
89
|
std::function<bool()> WorkletsModule::getIsOnJSQueueThread() {
|
|
179
90
|
return [javaPart = javaPart_]() -> bool {
|
|
@@ -184,6 +95,8 @@ std::function<bool()> WorkletsModule::getIsOnJSQueueThread() {
|
|
|
184
95
|
|
|
185
96
|
void WorkletsModule::invalidateCpp() {
|
|
186
97
|
rnRuntimeStatus_->setDead();
|
|
98
|
+
initializer_->invalidate();
|
|
99
|
+
initializer_.reset();
|
|
187
100
|
javaPart_.reset();
|
|
188
101
|
workletsModuleProxy_.reset();
|
|
189
102
|
}
|
|
@@ -195,6 +108,10 @@ void WorkletsModule::startCpp() {
|
|
|
195
108
|
void WorkletsModule::registerNatives() {
|
|
196
109
|
registerHybrid({
|
|
197
110
|
makeNativeMethod("initHybrid", WorkletsModule::initHybrid),
|
|
111
|
+
makeNativeMethod("prepareProxyCpp", WorkletsModule::prepareProxyCpp),
|
|
112
|
+
makeNativeMethod("beginBundleModeAOTCpp", WorkletsModule::beginBundleModeAOTCpp),
|
|
113
|
+
makeNativeMethod("prepareBundleModeAOTCpp", WorkletsModule::prepareBundleModeAOTCpp),
|
|
114
|
+
makeNativeMethod("installTurboModuleCpp", WorkletsModule::installTurboModuleCpp),
|
|
198
115
|
makeNativeMethod("invalidateCpp", WorkletsModule::invalidateCpp),
|
|
199
116
|
makeNativeMethod("startCpp", WorkletsModule::startCpp),
|
|
200
117
|
});
|
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
#include <fbjni/fbjni.h>
|
|
5
5
|
#include <jsi/jsi.h>
|
|
6
6
|
#include <worklets/NativeModules/WorkletsModuleProxy.h>
|
|
7
|
+
#include <worklets/NativeModules/WorkletsModuleProxyInitializer.h>
|
|
7
8
|
#include <worklets/Tools/RNRuntimeStatus.h>
|
|
8
9
|
#include <worklets/Tools/ScriptBuffer.h>
|
|
9
10
|
#include <worklets/WorkletRuntime/BundleModeConfig.h>
|
|
10
11
|
#include <worklets/WorkletRuntime/RuntimeBindings.h>
|
|
11
12
|
#include <worklets/android/AndroidUIScheduler.h>
|
|
12
13
|
#include <worklets/android/JScriptBufferWrapper.h>
|
|
14
|
+
#include <worklets/android/networking/AndroidNetworkingBackend.h>
|
|
13
15
|
|
|
14
16
|
#include <memory>
|
|
15
17
|
#include <string>
|
|
@@ -25,11 +27,10 @@ class WorkletsModule : public jni::HybridClass<WorkletsModule> {
|
|
|
25
27
|
|
|
26
28
|
static jni::local_ref<jhybriddata> initHybrid(
|
|
27
29
|
jni::alias_ref<jhybridobject> jThis,
|
|
28
|
-
jboolean bundleModeEnabled,
|
|
29
30
|
jlong jsContext,
|
|
30
31
|
jni::alias_ref<facebook::react::CallInvokerHolder::javaobject> jsCallInvokerHolder,
|
|
31
32
|
jni::alias_ref<worklets::AndroidUIScheduler::javaobject> androidUIScheduler,
|
|
32
|
-
jni::alias_ref<
|
|
33
|
+
jni::alias_ref<JNetworking::javaobject> networking);
|
|
33
34
|
|
|
34
35
|
static void registerNatives();
|
|
35
36
|
|
|
@@ -40,10 +41,18 @@ class WorkletsModule : public jni::HybridClass<WorkletsModule> {
|
|
|
40
41
|
private:
|
|
41
42
|
explicit WorkletsModule(
|
|
42
43
|
jni::alias_ref<jhybridobject> jThis,
|
|
43
|
-
const BundleModeConfig &bundleModeConfig,
|
|
44
44
|
jsi::Runtime *rnRuntime,
|
|
45
45
|
const std::shared_ptr<facebook::react::CallInvoker> &jsCallInvoker,
|
|
46
|
-
const std::shared_ptr<UIScheduler> &uiScheduler
|
|
46
|
+
const std::shared_ptr<UIScheduler> &uiScheduler,
|
|
47
|
+
jni::global_ref<JNetworking::javaobject> networking);
|
|
48
|
+
|
|
49
|
+
void prepareProxyCpp();
|
|
50
|
+
|
|
51
|
+
void beginBundleModeAOTCpp();
|
|
52
|
+
|
|
53
|
+
void prepareBundleModeAOTCpp();
|
|
54
|
+
|
|
55
|
+
void installTurboModuleCpp(jboolean bundleModeEnabled);
|
|
47
56
|
|
|
48
57
|
void startCpp();
|
|
49
58
|
|
|
@@ -54,14 +63,14 @@ class WorkletsModule : public jni::HybridClass<WorkletsModule> {
|
|
|
54
63
|
return javaPart_->getClass()->getMethod<Signature>(methodName.c_str());
|
|
55
64
|
}
|
|
56
65
|
|
|
57
|
-
std::shared_ptr<RuntimeBindings> getRuntimeBindings(
|
|
66
|
+
static std::shared_ptr<RuntimeBindings> getRuntimeBindings(
|
|
67
|
+
const jni::global_ref<jhybridobject> &javaPart,
|
|
68
|
+
jni::global_ref<JNetworking::javaobject> networking);
|
|
69
|
+
|
|
70
|
+
BundleModeConfig loadBundleModeConfig();
|
|
58
71
|
|
|
59
|
-
RuntimeBindings::RequestAnimationFrame getRequestAnimationFrame(
|
|
60
|
-
|
|
61
|
-
RuntimeBindings::AbortRequest getAbortRequest();
|
|
62
|
-
RuntimeBindings::ClearCookies getClearCookies();
|
|
63
|
-
RuntimeBindings::SendRequest getSendRequest();
|
|
64
|
-
#endif // WORKLETS_FETCH_PREVIEW_ENABLED
|
|
72
|
+
static RuntimeBindings::RequestAnimationFrame getRequestAnimationFrame(
|
|
73
|
+
const jni::global_ref<jhybridobject> &javaPart);
|
|
65
74
|
|
|
66
75
|
std::function<bool()> getIsOnJSQueueThread();
|
|
67
76
|
|
|
@@ -69,6 +78,7 @@ class WorkletsModule : public jni::HybridClass<WorkletsModule> {
|
|
|
69
78
|
jni::global_ref<WorkletsModule::javaobject> javaPart_;
|
|
70
79
|
jsi::Runtime *rnRuntime_;
|
|
71
80
|
std::shared_ptr<RNRuntimeStatus> rnRuntimeStatus_;
|
|
81
|
+
std::shared_ptr<WorkletsModuleProxyInitializer> initializer_;
|
|
72
82
|
std::shared_ptr<WorkletsModuleProxy> workletsModuleProxy_;
|
|
73
83
|
};
|
|
74
84
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
#include <worklets/android/AndroidUIScheduler.h>
|
|
4
4
|
#include <worklets/android/AnimationFrameCallback.h>
|
|
5
5
|
#include <worklets/android/JScriptBufferWrapper.h>
|
|
6
|
-
#include <worklets/android/JWorkletRuntimeWrapper.h>
|
|
7
6
|
#include <worklets/android/WorkletsModule.h>
|
|
7
|
+
#include <worklets/android/networking/JNetworkRequestListener.h>
|
|
8
8
|
|
|
9
9
|
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
|
|
10
10
|
return facebook::jni::initialize(vm, [] {
|
|
@@ -12,8 +12,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
|
|
|
12
12
|
worklets::AndroidUIScheduler::registerNatives();
|
|
13
13
|
worklets::AnimationFrameCallback::registerNatives();
|
|
14
14
|
worklets::JScriptBufferWrapper::registerNatives();
|
|
15
|
-
|
|
16
|
-
worklets::JWorkletRuntimeWrapper::registerNatives();
|
|
17
|
-
#endif // WORKLETS_FETCH_PREVIEW_ENABLED
|
|
15
|
+
worklets::JNetworkRequestListener::registerNatives();
|
|
18
16
|
});
|
|
19
17
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#include <worklets/android/networking/AndroidNetworkingBackend.h>
|
|
2
|
+
#include <worklets/android/networking/JNetworkRequestListener.h>
|
|
3
|
+
|
|
4
|
+
#include <optional>
|
|
5
|
+
#include <string>
|
|
6
|
+
#include <utility>
|
|
7
|
+
|
|
8
|
+
namespace worklets {
|
|
9
|
+
|
|
10
|
+
AndroidNetworkingBackend::AndroidNetworkingBackend(jni::global_ref<JNetworking::javaobject> networking)
|
|
11
|
+
: networking_(std::move(networking)) {}
|
|
12
|
+
|
|
13
|
+
void AndroidNetworkingBackend::sendRequest(
|
|
14
|
+
const uint64_t requestId,
|
|
15
|
+
RequestConfig &&config,
|
|
16
|
+
const std::shared_ptr<NetworkRequestListener> &listener) {
|
|
17
|
+
jni::ThreadScope::WithClassLoader([&] {
|
|
18
|
+
static const auto jSendRequest = networking_->getClass()
|
|
19
|
+
->getMethod<void(
|
|
20
|
+
jdouble,
|
|
21
|
+
std::string,
|
|
22
|
+
std::string,
|
|
23
|
+
jni::JArrayClass<jni::JString>::javaobject,
|
|
24
|
+
jni::JArrayClass<jni::JString>::javaobject,
|
|
25
|
+
jni::JArrayByte::javaobject,
|
|
26
|
+
jdouble,
|
|
27
|
+
jboolean,
|
|
28
|
+
JNetworkRequestListener::javaobject)>("sendRequest");
|
|
29
|
+
|
|
30
|
+
const auto headersSize = config.headers.size();
|
|
31
|
+
auto headerNames = jni::JArrayClass<jni::JString>::newArray(headersSize);
|
|
32
|
+
auto headerValues = jni::JArrayClass<jni::JString>::newArray(headersSize);
|
|
33
|
+
for (size_t i = 0; i < headersSize; i++) {
|
|
34
|
+
headerNames->setElement(i, *jni::make_jstring(config.headers[i].first));
|
|
35
|
+
headerValues->setElement(i, *jni::make_jstring(config.headers[i].second));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
jni::local_ref<jni::JArrayByte> body = nullptr;
|
|
39
|
+
if (config.body.has_value()) {
|
|
40
|
+
body = jni::JArrayByte::newArray(config.body->size());
|
|
41
|
+
body->setRegion(0, config.body->size(), reinterpret_cast<const jbyte *>(config.body->data()));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
jSendRequest(
|
|
45
|
+
networking_.get(),
|
|
46
|
+
static_cast<jdouble>(requestId),
|
|
47
|
+
config.method,
|
|
48
|
+
config.url,
|
|
49
|
+
headerNames.get(),
|
|
50
|
+
headerValues.get(),
|
|
51
|
+
body.get(),
|
|
52
|
+
config.timeoutMs,
|
|
53
|
+
config.withCredentials,
|
|
54
|
+
JNetworkRequestListener::newObjectCxxArgs(listener).get());
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
std::optional<std::string>
|
|
59
|
+
AndroidNetworkingBackend::decodeText(const uint8_t *data, const size_t size, const std::string &label) {
|
|
60
|
+
std::optional<std::string> result;
|
|
61
|
+
jni::ThreadScope::WithClassLoader([&] {
|
|
62
|
+
static const auto jDecodeText =
|
|
63
|
+
networking_->getClass()->getMethod<jni::JString::javaobject(jni::JArrayByte::javaobject, std::string)>(
|
|
64
|
+
"decodeText");
|
|
65
|
+
auto bytes = jni::JArrayByte::newArray(size);
|
|
66
|
+
bytes->setRegion(0, size, reinterpret_cast<const jbyte *>(data));
|
|
67
|
+
const auto decoded = jDecodeText(networking_.get(), bytes.get(), label);
|
|
68
|
+
if (decoded) {
|
|
69
|
+
result = decoded->toStdString();
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
void AndroidNetworkingBackend::abortRequest(const uint64_t requestId) {
|
|
76
|
+
jni::ThreadScope::WithClassLoader([&] {
|
|
77
|
+
static const auto jAbortRequest = networking_->getClass()->getMethod<void(jdouble)>("abortRequest");
|
|
78
|
+
jAbortRequest(networking_.get(), static_cast<jdouble>(requestId));
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
} // namespace worklets
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <fbjni/fbjni.h>
|
|
4
|
+
#include <worklets/Networking/NetworkingBackend.h>
|
|
5
|
+
|
|
6
|
+
#include <memory>
|
|
7
|
+
#include <optional>
|
|
8
|
+
#include <string>
|
|
9
|
+
|
|
10
|
+
namespace worklets {
|
|
11
|
+
|
|
12
|
+
namespace jni = facebook::jni;
|
|
13
|
+
|
|
14
|
+
class JNetworking : public jni::JavaClass<JNetworking> {
|
|
15
|
+
public:
|
|
16
|
+
static auto constexpr kJavaDescriptor = "Lcom/swmansion/worklets/networking/Networking;";
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
class AndroidNetworkingBackend final : public NetworkingBackend {
|
|
20
|
+
public:
|
|
21
|
+
explicit AndroidNetworkingBackend(jni::global_ref<JNetworking::javaobject> networking);
|
|
22
|
+
|
|
23
|
+
void sendRequest(uint64_t requestId, RequestConfig &&config, const std::shared_ptr<NetworkRequestListener> &listener)
|
|
24
|
+
override;
|
|
25
|
+
void abortRequest(uint64_t requestId) override;
|
|
26
|
+
std::optional<std::string> decodeText(const uint8_t *data, size_t size, const std::string &label) override;
|
|
27
|
+
|
|
28
|
+
private:
|
|
29
|
+
const jni::global_ref<JNetworking::javaobject> networking_;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
} // namespace worklets
|