@amazon-devices/react-native-worklets 1.0.0-rn-83

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 (348) hide show
  1. package/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.cpp +71 -0
  2. package/Common/cpp/worklets/AnimationFrameQueue/AnimationFrameBatchinator.h +38 -0
  3. package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.cpp +712 -0
  4. package/Common/cpp/worklets/NativeModules/JSIWorkletsModuleProxy.h +88 -0
  5. package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +89 -0
  6. package/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +80 -0
  7. package/Common/cpp/worklets/Public/AsyncQueue.h +14 -0
  8. package/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +94 -0
  9. package/Common/cpp/worklets/Registries/EventHandlerRegistry.h +51 -0
  10. package/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +8 -0
  11. package/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +40 -0
  12. package/Common/cpp/worklets/Resources/SynchronizableUnpacker.cpp +49 -0
  13. package/Common/cpp/worklets/Resources/Unpackers.h +6 -0
  14. package/Common/cpp/worklets/Resources/ValueUnpacker.cpp +53 -0
  15. package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.cpp +62 -0
  16. package/Common/cpp/worklets/RunLoop/AsyncQueueImpl.h +46 -0
  17. package/Common/cpp/worklets/RunLoop/EventLoop.cpp +112 -0
  18. package/Common/cpp/worklets/RunLoop/EventLoop.h +52 -0
  19. package/Common/cpp/worklets/SharedItems/Serializable.cpp +545 -0
  20. package/Common/cpp/worklets/SharedItems/Serializable.h +473 -0
  21. package/Common/cpp/worklets/SharedItems/Synchronizable.cpp +67 -0
  22. package/Common/cpp/worklets/SharedItems/Synchronizable.h +59 -0
  23. package/Common/cpp/worklets/SharedItems/SynchronizableAccess.cpp +81 -0
  24. package/Common/cpp/worklets/SharedItems/SynchronizableAccess.h +45 -0
  25. package/Common/cpp/worklets/Tools/Defs.h +10 -0
  26. package/Common/cpp/worklets/Tools/FeatureFlags.cpp +15 -0
  27. package/Common/cpp/worklets/Tools/FeatureFlags.h +44 -0
  28. package/Common/cpp/worklets/Tools/JSISerializer.cpp +342 -0
  29. package/Common/cpp/worklets/Tools/JSISerializer.h +51 -0
  30. package/Common/cpp/worklets/Tools/JSLogger.cpp +68 -0
  31. package/Common/cpp/worklets/Tools/JSLogger.h +37 -0
  32. package/Common/cpp/worklets/Tools/JSScheduler.cpp +24 -0
  33. package/Common/cpp/worklets/Tools/JSScheduler.h +39 -0
  34. package/Common/cpp/worklets/Tools/PlatformLogger.h +16 -0
  35. package/Common/cpp/worklets/Tools/SingleInstanceChecker.h +82 -0
  36. package/Common/cpp/worklets/Tools/ThreadSafeQueue.h +49 -0
  37. package/Common/cpp/worklets/Tools/UIScheduler.cpp +19 -0
  38. package/Common/cpp/worklets/Tools/UIScheduler.h +26 -0
  39. package/Common/cpp/worklets/Tools/VersionUtils.cpp +75 -0
  40. package/Common/cpp/worklets/Tools/VersionUtils.h +28 -0
  41. package/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +29 -0
  42. package/Common/cpp/worklets/Tools/WorkletEventHandler.h +41 -0
  43. package/Common/cpp/worklets/Tools/WorkletsJSIUtils.cpp +46 -0
  44. package/Common/cpp/worklets/Tools/WorkletsJSIUtils.h +208 -0
  45. package/Common/cpp/worklets/Tools/WorkletsSystraceSection.h +161 -0
  46. package/Common/cpp/worklets/Tools/WorkletsVersion.cpp +54 -0
  47. package/Common/cpp/worklets/Tools/WorkletsVersion.h +20 -0
  48. package/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +38 -0
  49. package/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +21 -0
  50. package/Common/cpp/worklets/WorkletRuntime/RuntimeData.cpp +3 -0
  51. package/Common/cpp/worklets/WorkletRuntime/RuntimeData.h +12 -0
  52. package/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +191 -0
  53. package/Common/cpp/worklets/WorkletRuntime/RuntimeKind.h +16 -0
  54. package/Common/cpp/worklets/WorkletRuntime/RuntimeManager.cpp +105 -0
  55. package/Common/cpp/worklets/WorkletRuntime/RuntimeManager.h +63 -0
  56. package/Common/cpp/worklets/WorkletRuntime/UIRuntimeDecorator.cpp +23 -0
  57. package/Common/cpp/worklets/WorkletRuntime/UIRuntimeDecorator.h +16 -0
  58. package/Common/cpp/worklets/WorkletRuntime/WorkletHermesRuntime.cpp +119 -0
  59. package/Common/cpp/worklets/WorkletRuntime/WorkletHermesRuntime.h +134 -0
  60. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +244 -0
  61. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +102 -0
  62. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +36 -0
  63. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +308 -0
  64. package/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +26 -0
  65. package/LICENSE +7 -0
  66. package/README.md +31 -0
  67. package/RNWorklets.podspec +94 -0
  68. package/SystemBundles/cc12deac6e91c435b76698c8445aed85612f2f88e733218d14f88a35d06fb0f4.bundle +10512 -0
  69. package/SystemBundles/cc12deac6e91c435b76698c8445aed85612f2f88e733218d14f88a35d06fb0f4.map +3771 -0
  70. package/SystemModules/amzn__react-native-worklets-1.modules.txt +39 -0
  71. package/SystemModules/amzn__react-native-worklets-1.private.modules.txt +61 -0
  72. package/SystemModules/keplerscript-system-bundle-config.json +7 -0
  73. package/android/CMakeLists.txt +124 -0
  74. package/android/build.gradle +350 -0
  75. package/android/gradle.properties +5 -0
  76. package/android/proguard-rules.pro +3 -0
  77. package/android/spotless.gradle +9 -0
  78. package/android/src/experimentalBundling/com/swmansion/worklets/WorkletsModule.java +149 -0
  79. package/android/src/legacyBundling/com/swmansion/worklets/WorkletsModule.java +122 -0
  80. package/android/src/main/AndroidManifest.xml +2 -0
  81. package/android/src/main/cpp/worklets/android/AndroidUIScheduler.cpp +63 -0
  82. package/android/src/main/cpp/worklets/android/AndroidUIScheduler.h +43 -0
  83. package/android/src/main/cpp/worklets/android/AnimationFrameCallback.h +34 -0
  84. package/android/src/main/cpp/worklets/android/PlatformLogger.cpp +29 -0
  85. package/android/src/main/cpp/worklets/android/WorkletsModule.cpp +115 -0
  86. package/android/src/main/cpp/worklets/android/WorkletsModule.h +78 -0
  87. package/android/src/main/cpp/worklets/android/WorkletsOnLoad.cpp +13 -0
  88. package/android/src/main/java/com/swmansion/worklets/AndroidUIScheduler.java +60 -0
  89. package/android/src/main/java/com/swmansion/worklets/JSCallInvokerResolver.java +27 -0
  90. package/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThread.java +16 -0
  91. package/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThreadBase.java +73 -0
  92. package/android/src/main/java/com/swmansion/worklets/WorkletsPackage.java +48 -0
  93. package/android/src/main/java/com/swmansion/worklets/runloop/AnimationFrameCallback.java +19 -0
  94. package/android/src/main/java/com/swmansion/worklets/runloop/AnimationFrameQueue.java +113 -0
  95. package/apple/worklets/apple/AnimationFrameQueue.h +15 -0
  96. package/apple/worklets/apple/AnimationFrameQueue.mm +135 -0
  97. package/apple/worklets/apple/AssertJavaScriptQueue.h +14 -0
  98. package/apple/worklets/apple/AssertTurboModuleManagerQueue.h +16 -0
  99. package/apple/worklets/apple/IOSUIScheduler.h +15 -0
  100. package/apple/worklets/apple/IOSUIScheduler.mm +29 -0
  101. package/apple/worklets/apple/PlatformLogger.mm +31 -0
  102. package/apple/worklets/apple/SlowAnimations.h +8 -0
  103. package/apple/worklets/apple/SlowAnimations.mm +45 -0
  104. package/apple/worklets/apple/WorkletsDisplayLink.h +21 -0
  105. package/apple/worklets/apple/WorkletsMessageThread.h +16 -0
  106. package/apple/worklets/apple/WorkletsMessageThread.mm +31 -0
  107. package/apple/worklets/apple/WorkletsModule.h +28 -0
  108. package/apple/worklets/apple/WorkletsModule.mm +121 -0
  109. package/bundleMode/index.d.ts +3 -0
  110. package/bundleMode/index.js +59 -0
  111. package/compatibility.json +11 -0
  112. package/kepler-compatibility.json +5 -0
  113. package/kepler-transformed-package-info.json +3 -0
  114. package/lib/module/PlatformChecker/PlatformChecker.js +8 -0
  115. package/lib/module/PlatformChecker/PlatformChecker.js.map +1 -0
  116. package/lib/module/PlatformChecker/index.js +18 -0
  117. package/lib/module/PlatformChecker/index.js.map +1 -0
  118. package/lib/module/WorkletsError.js +29 -0
  119. package/lib/module/WorkletsError.js.map +1 -0
  120. package/lib/module/WorkletsModule/JSWorklets.js +111 -0
  121. package/lib/module/WorkletsModule/JSWorklets.js.map +1 -0
  122. package/lib/module/WorkletsModule/NativeWorklets.js +126 -0
  123. package/lib/module/WorkletsModule/NativeWorklets.js.map +1 -0
  124. package/lib/module/WorkletsModule/index.js +4 -0
  125. package/lib/module/WorkletsModule/index.js.map +1 -0
  126. package/lib/module/WorkletsModule/workletsModuleInstance.js +7 -0
  127. package/lib/module/WorkletsModule/workletsModuleInstance.js.map +1 -0
  128. package/lib/module/WorkletsModule/workletsModuleInstance.web.js +5 -0
  129. package/lib/module/WorkletsModule/workletsModuleInstance.web.js.map +1 -0
  130. package/lib/module/WorkletsModule/workletsModuleProxy.js +4 -0
  131. package/lib/module/WorkletsModule/workletsModuleProxy.js.map +1 -0
  132. package/lib/module/bundleUnpacker.js +47 -0
  133. package/lib/module/bundleUnpacker.js.map +1 -0
  134. package/lib/module/callGuard.js +30 -0
  135. package/lib/module/callGuard.js.map +1 -0
  136. package/lib/module/deprecated.js +20 -0
  137. package/lib/module/deprecated.js.map +1 -0
  138. package/lib/module/errors.js +69 -0
  139. package/lib/module/errors.js.map +1 -0
  140. package/lib/module/featureFlags/index.js +48 -0
  141. package/lib/module/featureFlags/index.js.map +1 -0
  142. package/lib/module/featureFlags/staticFlags.json +4 -0
  143. package/lib/module/index.js +26 -0
  144. package/lib/module/index.js.map +1 -0
  145. package/lib/module/initializers.js +221 -0
  146. package/lib/module/initializers.js.map +1 -0
  147. package/lib/module/isSynchronizable.js +6 -0
  148. package/lib/module/isSynchronizable.js.map +1 -0
  149. package/lib/module/logger.js +15 -0
  150. package/lib/module/logger.js.map +1 -0
  151. package/lib/module/privateGlobals.d.js +7 -0
  152. package/lib/module/privateGlobals.d.js.map +1 -0
  153. package/lib/module/publicGlobals.js +6 -0
  154. package/lib/module/publicGlobals.js.map +1 -0
  155. package/lib/module/runLoop/common/setImmediatePolyfill.js +15 -0
  156. package/lib/module/runLoop/common/setImmediatePolyfill.js.map +1 -0
  157. package/lib/module/runLoop/common/setIntervalPolyfill.js +26 -0
  158. package/lib/module/runLoop/common/setIntervalPolyfill.js.map +1 -0
  159. package/lib/module/runLoop/uiRuntime/mockedRequestAnimationFrame.js +10 -0
  160. package/lib/module/runLoop/uiRuntime/mockedRequestAnimationFrame.js.map +1 -0
  161. package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js +52 -0
  162. package/lib/module/runLoop/uiRuntime/requestAnimationFrame.js.map +1 -0
  163. package/lib/module/runLoop/uiRuntime/setTimeoutPolyfill.js +32 -0
  164. package/lib/module/runLoop/uiRuntime/setTimeoutPolyfill.js.map +1 -0
  165. package/lib/module/runLoop/workletRuntime/index.js +19 -0
  166. package/lib/module/runLoop/workletRuntime/index.js.map +1 -0
  167. package/lib/module/runLoop/workletRuntime/queueMicrotask.js +11 -0
  168. package/lib/module/runLoop/workletRuntime/queueMicrotask.js.map +1 -0
  169. package/lib/module/runLoop/workletRuntime/requestAnimationFramePolyfill.js +48 -0
  170. package/lib/module/runLoop/workletRuntime/requestAnimationFramePolyfill.js.map +1 -0
  171. package/lib/module/runLoop/workletRuntime/setTimeout.js +28 -0
  172. package/lib/module/runLoop/workletRuntime/setTimeout.js.map +1 -0
  173. package/lib/module/runLoop/workletRuntime/taskQueue.js +37 -0
  174. package/lib/module/runLoop/workletRuntime/taskQueue.js.map +1 -0
  175. package/lib/module/runtimeKind.js +39 -0
  176. package/lib/module/runtimeKind.js.map +1 -0
  177. package/lib/module/runtimes.js +100 -0
  178. package/lib/module/runtimes.js.map +1 -0
  179. package/lib/module/serializable.js +568 -0
  180. package/lib/module/serializable.js.map +1 -0
  181. package/lib/module/serializableMappingCache.js +37 -0
  182. package/lib/module/serializableMappingCache.js.map +1 -0
  183. package/lib/module/specs/NativeWorkletsModule.js +5 -0
  184. package/lib/module/specs/NativeWorkletsModule.js.map +1 -0
  185. package/lib/module/specs/NativeWorkletsModule.kepler.js +7 -0
  186. package/lib/module/specs/NativeWorkletsModule.kepler.js.map +1 -0
  187. package/lib/module/specs/index.js +10 -0
  188. package/lib/module/specs/index.js.map +1 -0
  189. package/lib/module/synchronizable.js +9 -0
  190. package/lib/module/synchronizable.js.map +1 -0
  191. package/lib/module/synchronizableUnpacker.js +42 -0
  192. package/lib/module/synchronizableUnpacker.js.map +1 -0
  193. package/lib/module/threads.js +347 -0
  194. package/lib/module/threads.js.map +1 -0
  195. package/lib/module/utils/checkCppVersion.js +30 -0
  196. package/lib/module/utils/checkCppVersion.js.map +1 -0
  197. package/lib/module/utils/jsVersion.js +9 -0
  198. package/lib/module/utils/jsVersion.js.map +1 -0
  199. package/lib/module/valueUnpacker.js +60 -0
  200. package/lib/module/valueUnpacker.js.map +1 -0
  201. package/lib/module/workletFunction.js +37 -0
  202. package/lib/module/workletFunction.js.map +1 -0
  203. package/lib/module/workletRuntimeEntry.js +32 -0
  204. package/lib/module/workletRuntimeEntry.js.map +1 -0
  205. package/lib/module/workletTypes.js +12 -0
  206. package/lib/module/workletTypes.js.map +1 -0
  207. package/lib/typescript/PlatformChecker/PlatformChecker.d.ts +5 -0
  208. package/lib/typescript/PlatformChecker/PlatformChecker.d.ts.map +1 -0
  209. package/lib/typescript/PlatformChecker/index.d.ts +10 -0
  210. package/lib/typescript/PlatformChecker/index.d.ts.map +1 -0
  211. package/lib/typescript/WorkletsError.d.ts +15 -0
  212. package/lib/typescript/WorkletsError.d.ts.map +1 -0
  213. package/lib/typescript/WorkletsModule/JSWorklets.d.ts +3 -0
  214. package/lib/typescript/WorkletsModule/JSWorklets.d.ts.map +1 -0
  215. package/lib/typescript/WorkletsModule/NativeWorklets.d.ts +3 -0
  216. package/lib/typescript/WorkletsModule/NativeWorklets.d.ts.map +1 -0
  217. package/lib/typescript/WorkletsModule/index.d.ts +3 -0
  218. package/lib/typescript/WorkletsModule/index.d.ts.map +1 -0
  219. package/lib/typescript/WorkletsModule/workletsModuleInstance.d.ts +2 -0
  220. package/lib/typescript/WorkletsModule/workletsModuleInstance.d.ts.map +1 -0
  221. package/lib/typescript/WorkletsModule/workletsModuleInstance.web.d.ts +2 -0
  222. package/lib/typescript/WorkletsModule/workletsModuleInstance.web.d.ts.map +1 -0
  223. package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts +37 -0
  224. package/lib/typescript/WorkletsModule/workletsModuleProxy.d.ts.map +1 -0
  225. package/lib/typescript/bundleUnpacker.d.ts +7 -0
  226. package/lib/typescript/bundleUnpacker.d.ts.map +1 -0
  227. package/lib/typescript/callGuard.d.ts +4 -0
  228. package/lib/typescript/callGuard.d.ts.map +1 -0
  229. package/lib/typescript/deprecated.d.ts +20 -0
  230. package/lib/typescript/deprecated.d.ts.map +1 -0
  231. package/lib/typescript/errors.d.ts +16 -0
  232. package/lib/typescript/errors.d.ts.map +1 -0
  233. package/lib/typescript/featureFlags/index.d.ts +23 -0
  234. package/lib/typescript/featureFlags/index.d.ts.map +1 -0
  235. package/lib/typescript/index.d.ts +17 -0
  236. package/lib/typescript/index.d.ts.map +1 -0
  237. package/lib/typescript/initializers.d.ts +17 -0
  238. package/lib/typescript/initializers.d.ts.map +1 -0
  239. package/lib/typescript/isSynchronizable.d.ts +3 -0
  240. package/lib/typescript/isSynchronizable.d.ts.map +1 -0
  241. package/lib/typescript/logger.d.ts +5 -0
  242. package/lib/typescript/logger.d.ts.map +1 -0
  243. package/lib/typescript/publicGlobals.d.ts +31 -0
  244. package/lib/typescript/publicGlobals.d.ts.map +1 -0
  245. package/lib/typescript/runLoop/common/setImmediatePolyfill.d.ts +2 -0
  246. package/lib/typescript/runLoop/common/setImmediatePolyfill.d.ts.map +1 -0
  247. package/lib/typescript/runLoop/common/setIntervalPolyfill.d.ts +2 -0
  248. package/lib/typescript/runLoop/common/setIntervalPolyfill.d.ts.map +1 -0
  249. package/lib/typescript/runLoop/uiRuntime/mockedRequestAnimationFrame.d.ts +6 -0
  250. package/lib/typescript/runLoop/uiRuntime/mockedRequestAnimationFrame.d.ts.map +1 -0
  251. package/lib/typescript/runLoop/uiRuntime/requestAnimationFrame.d.ts +2 -0
  252. package/lib/typescript/runLoop/uiRuntime/requestAnimationFrame.d.ts.map +1 -0
  253. package/lib/typescript/runLoop/uiRuntime/setTimeoutPolyfill.d.ts +2 -0
  254. package/lib/typescript/runLoop/uiRuntime/setTimeoutPolyfill.d.ts.map +1 -0
  255. package/lib/typescript/runLoop/workletRuntime/index.d.ts +2 -0
  256. package/lib/typescript/runLoop/workletRuntime/index.d.ts.map +1 -0
  257. package/lib/typescript/runLoop/workletRuntime/queueMicrotask.d.ts +2 -0
  258. package/lib/typescript/runLoop/workletRuntime/queueMicrotask.d.ts.map +1 -0
  259. package/lib/typescript/runLoop/workletRuntime/requestAnimationFramePolyfill.d.ts +2 -0
  260. package/lib/typescript/runLoop/workletRuntime/requestAnimationFramePolyfill.d.ts.map +1 -0
  261. package/lib/typescript/runLoop/workletRuntime/setTimeout.d.ts +2 -0
  262. package/lib/typescript/runLoop/workletRuntime/setTimeout.d.ts.map +1 -0
  263. package/lib/typescript/runLoop/workletRuntime/taskQueue.d.ts +10 -0
  264. package/lib/typescript/runLoop/workletRuntime/taskQueue.d.ts.map +1 -0
  265. package/lib/typescript/runtimeKind.d.ts +25 -0
  266. package/lib/typescript/runtimeKind.d.ts.map +1 -0
  267. package/lib/typescript/runtimes.d.ts +77 -0
  268. package/lib/typescript/runtimes.d.ts.map +1 -0
  269. package/lib/typescript/serializable.d.ts +20 -0
  270. package/lib/typescript/serializable.d.ts.map +1 -0
  271. package/lib/typescript/serializableMappingCache.d.ts +16 -0
  272. package/lib/typescript/serializableMappingCache.d.ts.map +1 -0
  273. package/lib/typescript/specs/NativeWorkletsModule.d.ts +7 -0
  274. package/lib/typescript/specs/NativeWorkletsModule.d.ts.map +1 -0
  275. package/lib/typescript/specs/NativeWorkletsModule.kepler.d.ts +7 -0
  276. package/lib/typescript/specs/NativeWorkletsModule.kepler.d.ts.map +1 -0
  277. package/lib/typescript/specs/index.d.ts +3 -0
  278. package/lib/typescript/specs/index.d.ts.map +1 -0
  279. package/lib/typescript/synchronizable.d.ts +15 -0
  280. package/lib/typescript/synchronizable.d.ts.map +1 -0
  281. package/lib/typescript/synchronizableUnpacker.d.ts +4 -0
  282. package/lib/typescript/synchronizableUnpacker.d.ts.map +1 -0
  283. package/lib/typescript/threads.d.ts +138 -0
  284. package/lib/typescript/threads.d.ts.map +1 -0
  285. package/lib/typescript/utils/checkCppVersion.d.ts +3 -0
  286. package/lib/typescript/utils/checkCppVersion.d.ts.map +1 -0
  287. package/lib/typescript/utils/jsVersion.d.ts +7 -0
  288. package/lib/typescript/utils/jsVersion.d.ts.map +1 -0
  289. package/lib/typescript/valueUnpacker.d.ts +6 -0
  290. package/lib/typescript/valueUnpacker.d.ts.map +1 -0
  291. package/lib/typescript/workletFunction.d.ts +27 -0
  292. package/lib/typescript/workletFunction.d.ts.map +1 -0
  293. package/lib/typescript/workletRuntimeEntry.d.ts +14 -0
  294. package/lib/typescript/workletRuntimeEntry.d.ts.map +1 -0
  295. package/lib/typescript/workletTypes.d.ts +61 -0
  296. package/lib/typescript/workletTypes.d.ts.map +1 -0
  297. package/package.json +153 -0
  298. package/plugin/index.js +1761 -0
  299. package/react-native.config.js +21 -0
  300. package/scripts/validate-react-native-version.js +43 -0
  301. package/scripts/worklets_utils.rb +94 -0
  302. package/src/PlatformChecker/PlatformChecker.ts +7 -0
  303. package/src/PlatformChecker/index.ts +30 -0
  304. package/src/WorkletsError.ts +36 -0
  305. package/src/WorkletsModule/JSWorklets.ts +200 -0
  306. package/src/WorkletsModule/NativeWorklets.ts +256 -0
  307. package/src/WorkletsModule/index.ts +7 -0
  308. package/src/WorkletsModule/workletsModuleInstance.ts +9 -0
  309. package/src/WorkletsModule/workletsModuleInstance.web.ts +5 -0
  310. package/src/WorkletsModule/workletsModuleProxy.ts +126 -0
  311. package/src/bundleUnpacker.ts +75 -0
  312. package/src/callGuard.ts +33 -0
  313. package/src/deprecated.ts +32 -0
  314. package/src/errors.ts +80 -0
  315. package/src/featureFlags/index.ts +72 -0
  316. package/src/featureFlags/staticFlags.json +4 -0
  317. package/src/index.ts +53 -0
  318. package/src/initializers.ts +262 -0
  319. package/src/isSynchronizable.ts +13 -0
  320. package/src/logger.ts +16 -0
  321. package/src/privateGlobals.d.ts +79 -0
  322. package/src/publicGlobals.ts +39 -0
  323. package/src/runLoop/common/setImmediatePolyfill.ts +20 -0
  324. package/src/runLoop/common/setIntervalPolyfill.ts +38 -0
  325. package/src/runLoop/uiRuntime/mockedRequestAnimationFrame.ts +11 -0
  326. package/src/runLoop/uiRuntime/requestAnimationFrame.ts +66 -0
  327. package/src/runLoop/uiRuntime/setTimeoutPolyfill.ts +40 -0
  328. package/src/runLoop/workletRuntime/index.ts +18 -0
  329. package/src/runLoop/workletRuntime/queueMicrotask.ts +13 -0
  330. package/src/runLoop/workletRuntime/requestAnimationFramePolyfill.ts +61 -0
  331. package/src/runLoop/workletRuntime/setTimeout.ts +37 -0
  332. package/src/runLoop/workletRuntime/taskQueue.ts +44 -0
  333. package/src/runtimeKind.ts +37 -0
  334. package/src/runtimes.ts +193 -0
  335. package/src/serializable.ts +801 -0
  336. package/src/serializableMappingCache.ts +42 -0
  337. package/src/specs/NativeWorkletsModule.kepler.ts +11 -0
  338. package/src/specs/NativeWorkletsModule.ts +9 -0
  339. package/src/specs/index.ts +13 -0
  340. package/src/synchronizable.ts +32 -0
  341. package/src/synchronizableUnpacker.ts +67 -0
  342. package/src/threads.ts +452 -0
  343. package/src/utils/checkCppVersion.ts +34 -0
  344. package/src/utils/jsVersion.ts +7 -0
  345. package/src/valueUnpacker.ts +90 -0
  346. package/src/workletFunction.ts +42 -0
  347. package/src/workletRuntimeEntry.ts +35 -0
  348. package/src/workletTypes.ts +81 -0
@@ -0,0 +1,21 @@
1
+ module.exports = {
2
+ dependencies: {
3
+ '@amazon-devices/react-native-kepler': {
4
+ platforms: {
5
+ kepler: null, // do not use platform definition from @react-native-kepler
6
+ },
7
+ },
8
+ },
9
+ dependency: {
10
+ platforms: {
11
+ kepler: {
12
+ autolink: {
13
+ Worklets: {
14
+ libraryName: 'libreact-native-worklets-4.so.4.0',
15
+ turbomodules: ['WorkletsModule'],
16
+ },
17
+ },
18
+ },
19
+ },
20
+ },
21
+ };
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ const semverSatisfies = require('semver/functions/satisfies');
4
+ const semverPrerelease = require('semver/functions/prerelease');
5
+ const path = require('path');
6
+
7
+ const packageJsonPath = path.resolve(__dirname, '../package.json');
8
+ const packageJson = require(packageJsonPath);
9
+ const workletsVersion = packageJson.version;
10
+ const compatibilityFile = require('../compatibility.json');
11
+
12
+ const reactNativeVersion = process.argv[2];
13
+ const supportedRNVersions = [];
14
+
15
+ if (semverPrerelease(reactNativeVersion)) {
16
+ // Don't perform any checks for pre-release versions, like nightlies or
17
+ // feature previews. The user knows what they're doing.
18
+ process.exit(0);
19
+ }
20
+
21
+ for (const key in compatibilityFile) {
22
+ if (semverSatisfies(workletsVersion, key)) {
23
+ // @ts-ignore
24
+ supportedRNVersions.push(...compatibilityFile[key]['react-native']);
25
+ }
26
+ }
27
+
28
+ // If user uses a version of Reanimated that is not listed in the compatibility file, we skip the check
29
+ if (supportedRNVersions.length === 0) {
30
+ process.exit(0);
31
+ }
32
+
33
+ for (const version of supportedRNVersions) {
34
+ if (semverSatisfies(reactNativeVersion, `${version}.x`)) {
35
+ process.exit(0);
36
+ }
37
+ }
38
+
39
+ // eslint-disable-next-line reanimated/use-logger
40
+ console.error(
41
+ `[Worklets] React Native ${reactNativeVersion} version is not compatible with Worklets ${workletsVersion}`
42
+ );
43
+ process.exit(1);
@@ -0,0 +1,94 @@
1
+ def worklets_try_to_parse_react_native_package_json(node_modules_dir)
2
+ react_native_package_json_path = File.join(node_modules_dir, 'react-native/package.json')
3
+ if !File.exist?(react_native_package_json_path)
4
+ return nil
5
+ end
6
+ return JSON.parse(File.read(react_native_package_json_path))
7
+ end
8
+
9
+ def worklets_find_config()
10
+ result = {
11
+ :bundle_mode => nil,
12
+ :is_reanimated_example_app => nil,
13
+ :is_tvos_target => nil,
14
+ :react_native_version => nil,
15
+ :react_native_minor_version => nil,
16
+ :react_native_node_modules_dir => nil,
17
+ :react_native_common_dir => nil,
18
+ :dynamic_frameworks_worklets_dir => nil,
19
+ }
20
+
21
+ result[:bundle_mode] = ENV["WORKLETS_BUNDLE_MODE"] == "1"
22
+
23
+ react_native_node_modules_dir = File.join(File.dirname(`cd "#{Pod::Config.instance.installation_root.to_s}" && node --print "require.resolve('react-native/package.json')"`), '..')
24
+ react_native_json = worklets_try_to_parse_react_native_package_json(react_native_node_modules_dir)
25
+
26
+ if react_native_json == nil
27
+ # user configuration, just in case
28
+ node_modules_dir = ENV["REACT_NATIVE_NODE_MODULES_DIR"]
29
+ react_native_json = worklets_try_to_parse_react_native_package_json(node_modules_dir)
30
+ end
31
+
32
+ if react_native_json == nil
33
+ raise '[Worklets] Unable to recognize your `react-native` version. Please set environmental variable with `react-native` location: `export REACT_NATIVE_NODE_MODULES_DIR="<path to react-native>" && pod install`.'
34
+ end
35
+
36
+ result[:is_reanimated_example_app] = ENV["IS_REANIMATED_EXAMPLE_APP"] != nil
37
+ result[:is_tvos_target] = react_native_json['name'] == 'react-native-tvos'
38
+ result[:react_native_version] = react_native_json['version']
39
+ result[:react_native_minor_version] = react_native_json['version'].split('.')[1].to_i
40
+ if result[:react_native_minor_version] == 0 # nightly
41
+ result[:react_native_minor_version] = 1000
42
+ end
43
+ result[:react_native_node_modules_dir] = File.expand_path(react_native_node_modules_dir)
44
+
45
+ pods_root = Pod::Config.instance.project_pods_root
46
+ react_native_common_dir_absolute = File.join(react_native_node_modules_dir, 'react-native', 'ReactCommon')
47
+ react_native_common_dir_relative = Pathname.new(react_native_common_dir_absolute).relative_path_from(pods_root).to_s
48
+ result[:react_native_common_dir] = react_native_common_dir_relative
49
+
50
+ react_native_worklets_dir_absolute = File.join(__dir__, '..')
51
+ react_native_worklets_dir_relative = Pathname.new(react_native_worklets_dir_absolute).relative_path_from(pods_root).to_s
52
+ result[:dynamic_frameworks_worklets_dir] = react_native_worklets_dir_relative
53
+
54
+ return result
55
+ end
56
+
57
+ def worklets_assert_minimal_react_native_version(config)
58
+ validate_react_native_version_script = File.expand_path(File.join(__dir__, 'validate-react-native-version.js'))
59
+ unless system("node \"#{validate_react_native_version_script}\" #{config[:react_native_version]}")
60
+ raise "[Worklets] React Native version is not compatible with Worklets"
61
+ end
62
+ end
63
+
64
+ def worklets_assert_new_architecture_enabled(new_arch_enabled)
65
+ if !new_arch_enabled
66
+ raise "[Worklets] Worklets require the New Architecture to be enabled. If you have `RCT_NEW_ARCH_ENABLED=0` set in your environment you should remove it."
67
+ end
68
+ end
69
+
70
+ def worklets_get_static_feature_flags()
71
+ feature_flags = {}
72
+
73
+ static_feature_flags_path = File.path('./src/featureFlags/staticFlags.json')
74
+ if !File.exist?(static_feature_flags_path)
75
+ raise "[Worklets] Feature flags file not found at #{static_feature_flags_path}."
76
+ end
77
+ static_feature_flags_json = JSON.parse(File.read(static_feature_flags_path))
78
+ static_feature_flags_json.each do |key, value|
79
+ feature_flags[key] = value.to_s
80
+ end
81
+
82
+ package_json_path = File.join(Pod::Config.instance.installation_root.to_s, '..', 'package.json')
83
+ if File.exist?(package_json_path)
84
+ package_json = JSON.parse(File.read(package_json_path))
85
+ if package_json['worklets'] && package_json['worklets']['staticFeatureFlags']
86
+ feature_flags_json = package_json['worklets']['staticFeatureFlags']
87
+ feature_flags_json.each do |key, value|
88
+ feature_flags[key] = value.to_s
89
+ end
90
+ end
91
+ end
92
+
93
+ return feature_flags.map { |key, value| "[#{key}:#{value}]" }.join('')
94
+ end
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+ import { Platform } from 'react-native';
3
+
4
+ export const IS_JEST: boolean = !!process.env.JEST_WORKER_ID;
5
+ export const IS_WEB: boolean = Platform.OS === 'web';
6
+ export const IS_WINDOWS: boolean = Platform.OS === 'windows';
7
+ export const SHOULD_BE_USE_WEB: boolean = IS_JEST || IS_WEB || IS_WINDOWS;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ import { RuntimeKind } from '../runtimeKind';
4
+ import {
5
+ IS_JEST as RN_IS_JEST,
6
+ IS_WEB as RN_IS_WEB,
7
+ IS_WINDOWS as RN_IS_WINDOWS,
8
+ SHOULD_BE_USE_WEB as RN_SHOULD_BE_USE_WEB,
9
+ } from './PlatformChecker';
10
+
11
+ let IS_JEST = false;
12
+ let IS_WEB = false;
13
+ let IS_WINDOWS = false;
14
+ let SHOULD_BE_USE_WEB = false;
15
+
16
+ if (globalThis.__RUNTIME_KIND === RuntimeKind.ReactNative) {
17
+ IS_JEST = RN_IS_JEST;
18
+ IS_WEB = RN_IS_WEB;
19
+ IS_WINDOWS = RN_IS_WINDOWS;
20
+ SHOULD_BE_USE_WEB = RN_SHOULD_BE_USE_WEB;
21
+ }
22
+
23
+ export {
24
+ IS_JEST,
25
+ /** @knipIgnore */
26
+ IS_WEB,
27
+ /** @knipIgnore */
28
+ IS_WINDOWS,
29
+ SHOULD_BE_USE_WEB,
30
+ };
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ import { RuntimeKind } from './runtimeKind';
4
+
5
+ function WorkletsErrorConstructor(message?: string): WorkletsError {
6
+ 'worklet';
7
+ const prefix = '[Worklets]';
8
+
9
+ // eslint-disable-next-line reanimated/use-worklets-error
10
+ const errorInstance = new Error(message ? `${prefix} ${message}` : prefix);
11
+ errorInstance.name = `WorkletsError`;
12
+ return errorInstance as WorkletsError;
13
+ }
14
+
15
+ /**
16
+ * Registers WorkletsError in the global scope. Register only for Worklet
17
+ * runtimes.
18
+ */
19
+ export function registerWorkletsError() {
20
+ 'worklet';
21
+ if (globalThis.__RUNTIME_KIND !== RuntimeKind.ReactNative) {
22
+ globalThis.WorkletsError =
23
+ WorkletsErrorConstructor as IWorkletsErrorConstructor;
24
+ }
25
+ }
26
+
27
+ export const WorkletsError =
28
+ WorkletsErrorConstructor as IWorkletsErrorConstructor;
29
+
30
+ export type WorkletsError = Error & { name: 'Worklets' }; // signed type
31
+
32
+ export interface IWorkletsErrorConstructor extends Error {
33
+ new (message?: string): WorkletsError;
34
+ (message?: string): WorkletsError;
35
+ readonly prototype: WorkletsError;
36
+ }
@@ -0,0 +1,200 @@
1
+ 'use strict';
2
+
3
+ import { IS_JEST } from '../PlatformChecker';
4
+ import { mockedRequestAnimationFrame } from '../runLoop/uiRuntime/mockedRequestAnimationFrame';
5
+ import { WorkletsError } from '../WorkletsError';
6
+ import type { SerializableRef } from '../workletTypes';
7
+ import type { IWorkletsModule } from './workletsModuleProxy';
8
+
9
+ export function createJSWorkletsModule(): IWorkletsModule {
10
+ return new JSWorklets();
11
+ }
12
+
13
+ // In Node.js environments (like when static rendering with Expo Router)
14
+ // requestAnimationFrame is unavailable, so we use our mock.
15
+ // It also has to be mocked for Jest purposes (see `initializeUIRuntime`).
16
+ const requestAnimationFrameImpl =
17
+ IS_JEST || !globalThis.requestAnimationFrame
18
+ ? mockedRequestAnimationFrame
19
+ : globalThis.requestAnimationFrame;
20
+
21
+ class JSWorklets implements IWorkletsModule {
22
+ createSerializable(): never {
23
+ throw new WorkletsError(
24
+ 'createSerializable should never be called in JSWorklets.'
25
+ );
26
+ }
27
+
28
+ createSerializableString(): never {
29
+ throw new WorkletsError(
30
+ 'createSerializableString should never be called in JSWorklets.'
31
+ );
32
+ }
33
+
34
+ createSerializableNumber(): never {
35
+ throw new WorkletsError(
36
+ 'createSerializableNumber should never be called in JSWorklets.'
37
+ );
38
+ }
39
+
40
+ createSerializableBoolean(): never {
41
+ throw new WorkletsError(
42
+ 'createSerializableBoolean should never be called in JSWorklets.'
43
+ );
44
+ }
45
+
46
+ createSerializableBigInt(): never {
47
+ throw new WorkletsError(
48
+ 'createSerializableBigInt should never be called in JSWorklets.'
49
+ );
50
+ }
51
+
52
+ createSerializableUndefined(): never {
53
+ throw new WorkletsError(
54
+ 'createSerializableUndefined should never be called in JSWorklets.'
55
+ );
56
+ }
57
+
58
+ createSerializableNull(): never {
59
+ throw new WorkletsError(
60
+ 'createSerializableNull should never be called in JSWorklets.'
61
+ );
62
+ }
63
+
64
+ createSerializableTurboModuleLike(): never {
65
+ throw new WorkletsError(
66
+ 'createSerializableTurboModuleLike should never be called in JSWorklets.'
67
+ );
68
+ }
69
+
70
+ createSerializableObject(): never {
71
+ throw new WorkletsError(
72
+ 'createSerializableObject should never be called in JSWorklets.'
73
+ );
74
+ }
75
+
76
+ createSerializableMap(): never {
77
+ throw new WorkletsError(
78
+ 'createSerializableMap should never be called in JSWorklets.'
79
+ );
80
+ }
81
+
82
+ createSerializableSet(): never {
83
+ throw new WorkletsError(
84
+ 'createSerializableSet should never be called in JSWorklets.'
85
+ );
86
+ }
87
+
88
+ createSerializableImport(): never {
89
+ throw new WorkletsError(
90
+ 'createSerializableImport should never be called in JSWorklets.'
91
+ );
92
+ }
93
+
94
+ createSerializableHostObject(): never {
95
+ throw new WorkletsError(
96
+ 'createSerializableHostObject should never be called in JSWorklets.'
97
+ );
98
+ }
99
+
100
+ createSerializableArray(): never {
101
+ throw new WorkletsError(
102
+ 'createSerializableArray should never be called in JSWorklets.'
103
+ );
104
+ }
105
+
106
+ createSerializableInitializer(): never {
107
+ throw new WorkletsError(
108
+ 'createSerializableInitializer should never be called in JSWorklets.'
109
+ );
110
+ }
111
+
112
+ createSerializableFunction(): never {
113
+ throw new WorkletsError(
114
+ 'createSerializableFunction should never be called in JSWorklets.'
115
+ );
116
+ }
117
+
118
+ createSerializableWorklet(): never {
119
+ throw new WorkletsError(
120
+ 'createSerializableWorklet should never be called in JSWorklets.'
121
+ );
122
+ }
123
+
124
+ scheduleOnUI<TValue>(worklet: SerializableRef<TValue>) {
125
+ // TODO: `requestAnimationFrame` should be used exclusively in Reanimated
126
+
127
+ // @ts-ignore web implementation has still not been updated after the rewrite,
128
+ // this will be addressed once the web implementation updates are ready
129
+ requestAnimationFrameImpl(worklet);
130
+ }
131
+
132
+ executeOnUIRuntimeSync(): never {
133
+ throw new WorkletsError(
134
+ '`executeOnUIRuntimeSync` is not available in JSWorklets.'
135
+ );
136
+ }
137
+
138
+ createWorkletRuntime(): never {
139
+ throw new WorkletsError(
140
+ 'createWorkletRuntime is not available in JSWorklets.'
141
+ );
142
+ }
143
+
144
+ scheduleOnRuntime(): never {
145
+ throw new WorkletsError(
146
+ 'scheduleOnRuntime is not available in JSWorklets.'
147
+ );
148
+ }
149
+
150
+ createSynchronizable(): never {
151
+ throw new WorkletsError(
152
+ 'createSynchronizable should never be called in JSWorklets.'
153
+ );
154
+ }
155
+
156
+ synchronizableGetDirty(): never {
157
+ throw new WorkletsError(
158
+ 'synchronizableGetDirty should never be called in JSWorklets.'
159
+ );
160
+ }
161
+
162
+ synchronizableGetBlocking(): never {
163
+ throw new WorkletsError(
164
+ 'synchronizableGetBlocking should never be called in JSWorklets.'
165
+ );
166
+ }
167
+
168
+ synchronizableSetBlocking(): never {
169
+ throw new WorkletsError(
170
+ 'synchronizableSetBlocking should never be called in JSWorklets.'
171
+ );
172
+ }
173
+
174
+ synchronizableLock(): never {
175
+ throw new WorkletsError(
176
+ 'synchronizableLock should never be called in JSWorklets.'
177
+ );
178
+ }
179
+
180
+ synchronizableUnlock(): never {
181
+ throw new WorkletsError(
182
+ 'synchronizableUnlock should never be called in JSWorklets.'
183
+ );
184
+ }
185
+
186
+ reportFatalErrorOnJS(): never {
187
+ throw new WorkletsError(
188
+ 'reportFatalErrorOnJS should never be called in JSWorklets.'
189
+ );
190
+ }
191
+
192
+ getStaticFeatureFlag(): boolean {
193
+ // mock implementation
194
+ return false;
195
+ }
196
+
197
+ setDynamicFeatureFlag() {
198
+ // noop
199
+ }
200
+ }
@@ -0,0 +1,256 @@
1
+ 'use strict';
2
+
3
+ import { RuntimeKind } from '../runtimeKind';
4
+ import { WorkletsTurboModule } from '../specs';
5
+ import type { SynchronizableRef } from '../synchronizable';
6
+ import { checkCppVersion } from '../utils/checkCppVersion';
7
+ import { jsVersion } from '../utils/jsVersion';
8
+ import { WorkletsError } from '../WorkletsError';
9
+ import type { SerializableRef, WorkletRuntime } from '../workletTypes';
10
+ import type {
11
+ IWorkletsModule,
12
+ WorkletsModuleProxy,
13
+ } from './workletsModuleProxy';
14
+
15
+ export function createNativeWorkletsModule(): IWorkletsModule {
16
+ return new NativeWorklets();
17
+ }
18
+
19
+ class NativeWorklets implements IWorkletsModule {
20
+ #workletsModuleProxy: WorkletsModuleProxy;
21
+ #serializableUndefined: SerializableRef<undefined>;
22
+ #serializableNull: SerializableRef<null>;
23
+ #serializableTrue: SerializableRef<boolean>;
24
+ #serializableFalse: SerializableRef<boolean>;
25
+
26
+ constructor() {
27
+ globalThis._WORKLETS_VERSION_JS = jsVersion;
28
+ if (
29
+ global.__workletsModuleProxy === undefined &&
30
+ globalThis.__RUNTIME_KIND === RuntimeKind.ReactNative
31
+ ) {
32
+ WorkletsTurboModule?.installTurboModule();
33
+ }
34
+ if (global.__workletsModuleProxy === undefined) {
35
+ throw new WorkletsError(
36
+ `Native part of Worklets doesn't seem to be initialized.
37
+ See https://docs.swmansion.com/react-native-worklets/docs/guides/troubleshooting#native-part-of-worklets-doesnt-seem-to-be-initialized for more details.`
38
+ );
39
+ }
40
+ if (__DEV__) {
41
+ checkCppVersion();
42
+ }
43
+ this.#workletsModuleProxy = global.__workletsModuleProxy;
44
+ this.#serializableNull = this.#workletsModuleProxy.createSerializableNull();
45
+ this.#serializableUndefined =
46
+ this.#workletsModuleProxy.createSerializableUndefined();
47
+ this.#serializableTrue =
48
+ this.#workletsModuleProxy.createSerializableBoolean(true);
49
+ this.#serializableFalse =
50
+ this.#workletsModuleProxy.createSerializableBoolean(false);
51
+ }
52
+
53
+ createSerializable<TValue>(
54
+ value: TValue,
55
+ shouldPersistRemote: boolean,
56
+ nativeStateSource?: object
57
+ ) {
58
+ return this.#workletsModuleProxy.createSerializable(
59
+ value,
60
+ shouldPersistRemote,
61
+ nativeStateSource
62
+ );
63
+ }
64
+
65
+ createSerializableImport<TValue>(
66
+ from: string,
67
+ to: string
68
+ ): SerializableRef<TValue> {
69
+ return this.#workletsModuleProxy.createSerializableImport(from, to);
70
+ }
71
+
72
+ createSerializableString(str: string) {
73
+ return this.#workletsModuleProxy.createSerializableString(str);
74
+ }
75
+
76
+ createSerializableNumber(num: number) {
77
+ return this.#workletsModuleProxy.createSerializableNumber(num);
78
+ }
79
+
80
+ createSerializableBoolean(bool: boolean) {
81
+ return bool ? this.#serializableTrue : this.#serializableFalse;
82
+ }
83
+
84
+ createSerializableBigInt(bigInt: bigint) {
85
+ return this.#workletsModuleProxy.createSerializableBigInt(bigInt);
86
+ }
87
+
88
+ createSerializableUndefined() {
89
+ return this.#serializableUndefined;
90
+ }
91
+
92
+ createSerializableNull() {
93
+ return this.#serializableNull;
94
+ }
95
+
96
+ createSerializableTurboModuleLike<
97
+ TProps extends object,
98
+ TProto extends object,
99
+ >(props: TProps, proto: TProto): SerializableRef<TProps> {
100
+ return this.#workletsModuleProxy.createSerializableTurboModuleLike(
101
+ props,
102
+ proto
103
+ );
104
+ }
105
+
106
+ createSerializableObject<T extends object>(
107
+ obj: T,
108
+ shouldRetainRemote: boolean,
109
+ nativeStateSource?: object
110
+ ): SerializableRef<T> {
111
+ return this.#workletsModuleProxy.createSerializableObject(
112
+ obj,
113
+ shouldRetainRemote,
114
+ nativeStateSource
115
+ );
116
+ }
117
+
118
+ createSerializableHostObject<T extends object>(obj: T) {
119
+ return this.#workletsModuleProxy.createSerializableHostObject(obj);
120
+ }
121
+
122
+ createSerializableArray(array: unknown[], shouldRetainRemote: boolean) {
123
+ return this.#workletsModuleProxy.createSerializableArray(
124
+ array,
125
+ shouldRetainRemote
126
+ );
127
+ }
128
+
129
+ createSerializableMap<TKey, TValue>(
130
+ keys: TKey[],
131
+ values: TValue[]
132
+ ): SerializableRef<Map<TKey, TValue>> {
133
+ return this.#workletsModuleProxy.createSerializableMap(keys, values);
134
+ }
135
+
136
+ createSerializableSet<TValues>(
137
+ values: TValues[]
138
+ ): SerializableRef<Set<TValues>> {
139
+ return this.#workletsModuleProxy.createSerializableSet(values);
140
+ }
141
+
142
+ createSerializableInitializer(obj: object) {
143
+ return this.#workletsModuleProxy.createSerializableInitializer(obj);
144
+ }
145
+
146
+ createSerializableFunction<TArgs extends unknown[], TReturn>(
147
+ func: (...args: TArgs) => TReturn
148
+ ) {
149
+ return this.#workletsModuleProxy.createSerializableFunction(func);
150
+ }
151
+
152
+ createSerializableWorklet(worklet: object, shouldPersistRemote: boolean) {
153
+ return this.#workletsModuleProxy.createSerializableWorklet(
154
+ worklet,
155
+ shouldPersistRemote
156
+ );
157
+ }
158
+
159
+ scheduleOnUI<TValue>(serializable: SerializableRef<TValue>) {
160
+ return this.#workletsModuleProxy.scheduleOnUI(serializable);
161
+ }
162
+
163
+ executeOnUIRuntimeSync<TValue, TReturn>(
164
+ serializable: SerializableRef<TValue>
165
+ ): TReturn {
166
+ return this.#workletsModuleProxy.executeOnUIRuntimeSync(serializable);
167
+ }
168
+
169
+ createWorkletRuntime(
170
+ name: string,
171
+ initializer: SerializableRef<() => void>,
172
+ useDefaultQueue: boolean,
173
+ customQueue: object | undefined,
174
+ enableEventLoop: boolean
175
+ ) {
176
+ return this.#workletsModuleProxy.createWorkletRuntime(
177
+ name,
178
+ initializer,
179
+ useDefaultQueue,
180
+ customQueue,
181
+ enableEventLoop
182
+ );
183
+ }
184
+
185
+ scheduleOnRuntime<T>(
186
+ workletRuntime: WorkletRuntime,
187
+ serializableWorklet: SerializableRef<T>
188
+ ) {
189
+ return this.#workletsModuleProxy.scheduleOnRuntime(
190
+ workletRuntime,
191
+ serializableWorklet
192
+ );
193
+ }
194
+
195
+ createSynchronizable<TValue>(value: TValue): SynchronizableRef<TValue> {
196
+ return this.#workletsModuleProxy.createSynchronizable(value);
197
+ }
198
+
199
+ synchronizableGetDirty<TValue>(
200
+ synchronizableRef: SynchronizableRef<TValue>
201
+ ): TValue {
202
+ return this.#workletsModuleProxy.synchronizableGetDirty(synchronizableRef);
203
+ }
204
+
205
+ synchronizableGetBlocking<TValue>(
206
+ synchronizableRef: SynchronizableRef<TValue>
207
+ ): TValue {
208
+ return this.#workletsModuleProxy.synchronizableGetBlocking(
209
+ synchronizableRef
210
+ );
211
+ }
212
+
213
+ synchronizableSetBlocking<TValue>(
214
+ synchronizableRef: SynchronizableRef<TValue>,
215
+ value: SerializableRef<TValue>
216
+ ) {
217
+ return this.#workletsModuleProxy.synchronizableSetBlocking(
218
+ synchronizableRef,
219
+ value
220
+ );
221
+ }
222
+
223
+ synchronizableLock<TValue>(
224
+ synchronizableRef: SynchronizableRef<TValue>
225
+ ): void {
226
+ return this.#workletsModuleProxy.synchronizableLock(synchronizableRef);
227
+ }
228
+
229
+ synchronizableUnlock<TValue>(
230
+ synchronizableRef: SynchronizableRef<TValue>
231
+ ): void {
232
+ return this.#workletsModuleProxy.synchronizableUnlock(synchronizableRef);
233
+ }
234
+
235
+ reportFatalErrorOnJS(
236
+ message: string,
237
+ stack: string,
238
+ name: string,
239
+ jsEngine: string
240
+ ) {
241
+ return this.#workletsModuleProxy.reportFatalErrorOnJS(
242
+ message,
243
+ stack,
244
+ name,
245
+ jsEngine
246
+ );
247
+ }
248
+
249
+ getStaticFeatureFlag(name: string): boolean {
250
+ return this.#workletsModuleProxy.getStaticFeatureFlag(name);
251
+ }
252
+
253
+ setDynamicFeatureFlag(name: string, value: boolean) {
254
+ this.#workletsModuleProxy.setDynamicFeatureFlag(name, value);
255
+ }
256
+ }
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ export { WorkletsModule } from './workletsModuleInstance';
4
+ export type {
5
+ IWorkletsModule,
6
+ WorkletsModuleProxy,
7
+ } from './workletsModuleProxy';