@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.
Files changed (311) hide show
  1. package/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.cpp +1 -2
  2. package/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.h +1 -1
  3. package/Common/cpp/worklets/Compat/StableApi.cpp +24 -8
  4. package/Common/cpp/worklets/Compat/StableApi.h +1 -1
  5. package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.cpp +113 -50
  6. package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.h +10 -1
  7. package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +95 -37
  8. package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +57 -7
  9. package/Common/cpp/worklets/NativeModules/WorkletsModuleProxyInitializer.cpp +94 -0
  10. package/Common/cpp/worklets/NativeModules/WorkletsModuleProxyInitializer.h +58 -0
  11. package/Common/cpp/worklets/Networking/Networking.cpp +283 -0
  12. package/Common/cpp/worklets/Networking/Networking.h +51 -0
  13. package/Common/cpp/worklets/Networking/NetworkingBackend.h +47 -0
  14. package/Common/cpp/worklets/Networking/NetworkingInstaller.cpp +127 -0
  15. package/Common/cpp/worklets/Networking/NetworkingInstaller.h +19 -0
  16. package/Common/cpp/worklets/Networking/NetworkingTypes.h +33 -0
  17. package/Common/cpp/worklets/Networking/TextDecoding.cpp +189 -0
  18. package/Common/cpp/worklets/Networking/TextDecoding.h +29 -0
  19. package/Common/cpp/worklets/RunLoop/AsyncQueue.h +28 -0
  20. package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp +9 -0
  21. package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.h +6 -0
  22. package/Common/cpp/worklets/RunLoop/EventLoop.cpp +19 -4
  23. package/Common/cpp/worklets/RunLoop/EventLoop.h +3 -0
  24. package/Common/cpp/worklets/SharedItems/MemoryManager.cpp +1 -1
  25. package/Common/cpp/worklets/SharedItems/MemoryManager.h +2 -1
  26. package/Common/cpp/worklets/SharedItems/Serializable/CustomSerializable.cpp +37 -0
  27. package/Common/cpp/worklets/SharedItems/Serializable/CustomSerializable.h +33 -0
  28. package/Common/cpp/worklets/SharedItems/Serializable/RetainingSerializable.h +112 -0
  29. package/Common/cpp/worklets/SharedItems/Serializable/Serializable.cpp +129 -0
  30. package/Common/cpp/worklets/SharedItems/Serializable/Serializable.h +121 -0
  31. package/Common/cpp/worklets/SharedItems/Serializable/SerializableArray.cpp +38 -0
  32. package/Common/cpp/worklets/SharedItems/Serializable/SerializableArray.h +39 -0
  33. package/Common/cpp/worklets/SharedItems/Serializable/SerializableArrayBuffer.cpp +35 -0
  34. package/Common/cpp/worklets/SharedItems/Serializable/SerializableArrayBuffer.h +43 -0
  35. package/Common/cpp/worklets/SharedItems/Serializable/SerializableBigInt.cpp +23 -0
  36. package/Common/cpp/worklets/SharedItems/Serializable/SerializableBigInt.h +35 -0
  37. package/Common/cpp/worklets/SharedItems/Serializable/SerializableError.cpp +38 -0
  38. package/Common/cpp/worklets/SharedItems/Serializable/SerializableError.h +30 -0
  39. package/Common/cpp/worklets/SharedItems/Serializable/SerializableHostFunction.cpp +24 -0
  40. package/Common/cpp/worklets/SharedItems/Serializable/SerializableHostFunction.h +32 -0
  41. package/Common/cpp/worklets/SharedItems/Serializable/SerializableHostObject.cpp +19 -0
  42. package/Common/cpp/worklets/SharedItems/Serializable/SerializableHostObject.h +25 -0
  43. package/Common/cpp/worklets/SharedItems/Serializable/SerializableImport.cpp +29 -0
  44. package/Common/cpp/worklets/SharedItems/Serializable/SerializableImport.h +25 -0
  45. package/Common/cpp/worklets/SharedItems/Serializable/SerializableMap.cpp +44 -0
  46. package/Common/cpp/worklets/SharedItems/Serializable/SerializableMap.h +25 -0
  47. package/Common/cpp/worklets/SharedItems/Serializable/SerializableObject.cpp +80 -0
  48. package/Common/cpp/worklets/SharedItems/Serializable/SerializableObject.h +35 -0
  49. package/Common/cpp/worklets/SharedItems/Serializable/SerializableRegExp.cpp +22 -0
  50. package/Common/cpp/worklets/SharedItems/Serializable/SerializableRegExp.h +25 -0
  51. package/Common/cpp/worklets/SharedItems/{SerializableRemoteFunction.cpp → Serializable/SerializableRemoteFunction.cpp} +30 -2
  52. package/Common/cpp/worklets/SharedItems/{SerializableRemoteFunction.h → Serializable/SerializableRemoteFunction.h} +24 -10
  53. package/Common/cpp/worklets/SharedItems/Serializable/SerializableScalar.cpp +46 -0
  54. package/Common/cpp/worklets/SharedItems/Serializable/SerializableScalar.h +41 -0
  55. package/Common/cpp/worklets/SharedItems/Serializable/SerializableSet.cpp +36 -0
  56. package/Common/cpp/worklets/SharedItems/Serializable/SerializableSet.h +23 -0
  57. package/Common/cpp/worklets/SharedItems/Serializable/SerializableString.cpp +19 -0
  58. package/Common/cpp/worklets/SharedItems/Serializable/SerializableString.h +22 -0
  59. package/Common/cpp/worklets/SharedItems/Serializable/SerializableTurboModuleLike.cpp +26 -0
  60. package/Common/cpp/worklets/SharedItems/Serializable/SerializableTurboModuleLike.h +33 -0
  61. package/Common/cpp/worklets/SharedItems/Serializable/SerializableWorklet.cpp +31 -0
  62. package/Common/cpp/worklets/SharedItems/Serializable/SerializableWorklet.h +23 -0
  63. package/Common/cpp/worklets/SharedItems/Serializable.h +21 -409
  64. package/Common/cpp/worklets/SharedItems/Shareable.cpp +1 -1
  65. package/Common/cpp/worklets/SharedItems/Shareable.h +1 -1
  66. package/Common/cpp/worklets/SharedItems/Synchronizable.h +43 -20
  67. package/Common/cpp/worklets/SharedItems/SynchronizableAccess.cpp +24 -26
  68. package/Common/cpp/worklets/SharedItems/SynchronizableAccess.h +5 -7
  69. package/Common/cpp/worklets/SharedItems/SynchronizableDynamic.cpp +36 -0
  70. package/Common/cpp/worklets/SharedItems/SynchronizableDynamic.h +27 -0
  71. package/Common/cpp/worklets/SharedItems/SynchronizableFixed.cpp +76 -0
  72. package/Common/cpp/worklets/SharedItems/SynchronizableFixed.h +48 -0
  73. package/Common/cpp/worklets/Tools/ScriptBuffer.h +0 -5
  74. package/Common/cpp/worklets/Tools/WorkletsJSIUtils.h +16 -30
  75. package/Common/cpp/worklets/WorkletRuntime/RuntimeBindings.h +27 -30
  76. package/Common/cpp/worklets/WorkletRuntime/RuntimeManager.cpp +4 -3
  77. package/Common/cpp/worklets/WorkletRuntime/RuntimeManager.h +2 -1
  78. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +79 -29
  79. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +34 -19
  80. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +13 -86
  81. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +1 -7
  82. package/Package.swift +147 -0
  83. package/README.md +7 -7
  84. package/RNWorklets.podspec +1 -2
  85. package/android/CMakeLists.txt +7 -26
  86. package/android/build.gradle.kts +5 -31
  87. package/android/src/main/cpp/worklets/android/WorkletsModule.cpp +46 -129
  88. package/android/src/main/cpp/worklets/android/WorkletsModule.h +21 -11
  89. package/android/src/main/cpp/worklets/android/WorkletsOnLoad.cpp +2 -4
  90. package/android/src/main/cpp/worklets/android/networking/AndroidNetworkingBackend.cpp +82 -0
  91. package/android/src/main/cpp/worklets/android/networking/AndroidNetworkingBackend.h +32 -0
  92. package/android/src/main/cpp/worklets/android/networking/JNetworkRequestListener.cpp +73 -0
  93. package/android/src/main/cpp/worklets/android/networking/JNetworkRequestListener.h +38 -0
  94. package/android/src/{no-networking → main/java}/com/swmansion/worklets/WorkletsModule.kt +40 -28
  95. package/android/src/main/java/com/swmansion/worklets/networking/NetworkRequestListener.kt +37 -0
  96. package/android/src/main/java/com/swmansion/worklets/networking/Networking.kt +244 -0
  97. package/android/src/main/java/com/swmansion/worklets/runloop/AnimationFrameQueue.kt +40 -5
  98. package/apple/worklets/apple/AnimationFrameQueue.mm +9 -1
  99. package/apple/worklets/apple/AssertJavaScriptQueue.h +3 -2
  100. package/apple/worklets/apple/AssertTurboModuleManagerQueue.h +4 -0
  101. package/apple/worklets/apple/IOSUIScheduler.mm +3 -0
  102. package/apple/worklets/apple/Networking/AppleNetworkingBackend.h +29 -0
  103. package/apple/worklets/apple/Networking/AppleNetworkingBackend.mm +93 -0
  104. package/apple/worklets/apple/Networking/WorkletsURLSessionDelegate.h +37 -0
  105. package/apple/worklets/apple/Networking/WorkletsURLSessionDelegate.mm +447 -0
  106. package/apple/worklets/apple/WorkletsModule.h +3 -2
  107. package/apple/worklets/apple/WorkletsModule.mm +82 -74
  108. package/bundleMode/index.js +10 -47
  109. package/bundleMode/polyfills/prepareBundleMode.js +16 -0
  110. package/changes.json +6 -6
  111. package/compatibility.json +4 -1
  112. package/lib/module/WorkletsModule/NativeWorklets.native.js +12 -9
  113. package/lib/module/WorkletsModule/NativeWorklets.native.js.map +1 -1
  114. package/lib/module/debug/jsVersion.js +1 -1
  115. package/lib/module/featureFlags/staticFlags.json +0 -1
  116. package/lib/module/featureFlags/types.js +0 -1
  117. package/lib/module/featureFlags/types.js.map +1 -1
  118. package/lib/module/index.js +1 -1
  119. package/lib/module/index.js.map +1 -1
  120. package/lib/module/initializers/initializers.native.js +5 -12
  121. package/lib/module/initializers/initializers.native.js.map +1 -1
  122. package/lib/module/memory/bundleUnpacker.native.js +2 -10
  123. package/lib/module/memory/bundleUnpacker.native.js.map +1 -1
  124. package/lib/module/memory/serializable.native.js +3 -31
  125. package/lib/module/memory/serializable.native.js.map +1 -1
  126. package/lib/module/memory/synchronizable.js +1 -1
  127. package/lib/module/memory/synchronizable.js.map +1 -1
  128. package/lib/module/memory/synchronizable.native.js +7 -3
  129. package/lib/module/memory/synchronizable.native.js.map +1 -1
  130. package/lib/module/memory/synchronizableUnpacker.native.js +22 -9
  131. package/lib/module/memory/synchronizableUnpacker.native.js.map +1 -1
  132. package/lib/module/memory/valueUnpacker.native.js +0 -8
  133. package/lib/module/memory/valueUnpacker.native.js.map +1 -1
  134. package/lib/module/mock.js +22 -1
  135. package/lib/module/mock.js.map +1 -1
  136. package/lib/module/networking/AbortController.js +43 -0
  137. package/lib/module/networking/AbortController.js.map +1 -0
  138. package/lib/module/networking/Blob.js +60 -0
  139. package/lib/module/networking/Blob.js.map +1 -0
  140. package/lib/module/networking/DOMException.js +35 -0
  141. package/lib/module/networking/DOMException.js.map +1 -0
  142. package/lib/module/networking/FileReader.js +83 -0
  143. package/lib/module/networking/FileReader.js.map +1 -0
  144. package/lib/module/networking/FormData.js +105 -0
  145. package/lib/module/networking/FormData.js.map +1 -0
  146. package/lib/module/networking/XMLHttpRequest.js +450 -0
  147. package/lib/module/networking/XMLHttpRequest.js.map +1 -0
  148. package/lib/module/networking/bytes.js +6 -0
  149. package/lib/module/networking/bytes.js.map +1 -0
  150. package/lib/module/networking/events.js +44 -0
  151. package/lib/module/networking/events.js.map +1 -0
  152. package/lib/module/networking/http.js +100 -0
  153. package/lib/module/networking/http.js.map +1 -0
  154. package/lib/module/networking/install.js +37 -0
  155. package/lib/module/networking/install.js.map +1 -0
  156. package/lib/module/networking/utf8.js +99 -0
  157. package/lib/module/networking/utf8.js.map +1 -0
  158. package/lib/module/privateGlobals.d.js +0 -1
  159. package/lib/module/privateGlobals.d.js.map +1 -1
  160. package/lib/module/runLoop/common/queueMicrotaskPolyfill.js +9 -0
  161. package/lib/module/runLoop/common/queueMicrotaskPolyfill.js.map +1 -0
  162. package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js +7 -3
  163. package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js.map +1 -1
  164. package/lib/module/runLoop/workletRuntime/index.js +1 -1
  165. package/lib/module/runLoop/workletRuntime/index.js.map +1 -1
  166. package/lib/module/runLoop/workletRuntime/requestAnimationFramePolyfill.js +1 -1
  167. package/lib/module/runLoop/workletRuntime/requestAnimationFramePolyfill.js.map +1 -1
  168. package/lib/module/runLoop/workletRuntime/taskQueue.js +0 -13
  169. package/lib/module/runLoop/workletRuntime/taskQueue.js.map +1 -1
  170. package/lib/module/runtimes.native.js +8 -1
  171. package/lib/module/runtimes.native.js.map +1 -1
  172. package/lib/module/specs/NativeWorkletsModule.js.map +1 -1
  173. package/lib/module/threads.js +11 -0
  174. package/lib/module/threads.js.map +1 -1
  175. package/lib/module/threads.native.js +35 -42
  176. package/lib/module/threads.native.js.map +1 -1
  177. package/lib/typescript/WorkletsModule/NativeWorklets.native.d.ts.map +1 -1
  178. package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts +6 -5
  179. package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts.map +1 -1
  180. package/lib/typescript/debug/jsVersion.d.ts +1 -1
  181. package/lib/typescript/featureFlags/types.d.ts +0 -1
  182. package/lib/typescript/featureFlags/types.d.ts.map +1 -1
  183. package/lib/typescript/index.d.ts +2 -2
  184. package/lib/typescript/index.d.ts.map +1 -1
  185. package/lib/typescript/memory/bundleUnpacker.native.d.ts.map +1 -1
  186. package/lib/typescript/memory/serializable.native.d.ts.map +1 -1
  187. package/lib/typescript/memory/synchronizable.d.ts +6 -2
  188. package/lib/typescript/memory/synchronizable.d.ts.map +1 -1
  189. package/lib/typescript/memory/synchronizable.native.d.ts +6 -2
  190. package/lib/typescript/memory/synchronizable.native.d.ts.map +1 -1
  191. package/lib/typescript/memory/synchronizableUnpacker.native.d.ts +1 -1
  192. package/lib/typescript/memory/synchronizableUnpacker.native.d.ts.map +1 -1
  193. package/lib/typescript/memory/types.d.ts +6 -0
  194. package/lib/typescript/memory/types.d.ts.map +1 -1
  195. package/lib/typescript/memory/valueUnpacker.native.d.ts.map +1 -1
  196. package/lib/typescript/networking/AbortController.d.ts +16 -0
  197. package/lib/typescript/networking/AbortController.d.ts.map +1 -0
  198. package/lib/typescript/networking/Blob.d.ts +16 -0
  199. package/lib/typescript/networking/Blob.d.ts.map +1 -0
  200. package/lib/typescript/networking/DOMException.d.ts +5 -0
  201. package/lib/typescript/networking/DOMException.d.ts.map +1 -0
  202. package/lib/typescript/networking/FileReader.d.ts +19 -0
  203. package/lib/typescript/networking/FileReader.d.ts.map +1 -0
  204. package/lib/typescript/networking/FormData.d.ts +30 -0
  205. package/lib/typescript/networking/FormData.d.ts.map +1 -0
  206. package/lib/typescript/networking/XMLHttpRequest.d.ts +77 -0
  207. package/lib/typescript/networking/XMLHttpRequest.d.ts.map +1 -0
  208. package/lib/typescript/networking/bytes.d.ts +2 -0
  209. package/lib/typescript/networking/bytes.d.ts.map +1 -0
  210. package/lib/typescript/networking/events.d.ts +18 -0
  211. package/lib/typescript/networking/events.d.ts.map +1 -0
  212. package/lib/typescript/networking/http.d.ts +14 -0
  213. package/lib/typescript/networking/http.d.ts.map +1 -0
  214. package/lib/typescript/networking/install.d.ts +2 -0
  215. package/lib/typescript/networking/install.d.ts.map +1 -0
  216. package/lib/typescript/networking/utf8.d.ts +4 -0
  217. package/lib/typescript/networking/utf8.d.ts.map +1 -0
  218. package/lib/typescript/runLoop/{workletRuntime/queueMicrotask.d.ts → common/queueMicrotaskPolyfill.d.ts} +1 -1
  219. package/lib/typescript/runLoop/common/queueMicrotaskPolyfill.d.ts.map +1 -0
  220. package/lib/typescript/runLoop/uiRuntime/requestAnimationFrame.d.ts.map +1 -1
  221. package/lib/typescript/runLoop/workletRuntime/taskQueue.d.ts +0 -2
  222. package/lib/typescript/runLoop/workletRuntime/taskQueue.d.ts.map +1 -1
  223. package/lib/typescript/runtimes.native.d.ts.map +1 -1
  224. package/lib/typescript/specs/NativeWorkletsModule.d.ts +1 -0
  225. package/lib/typescript/specs/NativeWorkletsModule.d.ts.map +1 -1
  226. package/lib/typescript/threads.d.ts +8 -0
  227. package/lib/typescript/threads.d.ts.map +1 -1
  228. package/lib/typescript/threads.native.d.ts +8 -1
  229. package/lib/typescript/threads.native.d.ts.map +1 -1
  230. package/lib/typescript/types.d.ts +9 -5
  231. package/lib/typescript/types.d.ts.map +1 -1
  232. package/package.json +36 -22
  233. package/plugin/index.js +63 -93
  234. package/plugin-oxc/babel.d.ts +7 -0
  235. package/plugin-oxc/babel.js +200 -0
  236. package/plugin-oxc/index.d.ts +33 -0
  237. package/plugin-oxc/index.js +36 -0
  238. package/plugin-oxc/worklets-oxc-plugin.darwin-arm64.node +0 -0
  239. package/plugin-oxc/worklets-oxc-plugin.darwin-x64.node +0 -0
  240. package/plugin-oxc/worklets-oxc-plugin.linux-arm64.node +0 -0
  241. package/plugin-oxc/worklets-oxc-plugin.linux-x64.node +0 -0
  242. package/plugin-oxc/worklets-oxc-plugin.win32-arm64.node +0 -0
  243. package/plugin-oxc/worklets-oxc-plugin.win32-x64.node +0 -0
  244. package/react-native.config.js +5 -0
  245. package/scripts/worklets_utils.rb +0 -10
  246. package/src/WorkletsModule/NativeWorklets.native.ts +26 -9
  247. package/src/WorkletsModule/workletsModuleProxy.ts +15 -5
  248. package/src/debug/jsVersion.ts +1 -1
  249. package/src/featureFlags/staticFlags.json +0 -1
  250. package/src/featureFlags/types.ts +0 -1
  251. package/src/index.ts +3 -0
  252. package/src/initializers/initializers.native.ts +5 -13
  253. package/src/memory/bundleUnpacker.native.ts +6 -13
  254. package/src/memory/serializable.native.ts +6 -46
  255. package/src/memory/synchronizable.native.ts +38 -4
  256. package/src/memory/synchronizable.ts +22 -2
  257. package/src/memory/synchronizableUnpacker.native.ts +38 -13
  258. package/src/memory/types.ts +9 -0
  259. package/src/memory/valueUnpacker.native.ts +0 -8
  260. package/src/mock.ts +28 -1
  261. package/src/networking/AbortController.ts +57 -0
  262. package/src/networking/Blob.ts +74 -0
  263. package/src/networking/DOMException.ts +37 -0
  264. package/src/networking/FileReader.ts +99 -0
  265. package/src/networking/FormData.ts +135 -0
  266. package/src/networking/XMLHttpRequest.ts +557 -0
  267. package/src/networking/bytes.ts +8 -0
  268. package/src/networking/events.ts +61 -0
  269. package/src/networking/http.ts +173 -0
  270. package/src/networking/install.ts +38 -0
  271. package/src/networking/utf8.ts +122 -0
  272. package/src/privateGlobals.d.ts +20 -13
  273. package/src/runLoop/common/queueMicrotaskPolyfill.ts +12 -0
  274. package/src/runLoop/uiRuntime/requestAnimationFrame.ts +7 -4
  275. package/src/runLoop/workletRuntime/index.ts +1 -1
  276. package/src/runLoop/workletRuntime/requestAnimationFramePolyfill.ts +1 -1
  277. package/src/runLoop/workletRuntime/taskQueue.ts +0 -15
  278. package/src/runtimes.native.ts +10 -1
  279. package/src/specs/NativeWorkletsModule.ts +1 -0
  280. package/src/threads.native.ts +49 -54
  281. package/src/threads.ts +11 -0
  282. package/src/types.ts +9 -5
  283. package/Common/cpp/worklets/SharedItems/Serializable.cpp +0 -373
  284. package/Common/cpp/worklets/SharedItems/SerializableFactory.cpp +0 -172
  285. package/Common/cpp/worklets/SharedItems/SerializableFactory.h +0 -85
  286. package/Common/cpp/worklets/SharedItems/Synchronizable.cpp +0 -59
  287. package/android/src/main/cpp/worklets/android/JWorkletRuntimeWrapper.cpp +0 -51
  288. package/android/src/main/cpp/worklets/android/JWorkletRuntimeWrapper.h +0 -43
  289. package/android/src/networking/com/swmansion/worklets/WorkletRuntimeWrapper.kt +0 -27
  290. package/android/src/networking/com/swmansion/worklets/WorkletsHeaderUtil.kt +0 -30
  291. package/android/src/networking/com/swmansion/worklets/WorkletsModule.kt +0 -203
  292. package/android/src/networking/com/swmansion/worklets/WorkletsNetworkEventUtil.kt +0 -272
  293. package/android/src/networking/com/swmansion/worklets/WorkletsNetworking.kt +0 -1124
  294. package/android/src/networking/com/swmansion/worklets/WorkletsOkHttpCallUtil.kt +0 -40
  295. package/android/src/networking/com/swmansion/worklets/WorkletsProgressListener.kt +0 -13
  296. package/android/src/networking/com/swmansion/worklets/WorkletsProgressRequestBody.kt +0 -98
  297. package/android/src/networking/com/swmansion/worklets/WorkletsProgressResponseBody.kt +0 -60
  298. package/android/src/networking/com/swmansion/worklets/WorkletsProgressiveStringDecoder.kt +0 -87
  299. package/android/src/networking/com/swmansion/worklets/WorkletsRequestBodyUtil.kt +0 -181
  300. package/apple/worklets/apple/Networking/WorkletsNetworking.h +0 -25
  301. package/apple/worklets/apple/Networking/WorkletsNetworking.mm +0 -707
  302. package/bundleMode/shims/turboModuleRegistryShim.js +0 -47
  303. package/lib/module/bundleMode/network.native.js +0 -44
  304. package/lib/module/bundleMode/network.native.js.map +0 -1
  305. package/lib/module/runLoop/workletRuntime/queueMicrotask.js +0 -11
  306. package/lib/module/runLoop/workletRuntime/queueMicrotask.js.map +0 -1
  307. package/lib/typescript/bundleMode/network.native.d.ts +0 -7
  308. package/lib/typescript/bundleMode/network.native.d.ts.map +0 -1
  309. package/lib/typescript/runLoop/workletRuntime/queueMicrotask.d.ts.map +0 -1
  310. package/src/bundleMode/network.native.ts +0 -63
  311. package/src/runLoop/workletRuntime/queueMicrotask.ts +0 -13
@@ -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} #{fetch_preview_flag} #{hermes_v1_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" => [
@@ -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 for RN >= 84.
23
- # Only define manually for older versions to avoid macro redefinition error.
24
- if(ReactAndroid_VERSION_MINOR LESS 84)
25
- string(APPEND CMAKE_CXX_FLAGS " -DHERMES_V1_ENABLED=${HERMES_V1_ENABLED}")
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
- if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 80)
70
- include(
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
- if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 82)
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")
@@ -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` for React Native >= 0.84
80
- // that CMake file depends on definitions provided
81
- // in local `externalNativeBuild` configuration of the LIBRARY.
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 if (getReactNativeMinorVersion() >= 84) {
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("lintVital")) enabled = false }
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
- workletsModuleProxy_(std::make_shared<WorkletsModuleProxy>(
39
- *rnRuntime,
40
- jsCallInvoker,
26
+ initializer_(std::make_shared<WorkletsModuleProxyInitializer>(
27
+ std::make_shared<JSScheduler>(*rnRuntime, jsCallInvoker, getIsOnJSQueueThread()),
41
28
  uiScheduler,
42
- getIsOnJSQueueThread(),
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<JScriptBufferWrapper::javaobject>
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
- std::shared_ptr<const ScriptBuffer> script = nullptr;
61
- std::string sourceURL;
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
- std::shared_ptr<RuntimeBindings> WorkletsModule::getRuntimeBindings(
81
- const bool bundleModeEnabled,
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
- RuntimeBindings::RequestAnimationFrame WorkletsModule::getRequestAnimationFrame() {
97
- return [javaPart = javaPart_](std::function<void(const double)> &&callback) -> void {
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
- #ifdef WORKLETS_FETCH_PREVIEW_ENABLED
105
- RuntimeBindings::AbortRequest WorkletsModule::getAbortRequest() {
106
- return [javaPart = javaPart_](jsi::Runtime &rt, double requestId) -> void {
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::ClearCookies WorkletsModule::getClearCookies() {
114
- return [javaPart = javaPart_](jsi::Runtime &rt, jsi::Function &&responseSender) {
115
- static const auto jClearCookies = javaPart->getClass()->getMethod<void(JCallback::javaobject)>("clearCookies");
116
- auto jsiFunction = std::make_shared<jsi::Function>(std::move(responseSender));
117
- auto workletRuntime = WorkletRuntime::getWeakRuntimeFromJSIRuntime(rt);
118
- auto callback = [jsiFunction, workletRuntime](folly::dynamic args) {
119
- if (auto runtime = workletRuntime.lock()) {
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
- RuntimeBindings::SendRequest WorkletsModule::getSendRequest() {
136
- return [javaPart = javaPart_](
137
- jsi::Runtime &rt,
138
- jsi::String &method,
139
- jsi::String &url,
140
- double requestId,
141
- jsi::Array &headers,
142
- jsi::Object &data,
143
- jsi::String &responseType,
144
- bool incrementalUpdates,
145
- double timeout,
146
- bool withCredentials) {
147
- static const auto jSendRequest = javaPart->getClass()
148
- ->getMethod<void(
149
- JWorkletRuntimeWrapper::javaobject,
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<JScriptBufferWrapper::javaobject> jScriptBufferWrapper);
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(bool bundleModeEnabled, jsi::Runtime &rnRuntime);
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
- #ifdef WORKLETS_FETCH_PREVIEW_ENABLED
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
- #ifdef WORKLETS_FETCH_PREVIEW_ENABLED
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