@depup/react-native-worklets 0.11.3-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 (457) hide show
  1. package/.worklets/dummy.md +1 -0
  2. package/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.cpp +64 -0
  3. package/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.h +38 -0
  4. package/Common/cpp/worklets/Compat/Holders.h +25 -0
  5. package/Common/cpp/worklets/Compat/StableApi.cpp +145 -0
  6. package/Common/cpp/worklets/Compat/StableApi.h +128 -0
  7. package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.cpp +729 -0
  8. package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.h +126 -0
  9. package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +81 -0
  10. package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +76 -0
  11. package/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +95 -0
  12. package/Common/cpp/worklets/Registries/EventHandlerRegistry.h +44 -0
  13. package/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +10 -0
  14. package/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +43 -0
  15. package/Common/cpp/worklets/RunLoop/AsyncQueue.h +14 -0
  16. package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp +69 -0
  17. package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.h +48 -0
  18. package/Common/cpp/worklets/RunLoop/EventLoop.cpp +103 -0
  19. package/Common/cpp/worklets/RunLoop/EventLoop.h +52 -0
  20. package/Common/cpp/worklets/SharedItems/MemoryManager.cpp +60 -0
  21. package/Common/cpp/worklets/SharedItems/MemoryManager.h +29 -0
  22. package/Common/cpp/worklets/SharedItems/Serializable.cpp +373 -0
  23. package/Common/cpp/worklets/SharedItems/Serializable.h +413 -0
  24. package/Common/cpp/worklets/SharedItems/SerializableFactory.cpp +172 -0
  25. package/Common/cpp/worklets/SharedItems/SerializableFactory.h +85 -0
  26. package/Common/cpp/worklets/SharedItems/SerializableRemoteFunction.cpp +71 -0
  27. package/Common/cpp/worklets/SharedItems/SerializableRemoteFunction.h +75 -0
  28. package/Common/cpp/worklets/SharedItems/Shareable.cpp +84 -0
  29. package/Common/cpp/worklets/SharedItems/Shareable.h +43 -0
  30. package/Common/cpp/worklets/SharedItems/Synchronizable.cpp +59 -0
  31. package/Common/cpp/worklets/SharedItems/Synchronizable.h +57 -0
  32. package/Common/cpp/worklets/SharedItems/SynchronizableAccess.cpp +78 -0
  33. package/Common/cpp/worklets/SharedItems/SynchronizableAccess.h +45 -0
  34. package/Common/cpp/worklets/SharedItems/UnpackerLoader.h +78 -0
  35. package/Common/cpp/worklets/Tools/FeatureFlags.cpp +18 -0
  36. package/Common/cpp/worklets/Tools/FeatureFlags.h +44 -0
  37. package/Common/cpp/worklets/Tools/JSISerializer.cpp +312 -0
  38. package/Common/cpp/worklets/Tools/JSISerializer.h +42 -0
  39. package/Common/cpp/worklets/Tools/JSLogger.cpp +92 -0
  40. package/Common/cpp/worklets/Tools/JSLogger.h +48 -0
  41. package/Common/cpp/worklets/Tools/JSScheduler.cpp +21 -0
  42. package/Common/cpp/worklets/Tools/JSScheduler.h +35 -0
  43. package/Common/cpp/worklets/Tools/PlatformLogger.h +16 -0
  44. package/Common/cpp/worklets/Tools/RNRuntimeStatus.h +27 -0
  45. package/Common/cpp/worklets/Tools/ScriptBuffer.h +56 -0
  46. package/Common/cpp/worklets/Tools/SingleInstanceChecker.h +75 -0
  47. package/Common/cpp/worklets/Tools/ThreadSafeQueue.h +49 -0
  48. package/Common/cpp/worklets/Tools/UIScheduler.cpp +19 -0
  49. package/Common/cpp/worklets/Tools/UIScheduler.h +22 -0
  50. package/Common/cpp/worklets/Tools/VersionUtils.cpp +61 -0
  51. package/Common/cpp/worklets/Tools/VersionUtils.h +24 -0
  52. package/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +34 -0
  53. package/Common/cpp/worklets/Tools/WorkletEventHandler.h +44 -0
  54. package/Common/cpp/worklets/Tools/WorkletsJSIUtils.cpp +30 -0
  55. package/Common/cpp/worklets/Tools/WorkletsJSIUtils.h +222 -0
  56. package/Common/cpp/worklets/Tools/WorkletsSystraceSection.h +116 -0
  57. package/Common/cpp/worklets/Tools/WorkletsVersion.cpp +46 -0
  58. package/Common/cpp/worklets/Tools/WorkletsVersion.h +18 -0
  59. package/Common/cpp/worklets/WorkletRuntime/BundleModeConfig.h +17 -0
  60. package/Common/cpp/worklets/WorkletRuntime/HermesProfiling.cpp +45 -0
  61. package/Common/cpp/worklets/WorkletRuntime/HermesProfiling.h +12 -0
  62. package/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +68 -0
  63. package/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +24 -0
  64. package/Common/cpp/worklets/WorkletRuntime/RuntimeBindings.h +59 -0
  65. package/Common/cpp/worklets/WorkletRuntime/RuntimeData.h +38 -0
  66. package/Common/cpp/worklets/WorkletRuntime/RuntimeHolder.h +19 -0
  67. package/Common/cpp/worklets/WorkletRuntime/RuntimeManager.cpp +122 -0
  68. package/Common/cpp/worklets/WorkletRuntime/RuntimeManager.h +75 -0
  69. package/Common/cpp/worklets/WorkletRuntime/ScriptLoader.h +116 -0
  70. package/Common/cpp/worklets/WorkletRuntime/UIRuntimeDecorator.cpp +14 -0
  71. package/Common/cpp/worklets/WorkletRuntime/UIRuntimeDecorator.h +15 -0
  72. package/Common/cpp/worklets/WorkletRuntime/WorkletHermesRuntime.cpp +58 -0
  73. package/Common/cpp/worklets/WorkletRuntime/WorkletHermesRuntime.h +100 -0
  74. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +327 -0
  75. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +256 -0
  76. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +36 -0
  77. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +320 -0
  78. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +36 -0
  79. package/LICENSE +20 -0
  80. package/README.md +43 -0
  81. package/RNWorklets.podspec +94 -0
  82. package/android/CMakeLists.txt +108 -0
  83. package/android/build.gradle.kts +369 -0
  84. package/android/fix-prefab.gradle.kts +56 -0
  85. package/android/generate-stub-pch.gradle.kts +84 -0
  86. package/android/gradle.properties +25 -0
  87. package/android/proguard-rules.pro +3 -0
  88. package/android/settings.gradle.kts +21 -0
  89. package/android/src/main/AndroidManifest.xml +2 -0
  90. package/android/src/main/cpp/WorkletsPCH.h +26 -0
  91. package/android/src/main/cpp/worklets/android/AndroidUIScheduler.cpp +66 -0
  92. package/android/src/main/cpp/worklets/android/AndroidUIScheduler.h +38 -0
  93. package/android/src/main/cpp/worklets/android/AnimationFrameCallback.h +30 -0
  94. package/android/src/main/cpp/worklets/android/JScriptBufferWrapper.cpp +66 -0
  95. package/android/src/main/cpp/worklets/android/JScriptBufferWrapper.h +48 -0
  96. package/android/src/main/cpp/worklets/android/JWorkletRuntimeWrapper.cpp +51 -0
  97. package/android/src/main/cpp/worklets/android/JWorkletRuntimeWrapper.h +43 -0
  98. package/android/src/main/cpp/worklets/android/PlatformLogger.cpp +31 -0
  99. package/android/src/main/cpp/worklets/android/WorkletsModule.cpp +203 -0
  100. package/android/src/main/cpp/worklets/android/WorkletsModule.h +75 -0
  101. package/android/src/main/cpp/worklets/android/WorkletsOnLoad.cpp +19 -0
  102. package/android/src/main/java/com/swmansion/worklets/AndroidUIScheduler.kt +56 -0
  103. package/android/src/main/java/com/swmansion/worklets/ScriptBufferWrapper.kt +103 -0
  104. package/android/src/main/java/com/swmansion/worklets/WorkletsPackage.kt +42 -0
  105. package/android/src/main/java/com/swmansion/worklets/runloop/AnimationFrameCallback.kt +14 -0
  106. package/android/src/main/java/com/swmansion/worklets/runloop/AnimationFrameQueue.kt +112 -0
  107. package/android/src/networking/com/swmansion/worklets/WorkletRuntimeWrapper.kt +27 -0
  108. package/android/src/networking/com/swmansion/worklets/WorkletsHeaderUtil.kt +30 -0
  109. package/android/src/networking/com/swmansion/worklets/WorkletsModule.kt +187 -0
  110. package/android/src/networking/com/swmansion/worklets/WorkletsNetworkEventUtil.kt +272 -0
  111. package/android/src/networking/com/swmansion/worklets/WorkletsNetworking.kt +1124 -0
  112. package/android/src/networking/com/swmansion/worklets/WorkletsOkHttpCallUtil.kt +40 -0
  113. package/android/src/networking/com/swmansion/worklets/WorkletsProgressListener.kt +13 -0
  114. package/android/src/networking/com/swmansion/worklets/WorkletsProgressRequestBody.kt +98 -0
  115. package/android/src/networking/com/swmansion/worklets/WorkletsProgressResponseBody.kt +60 -0
  116. package/android/src/networking/com/swmansion/worklets/WorkletsProgressiveStringDecoder.kt +87 -0
  117. package/android/src/networking/com/swmansion/worklets/WorkletsRequestBodyUtil.kt +181 -0
  118. package/android/src/no-networking/com/swmansion/worklets/WorkletsModule.kt +143 -0
  119. package/apple/worklets/apple/AnimationFrameQueue.h +15 -0
  120. package/apple/worklets/apple/AnimationFrameQueue.mm +145 -0
  121. package/apple/worklets/apple/AssertJavaScriptQueue.h +14 -0
  122. package/apple/worklets/apple/AssertTurboModuleManagerQueue.h +12 -0
  123. package/apple/worklets/apple/IOSUIScheduler.h +14 -0
  124. package/apple/worklets/apple/IOSUIScheduler.mm +29 -0
  125. package/apple/worklets/apple/Networking/WorkletsNetworking.h +25 -0
  126. package/apple/worklets/apple/Networking/WorkletsNetworking.mm +707 -0
  127. package/apple/worklets/apple/PlatformLogger.mm +31 -0
  128. package/apple/worklets/apple/SlowAnimations.h +8 -0
  129. package/apple/worklets/apple/SlowAnimations.mm +45 -0
  130. package/apple/worklets/apple/WorkletsDisplayLink.h +21 -0
  131. package/apple/worklets/apple/WorkletsModule.h +28 -0
  132. package/apple/worklets/apple/WorkletsModule.mm +177 -0
  133. package/bundleMode/index.d.ts +6 -0
  134. package/bundleMode/index.js +182 -0
  135. package/bundleMode/shims/reactNativeShim.js +21 -0
  136. package/bundleMode/shims/turboModuleRegistryShim.js +47 -0
  137. package/changes.json +58 -0
  138. package/compatibility.json +29 -0
  139. package/jest/pluginTestUtils.ts +16 -0
  140. package/jest/resolver.js +18 -0
  141. package/lib/module/WorkletsModule/NativeWorklets.js +4 -0
  142. package/lib/module/WorkletsModule/NativeWorklets.js.map +1 -0
  143. package/lib/module/WorkletsModule/NativeWorklets.native.js +199 -0
  144. package/lib/module/WorkletsModule/NativeWorklets.native.js.map +1 -0
  145. package/lib/module/WorkletsModule/workletsModuleProxy.js +4 -0
  146. package/lib/module/WorkletsModule/workletsModuleProxy.js.map +1 -0
  147. package/lib/module/bundleMode/metroOverrides.native.js +26 -0
  148. package/lib/module/bundleMode/metroOverrides.native.js.map +1 -0
  149. package/lib/module/bundleMode/network.native.js +44 -0
  150. package/lib/module/bundleMode/network.native.js.map +1 -0
  151. package/lib/module/debug/bundleMode.js +6 -0
  152. package/lib/module/debug/bundleMode.js.map +1 -0
  153. package/lib/module/debug/bundleMode.native.js +11 -0
  154. package/lib/module/debug/bundleMode.native.js.map +1 -0
  155. package/lib/module/debug/checkCppVersion.js +29 -0
  156. package/lib/module/debug/checkCppVersion.js.map +1 -0
  157. package/lib/module/debug/errors.native.js +67 -0
  158. package/lib/module/debug/errors.native.js.map +1 -0
  159. package/lib/module/debug/jsVersion.js +9 -0
  160. package/lib/module/debug/jsVersion.js.map +1 -0
  161. package/lib/module/debug/logger.js +15 -0
  162. package/lib/module/debug/logger.js.map +1 -0
  163. package/lib/module/debug/slowAnimations.js +7 -0
  164. package/lib/module/debug/slowAnimations.js.map +1 -0
  165. package/lib/module/debug/slowAnimations.native.js +17 -0
  166. package/lib/module/debug/slowAnimations.native.js.map +1 -0
  167. package/lib/module/deprecated.js +27 -0
  168. package/lib/module/deprecated.js.map +1 -0
  169. package/lib/module/featureFlags/featureFlags.js +12 -0
  170. package/lib/module/featureFlags/featureFlags.js.map +1 -0
  171. package/lib/module/featureFlags/featureFlags.native.js +51 -0
  172. package/lib/module/featureFlags/featureFlags.native.js.map +1 -0
  173. package/lib/module/featureFlags/staticFlags.json +6 -0
  174. package/lib/module/featureFlags/types.js +16 -0
  175. package/lib/module/featureFlags/types.js.map +1 -0
  176. package/lib/module/guardImplementation.native.js +17 -0
  177. package/lib/module/guardImplementation.native.js.map +1 -0
  178. package/lib/module/index.js +26 -0
  179. package/lib/module/index.js.map +1 -0
  180. package/lib/module/initializers/initializers.js +24 -0
  181. package/lib/module/initializers/initializers.js.map +1 -0
  182. package/lib/module/initializers/initializers.native.js +195 -0
  183. package/lib/module/initializers/initializers.native.js.map +1 -0
  184. package/lib/module/memory/bundleUnpacker.native.js +38 -0
  185. package/lib/module/memory/bundleUnpacker.native.js.map +1 -0
  186. package/lib/module/memory/customSerializableUnpacker.native.js +20 -0
  187. package/lib/module/memory/customSerializableUnpacker.native.js.map +1 -0
  188. package/lib/module/memory/isShareable.js +8 -0
  189. package/lib/module/memory/isShareable.js.map +1 -0
  190. package/lib/module/memory/isSynchronizable.js +8 -0
  191. package/lib/module/memory/isSynchronizable.js.map +1 -0
  192. package/lib/module/memory/remoteFunctionUnpacker.native.js +18 -0
  193. package/lib/module/memory/remoteFunctionUnpacker.native.js.map +1 -0
  194. package/lib/module/memory/serializable.js +18 -0
  195. package/lib/module/memory/serializable.js.map +1 -0
  196. package/lib/module/memory/serializable.native.js +619 -0
  197. package/lib/module/memory/serializable.native.js.map +1 -0
  198. package/lib/module/memory/serializableMappingCache.js +11 -0
  199. package/lib/module/memory/serializableMappingCache.js.map +1 -0
  200. package/lib/module/memory/serializableMappingCache.native.js +29 -0
  201. package/lib/module/memory/serializableMappingCache.native.js.map +1 -0
  202. package/lib/module/memory/shareable.js +18 -0
  203. package/lib/module/memory/shareable.js.map +1 -0
  204. package/lib/module/memory/shareable.native.js +42 -0
  205. package/lib/module/memory/shareable.native.js.map +1 -0
  206. package/lib/module/memory/shareableGuestUnpacker.native.js +105 -0
  207. package/lib/module/memory/shareableGuestUnpacker.native.js.map +1 -0
  208. package/lib/module/memory/shareableHostUnpacker.native.js +20 -0
  209. package/lib/module/memory/shareableHostUnpacker.native.js.map +1 -0
  210. package/lib/module/memory/synchronizable.js +6 -0
  211. package/lib/module/memory/synchronizable.js.map +1 -0
  212. package/lib/module/memory/synchronizable.native.js +9 -0
  213. package/lib/module/memory/synchronizable.native.js.map +1 -0
  214. package/lib/module/memory/synchronizableUnpacker.native.js +47 -0
  215. package/lib/module/memory/synchronizableUnpacker.native.js.map +1 -0
  216. package/lib/module/memory/types.js +12 -0
  217. package/lib/module/memory/types.js.map +1 -0
  218. package/lib/module/memory/valueUnpacker.native.js +52 -0
  219. package/lib/module/memory/valueUnpacker.native.js.map +1 -0
  220. package/lib/module/mock.js +85 -0
  221. package/lib/module/mock.js.map +1 -0
  222. package/lib/module/package.json +1 -0
  223. package/lib/module/platformChecker.js +4 -0
  224. package/lib/module/platformChecker.js.map +1 -0
  225. package/lib/module/platformChecker.native.js +4 -0
  226. package/lib/module/platformChecker.native.js.map +1 -0
  227. package/lib/module/privateGlobals.d.js +7 -0
  228. package/lib/module/privateGlobals.d.js.map +1 -0
  229. package/lib/module/runLoop/common/setImmediatePolyfill.js +15 -0
  230. package/lib/module/runLoop/common/setImmediatePolyfill.js.map +1 -0
  231. package/lib/module/runLoop/common/setIntervalPolyfill.js +26 -0
  232. package/lib/module/runLoop/common/setIntervalPolyfill.js.map +1 -0
  233. package/lib/module/runLoop/uiRuntime/mockedRequestAnimationFrame.js +10 -0
  234. package/lib/module/runLoop/uiRuntime/mockedRequestAnimationFrame.js.map +1 -0
  235. package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js +71 -0
  236. package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js.map +1 -0
  237. package/lib/module/runLoop/uiRuntime/setTimeoutPolyfill.js +32 -0
  238. package/lib/module/runLoop/uiRuntime/setTimeoutPolyfill.js.map +1 -0
  239. package/lib/module/runLoop/workletRuntime/index.js +19 -0
  240. package/lib/module/runLoop/workletRuntime/index.js.map +1 -0
  241. package/lib/module/runLoop/workletRuntime/queueMicrotask.js +11 -0
  242. package/lib/module/runLoop/workletRuntime/queueMicrotask.js.map +1 -0
  243. package/lib/module/runLoop/workletRuntime/requestAnimationFramePolyfill.js +48 -0
  244. package/lib/module/runLoop/workletRuntime/requestAnimationFramePolyfill.js.map +1 -0
  245. package/lib/module/runLoop/workletRuntime/setTimeout.js +28 -0
  246. package/lib/module/runLoop/workletRuntime/setTimeout.js.map +1 -0
  247. package/lib/module/runLoop/workletRuntime/taskQueue.js +37 -0
  248. package/lib/module/runLoop/workletRuntime/taskQueue.js.map +1 -0
  249. package/lib/module/runtimeKind.js +92 -0
  250. package/lib/module/runtimeKind.js.map +1 -0
  251. package/lib/module/runtimes.js +36 -0
  252. package/lib/module/runtimes.js.map +1 -0
  253. package/lib/module/runtimes.native.js +379 -0
  254. package/lib/module/runtimes.native.js.map +1 -0
  255. package/lib/module/specs/NativeWorkletsModule.js +5 -0
  256. package/lib/module/specs/NativeWorkletsModule.js.map +1 -0
  257. package/lib/module/specs/index.js +10 -0
  258. package/lib/module/specs/index.js.map +1 -0
  259. package/lib/module/threads.js +60 -0
  260. package/lib/module/threads.js.map +1 -0
  261. package/lib/module/threads.native.js +295 -0
  262. package/lib/module/threads.native.js.map +1 -0
  263. package/lib/module/types.js +5 -0
  264. package/lib/module/types.js.map +1 -0
  265. package/lib/module/workletFunction.js +36 -0
  266. package/lib/module/workletFunction.js.map +1 -0
  267. package/lib/typescript/WorkletsModule/NativeWorklets.d.ts +3 -0
  268. package/lib/typescript/WorkletsModule/NativeWorklets.d.ts.map +1 -0
  269. package/lib/typescript/WorkletsModule/NativeWorklets.native.d.ts +3 -0
  270. package/lib/typescript/WorkletsModule/NativeWorklets.native.d.ts.map +1 -0
  271. package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts +59 -0
  272. package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts.map +1 -0
  273. package/lib/typescript/bundleMode/metroOverrides.native.d.ts +9 -0
  274. package/lib/typescript/bundleMode/metroOverrides.native.d.ts.map +1 -0
  275. package/lib/typescript/bundleMode/network.native.d.ts +7 -0
  276. package/lib/typescript/bundleMode/network.native.d.ts.map +1 -0
  277. package/lib/typescript/debug/bundleMode.d.ts +2 -0
  278. package/lib/typescript/debug/bundleMode.d.ts.map +1 -0
  279. package/lib/typescript/debug/bundleMode.native.d.ts +2 -0
  280. package/lib/typescript/debug/bundleMode.native.d.ts.map +1 -0
  281. package/lib/typescript/debug/checkCppVersion.d.ts +3 -0
  282. package/lib/typescript/debug/checkCppVersion.d.ts.map +1 -0
  283. package/lib/typescript/debug/errors.native.d.ts +13 -0
  284. package/lib/typescript/debug/errors.native.d.ts.map +1 -0
  285. package/lib/typescript/debug/jsVersion.d.ts +7 -0
  286. package/lib/typescript/debug/jsVersion.d.ts.map +1 -0
  287. package/lib/typescript/debug/logger.d.ts +5 -0
  288. package/lib/typescript/debug/logger.d.ts.map +1 -0
  289. package/lib/typescript/debug/slowAnimations.d.ts +2 -0
  290. package/lib/typescript/debug/slowAnimations.d.ts.map +1 -0
  291. package/lib/typescript/debug/slowAnimations.native.d.ts +11 -0
  292. package/lib/typescript/debug/slowAnimations.native.d.ts.map +1 -0
  293. package/lib/typescript/deprecated.d.ts +19 -0
  294. package/lib/typescript/deprecated.d.ts.map +1 -0
  295. package/lib/typescript/featureFlags/featureFlags.d.ts +5 -0
  296. package/lib/typescript/featureFlags/featureFlags.d.ts.map +1 -0
  297. package/lib/typescript/featureFlags/featureFlags.native.d.ts +6 -0
  298. package/lib/typescript/featureFlags/featureFlags.native.d.ts.map +1 -0
  299. package/lib/typescript/featureFlags/types.d.ts +23 -0
  300. package/lib/typescript/featureFlags/types.d.ts.map +1 -0
  301. package/lib/typescript/guardImplementation.native.d.ts +3 -0
  302. package/lib/typescript/guardImplementation.native.d.ts.map +1 -0
  303. package/lib/typescript/index.d.ts +19 -0
  304. package/lib/typescript/index.d.ts.map +1 -0
  305. package/lib/typescript/initializers/initializers.d.ts +2 -0
  306. package/lib/typescript/initializers/initializers.d.ts.map +1 -0
  307. package/lib/typescript/initializers/initializers.native.d.ts +19 -0
  308. package/lib/typescript/initializers/initializers.native.d.ts.map +1 -0
  309. package/lib/typescript/memory/bundleUnpacker.native.d.ts +7 -0
  310. package/lib/typescript/memory/bundleUnpacker.native.d.ts.map +1 -0
  311. package/lib/typescript/memory/customSerializableUnpacker.native.d.ts +3 -0
  312. package/lib/typescript/memory/customSerializableUnpacker.native.d.ts.map +1 -0
  313. package/lib/typescript/memory/isShareable.d.ts +3 -0
  314. package/lib/typescript/memory/isShareable.d.ts.map +1 -0
  315. package/lib/typescript/memory/isSynchronizable.d.ts +3 -0
  316. package/lib/typescript/memory/isSynchronizable.d.ts.map +1 -0
  317. package/lib/typescript/memory/remoteFunctionUnpacker.native.d.ts +3 -0
  318. package/lib/typescript/memory/remoteFunctionUnpacker.native.d.ts.map +1 -0
  319. package/lib/typescript/memory/serializable.d.ts +7 -0
  320. package/lib/typescript/memory/serializable.d.ts.map +1 -0
  321. package/lib/typescript/memory/serializable.native.d.ts +37 -0
  322. package/lib/typescript/memory/serializable.native.d.ts.map +1 -0
  323. package/lib/typescript/memory/serializableMappingCache.d.ts +6 -0
  324. package/lib/typescript/memory/serializableMappingCache.d.ts.map +1 -0
  325. package/lib/typescript/memory/serializableMappingCache.native.d.ts +13 -0
  326. package/lib/typescript/memory/serializableMappingCache.native.d.ts.map +1 -0
  327. package/lib/typescript/memory/shareable.d.ts +15 -0
  328. package/lib/typescript/memory/shareable.d.ts.map +1 -0
  329. package/lib/typescript/memory/shareable.native.d.ts +15 -0
  330. package/lib/typescript/memory/shareable.native.d.ts.map +1 -0
  331. package/lib/typescript/memory/shareableGuestUnpacker.native.d.ts +4 -0
  332. package/lib/typescript/memory/shareableGuestUnpacker.native.d.ts.map +1 -0
  333. package/lib/typescript/memory/shareableHostUnpacker.native.d.ts +4 -0
  334. package/lib/typescript/memory/shareableHostUnpacker.native.d.ts.map +1 -0
  335. package/lib/typescript/memory/synchronizable.d.ts +3 -0
  336. package/lib/typescript/memory/synchronizable.d.ts.map +1 -0
  337. package/lib/typescript/memory/synchronizable.native.d.ts +3 -0
  338. package/lib/typescript/memory/synchronizable.native.d.ts.map +1 -0
  339. package/lib/typescript/memory/synchronizableUnpacker.native.d.ts +4 -0
  340. package/lib/typescript/memory/synchronizableUnpacker.native.d.ts.map +1 -0
  341. package/lib/typescript/memory/types.d.ts +136 -0
  342. package/lib/typescript/memory/types.d.ts.map +1 -0
  343. package/lib/typescript/memory/valueUnpacker.native.d.ts +7 -0
  344. package/lib/typescript/memory/valueUnpacker.native.d.ts.map +1 -0
  345. package/lib/typescript/mock.d.ts +2 -0
  346. package/lib/typescript/mock.d.ts.map +1 -0
  347. package/lib/typescript/package.json +1 -0
  348. package/lib/typescript/platformChecker.d.ts +2 -0
  349. package/lib/typescript/platformChecker.d.ts.map +1 -0
  350. package/lib/typescript/platformChecker.native.d.ts +2 -0
  351. package/lib/typescript/platformChecker.native.d.ts.map +1 -0
  352. package/lib/typescript/runLoop/common/setImmediatePolyfill.d.ts +2 -0
  353. package/lib/typescript/runLoop/common/setImmediatePolyfill.d.ts.map +1 -0
  354. package/lib/typescript/runLoop/common/setIntervalPolyfill.d.ts +2 -0
  355. package/lib/typescript/runLoop/common/setIntervalPolyfill.d.ts.map +1 -0
  356. package/lib/typescript/runLoop/uiRuntime/mockedRequestAnimationFrame.d.ts +6 -0
  357. package/lib/typescript/runLoop/uiRuntime/mockedRequestAnimationFrame.d.ts.map +1 -0
  358. package/lib/typescript/runLoop/uiRuntime/requestAnimationFrame.d.ts +2 -0
  359. package/lib/typescript/runLoop/uiRuntime/requestAnimationFrame.d.ts.map +1 -0
  360. package/lib/typescript/runLoop/uiRuntime/setTimeoutPolyfill.d.ts +2 -0
  361. package/lib/typescript/runLoop/uiRuntime/setTimeoutPolyfill.d.ts.map +1 -0
  362. package/lib/typescript/runLoop/workletRuntime/index.d.ts +2 -0
  363. package/lib/typescript/runLoop/workletRuntime/index.d.ts.map +1 -0
  364. package/lib/typescript/runLoop/workletRuntime/queueMicrotask.d.ts +2 -0
  365. package/lib/typescript/runLoop/workletRuntime/queueMicrotask.d.ts.map +1 -0
  366. package/lib/typescript/runLoop/workletRuntime/requestAnimationFramePolyfill.d.ts +2 -0
  367. package/lib/typescript/runLoop/workletRuntime/requestAnimationFramePolyfill.d.ts.map +1 -0
  368. package/lib/typescript/runLoop/workletRuntime/setTimeout.d.ts +2 -0
  369. package/lib/typescript/runLoop/workletRuntime/setTimeout.d.ts.map +1 -0
  370. package/lib/typescript/runLoop/workletRuntime/taskQueue.d.ts +10 -0
  371. package/lib/typescript/runLoop/workletRuntime/taskQueue.d.ts.map +1 -0
  372. package/lib/typescript/runtimeKind.d.ts +56 -0
  373. package/lib/typescript/runtimeKind.d.ts.map +1 -0
  374. package/lib/typescript/runtimes.d.ts +15 -0
  375. package/lib/typescript/runtimes.d.ts.map +1 -0
  376. package/lib/typescript/runtimes.native.d.ts +155 -0
  377. package/lib/typescript/runtimes.native.d.ts.map +1 -0
  378. package/lib/typescript/specs/NativeWorkletsModule.d.ts +9 -0
  379. package/lib/typescript/specs/NativeWorkletsModule.d.ts.map +1 -0
  380. package/lib/typescript/specs/index.d.ts +3 -0
  381. package/lib/typescript/specs/index.d.ts.map +1 -0
  382. package/lib/typescript/threads.d.ts +8 -0
  383. package/lib/typescript/threads.d.ts.map +1 -0
  384. package/lib/typescript/threads.native.d.ts +125 -0
  385. package/lib/typescript/threads.native.d.ts.map +1 -0
  386. package/lib/typescript/types.d.ts +136 -0
  387. package/lib/typescript/types.d.ts.map +1 -0
  388. package/lib/typescript/workletFunction.d.ts +26 -0
  389. package/lib/typescript/workletFunction.d.ts.map +1 -0
  390. package/package.json +220 -0
  391. package/plugin/index.d.ts +168 -0
  392. package/plugin/index.js +2188 -0
  393. package/scripts/validate-react-native-version.js +43 -0
  394. package/scripts/worklets_utils.rb +94 -0
  395. package/src/WorkletsModule/NativeWorklets.native.ts +461 -0
  396. package/src/WorkletsModule/NativeWorklets.ts +5 -0
  397. package/src/WorkletsModule/workletsModuleProxy.ts +247 -0
  398. package/src/bundleMode/metroOverrides.native.ts +33 -0
  399. package/src/bundleMode/network.native.ts +63 -0
  400. package/src/debug/bundleMode.native.ts +18 -0
  401. package/src/debug/bundleMode.ts +5 -0
  402. package/src/debug/checkCppVersion.ts +34 -0
  403. package/src/debug/errors.native.ts +74 -0
  404. package/src/debug/jsVersion.ts +8 -0
  405. package/src/debug/logger.ts +16 -0
  406. package/src/debug/slowAnimations.native.ts +15 -0
  407. package/src/debug/slowAnimations.ts +6 -0
  408. package/src/deprecated.ts +38 -0
  409. package/src/featureFlags/featureFlags.native.ts +70 -0
  410. package/src/featureFlags/featureFlags.ts +20 -0
  411. package/src/featureFlags/staticFlags.json +6 -0
  412. package/src/featureFlags/types.ts +32 -0
  413. package/src/guardImplementation.native.ts +26 -0
  414. package/src/index.ts +95 -0
  415. package/src/initializers/initializers.native.ts +218 -0
  416. package/src/initializers/initializers.ts +24 -0
  417. package/src/memory/bundleUnpacker.native.ts +59 -0
  418. package/src/memory/customSerializableUnpacker.native.ts +30 -0
  419. package/src/memory/isShareable.ts +16 -0
  420. package/src/memory/isSynchronizable.ts +14 -0
  421. package/src/memory/remoteFunctionUnpacker.native.ts +27 -0
  422. package/src/memory/serializable.native.ts +889 -0
  423. package/src/memory/serializable.ts +36 -0
  424. package/src/memory/serializableMappingCache.native.ts +37 -0
  425. package/src/memory/serializableMappingCache.ts +12 -0
  426. package/src/memory/shareable.native.ts +68 -0
  427. package/src/memory/shareable.ts +27 -0
  428. package/src/memory/shareableGuestUnpacker.native.ts +168 -0
  429. package/src/memory/shareableHostUnpacker.native.ts +31 -0
  430. package/src/memory/synchronizable.native.ts +17 -0
  431. package/src/memory/synchronizable.ts +9 -0
  432. package/src/memory/synchronizableUnpacker.native.ts +65 -0
  433. package/src/memory/types.ts +191 -0
  434. package/src/memory/valueUnpacker.native.ts +79 -0
  435. package/src/mock.ts +111 -0
  436. package/src/platformChecker.native.ts +3 -0
  437. package/src/platformChecker.ts +4 -0
  438. package/src/privateGlobals.d.ts +127 -0
  439. package/src/runLoop/common/setImmediatePolyfill.ts +20 -0
  440. package/src/runLoop/common/setIntervalPolyfill.ts +38 -0
  441. package/src/runLoop/uiRuntime/mockedRequestAnimationFrame.ts +11 -0
  442. package/src/runLoop/uiRuntime/requestAnimationFrame.ts +87 -0
  443. package/src/runLoop/uiRuntime/setTimeoutPolyfill.ts +40 -0
  444. package/src/runLoop/workletRuntime/index.ts +18 -0
  445. package/src/runLoop/workletRuntime/queueMicrotask.ts +13 -0
  446. package/src/runLoop/workletRuntime/requestAnimationFramePolyfill.ts +61 -0
  447. package/src/runLoop/workletRuntime/setTimeout.ts +37 -0
  448. package/src/runLoop/workletRuntime/taskQueue.ts +44 -0
  449. package/src/runtimeKind.ts +85 -0
  450. package/src/runtimes.native.ts +572 -0
  451. package/src/runtimes.ts +107 -0
  452. package/src/specs/NativeWorkletsModule.ts +11 -0
  453. package/src/specs/index.ts +13 -0
  454. package/src/threads.native.ts +408 -0
  455. package/src/threads.ts +110 -0
  456. package/src/types.ts +164 -0
  457. package/src/workletFunction.ts +41 -0
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ import type StaticFeatureFlagsJSON from './staticFlags.json';
4
+
5
+ export type DynamicFlagsType = {
6
+ EXAMPLE_DYNAMIC_FLAG: boolean;
7
+ init(): void;
8
+ setFlag(name: DynamicFlagName, value: boolean): void;
9
+ getFlag(name: DynamicFlagName): boolean;
10
+ };
11
+
12
+ export type DynamicFlagName = keyof Omit<
13
+ Omit<DynamicFlagsType, 'setFlag' | 'getFlag'>,
14
+ 'init'
15
+ >;
16
+
17
+ /**
18
+ * This constant is needed for typechecking and preserving static typechecks in
19
+ * generated .d.ts files. Without it, the static flags resolve to an object
20
+ * without specific keys.
21
+ */
22
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ const DefaultStaticFeatureFlags = {
24
+ RUNTIME_TEST_FLAG: false,
25
+ FETCH_PREVIEW_ENABLED: false,
26
+ IOS_DYNAMIC_FRAMERATE_ENABLED: true,
27
+ ENABLE_CROSS_RUNTIME_STACK_TRACES: true,
28
+ } as const satisfies typeof StaticFeatureFlagsJSON;
29
+
30
+ export type StaticFeatureFlagsSchema = {
31
+ -readonly [K in keyof typeof DefaultStaticFeatureFlags]: boolean;
32
+ };
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ import { createSerializable } from './memory/serializable';
4
+ import { serializableMappingCache } from './memory/serializableMappingCache';
5
+
6
+ export function addGuardImplementation<Args extends unknown[]>(
7
+ fn: (...args: Args) => unknown,
8
+ errorMessage: string
9
+ ): void {
10
+ const serializableGuard = createSerializable(function guardImplementation() {
11
+ 'worklet';
12
+ throw new Error(`[Worklets] ${errorMessage}`);
13
+ });
14
+ serializableMappingCache.set(fn, serializableGuard);
15
+ }
16
+
17
+ export function addNoBundleModeGuardImplementation<Args extends unknown[]>(
18
+ fn: (...args: Args) => unknown
19
+ ): void {
20
+ const name = fn.name;
21
+
22
+ addGuardImplementation(
23
+ fn,
24
+ `${name} cannot be called on Worklet Runtimes outside of the Bundle Mode.`
25
+ );
26
+ }
package/src/index.ts ADDED
@@ -0,0 +1,95 @@
1
+ 'use strict';
2
+
3
+ import { init } from './initializers/initializers';
4
+
5
+ // Worklets Babel Plugin replaces `false` with `true` here
6
+ // when Bundle Mode is enabled.
7
+ globalThis._WORKLETS_BUNDLE_MODE_ENABLED = false;
8
+
9
+ // is-tree-shakable-suppress
10
+ init();
11
+
12
+ export { isBundleModeEnabled } from './debug/bundleMode';
13
+ export { toggleSlowAnimationsOnUIRuntime } from './debug/slowAnimations';
14
+ export {
15
+ callMicrotasks,
16
+ isShareableRef,
17
+ makeShareable,
18
+ type MakeShareableClone,
19
+ makeShareableCloneOnUIRecursive,
20
+ makeShareableCloneRecursive,
21
+ shareableMappingCache,
22
+ type ShareableRef,
23
+ } from './deprecated';
24
+ export {
25
+ getDynamicFeatureFlag,
26
+ getStaticFeatureFlag,
27
+ setDynamicFeatureFlag,
28
+ } from './featureFlags/featureFlags';
29
+ export { isShareable } from './memory/isShareable';
30
+ export { isSynchronizable } from './memory/isSynchronizable';
31
+ export {
32
+ createSerializable,
33
+ isSerializableRef,
34
+ registerCustomSerializable,
35
+ } from './memory/serializable';
36
+ export { serializableMappingCache } from './memory/serializableMappingCache';
37
+ export { createShareable } from './memory/shareable';
38
+ export { createSynchronizable } from './memory/synchronizable';
39
+ export type {
40
+ RegistrationData,
41
+ SerializableRef,
42
+ Shareable,
43
+ ShareableConfig,
44
+ ShareableGuest,
45
+ ShareableGuestDecorator,
46
+ ShareableGuestMeta,
47
+ ShareableGuestProps,
48
+ ShareableHost,
49
+ ShareableHostDecorator,
50
+ ShareableHostMeta,
51
+ ShareableHostProps,
52
+ Synchronizable,
53
+ SynchronizableRef,
54
+ } from './memory/types';
55
+ export {
56
+ getRuntimeKind,
57
+ isRNRuntime,
58
+ isUIRuntime,
59
+ isWorkerRuntime,
60
+ isWorkletRuntime,
61
+ RuntimeKind,
62
+ } from './runtimeKind';
63
+ export {
64
+ createWorkletRuntime,
65
+ getUIRuntimeHolder,
66
+ getUISchedulerHolder,
67
+ runOnRuntime,
68
+ runOnRuntimeAsync,
69
+ runOnRuntimeAsyncWithId,
70
+ runOnRuntimeSync,
71
+ runOnRuntimeSyncWithId,
72
+ scheduleOnRuntime,
73
+ scheduleOnRuntimeWithId,
74
+ UIRuntimeId,
75
+ } from './runtimes';
76
+ export {
77
+ executeOnUIRuntimeSync,
78
+ runOnJS,
79
+ runOnUI,
80
+ runOnUIAsync,
81
+ runOnUISync,
82
+ scheduleOnRN,
83
+ scheduleOnUI,
84
+ } from './threads';
85
+ export type {
86
+ WorkletFunction,
87
+ WorkletRuntime,
88
+ WorkletStackDetails,
89
+ } from './types';
90
+ export { isWorkletFunction } from './workletFunction';
91
+ export { WorkletsModule } from './WorkletsModule/NativeWorklets';
92
+ export type {
93
+ IWorkletsModule,
94
+ WorkletsModuleProxy,
95
+ } from './WorkletsModule/workletsModuleProxy';
@@ -0,0 +1,218 @@
1
+ 'use strict';
2
+
3
+ import { silenceHMRWarnings } from '../bundleMode/metroOverrides';
4
+ import { initializeNetworking } from '../bundleMode/network';
5
+ import { registerReportFatalRemoteError } from '../debug/errors';
6
+ import { getStaticFeatureFlag } from '../featureFlags/featureFlags';
7
+ import { bundleValueUnpacker } from '../memory/bundleUnpacker';
8
+ import { installCustomSerializableUnpacker } from '../memory/customSerializableUnpacker';
9
+ import { installRemoteFunctionUnpacker } from '../memory/remoteFunctionUnpacker';
10
+ import { makeShareableCloneOnUIRecursive } from '../memory/serializable';
11
+ import { installShareableGuestUnpacker } from '../memory/shareableGuestUnpacker';
12
+ import { installShareableHostUnpacker } from '../memory/shareableHostUnpacker';
13
+ import { installSynchronizableUnpacker } from '../memory/synchronizableUnpacker';
14
+ import { installValueUnpacker } from '../memory/valueUnpacker';
15
+ import { setupSetImmediate } from '../runLoop/common/setImmediatePolyfill';
16
+ import { setupSetInterval } from '../runLoop/common/setIntervalPolyfill';
17
+ import { setupRequestAnimationFrame } from '../runLoop/uiRuntime/requestAnimationFrame';
18
+ import { setupSetTimeout } from '../runLoop/uiRuntime/setTimeoutPolyfill';
19
+ import { RuntimeKind } from '../runtimeKind';
20
+ import { runOnUISync, scheduleOnRN, setupMicrotasks } from '../threads';
21
+ import type { ValueUnpacker } from '../types';
22
+ import { isWorkletFunction } from '../workletFunction';
23
+ import { WorkletsModule } from '../WorkletsModule/NativeWorklets';
24
+
25
+ if (globalThis.__RUNTIME_KIND === undefined) {
26
+ // The only runtime that doesn't have `__RUNTIME_KIND` preconfigured
27
+ // is the RN Runtime. We must set it as soon as possible.
28
+ globalThis.__RUNTIME_KIND = RuntimeKind.ReactNative;
29
+ }
30
+
31
+ let capturableConsole: typeof console;
32
+
33
+ /**
34
+ * Currently there seems to be a bug in the JSI layer which causes a crash when
35
+ * we try to copy some of the console methods, i.e. `clear` or `dirxml`.
36
+ *
37
+ * The crash happens only in React Native 0.75. It's not reproducible in neither
38
+ * 0.76 nor 0.74. It also happens only in the configuration of a debug app and
39
+ * production bundle.
40
+ *
41
+ * I haven't yet discovered what exactly causes the crash. It's tied to the
42
+ * console methods sometimes being `HostFunction`s. Therefore, as a workaround
43
+ * we don't copy the methods as they are in the original console object, we copy
44
+ * JavaScript wrappers instead.
45
+ */
46
+ export function getMemorySafeCapturableConsole(): typeof console {
47
+ if (capturableConsole) {
48
+ return capturableConsole;
49
+ }
50
+
51
+ const consoleCopy = Object.fromEntries(
52
+ Object.entries(console).map(([methodName, method]) => {
53
+ const methodWrapper = function methodWrapper(...args: unknown[]) {
54
+ return method(...args);
55
+ };
56
+ if (method.name) {
57
+ /**
58
+ * Set the original method name as the wrapper name if available.
59
+ *
60
+ * It might be unnecessary but if we want to fully mimic the console
61
+ * object we should take into the account the fact some code might rely
62
+ * on the method name.
63
+ */
64
+ Object.defineProperty(methodWrapper, 'name', {
65
+ value: method.name,
66
+ writable: false,
67
+ });
68
+ }
69
+ return [methodName, methodWrapper];
70
+ })
71
+ );
72
+
73
+ capturableConsole = consoleCopy as unknown as typeof console;
74
+
75
+ return consoleCopy as unknown as typeof console;
76
+ }
77
+
78
+ export function setupConsole(boundCapturableConsole: typeof console) {
79
+ 'worklet';
80
+ // @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version
81
+ globalThis.console = {
82
+ assert: (...args) => scheduleOnRN(boundCapturableConsole.assert, ...args),
83
+ debug: (...args) => scheduleOnRN(boundCapturableConsole.debug, ...args),
84
+ log: (...args) => scheduleOnRN(boundCapturableConsole.log, ...args),
85
+ warn: (...args) => scheduleOnRN(boundCapturableConsole.warn, ...args),
86
+ error: (...args) => scheduleOnRN(boundCapturableConsole.error, ...args),
87
+ info: (...args) => scheduleOnRN(boundCapturableConsole.info, ...args),
88
+ };
89
+ }
90
+
91
+ // This is only used in DEV mode in Bunde Mode, it's necessary to see the logs in metro / devtools
92
+ export function setupConsoleForwarding(boundCapturableConsole: typeof console) {
93
+ 'worklet';
94
+
95
+ globalThis.nativeLoggingHook = (message: string, level: number) => {
96
+ switch (level) {
97
+ case 0:
98
+ scheduleOnRN(boundCapturableConsole.debug, message);
99
+ break;
100
+ case 1:
101
+ scheduleOnRN(boundCapturableConsole.log, message);
102
+ break;
103
+ case 2:
104
+ scheduleOnRN(boundCapturableConsole.warn, message);
105
+ break;
106
+ case 3:
107
+ scheduleOnRN(boundCapturableConsole.error, message);
108
+ break;
109
+ default:
110
+ scheduleOnRN(boundCapturableConsole.log, message);
111
+ }
112
+ };
113
+ }
114
+
115
+ export function setupSerializer() {
116
+ 'worklet';
117
+ globalThis.__serializer = makeShareableCloneOnUIRecursive;
118
+ }
119
+
120
+ let initialized = false;
121
+
122
+ export function init() {
123
+ if (initialized) {
124
+ return;
125
+ }
126
+ initialized = true;
127
+
128
+ initializeRuntime();
129
+
130
+ if (globalThis.__RUNTIME_KIND !== RuntimeKind.ReactNative) {
131
+ initializeWorkletRuntime();
132
+ } else {
133
+ initializeRNRuntime();
134
+ installRNBindingsOnUIRuntime();
135
+ }
136
+ }
137
+
138
+ /** A function that should be run on any kind of runtime. */
139
+ function initializeRuntime() {
140
+ if (globalThis._WORKLETS_BUNDLE_MODE_ENABLED) {
141
+ globalThis.__valueUnpacker = bundleValueUnpacker as ValueUnpacker;
142
+ } else {
143
+ installValueUnpacker();
144
+ }
145
+ installSynchronizableUnpacker();
146
+ installCustomSerializableUnpacker();
147
+ installShareableHostUnpacker();
148
+ installShareableGuestUnpacker();
149
+ installRemoteFunctionUnpacker();
150
+ }
151
+
152
+ /** A function that should be run only on React Native runtime. */
153
+ function initializeRNRuntime() {
154
+ if (__DEV__) {
155
+ const testWorklet = () => {
156
+ 'worklet';
157
+ };
158
+ if (!isWorkletFunction(testWorklet)) {
159
+ throw new Error(
160
+ `[Worklets] Failed to create a worklet. See https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#failed-to-create-a-worklet for more details.`
161
+ );
162
+ }
163
+ }
164
+
165
+ registerReportFatalRemoteError();
166
+ }
167
+
168
+ /** A function that should be run only on Worklet runtimes. */
169
+ function initializeWorkletRuntime() {
170
+ if (globalThis._WORKLETS_BUNDLE_MODE_ENABLED) {
171
+ if (__DEV__) {
172
+ silenceHMRWarnings();
173
+ }
174
+
175
+ if (getStaticFeatureFlag('FETCH_PREVIEW_ENABLED')) {
176
+ initializeNetworking();
177
+ }
178
+ }
179
+ }
180
+
181
+ /**
182
+ * A function that should be run on the RN Runtime to configure the UI Runtime
183
+ * with callback bindings.
184
+ */
185
+ function installRNBindingsOnUIRuntime() {
186
+ if (!WorkletsModule) {
187
+ throw new Error(
188
+ '[Worklets] Worklets are trying to initialize the UI runtime without a valid WorkletsModule'
189
+ );
190
+ }
191
+
192
+ const runtimeBoundCapturableConsole =
193
+ globalThis._WORKLETS_BUNDLE_MODE_ENABLED && !__DEV__
194
+ ? null
195
+ : getMemorySafeCapturableConsole();
196
+
197
+ runOnUISync(() => {
198
+ 'worklet';
199
+ /**
200
+ * TODO: Move `setupMicrotasks` and `setupRequestAnimationFrame` to a
201
+ * separate function once we have a better way to distinguish between
202
+ * Worklet Runtimes.
203
+ */
204
+
205
+ if (!globalThis._WORKLETS_BUNDLE_MODE_ENABLED) {
206
+ setupConsole(runtimeBoundCapturableConsole!);
207
+ } else if (__DEV__) {
208
+ setupConsoleForwarding(runtimeBoundCapturableConsole!);
209
+ }
210
+
211
+ setupMicrotasks();
212
+ setupRequestAnimationFrame();
213
+ setupSetTimeout();
214
+ setupSetImmediate();
215
+ setupSetInterval();
216
+ setupSerializer();
217
+ });
218
+ }
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ import { IS_JEST } from '../platformChecker';
4
+ import { mockedRequestAnimationFrame } from '../runLoop/uiRuntime/mockedRequestAnimationFrame';
5
+ import { RuntimeKind } from '../runtimeKind';
6
+
7
+ export function init() {
8
+ globalThis._WORKLET = false;
9
+ globalThis.__RUNTIME_KIND = RuntimeKind.ReactNative;
10
+ globalThis._log = console.log;
11
+ globalThis._getAnimationTimestamp = () => performance.now();
12
+ if (IS_JEST) {
13
+ /**
14
+ * RequestAnimationFrame react-native jest's setup is incorrect as it
15
+ * polyfills the method directly using setTimeout, therefore the callback
16
+ * doesn't get the expected timestamp as the only argument. We override this
17
+ * setup here to make sure that callbacks get the proper timestamps when
18
+ * executed. For non-jest environments we define requestAnimationFrame in
19
+ * setupRequestAnimationFrame
20
+ */
21
+ // @ts-ignore TypeScript uses Node definition for rAF.
22
+ globalThis.requestAnimationFrame = mockedRequestAnimationFrame;
23
+ }
24
+ }
@@ -0,0 +1,59 @@
1
+ 'use strict';
2
+
3
+ import { logger } from '../debug/logger';
4
+ import type { WorkletFactory, WorkletFunction } from '../types';
5
+
6
+ const handleCache = new WeakMap<WorkletFunction, unknown>();
7
+
8
+ export function bundleValueUnpacker(objectToUnpack: ObjectToUnpack): unknown {
9
+ const workletHash = objectToUnpack.__workletHash;
10
+ if (workletHash !== undefined) {
11
+ return getWorklet(workletHash, objectToUnpack.__closure);
12
+ } else if (objectToUnpack.__init !== undefined) {
13
+ let value = handleCache.get(objectToUnpack);
14
+ if (value === undefined) {
15
+ value = objectToUnpack.__init();
16
+ handleCache.set(objectToUnpack, value);
17
+ }
18
+ return value;
19
+ } else {
20
+ throw new Error(
21
+ `[Worklets] Data type not recognized by value unpacker: "${globalThis._toString(
22
+ objectToUnpack
23
+ )}".`
24
+ );
25
+ }
26
+ }
27
+
28
+ function getWorklet(
29
+ workletHash: number,
30
+ closureVariables: Record<string, unknown>
31
+ ): WorkletFunction | undefined {
32
+ let worklet;
33
+ if (__DEV__) {
34
+ try {
35
+ worklet = getWorkletFromMetroRequire(workletHash, closureVariables);
36
+ } catch (e) {
37
+ logger.error(
38
+ `Unable to resolve worklet with hash ${workletHash}. Try reloading the app. Original error: ${(e as Error).message}`
39
+ );
40
+ }
41
+ } else {
42
+ worklet = getWorkletFromMetroRequire(workletHash, closureVariables);
43
+ }
44
+ return worklet;
45
+ }
46
+
47
+ const metroRequire = globalThis.__r;
48
+
49
+ function getWorkletFromMetroRequire(
50
+ workletHash: number,
51
+ closureVariables: Record<string, unknown>
52
+ ): WorkletFunction {
53
+ const factory = metroRequire(workletHash).default as WorkletFactory;
54
+ return factory(closureVariables);
55
+ }
56
+
57
+ interface ObjectToUnpack extends WorkletFunction {
58
+ _recur: unknown;
59
+ }
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ export function installCustomSerializableUnpacker() {
4
+ 'worklet';
5
+ 'no-worklet-closure';
6
+ if (!globalThis.__customSerializationRegistry) {
7
+ globalThis.__customSerializationRegistry =
8
+ [] as typeof globalThis.__customSerializationRegistry;
9
+ }
10
+ const registry = globalThis.__customSerializationRegistry;
11
+
12
+ function customSerializableUnpacker<TValue>(value: TValue, typeId: number) {
13
+ const data = registry[typeId];
14
+ if (!data) {
15
+ throw new Error(
16
+ `[Worklets] No custom serializable registered for type ID ${typeId}.`
17
+ );
18
+ }
19
+
20
+ return data.unpack(value as object);
21
+ }
22
+
23
+ globalThis.__customSerializableUnpacker =
24
+ customSerializableUnpacker as CustomSerializableUnpacker;
25
+ }
26
+
27
+ export type CustomSerializableUnpacker = (
28
+ object: unknown,
29
+ typeId: number
30
+ ) => unknown;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ import type { Shareable } from './types';
4
+
5
+ export function isShareable<
6
+ TValue = unknown,
7
+ THostDecorated = unknown,
8
+ TGuestDecorated = unknown,
9
+ >(value: unknown): value is Shareable<TValue, THostDecorated, TGuestDecorated> {
10
+ 'worklet';
11
+ return (
12
+ typeof value === 'object' &&
13
+ value !== null &&
14
+ !!(value as Record<string, unknown>).__shareableRef
15
+ );
16
+ }
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ import type { Synchronizable } from './types';
4
+
5
+ export function isSynchronizable<TValue>(
6
+ value: unknown
7
+ ): value is Synchronizable<TValue> {
8
+ 'worklet';
9
+ return (
10
+ typeof value === 'object' &&
11
+ value !== null &&
12
+ !!(value as Record<string, unknown>).__synchronizableRef
13
+ );
14
+ }
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ export function installRemoteFunctionUnpacker() {
4
+ 'worklet';
5
+ 'no-worklet-closure';
6
+
7
+ function remoteFunctionUnpacker(
8
+ remoteFunctionName: string | undefined
9
+ ): unknown {
10
+ remoteFunctionName = remoteFunctionName ? remoteFunctionName : 'anonymous';
11
+
12
+ const fun = function remoteFunctionGuard() {
13
+ throw new Error(`[Worklets] Tried to synchronously call a Remote Function. Called "${remoteFunctionName}" on the ${globalThis.__RUNTIME_NAME} Runtime.
14
+ See https://docs.swmansion.com/react-native-worklets/docs/guides/troubleshooting#tried-to-synchronously-call-a-remote-function for more details.`);
15
+ };
16
+
17
+ fun.__remoteFunction = true;
18
+ return fun;
19
+ }
20
+
21
+ globalThis.__remoteFunctionUnpacker =
22
+ remoteFunctionUnpacker as RemoteFunctionUnpacker;
23
+ }
24
+
25
+ export type RemoteFunctionUnpacker = (
26
+ remoteFunctionName: string | undefined
27
+ ) => unknown;